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/currency_form.bundle.js
/*! For license information please see currency_form.bundle.js.LICENSE.txt */
(()=>{var t={35691:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=(r=n(99663))&&r.__esModule?r:{default:r};e.default=function t(e){(0,o.default)(this,t),this.message=e,this.name="LocalizationException"}},65693:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.NumberSymbol=e.NumberFormatter=e.NumberSpecification=e.PriceSpecification=void 0;var r=s(n(37210)),o=s(n(76694)),i=s(n(91598)),a=s(n(58182));function s(t){return t&&t.__esModule?t:{default:t}}e.PriceSpecification=i.default,e.NumberSpecification=a.default,e.NumberFormatter=r.default,e.NumberSymbol=o.default},37210:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=f(n(85315)),o=f(n(88902)),i=f(n(12424)),a=f(n(99663)),s=f(n(22600)),c=f(n(76694)),u=f(n(91598)),l=f(n(58182));function f(t){return t&&t.__esModule?t:{default:t}}var d=n(91658),p=function(){function t(e){(0,a.default)(this,t),this.numberSpecification=e}return(0,s.default)(t,[{key:"format",value:function(t,e){void 0!==e&&(this.numberSpecification=e);var n=Math.abs(t).toFixed(this.numberSpecification.getMaxFractionDigits()),r=this.extractMajorMinorDigits(n),o=(0,i.default)(r,2),a=o[0],s=o[1],c=a=this.splitMajorGroups(a);(s=this.adjustMinorDigitsZeroes(s))&&(c+="."+s);var u=this.getCldrPattern(t<0);return c=this.addPlaceholders(c,u),c=this.replaceSymbols(c),this.performSpecificReplacements(c)}},{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(),n=[];for(n.push(e.splice(0,this.numberSpecification.getPrimaryGroupSize()));e.length;)n.push(e.splice(0,this.numberSpecification.getSecondaryGroupSize()));n=n.reverse();var r=[];return n.forEach((function(t){r.push(t.reverse().join(""))})),r.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(),n={};return n["."]=e.getDecimal(),n[","]=e.getGroup(),n["-"]=e.getMinusSign(),n["%"]=e.getPercentSign(),n["+"]=e.getPlusSign(),this.strtr(t,n)}},{key:"strtr",value:function(t,e){var n=(0,o.default)(e).map(d);return t.split(RegExp("("+n.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 u.default?t.split("¤").join(this.numberSpecification.getCurrencySymbol()):t}}],[{key:"build",value:function(e){var n;return n=void 0!==e.numberSymbols?new(Function.prototype.bind.apply(c.default,[null].concat((0,r.default)(e.numberSymbols)))):new(Function.prototype.bind.apply(c.default,[null].concat((0,r.default)(e.symbol)))),new t(e.currencySymbol?new u.default(e.positivePattern,e.negativePattern,n,parseInt(e.maxFractionDigits,10),parseInt(e.minFractionDigits,10),e.groupingUsed,e.primaryGroupSize,e.secondaryGroupSize,e.currencySymbol,e.currencyCode):new l.default(e.positivePattern,e.negativePattern,n,parseInt(e.maxFractionDigits,10),parseInt(e.minFractionDigits,10),e.groupingUsed,e.primaryGroupSize,e.secondaryGroupSize))}}]),t}();e.default=p},76694:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(99663)),o=a(n(22600)),i=a(n(35691));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(e,n,o,i,a,s,c,u,l,f,d){(0,r.default)(this,t),this.decimal=e,this.group=n,this.list=o,this.percentSign=i,this.minusSign=a,this.plusSign=s,this.exponential=c,this.superscriptingExponent=u,this.perMille=l,this.infinity=f,this.nan=d,this.validateData()}return(0,o.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 i.default("Invalid decimal");if(!this.group||"string"!=typeof this.group)throw new i.default("Invalid group");if(!this.list||"string"!=typeof this.list)throw new i.default("Invalid symbol list");if(!this.percentSign||"string"!=typeof this.percentSign)throw new i.default("Invalid percentSign");if(!this.minusSign||"string"!=typeof this.minusSign)throw new i.default("Invalid minusSign");if(!this.plusSign||"string"!=typeof this.plusSign)throw new i.default("Invalid plusSign");if(!this.exponential||"string"!=typeof this.exponential)throw new i.default("Invalid exponential");if(!this.superscriptingExponent||"string"!=typeof this.superscriptingExponent)throw new i.default("Invalid superscriptingExponent");if(!this.perMille||"string"!=typeof this.perMille)throw new i.default("Invalid perMille");if(!this.infinity||"string"!=typeof this.infinity)throw new i.default("Invalid infinity");if(!this.nan||"string"!=typeof this.nan)throw new i.default("Invalid nan")}}]),t}();e.default=s},58182:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(99663)),o=s(n(22600)),i=s(n(35691)),a=s(n(76694));function s(t){return t&&t.__esModule?t:{default:t}}var c=function(){function t(e,n,o,s,c,u,l,f){if((0,r.default)(this,t),this.positivePattern=e,this.negativePattern=n,this.symbol=o,this.maxFractionDigits=s,this.minFractionDigits=s<c?s:c,this.groupingUsed=u,this.primaryGroupSize=l,this.secondaryGroupSize=f,!this.positivePattern||"string"!=typeof this.positivePattern)throw new i.default("Invalid positivePattern");if(!this.negativePattern||"string"!=typeof this.negativePattern)throw new i.default("Invalid negativePattern");if(!(this.symbol&&this.symbol instanceof a.default))throw new i.default("Invalid symbol");if("number"!=typeof this.maxFractionDigits)throw new i.default("Invalid maxFractionDigits");if("number"!=typeof this.minFractionDigits)throw new i.default("Invalid minFractionDigits");if("boolean"!=typeof this.groupingUsed)throw new i.default("Invalid groupingUsed");if("number"!=typeof this.primaryGroupSize)throw new i.default("Invalid primaryGroupSize");if("number"!=typeof this.secondaryGroupSize)throw new i.default("Invalid secondaryGroupSize")}return(0,o.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=c},91598:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=u(n(85105)),o=u(n(99663)),i=u(n(22600)),a=u(n(49135)),s=u(n(93196)),c=u(n(35691));function u(t){return t&&t.__esModule?t:{default:t}}var l=function(t){function e(t,n,i,s,u,l,f,d,p,h){(0,o.default)(this,e);var v=(0,a.default)(this,(e.__proto__||(0,r.default)(e)).call(this,t,n,i,s,u,l,f,d));if(v.currencySymbol=p,v.currencyCode=h,!v.currencySymbol||"string"!=typeof v.currencySymbol)throw new c.default("Invalid currencySymbol");if(!v.currencyCode||"string"!=typeof v.currencyCode)throw new c.default("Invalid currencyCode");return v}return(0,s.default)(e,t),(0,i.default)(e,[{key:"getCurrencySymbol",value:function(){return this.currencySymbol}},{key:"getCurrencyCode",value:function(){return this.currencyCode}}],[{key:"getCurrencyDisplay",value:function(){return"symbol"}}]),e}(u(n(58182)).default);e.default=l},50066:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=e.showGrowl=function(t,e,n){var r=void 0!==n?n:2e3;"success"===t?window.$.growl({title:"",size:"large",message:e,duration:r}):window.$.growl[t]({title:"",size:"large",message:e,duration:r})};e.default=n},68840:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=(r=n(85315))&&r.__esModule?r:{default:r};e.default=function(t,e,n){var r=this,a=t.id,s=t.closable;this.modal=function(t){var e,n=t.id,r=void 0===n?"confirm-modal":n,i=t.confirmTitle,a=t.confirmMessage,s=void 0===a?"":a,c=t.closeButtonLabel,u=void 0===c?"Close":c,l=t.confirmButtonLabel,f=void 0===l?"Accept":l,d=t.confirmButtonClass,p=void 0===d?"btn-primary":d,h=t.customButtons,v=void 0===h?[]:h,m={};return m.container=document.createElement("div"),m.container.classList.add("modal","fade"),m.container.id=r,m.dialog=document.createElement("div"),m.dialog.classList.add("modal-dialog"),m.content=document.createElement("div"),m.content.classList.add("modal-content"),m.header=document.createElement("div"),m.header.classList.add("modal-header"),i&&(m.title=document.createElement("h4"),m.title.classList.add("modal-title"),m.title.innerHTML=i),m.closeIcon=document.createElement("button"),m.closeIcon.classList.add("close"),m.closeIcon.setAttribute("type","button"),m.closeIcon.dataset.dismiss="modal",m.closeIcon.innerHTML="×",m.body=document.createElement("div"),m.body.classList.add("modal-body","text-left","font-weight-normal"),m.message=document.createElement("p"),m.message.classList.add("confirm-message"),m.message.innerHTML=s,m.footer=document.createElement("div"),m.footer.classList.add("modal-footer"),m.closeButton=document.createElement("button"),m.closeButton.setAttribute("type","button"),m.closeButton.classList.add("btn","btn-outline-secondary","btn-lg"),m.closeButton.dataset.dismiss="modal",m.closeButton.innerHTML=u,m.confirmButton=document.createElement("button"),m.confirmButton.setAttribute("type","button"),m.confirmButton.classList.add("btn",p,"btn-lg","btn-confirm-submit"),m.confirmButton.dataset.dismiss="modal",m.confirmButton.innerHTML=f,i?m.header.append(m.title,m.closeIcon):m.header.appendChild(m.closeIcon),m.body.appendChild(m.message),(e=m.footer).append.apply(e,[m.closeButton].concat((0,o.default)(v),[m.confirmButton])),m.content.append(m.header,m.body,m.footer),m.dialog.appendChild(m.content),m.container.appendChild(m.dialog),m}(t),this.$modal=i(this.modal.container),this.show=function(){r.$modal.modal()},this.modal.confirmButton.addEventListener("click",e),this.$modal.modal({backdrop:!!s||"static",keyboard:void 0===s||s,closable:void 0===s||s,show:!1}),this.$modal.on("hidden.bs.modal",(function(){document.querySelector("#"+a).remove(),n&&n()})),document.body.appendChild(this.modal.container)};var i=window.$},36794:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={currencyForm:"#currency_form",currencyFormFooter:"#currency_form .card .card-footer",currencySelector:"#currency_selected_iso_code",isUnofficialCheckbox:"#currency_unofficial",namesInput:function(t){return"#currency_names_"+t},symbolsInput:function(t){return"#currency_symbols_"+t},transformationsInput:function(t){return"#currency_transformations_"+t},isoCodeInput:"#currency_iso_code",exchangeRateInput:"#currency_exchange_rate",resetDefaultSettingsInput:"#currency_reset_default_settings",loadingDataModal:"#currency_loading_data_modal",precisionInput:"#currency_precision",shopAssociationTree:"#currency_shop_association",currencyFormatter:"#currency_formatter"}},59640:(t,e,n)=>{"use strict";var r=n(73609);Object.defineProperty(e,"__esModule",{value:!0});var o=g(n(88902)),i=g(n(94942)),a=g(n(36803)),s=g(n(85315)),c=g(n(99663)),u=g(n(22600)),l=g(n(72100)),f=g(n(17152)),d=g(n(74104)),p=n(50066),h=g(n(68840)),v=g(n(42157)),m=g(n(41747));function g(t){return t&&t.__esModule?t:{default:t}}l.default.use(d.default),l.default.use(f.default);var y=function(){function t(e){var n=this;(0,c.default)(this,t),this.map=e,this.$currencyForm=r(this.map.currencyForm),this.$currencyFormFooter=r(this.map.currencyFormFooter),this.apiReferenceUrl=this.$currencyForm.data("reference-url"),this.referenceCurrencyResource=l.default.resource(this.apiReferenceUrl),this.originalLanguages=this.$currencyForm.data("languages"),this.translations=this.$currencyForm.data("translations"),this.$currencySelector=r(this.map.currencySelector),this.$isUnofficialCheckbox=r(this.map.isUnofficialCheckbox),this.$isoCodeInput=r(this.map.isoCodeInput),this.$exchangeRateInput=r(this.map.exchangeRateInput),this.$precisionInput=r(this.map.precisionInput),this.$resetDefaultSettingsButton=r(this.map.resetDefaultSettingsInput),this.$loadingDataModal=r(this.map.loadingDataModal),this.currencyFormatterId=this.map.currencyFormatter.replace("#",""),this.hideModal=!0,this.$loadingDataModal.on("shown.bs.modal",(function(){n.hideModal&&n.$loadingDataModal.modal("hide")}))}var e,n,d;return(0,u.default)(t,[{key:"init",value:function(){this.initListeners(),this.initFields(),this.initState(),this.initCurrencyFormatter()}},{key:"initState",value:function(){this.state={currencyData:this.getCurrencyDataFromForm(),languages:[].concat((0,s.default)(this.originalLanguages))}}},{key:"initCurrencyFormatter",value:function(){var t=this;if(this.originalLanguages.length){var e=new f.default({locale:"en",formatter:new v.default,messages:{en:this.translations}});r('<div id="'+this.currencyFormatterId+'"></div>').insertBefore(this.$currencyFormFooter),this.currencyFormatter=new l.default({el:this.map.currencyFormatter,i18n:e,components:{CurrencyFormatter:m.default},data:this.state,template:'<currency-formatter\n        id="'+this.currencyFormatterId+'"\n        :languages="languages"\n        :currencyData="currencyData">\n      </currency-formatter>'}),this.currencyFormatter.$watch("currencyData",(function(){t.fillCurrencyCustomData(t.state.currencyData)}),{deep:!0,immediate:!0})}}},{key:"initListeners",value:function(){this.$currencySelector.change(this.onCurrencySelectorChange.bind(this)),this.$isUnofficialCheckbox.change(this.onIsUnofficialCheckboxChange.bind(this)),this.$resetDefaultSettingsButton.click(this.onResetDefaultSettingsClick.bind(this))}},{key:"initFields",value:function(){this.isUnofficialCurrency()?(this.$currencySelector.val(""),this.$isoCodeInput.prop("readonly",!1)):(this.$isUnofficialCheckbox.prop("checked",!1),this.$isoCodeInput.prop("readonly",!0))}},{key:"onCurrencySelectorChange",value:function(){var t=this.$currencySelector.val();""!==t?(this.$isUnofficialCheckbox.prop("checked",!1),this.$isoCodeInput.prop("readonly",!0),this.resetCurrencyData(t)):(this.$isUnofficialCheckbox.prop("checked",!0),this.$isoCodeInput.prop("readonly",!1))}},{key:"isUnofficialCurrency",value:function(){return"hidden"===this.$isUnofficialCheckbox.prop("type")?"1"===this.$isUnofficialCheckbox.attr("value"):this.$isUnofficialCheckbox.prop("checked")}},{key:"onIsUnofficialCheckboxChange",value:function(){this.isUnofficialCurrency()?(this.$currencySelector.val(""),this.$isoCodeInput.prop("readonly",!1)):this.$isoCodeInput.prop("readonly",!0)}},{key:"onResetDefaultSettingsClick",value:(d=(0,a.default)(i.default.mark((function t(){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.resetCurrencyData(this.$isoCodeInput.val());case 2:case"end":return t.stop()}}),t,this)}))),function(){return d.apply(this,arguments)})},{key:"showResetDefaultSettingsConfirmModal",value:function(){var t=this,e=this.translations["modal.restore.title"],n=this.translations["modal.restore.body"],r=this.translations["modal.restore.apply"],o=this.translations["modal.restore.cancel"];new h.default({id:"currency_restore_default_settings",confirmTitle:e,confirmMessage:n,confirmButtonLabel:r,closeButtonLabel:o},(function(){return t.onResetDefaultSettingsClick()})).show()}},{key:"resetCurrencyData",value:(n=(0,a.default)(i.default.mark((function t(e){return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return this.$loadingDataModal.modal("show"),this.$resetDefaultSettingsButton.addClass("spinner"),t.next=4,this.fetchCurrency(e);case 4:this.state.currencyData=t.sent,this.fillCurrencyData(this.state.currencyData),this.originalLanguages.forEach((function(t){var e=t.currencyPattern.split(";");t.priceSpecification.positivePattern=e[0],t.priceSpecification.negativePattern=e.length>1?e[1]:"-"+e[0],t.priceSpecification.currencySymbol=t.currencySymbol})),this.state.languages=[].concat((0,s.default)(this.originalLanguages)),this.hideModal=!0,this.$loadingDataModal.modal("hide"),this.$resetDefaultSettingsButton.removeClass("spinner");case 11:case"end":return t.stop()}}),t,this)}))),function(t){return n.apply(this,arguments)})},{key:"fetchCurrency",value:(e=(0,a.default)(i.default.mark((function t(e){var n;return i.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=null,!e){t.next=4;break}return t.next=4,this.referenceCurrencyResource.get({id:e}).then((function(t){n=t.body}),(function(t){t.body&&t.body.error?(0,p.showGrowl)("error",t.body.error,3e3):(0,p.showGrowl)("error","Can not find CLDR data for currency "+e,3e3)}));case 4:return n&&void 0===n.transformations&&(n.transformations={},(0,o.default)(n.symbols).forEach((function(t){n.transformations[t]=""}))),t.abrupt("return",n);case 6:case"end":return t.stop()}}),t,this)}))),function(t){return e.apply(this,arguments)})},{key:"fillCurrencyData",value:function(t){var e=this;t&&((0,o.default)(t.symbols).forEach((function(n){var o=e.map.namesInput(n);r(o).val(t.names[n])})),this.fillCurrencyCustomData(t),this.$isoCodeInput.val(t.isoCode),this.$exchangeRateInput.val(t.exchangeRate),this.$precisionInput.val(t.precision))}},{key:"fillCurrencyCustomData",value:function(t){var e=this;(0,o.default)(t.symbols).forEach((function(n){var o=e.map.symbolsInput(n);r(o).val(t.symbols[n])})),(0,o.default)(t.transformations).forEach((function(n){var o=e.map.transformationsInput(n);r(o).val(t.transformations[n])}))}},{key:"getCurrencyDataFromForm",value:function(){var t=this,e={names:{},symbols:{},transformations:{},isoCode:this.$isoCodeInput.val(),exchangeRate:this.$exchangeRateInput.val(),precision:this.$precisionInput.val()};return this.originalLanguages.forEach((function(n){e.names[n.id]=r(t.map.namesInput(n.id)).val(),e.symbols[n.id]=r(t.map.symbolsInput(n.id)).val(),e.transformations[n.id]=r(t.map.transformationsInput(n.id)).val()})),e}}]),t}();e.default=y},32517:(t,e,n)=>{"use strict";var r,o=(r=n(72100))&&r.__esModule?r:{default:r},i=[];function a(t){i.forEach((function(e){if(t.path&&t.path.length){for(var n=0;n<t.path.length;n+=1)if(t.path[n]===e.node)return;e.callback(t)}else e.node.contains(t.target)||e.callback(t)}))}function s(t,e){i.length||document.addEventListener("click",a,!1),i.push({node:t,callback:e})}function c(t,e){(i=i.filter((function(n){return n.node!==t||!!e&&n.callback!==e}))).length||document.removeEventListener("click",a,!1)}o.default.directive("click-outside",{bind:function(t,e){c(t,e.value),"function"==typeof e.value&&s(t,e.value)},update:function(t,e){e.value!==e.oldValue&&(c(t,e.oldValue),s(t,e.value))},unbind:function(t,e){c(t,e.value)}})},42157:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=a(n(88902)),o=a(n(99663)),i=a(n(22600));function a(t){return t&&t.__esModule?t:{default:t}}var s=function(){function t(){(0,o.default)(this,t)}return(0,i.default)(t,[{key:"interpolate",value:function(t,e){if(!e)return[t];var n=t;return(0,r.default)(e).forEach((function(t){var r=t;-1===r.indexOf("%")&&-1===r.indexOf("{")&&(r="{"+r+"}"),n=n.replace(r,e[t])})),[n]}}]),t}();e.default=s},49042:(t,e,n)=>{"use strict";Object.defineProperty(e,"X",{value:!0});var r,o=(r=n(88239))&&r.__esModule?r:{default:r},i=n(65693);e.Z={name:"CurrencyFormatForm",data:function(){return{value:{symbol:"",transformation:""}}},props:{language:{type:Object,required:!0,default:function(){}}},computed:{availableFormats:function(){return this.language.transformations},customSymbol:{get:function(){return this.value.symbol},set:function(t){this.value.symbol=t,this.$emit("input",this.value)}},customTransformation:{get:function(){return this.value.transformation},set:function(t){this.value.transformation=t,this.$emit("input",this.value)}}},methods:{displayPattern:function(t){var e=t.split(";"),n=(0,o.default)({},this.language.priceSpecification);return n.positivePattern=e[0],n.negativePattern=e.length>1?e[1]:"-"+t,n.currencySymbol=this.customSymbol,i.NumberFormatter.build(n).format(14251999.42)}},mounted:function(){this.customSymbol=this.language.priceSpecification.currencySymbol;var t=this.language.priceSpecification.positivePattern;for(var e in this.language.transformations)if(this.language.transformations[e].split(";")[0]===t){this.customTransformation=e;break}}}},71337:(t,e,n)=>{"use strict";Object.defineProperty(e,"X",{value:!0});var r=n(50066),o=a(n(73605)),i=a(n(50545));function a(t){return t&&t.__esModule?t:{default:t}}e.Z={name:"CurrencyFormatter",data:function(){return{selectedLanguage:null}},props:{id:{type:String,required:!0},languages:{type:Array,required:!0},currencyData:{type:Object,required:!0}},components:{LanguageList:o.default,CurrencyModal:i.default},computed:{languagesCount:function(){return this.languages.length}},methods:{closeModal:function(){this.selectedLanguage=null},selectLanguage:function(t){this.selectedLanguage=t},resetLanguage:function(t){var e=t.currencyPattern.split(";");t.priceSpecification.positivePattern=e[0],t.priceSpecification.negativePattern=e.length>1?e[1]:"-"+e[0],t.priceSpecification.currencySymbol=t.currencySymbol,this.currencyData.transformations[t.id]="",this.currencyData.symbols[t.id]=t.currencySymbol,(0,r.showGrowl)("success",this.$t("list.reset.success"))},applyCustomization:function(t){var e=this.selectedLanguage.transformations[t.transformation].split(";");this.selectedLanguage.priceSpecification.currencySymbol=t.symbol,this.selectedLanguage.priceSpecification.positivePattern=e[0],this.selectedLanguage.priceSpecification.negativePattern=e.length>1?e[1]:"-"+e[0],this.currencyData.transformations[this.selectedLanguage.id]=t.transformation,this.currencyData.symbols[this.selectedLanguage.id]=t.symbol,this.closeModal()}}}},62352:(t,e,n)=>{"use strict";Object.defineProperty(e,"X",{value:!0});var r=i(n(56995)),o=i(n(87222));function i(t){return t&&t.__esModule?t:{default:t}}e.Z={name:"CurrencyModal",data:function(){return{customData:null}},components:{CurrencyFormatForm:o.default,Modal:r.default},props:{language:{type:Object,required:!1,default:null}},computed:{modalTitle:function(){return this.$t("modal.title")+(null!==this.language?" + "+this.language.name:"")}}}},56058:(t,e,n)=>{"use strict";Object.defineProperty(e,"X",{value:!0});var r=n(65693);e.Z={name:"LanguageList",props:{languages:{type:Array,required:!0}},methods:{displayFormat:function(t){var e=r.NumberFormatter.build(t.priceSpecification);return this.$t("list.example.format",{"%price%":e.format(14251999.42),"%discount%":e.format(-566.268)})}}}},59845:(t,e,n)=>{"use strict";Object.defineProperty(e,"X",{value:!0}),n(32517),e.Z={name:"Modal",props:{confirmation:{type:Boolean,required:!1,default:!1},cancelLabel:{type:String,required:!1,default:function(){return this.$t("modal.cancel")}},confirmLabel:{type:String,required:!1,default:function(){return this.$t("modal.apply")}},closeLabel:{type:String,required:!1,default:function(){return this.$t("modal.close")}},modalTitle:{type:String,required:!1,default:function(){return""}}},methods:{close:function(){this.$emit("close")},confirm:function(){this.$emit("confirm")}}}},24043:(t,e,n)=>{t.exports={default:n(47185),__esModule:!0}},26378:(t,e,n)=>{t.exports={default:n(3597),__esModule:!0}},40863:(t,e,n)=>{t.exports={default:n(21035),__esModule:!0}},52945:(t,e,n)=>{t.exports={default:n(56981),__esModule:!0}},85861:(t,e,n)=>{t.exports={default:n(45627),__esModule:!0}},32242:(t,e,n)=>{t.exports={default:n(33391),__esModule:!0}},85105:(t,e,n)=>{t.exports={default:n(30381),__esModule:!0}},88902:(t,e,n)=>{t.exports={default:n(98613),__esModule:!0}},85345:(t,e,n)=>{t.exports={default:n(70433),__esModule:!0}},46593:(t,e,n)=>{t.exports={default:n(80112),__esModule:!0}},93516:(t,e,n)=>{t.exports={default:n(80025),__esModule:!0}},64275:(t,e,n)=>{t.exports={default:n(52392),__esModule:!0}},36803:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(46593))&&r.__esModule?r:{default:r};e.default=function(t){return function(){var e=t.apply(this,arguments);return new o.default((function(t,n){return function r(i,a){try{var s=e[i](a),c=s.value}catch(t){return void n(t)}if(!s.done)return o.default.resolve(c).then((function(t){r("next",t)}),(function(t){r("throw",t)}));t(c)}("next")}))}}},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,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(32242))&&r.__esModule?r:{default:r};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),(0,o.default)(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},88239:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(52945))&&r.__esModule?r:{default:r};e.default=o.default||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t}},93196:(t,e,n)=>{"use strict";e.__esModule=!0;var r=a(n(85345)),o=a(n(85861)),i=a(n(72444));function a(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,i.default)(e)));t.prototype=(0,o.default)(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(r.default?(0,r.default)(t,e):t.__proto__=e)}},49135:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(72444))&&r.__esModule?r:{default:r};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,o.default)(e))&&"function"!=typeof e?t:e}},12424:(t,e,n)=>{"use strict";e.__esModule=!0;var r=i(n(40863)),o=i(n(26378));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=(0,o.default)(t);!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{!r&&c.return&&c.return()}finally{if(i)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}},85315:(t,e,n)=>{"use strict";e.__esModule=!0;var r,o=(r=n(24043))&&r.__esModule?r:{default:r};e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,o.default)(t)}},72444:(t,e,n)=>{"use strict";e.__esModule=!0;var r=a(n(64275)),o=a(n(93516)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},94942:(t,e,n)=>{t.exports=n(20205)},47185:(t,e,n)=>{n(91867),n(2586),t.exports=n(34579).Array.from},3597:(t,e,n)=>{n(73871),n(91867),t.exports=n(46459)},21035:(t,e,n)=>{n(73871),n(91867),t.exports=n(89553)},56981:(t,e,n)=>{n(72699),t.exports=n(34579).Object.assign},45627:(t,e,n)=>{n(86760);var r=n(34579).Object;t.exports=function(t,e){return r.create(t,e)}},33391:(t,e,n)=>{n(31477);var r=n(34579).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},30381:(t,e,n)=>{n(77220),t.exports=n(34579).Object.getPrototypeOf},98613:(t,e,n)=>{n(40961),t.exports=n(34579).Object.keys},70433:(t,e,n)=>{n(59349),t.exports=n(34579).Object.setPrototypeOf},80112:(t,e,n)=>{n(94058),n(91867),n(73871),n(32878),n(95971),n(22526),t.exports=n(34579).Promise},80025:(t,e,n)=>{n(46840),n(94058),n(8174),n(36461),t.exports=n(34579).Symbol},52392:(t,e,n)=>{n(91867),n(73871),t.exports=n(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(){}},29142:t=>{t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},12159:(t,e,n)=>{var r=n(36727);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},57428:(t,e,n)=>{var r=n(7932),o=n(78728),i=n(16531);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},14677:(t,e,n)=>{var r=n(32894),o=n(22939)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},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,n)=>{"use strict";var r=n(4743),o=n(83101);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},19216:(t,e,n)=>{var r=n(85663);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}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,n)=>{t.exports=!n(7929)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},97467:(t,e,n)=>{var r=n(36727),o=n(33938).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},73338:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},70337:(t,e,n)=>{var r=n(46162),o=n(48195),i=n(86274);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,s=n(t),c=i.f,u=0;s.length>u;)c.call(t,a=s[u++])&&e.push(a);return e}},83856:(t,e,n)=>{var r=n(33938),o=n(34579),i=n(19216),a=n(41818),s=n(27069),c=function(t,e,n){var u,l,f,d=t&c.F,p=t&c.G,h=t&c.S,v=t&c.P,m=t&c.B,g=t&c.W,y=p?o:o[e]||(o[e]={}),b=y.prototype,$=p?r:h?r[e]:(r[e]||{}).prototype;for(u in p&&(n=e),n)(l=!d&&$&&void 0!==$[u])&&s(y,u)||(f=l?$[u]:n[u],y[u]=p&&"function"!=typeof $[u]?n[u]:m&&l?i(f,r):g&&$[u]==f?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(f):v&&"function"==typeof f?i(Function.call,f):f,v&&((y.virtual||(y.virtual={}))[u]=f,t&c.R&&b&&!b[u]&&a(b,u,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,t.exports=c},7929:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},45576:(t,e,n)=>{var r=n(19216),o=n(95602),i=n(45991),a=n(12159),s=n(78728),c=n(83728),u={},l={},f=t.exports=function(t,e,n,f,d){var p,h,v,m,g=d?function(){return t}:c(t),y=r(n,f,e?2:1),b=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(i(g)){for(p=s(t.length);p>b;b++)if((m=e?y(a(h=t[b])[0],h[1]):y(t[b]))===u||m===l)return m}else for(v=g.call(t);!(h=v.next()).done;)if((m=o(v,y,h.value,e))===u||m===l)return m};f.BREAK=u,f.RETURN=l},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,n){return e.call(t,n)}},41818:(t,e,n)=>{var r=n(4743),o=n(83101);t.exports=n(89666)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},54881:(t,e,n)=>{var r=n(33938).document;t.exports=r&&r.documentElement},33758:(t,e,n)=>{t.exports=!n(89666)&&!n(7929)((function(){return 7!=Object.defineProperty(n(97467)("div"),"a",{get:function(){return 7}}).a}))},46778:t=>{t.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},50799:(t,e,n)=>{var r=n(32894);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},45991:(t,e,n)=>{var r=n(15449),o=n(22939)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},71421:(t,e,n)=>{var r=n(32894);t.exports=Array.isArray||function(t){return"Array"==r(t)}},36727:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},95602:(t,e,n)=>{var r=n(12159);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},33945:(t,e,n)=>{"use strict";var r=n(98989),o=n(83101),i=n(25378),a={};n(41818)(a,n(22939)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},45700:(t,e,n)=>{"use strict";var r=n(16227),o=n(83856),i=n(57470),a=n(41818),s=n(15449),c=n(33945),u=n(25378),l=n(95089),f=n(22939)("iterator"),d=!([].keys&&"next"in[].keys()),p="keys",h="values",v=function(){return this};t.exports=function(t,e,n,m,g,y,b){c(n,e,m);var $,_,w,x=function(t){if(!d&&t in O)return O[t];switch(t){case p:case h:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",C=g==h,S=!1,O=t.prototype,A=O[f]||O["@@iterator"]||g&&O[g],T=A||x(g),M=g?C?x("entries"):T:void 0,j="Array"==e&&O.entries||A;if(j&&(w=l(j.call(new t)))!==Object.prototype&&w.next&&(u(w,k,!0),r||"function"==typeof w[f]||a(w,f,v)),C&&A&&A.name!==h&&(S=!0,T=function(){return A.call(this)}),r&&!b||!d&&!S&&O[f]||a(O,f,T),s[e]=T,s[k]=v,g)if($={values:C?T:x(h),keys:y?T:x(p),entries:M},b)for(_ in $)_ in O||i(O,_,$[_]);else o(o.P+o.F*(d||S),e,$);return $}},96630:(t,e,n)=>{var r=n(22939)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},85084:t=>{t.exports=function(t,e){return{value:e,done:!!t}}},15449:t=>{t.exports={}},16227:t=>{t.exports=!0},77177:(t,e,n)=>{var r=n(65730)("meta"),o=n(36727),i=n(27069),a=n(4743).f,s=0,c=Object.isExtensible||function(){return!0},u=!n(7929)((function(){return c(Object.preventExtensions({}))})),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!i(t,r)&&l(t),t}}},81601:(t,e,n)=>{var r=n(33938),o=n(62569).set,i=r.MutationObserver||r.WebKitMutationObserver,a=r.process,s=r.Promise,c="process"==n(32894)(a);t.exports=function(){var t,e,n,u=function(){var r,o;for(c&&(r=a.domain)&&r.exit();t;){o=t.fn,t=t.next;try{o()}catch(r){throw t?n():e=void 0,r}}e=void 0,r&&r.enter()};if(c)n=function(){a.nextTick(u)};else if(!i||r.navigator&&r.navigator.standalone)if(s&&s.resolve){var l=s.resolve(void 0);n=function(){l.then(u)}}else n=function(){o.call(r,u)};else{var f=!0,d=document.createTextNode("");new i(u).observe(d,{characterData:!0}),n=function(){d.data=f=!f}}return function(r){var o={fn:r,next:void 0};e&&(e.next=o),t||(t=o,n()),e=o}}},59304:(t,e,n)=>{"use strict";var r=n(85663);function o(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=r(e),this.reject=r(n)}t.exports.f=function(t){return new o(t)}},88082:(t,e,n)=>{"use strict";var r=n(89666),o=n(46162),i=n(48195),a=n(86274),s=n(66530),c=n(50799),u=Object.assign;t.exports=!u||n(7929)((function(){var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=u({},t)[n]||Object.keys(u({},e)).join("")!=r}))?function(t,e){for(var n=s(t),u=arguments.length,l=1,f=i.f,d=a.f;u>l;)for(var p,h=c(arguments[l++]),v=f?o(h).concat(f(h)):o(h),m=v.length,g=0;m>g;)p=v[g++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:u},98989:(t,e,n)=>{var r=n(12159),o=n(57856),i=n(73338),a=n(58989)("IE_PROTO"),s=function(){},c=function(){var t,e=n(97467)("iframe"),r=i.length;for(e.style.display="none",n(54881).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},4743:(t,e,n)=>{var r=n(12159),o=n(33758),i=n(33206),a=Object.defineProperty;e.f=n(89666)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},57856:(t,e,n)=>{var r=n(4743),o=n(12159),i=n(46162);t.exports=n(89666)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},76183:(t,e,n)=>{var r=n(86274),o=n(83101),i=n(7932),a=n(33206),s=n(27069),c=n(33758),u=Object.getOwnPropertyDescriptor;e.f=n(89666)?u:function(t,e){if(t=i(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},94368:(t,e,n)=>{var r=n(7932),o=n(33230).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},33230:(t,e,n)=>{var r=n(12963),o=n(73338).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},48195:(t,e)=>{e.f=Object.getOwnPropertySymbols},95089:(t,e,n)=>{var r=n(27069),o=n(66530),i=n(58989)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},12963:(t,e,n)=>{var r=n(27069),o=n(7932),i=n(57428)(!1),a=n(58989)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},46162:(t,e,n)=>{var r=n(12963),o=n(73338);t.exports=Object.keys||function(t){return r(t,o)}},86274:(t,e)=>{e.f={}.propertyIsEnumerable},12584:(t,e,n)=>{var r=n(83856),o=n(34579),i=n(7929);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i((function(){n(1)})),"Object",a)}},10931:t=>{t.exports=function(t){try{return{e:!1,v:t()}}catch(t){return{e:!0,v:t}}}},87790:(t,e,n)=>{var r=n(12159),o=n(36727),i=n(59304);t.exports=function(t,e){if(r(t),o(e)&&e.constructor===t)return e;var n=i.f(t);return(0,n.resolve)(e),n.promise}},83101:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},48144:(t,e,n)=>{var r=n(41818);t.exports=function(t,e,n){for(var o in e)n&&t[o]?t[o]=e[o]:r(t,o,e[o]);return t}},57470:(t,e,n)=>{t.exports=n(41818)},62906:(t,e,n)=>{var r=n(36727),o=n(12159),i=function(t,e){if(o(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,e,r){try{(r=n(19216)(Function.call,n(76183).f(Object.prototype,"__proto__").set,2))(t,[]),e=!(t instanceof Array)}catch(t){e=!0}return function(t,n){return i(t,n),e?t.__proto__=n:r(t,n),t}}({},!1):void 0),check:i}},39967:(t,e,n)=>{"use strict";var r=n(33938),o=n(34579),i=n(4743),a=n(89666),s=n(22939)("species");t.exports=function(t){var e="function"==typeof o[t]?o[t]:r[t];a&&e&&!e[s]&&i.f(e,s,{configurable:!0,get:function(){return this}})}},25378:(t,e,n)=>{var r=n(4743).f,o=n(27069),i=n(22939)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},58989:(t,e,n)=>{var r=n(20250)("keys"),o=n(65730);t.exports=function(t){return r[t]||(r[t]=o(t))}},20250:(t,e,n)=>{var r=n(34579),o=n(33938),i="__core-js_shared__",a=o[i]||(o[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},32707:(t,e,n)=>{var r=n(12159),o=n(85663),i=n(22939)("species");t.exports=function(t,e){var n,a=r(t).constructor;return void 0===a||null==(n=r(a)[i])?e:o(n)}},90510:(t,e,n)=>{var r=n(11052),o=n(8333);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c))<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},62569:(t,e,n)=>{var r,o,i,a=n(19216),s=n(46778),c=n(54881),u=n(97467),l=n(33938),f=l.process,d=l.setImmediate,p=l.clearImmediate,h=l.MessageChannel,v=l.Dispatch,m=0,g={},y=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},b=function(t){y.call(t.data)};d&&p||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return g[++m]=function(){s("function"==typeof t?t:Function(t),e)},r(m),m},p=function(t){delete g[t]},"process"==n(32894)(f)?r=function(t){f.nextTick(a(y,t,1))}:v&&v.now?r=function(t){v.now(a(y,t,1))}:h?(i=(o=new h).port2,o.port1.onmessage=b,r=a(i.postMessage,i,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",b,!1)):r="onreadystatechange"in u("script")?function(t){c.appendChild(u("script")).onreadystatechange=function(){c.removeChild(this),y.call(t)}}:function(t){setTimeout(a(y,t,1),0)}),t.exports={set:d,clear:p}},16531:(t,e,n)=>{var r=n(11052),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},11052:t=>{var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},7932:(t,e,n)=>{var r=n(50799),o=n(8333);t.exports=function(t){return r(o(t))}},78728:(t,e,n)=>{var r=n(11052),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},66530:(t,e,n)=>{var r=n(8333);t.exports=function(t){return Object(r(t))}},33206:(t,e,n)=>{var r=n(36727);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},65730:t=>{var e=0,n=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++e+n).toString(36))}},26640:(t,e,n)=>{var r=n(33938).navigator;t.exports=r&&r.userAgent||""},76347:(t,e,n)=>{var r=n(33938),o=n(34579),i=n(16227),a=n(25103),s=n(4743).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},25103:(t,e,n)=>{e.f=n(22939)},22939:(t,e,n)=>{var r=n(20250)("wks"),o=n(65730),i=n(33938).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},83728:(t,e,n)=>{var r=n(14677),o=n(22939)("iterator"),i=n(15449);t.exports=n(34579).getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},46459:(t,e,n)=>{var r=n(12159),o=n(83728);t.exports=n(34579).getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},89553:(t,e,n)=>{var r=n(14677),o=n(22939)("iterator"),i=n(15449);t.exports=n(34579).isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},2586:(t,e,n)=>{"use strict";var r=n(19216),o=n(83856),i=n(66530),a=n(95602),s=n(45991),c=n(78728),u=n(52445),l=n(83728);o(o.S+o.F*!n(96630)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,o,f,d=i(t),p="function"==typeof this?this:Array,h=arguments.length,v=h>1?arguments[1]:void 0,m=void 0!==v,g=0,y=l(d);if(m&&(v=r(v,h>2?arguments[2]:void 0,2)),null==y||p==Array&&s(y))for(n=new p(e=c(d.length));e>g;g++)u(n,g,m?v(d[g],g):d[g]);else for(f=y.call(d),n=new p;!(o=f.next()).done;g++)u(n,g,m?a(f,v,[o.value,g],!0):o.value);return n.length=g,n}})},3882:(t,e,n)=>{"use strict";var r=n(79003),o=n(85084),i=n(15449),a=n(7932);t.exports=n(45700)(Array,"Array",(function(t,e){this._t=a(t),this._i=0,this._k=e}),(function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])}),"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},72699:(t,e,n)=>{var r=n(83856);r(r.S+r.F,"Object",{assign:n(88082)})},86760:(t,e,n)=>{var r=n(83856);r(r.S,"Object",{create:n(98989)})},31477:(t,e,n)=>{var r=n(83856);r(r.S+r.F*!n(89666),"Object",{defineProperty:n(4743).f})},77220:(t,e,n)=>{var r=n(66530),o=n(95089);n(12584)("getPrototypeOf",(function(){return function(t){return o(r(t))}}))},40961:(t,e,n)=>{var r=n(66530),o=n(46162);n(12584)("keys",(function(){return function(t){return o(r(t))}}))},59349:(t,e,n)=>{var r=n(83856);r(r.S,"Object",{setPrototypeOf:n(62906).set})},94058:()=>{},32878:(t,e,n)=>{"use strict";var r,o,i,a,s=n(16227),c=n(33938),u=n(19216),l=n(14677),f=n(83856),d=n(36727),p=n(85663),h=n(29142),v=n(45576),m=n(32707),g=n(62569).set,y=n(81601)(),b=n(59304),$=n(10931),_=n(26640),w=n(87790),x="Promise",k=c.TypeError,C=c.process,S=C&&C.versions,O=S&&S.v8||"",A=c.Promise,T="process"==l(C),M=function(){},j=o=b.f,E=!!function(){try{var t=A.resolve(1),e=(t.constructor={})[n(22939)("species")]=function(t){t(M,M)};return(T||"function"==typeof PromiseRejectionEvent)&&t.then(M)instanceof e&&0!==O.indexOf("6.6")&&-1===_.indexOf("Chrome/66")}catch(t){}}(),F=function(t){var e;return!(!d(t)||"function"!=typeof(e=t.then))&&e},L=function(t,e){if(!t._n){t._n=!0;var n=t._c;y((function(){for(var r=t._v,o=1==t._s,i=0,a=function(e){var n,i,a,s=o?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(o||(2==t._h&&I(t),t._h=1),!0===s?n=r:(l&&l.enter(),n=s(r),l&&(l.exit(),a=!0)),n===e.promise?u(k("Promise-chain cycle")):(i=F(n))?i.call(n,c,u):c(n)):u(r)}catch(t){l&&!a&&l.exit(),u(t)}};n.length>i;)a(n[i++]);t._c=[],t._n=!1,e&&!t._h&&P(t)}))}},P=function(t){g.call(c,(function(){var e,n,r,o=t._v,i=D(t);if(i&&(e=$((function(){T?C.emit("unhandledRejection",o,t):(n=c.onunhandledrejection)?n({promise:t,reason:o}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",o)})),t._h=T||D(t)?2:1),t._a=void 0,i&&e.e)throw e.v}))},D=function(t){return 1!==t._h&&0===(t._a||t._c).length},I=function(t){g.call(c,(function(){var e;T?C.emit("rejectionHandled",t):(e=c.onrejectionhandled)&&e({promise:t,reason:t._v})}))},N=function(t){var e=this;e._d||(e._d=!0,(e=e._w||e)._v=t,e._s=2,e._a||(e._a=e._c.slice()),L(e,!0))},R=function(t){var e,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===t)throw k("Promise can't be resolved itself");(e=F(t))?y((function(){var r={_w:n,_d:!1};try{e.call(t,u(R,r,1),u(N,r,1))}catch(t){N.call(r,t)}})):(n._v=t,n._s=1,L(n,!1))}catch(t){N.call({_w:n,_d:!1},t)}}};E||(A=function(t){h(this,A,x,"_h"),p(t),r.call(this);try{t(u(R,this,1),u(N,this,1))}catch(t){N.call(this,t)}},(r=function(t){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(48144)(A.prototype,{then:function(t,e){var n=j(m(this,A));return n.ok="function"!=typeof t||t,n.fail="function"==typeof e&&e,n.domain=T?C.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&L(this,!1),n.promise},catch:function(t){return this.then(void 0,t)}}),i=function(){var t=new r;this.promise=t,this.resolve=u(R,t,1),this.reject=u(N,t,1)},b.f=j=function(t){return t===A||t===a?new i(t):o(t)}),f(f.G+f.W+f.F*!E,{Promise:A}),n(25378)(A,x),n(39967)(x),a=n(34579).Promise,f(f.S+f.F*!E,x,{reject:function(t){var e=j(this);return(0,e.reject)(t),e.promise}}),f(f.S+f.F*(s||!E),x,{resolve:function(t){return w(s&&this===a?A:this,t)}}),f(f.S+f.F*!(E&&n(96630)((function(t){A.all(t).catch(M)}))),x,{all:function(t){var e=this,n=j(e),r=n.resolve,o=n.reject,i=$((function(){var n=[],i=0,a=1;v(t,!1,(function(t){var s=i++,c=!1;n.push(void 0),a++,e.resolve(t).then((function(t){c||(c=!0,n[s]=t,--a||r(n))}),o)})),--a||r(n)}));return i.e&&o(i.v),n.promise},race:function(t){var e=this,n=j(e),r=n.reject,o=$((function(){v(t,!1,(function(t){e.resolve(t).then(n.resolve,r)}))}));return o.e&&r(o.v),n.promise}})},91867:(t,e,n)=>{"use strict";var r=n(90510)(!0);n(45700)(String,"String",(function(t){this._t=String(t),this._i=0}),(function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})}))},46840:(t,e,n)=>{"use strict";var r=n(33938),o=n(27069),i=n(89666),a=n(83856),s=n(57470),c=n(77177).KEY,u=n(7929),l=n(20250),f=n(25378),d=n(65730),p=n(22939),h=n(25103),v=n(76347),m=n(70337),g=n(71421),y=n(12159),b=n(36727),$=n(66530),_=n(7932),w=n(33206),x=n(83101),k=n(98989),C=n(94368),S=n(76183),O=n(48195),A=n(4743),T=n(46162),M=S.f,j=A.f,E=C.f,F=r.Symbol,L=r.JSON,P=L&&L.stringify,D=p("_hidden"),I=p("toPrimitive"),N={}.propertyIsEnumerable,R=l("symbol-registry"),z=l("symbols"),B=l("op-symbols"),U=Object.prototype,H="function"==typeof F&&!!O.f,W=r.QObject,G=!W||!W.prototype||!W.prototype.findChild,V=i&&u((function(){return 7!=k(j({},"a",{get:function(){return j(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=M(U,e);r&&delete U[e],j(t,e,n),r&&t!==U&&j(U,e,r)}:j,q=function(t){var e=z[t]=k(F.prototype);return e._k=t,e},J=H&&"symbol"==typeof F.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof F},Z=function(t,e,n){return t===U&&Z(B,e,n),y(t),e=w(e,!0),y(n),o(z,e)?(n.enumerable?(o(t,D)&&t[D][e]&&(t[D][e]=!1),n=k(n,{enumerable:x(0,!1)})):(o(t,D)||j(t,D,x(1,{})),t[D][e]=!0),V(t,e,n)):j(t,e,n)},K=function(t,e){y(t);for(var n,r=m(e=_(e)),o=0,i=r.length;i>o;)Z(t,n=r[o++],e[n]);return t},X=function(t){var e=N.call(this,t=w(t,!0));return!(this===U&&o(z,t)&&!o(B,t))&&(!(e||!o(this,t)||!o(z,t)||o(this,D)&&this[D][t])||e)},Y=function(t,e){if(t=_(t),e=w(e,!0),t!==U||!o(z,e)||o(B,e)){var n=M(t,e);return!n||!o(z,e)||o(t,D)&&t[D][e]||(n.enumerable=!0),n}},Q=function(t){for(var e,n=E(_(t)),r=[],i=0;n.length>i;)o(z,e=n[i++])||e==D||e==c||r.push(e);return r},tt=function(t){for(var e,n=t===U,r=E(n?B:_(t)),i=[],a=0;r.length>a;)!o(z,e=r[a++])||n&&!o(U,e)||i.push(z[e]);return i};H||(s((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var t=d(arguments.length>0?arguments[0]:void 0),e=function(n){this===U&&e.call(B,n),o(this,D)&&o(this[D],t)&&(this[D][t]=!1),V(this,t,x(1,n))};return i&&G&&V(U,t,{configurable:!0,set:e}),q(t)}).prototype,"toString",(function(){return this._k})),S.f=Y,A.f=Z,n(33230).f=C.f=Q,n(86274).f=X,O.f=tt,i&&!n(16227)&&s(U,"propertyIsEnumerable",X,!0),h.f=function(t){return q(p(t))}),a(a.G+a.W+a.F*!H,{Symbol:F});for(var et="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),nt=0;et.length>nt;)p(et[nt++]);for(var rt=T(p.store),ot=0;rt.length>ot;)v(rt[ot++]);a(a.S+a.F*!H,"Symbol",{for:function(t){return o(R,t+="")?R[t]:R[t]=F(t)},keyFor:function(t){if(!J(t))throw TypeError(t+" is not a symbol!");for(var e in R)if(R[e]===t)return e},useSetter:function(){G=!0},useSimple:function(){G=!1}}),a(a.S+a.F*!H,"Object",{create:function(t,e){return void 0===e?k(t):K(k(t),e)},defineProperty:Z,defineProperties:K,getOwnPropertyDescriptor:Y,getOwnPropertyNames:Q,getOwnPropertySymbols:tt});var it=u((function(){O.f(1)}));a(a.S+a.F*it,"Object",{getOwnPropertySymbols:function(t){return O.f($(t))}}),L&&a(a.S+a.F*(!H||u((function(){var t=F();return"[null]"!=P([t])||"{}"!=P({a:t})||"{}"!=P(Object(t))}))),"JSON",{stringify:function(t){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=e=r[1],(b(e)||void 0!==t)&&!J(t))return g(e)||(e=function(t,e){if("function"==typeof n&&(e=n.call(this,t,e)),!J(e))return e}),r[1]=e,P.apply(L,r)}}),F.prototype[I]||n(41818)(F.prototype,I,F.prototype.valueOf),f(F,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},95971:(t,e,n)=>{"use strict";var r=n(83856),o=n(34579),i=n(33938),a=n(32707),s=n(87790);r(r.P+r.R,"Promise",{finally:function(t){var e=a(this,o.Promise||i.Promise),n="function"==typeof t;return this.then(n?function(n){return s(e,t()).then((function(){return n}))}:t,n?function(n){return s(e,t()).then((function(){throw n}))}:t)}})},22526:(t,e,n)=>{"use strict";var r=n(83856),o=n(59304),i=n(10931);r(r.S,"Promise",{try:function(t){var e=o.f(this),n=i(t);return(n.e?e.reject:e.resolve)(n.v),e.promise}})},8174:(t,e,n)=>{n(76347)("asyncIterator")},36461:(t,e,n)=>{n(76347)("observable")},73871:(t,e,n)=>{n(3882);for(var r=n(33938),o=n(41818),i=n(15449),a=n(22939)("toStringTag"),s="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(","),c=0;c<s.length;c++){var u=s[c],l=r[u],f=l&&l.prototype;f&&!f[a]&&o(f,a,u),i[u]=i.Array}},21120:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var r=n(94015),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([t.id,".modal-header .close[data-v-01d68143]{font-size:1.2rem;color:#6c868e;opacity:1}.modal-content[data-v-01d68143]{border-radius:0}\n","",{version:3,sources:["webpack://./js/pages/currency/form/components/CurrencyModal.vue","webpack://./node_modules/prestakit/scss/_variables.scss"],names:[],mappings:"AAwEA,sCACE,gBAAiB,CACjB,aC/DgB,CDgEhB,SAAU,CACX,gCAEC,eACF",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n@import '~@scss/config/_settings.scss';\n\n.modal-header .close {\n  font-size: 1.2rem;\n  color: $gray-medium;\n  opacity: 1;\n}\n.modal-content {\n  border-radius: 0\n}\n",'/* stylelint-disable */\n\n// Color system\n$white: #fff;\n$gray-disabled: #eaebec;\n$gray-100: #fafbfc;\n$gray-200: #fafbfc;\n$gray-250: #fafbfc;\n$gray-300: #bbcdd2;\n$gray-400: #bbcdd2;\n$gray-450: #b3c7cd;\n$gray-500: #6c868e;\n$gray-550: #708090;\n$gray-600: #6c868e;\n$gray-700: #363a41;\n$gray-750: #363a41;\n$gray-800: #363a41;\n$gray-900: #282b30;\n$black: #000;\n\n// PS Vars\n$extra-light-gray: $gray-100;\n$light-gray: $gray-300;\n$medium-gray: $gray-500;\n$dark-gray: $gray-700;\n$extra-dark-gray: $gray-900;\n$gray-light: $light-gray;\n$gray-medium: $medium-gray;\n$gray-dark: $dark-gray;\n$gray-soft: $gray-200;\n$background-color: #eff1f2;\n$primary-lighten: #f4fcfd;\n$local-font: false !default;\n\n$blue: #25b9d7;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #e83e8c !default;\n$red: #f54c3e;\n$orange: #fd7e14 !default;\n$yellow: #fab000;\n$green: #70b580;\n$orange: #fd7e14 !default;\n$teal: #20c997 !default;\n$cyan: $blue;\n$light-blue: #f4fcfd;\n\n// main button background colors\n$primary-hover: #7cd5e7;\n$primary-active: #21a6c1;\n$primary-disabled: #d3f1f7;\n$secondary-hover: #b7ced3;\n$secondary-active: #889da2;\n$danger-hover: #fde1e1;\n$notice: #dff5f9;\n\n$primary: $blue !default;\n$secondary: $medium-gray;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-800 !default;\n\n$toast-success: #53d572 !default;\n$toast-warning: #fab000 !default;\n\n$brand-primary: $primary !default;\n$brand-secondary: $secondary !default;\n$brand-info: #5bc0de !default;\n$brand-warning: #f0ad4e !default;\n$brand-success: $success !default;\n$brand-danger: $danger !default;\n\n$btn-primary-bg: $primary-hover;\n$btn-secondary-border: #000;\n$btn-info-bg: $brand-info !default;\n$btn-success-bg: $brand-success !default;\n$btn-warning-bg: $brand-warning !default;\n$btn-danger-bg: $brand-danger !default;\n\n$theme-colors: (\n  "primary": $primary,\n  "secondary": $secondary,\n  "success": $success,\n  "info": $info,\n  "warning": $warning,\n  "danger": $danger,\n  "light": $light,\n  "dark": $dark\n);\n\n$alerts-background-colors: (\n  "success": #cbf2d4,\n  "info": #beeaf3,\n  "warning": #fffbd3,\n  "danger": #fbc6c3\n);\n\n$alerts-second-colors: (\n  "success": #53d572,\n  "info": #25b9d7,\n  "warning": #fab000,\n  "danger": #f44336\n);\n\n$theme-alerts-icons: (\n  success: "\\E5CA",\n  info: "\\e88e",\n  warning: "\\E002",\n  danger: "\\e000"\n);\n\n$theme-colors-icons: (\n  "primary": $primary,\n  "secondary": $secondary,\n  "success": $success,\n  "info": $info,\n  "warning": #fab000,\n  "danger": $danger,\n  "light": $light\n);\n\n$theme-colors-hover: (\n  primary: $primary-hover,\n  secondary: $secondary-hover,\n  success: #9bcba6,\n  info: $primary-hover,\n  warning: #e6b045,\n  danger: #e76d7a,\n  light: $gray-800,\n  dark: $gray-100,\n  default: $light-blue\n);\n\n$theme-colors-active: (\n  primary: $primary-active,\n  secondary: $secondary-active,\n  success: #5a9166,\n  info: darken(map-get($theme-colors, "info"), 10%),\n  warning: darken(map-get($theme-colors, "warning"), 10%),\n  danger: #c3362b,\n  light: darken(map-get($theme-colors, "light"), 10%),\n  dark: darken(map-get($theme-colors, "dark"), 10%),\n  default: $primary\n);\n\n$theme-colors-background: (\n  primary: #dff5f9,\n  secondary: $black,\n  success: #d6f0d8,\n  info: #dff5f9,\n  warning: #fffbd3,\n  danger: #fde1e1,\n  light: $gray-200,\n  dark: $gray-700\n);\n\n$theme-colors-shadow: (\n  primary: theme-color("primary"),\n  secondary: $black,\n  success: theme-color("success"),\n  info: theme-color("info"),\n  warning: theme-color("warning"),\n  danger: theme-color("danger"),\n  light: theme-color("light"),\n  dark: theme-color("dark")\n);\n\n// Options\n$enable-caret: true !default;\n$enable-rounded: true;\n$enable-shadows: true;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-grid-classes: true !default;\n$enable-print-styles: true !default;\n\n// Spacing\n$spacer: 1.875rem;\n\n$spacers: (\n  0: 0,\n  1: (\n    $spacer / 6\n  ),\n  2: (\n    $spacer / 3\n  ),\n  3: (\n    $spacer / 2\n  ),\n  4: $spacer,\n  5: (\n    $spacer * 2\n  )\n);\n\n// Body\n$body-bg: $white !default;\n$body-color: $dark-gray;\n\n// Links\n$link-hover-color: theme-color("primary") !default;\n$link-hover-decoration: underline;\n\n// Paragraphs\n$paragraph-margin-bottom: 1rem;\n\n// Grid breakpoints\n$grid-breakpoints: (\n  xs: 0,\n  sm: 544px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1300px,\n  xxl: 1600px // PS custom\n);\n@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");\n@include _assert-starts-at-zero($grid-breakpoints);\n\n// Grid containers\n$container-max-widths: (\n  sm: 576px,\n  md: 720px,\n  lg: 972px,\n  xl: 1240px\n);\n@include _assert-ascending($container-max-widths, "$container-max-widths");\n\n// Grid columns\n//$grid-columns:                12 !default;\n$grid-gutter-width: 1.875rem !default;\n\n// Components\n//$line-height-lg:              1.5 !default;\n//$line-height-sm:              1.5 !default;\n\n//$border-width:                1px !default;\n//$border-color:                $gray-300 !default;\n\n$border-radius: 4px !default;\n//$border-radius-lg:            .3rem !default;\n//$border-radius-sm:            .2rem !default;\n\n//$component-active-color:      $white !default;\n//$component-active-bg:         theme-color("primary") !default;\n\n$caret-width: .25rem;\n\n//$transition-base:             all .2s ease-in-out !default;\n//$transition-fade:             opacity .15s linear !default;\n//$transition-collapse:         height .35s ease !default;\n\n// Fonts\n$font-family-sans-serif: "Open Sans", helvetica, arial, sans-serif;\n//$font-family-monospace:       SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;\n//$font-family-base:            $font-family-sans-serif !default;\n\n$font-size-base: .875rem;\n$font-size-lg: 1rem;\n$font-size-sm: .75rem;\n$font-size-xs: .625rem; // PS custom\n\n//$font-weight-light:           300;\n//$font-weight-normal:          400;\n$font-weight-semibold: 600;\n$font-weight-bold: 700;\n\n$h1-font-size: 1.5rem;\n$h2-font-size: 1.25rem;\n$h3-font-size: 1rem;\n$h4-font-size: .875rem;\n$h5-font-size: .75rem;\n$h6-font-size: .625rem;\n\n//$headings-margin-bottom:      ($spacer / 2) !default;\n$headings-font-family: $font-family-sans-serif;\n$headings-font-weight: $font-weight-bold;\n$headings-color: $body-color;\n\n//$display1-size:               6rem !default;\n//$display2-size:               5.5rem !default;\n//$display3-size:               4.5rem !default;\n//$display4-size:               3.5rem !default;\n\n//$display1-weight:             300 !default;\n//$display2-weight:             300 !default;\n//$display3-weight:             300 !default;\n//$display4-weight:             300 !default;\n//$display-line-height:         $headings-line-height !default;\n\n//$lead-font-size:              ($font-size-base * 1.25) !default;\n//$lead-font-weight:            300 !default;\n\n//$small-font-size:             80% !default;\n\n$text-muted: $medium-gray;\n\n//$blockquote-small-color:      $gray-600 !default;\n//$blockquote-font-size:        ($font-size-base * 1.25) !default;\n\n$hr-border-color: $light-gray;\n//$hr-border-width:             $border-width !default;\n\n//$mark-padding:                .2em !default;\n\n//$dt-font-weight:              $font-weight-bold !default;\n\n//$kbd-box-shadow:              inset 0 -.1rem 0 rgba($black, .25) !default;\n//$nested-kbd-font-weight:      $font-weight-bold !default;\n\n//$list-inline-padding:         .5rem !default;\n\n//$mark-bg:                     #fcf8e3 !default;\n\n//$hr-margin-y:                 $spacer !default;\n\n// Tables\n$table-cell-padding: .4rem;\n$table-cell-padding-sm: .25rem;\n\n//$table-bg:                    transparent !default;\n$table-accent-bg: $background-color;\n$table-hover-bg: theme-color-hover("primary");\n$table-active-bg: theme-color-hover("primary");\n\n//$table-border-width:          $border-width !default;\n//$table-border-color:          $gray-300 !default;\n\n$table-head-bg: $background-color;\n$table-head-color: $body-color;\n\n$table-dark-bg: $body-color;\n$table-dark-accent-bg: $extra-dark-gray;\n$table-dark-hover-bg: theme-color-hover("primary");\n$table-dark-border-color: $medium-gray;\n//$table-dark-color:            $body-bg !default;\n\n// Buttons\n$input-btn-padding-y: .375rem;\n$input-btn-padding-x: .838rem;\n//$input-btn-line-height:       $line-height-base !default;\n\n//$input-btn-focus-width:       .2rem !default;\n//$input-btn-focus-color:       rgba($component-active-bg, .25) !default;\n//$input-btn-focus-box-shadow:  0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .313rem;\n$input-btn-padding-x-sm: .625rem;\n//$input-btn-line-height-sm:    $line-height-sm !default;\n\n$input-btn-padding-y-lg: .438rem;\n$input-btn-padding-x-lg: .838rem;\n//$input-btn-line-height-lg:    $line-height-lg !default;\n\n//$input-btn-border-width:      $border-width !default;\n\n// Buttons\n$btn-padding-y: .5rem !default;\n$btn-padding-x: 1rem !default;\n//$btn-line-height:             $input-btn-line-height !default;\n\n//$btn-padding-y-sm:            $input-btn-padding-y-sm !default;\n//$btn-padding-x-sm:            $input-btn-padding-x-sm !default;\n//$btn-line-height-sm:          $input-btn-line-height-sm !default;\n\n//$btn-padding-y-lg:            $input-btn-padding-y-lg !default;\n//$btn-padding-x-lg:            $input-btn-padding-x-lg !default;\n//$btn-line-height-lg:          $input-btn-line-height-lg !default;\n\n//$btn-border-width:            $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-semibold;\n$btn-box-shadow: none;\n//$btn-focus-width:             $input-btn-focus-width !default;\n$btn-focus-box-shadow: none;\n//$btn-disabled-opacity:        .65 !default;\n$btn-active-box-shadow: none;\n\n//$btn-link-disabled-color:     $gray-600 !default;\n\n//$btn-block-spacing-y:         .5rem !default;\n\n$btn-border-radius: 4px;\n//$btn-border-radius-lg:        $border-radius-lg !default;\n//$btn-border-radius-sm:        $border-radius-sm !default;\n\n//$btn-transition:              color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n// Forms\n$input-padding-y: .375rem;\n$input-padding-x: .4375rem;\n//$input-line-height:                     $input-btn-line-height !default;\n\n//$input-padding-y-sm:                    $input-btn-padding-y-sm !default;\n//$input-padding-x-sm:                    $input-btn-padding-x-sm !default;\n//$input-line-height-sm:                  $input-btn-line-height-sm !default;\n\n//$input-padding-y-lg:                    $input-btn-padding-y-lg !default;\n//$input-padding-x-lg:                    $input-btn-padding-x-lg !default;\n//$input-line-height-lg:                  $input-btn-line-height-lg !default;\n\n//$input-bg:                              $white !default;\n$input-disabled-bg: #eceeef;\n\n$input-color: $body-color;\n$input-border-color: $light-gray;\n//$input-border-width:                    $input-btn-border-width !default;\n$input-box-shadow: none;\n\n//$input-border-radius:                   $border-radius !default;\n//$input-border-radius-lg:                $border-radius-lg !default;\n//$input-border-radius-sm:                $border-radius-sm !default;\n\n//$input-focus-bg:                        $input-bg !default;\n$input-focus-border-color: theme-color-hover("primary");\n//$input-focus-color:                     $input-color !default;\n//$input-focus-width:                     $input-btn-focus-width !default;\n$input-focus-box-shadow: none;\n\n$input-placeholder-color: $medium-gray;\n\n//$input-height-border:                   $input-border-width * 2 !default;\n\n//$input-height-inner:                    ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;\n$input-height: 2.188rem;\n\n//$input-height-inner-sm:                 ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;\n//$input-height-sm:                       calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;\n\n//$input-height-inner-lg:                 ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;\n$input-height-lg: 2.188rem;\n\n//$input-transition:                      border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n//$form-text-margin-top:                  .25rem !default;\n\n//$form-check-input-gutter:               1.25rem !default;\n//$form-check-input-margin-y:             .3rem !default;\n//$form-check-input-margin-x:             .25rem !default;\n\n//$form-check-inline-margin-x:            .75rem !default;\n//$form-check-inline-input-margin-x:      .3125rem !default;\n\n//$form-group-margin-bottom:              1rem !default;\n\n//$input-group-addon-color:               $input-color !default;\n$input-group-addon-bg: $extra-light-gray;\n//$input-group-addon-border-color:        $input-border-color !default;\n\n//$custom-control-gutter:                 1.5rem !default;\n//$custom-control-spacer-x:               1rem !default;\n\n//$custom-control-indicator-size:         1rem !default;\n//$custom-control-indicator-bg:           $gray-300 !default;\n//$custom-control-indicator-bg-size:      50% 50% !default;\n//$custom-control-indicator-box-shadow:   inset 0 .25rem .25rem rgba($black, .1) !default;\n\n//$custom-control-indicator-disabled-bg:          $gray-200 !default;\n//$custom-control-label-disabled-color:     $gray-600 !default;\n\n//$custom-control-indicator-checked-color:        $component-active-color !default;\n//$custom-control-indicator-checked-bg:           $component-active-bg !default;\n//$custom-control-indicator-checked-disabled-bg:  rgba(theme-color("primary"), .5) !default;\n//$custom-control-indicator-checked-box-shadow:   none !default;\n\n//$custom-control-indicator-focus-box-shadow:     0 0 0 1px $body-bg, $input-btn-focus-box-shadow !default;\n\n//$custom-control-indicator-active-color:         $component-active-color !default;\n//$custom-control-indicator-active-bg:            lighten($component-active-bg, 35%) !default;\n//$custom-control-indicator-active-box-shadow:    none !default;\n\n//$custom-checkbox-indicator-border-radius:       $border-radius !default;\n//$custom-checkbox-indicator-icon-checked:        str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 8 8\'%3E%3Cpath fill=\'#{$custom-control-indicator-checked-color}\' d=\'M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z\'/%3E%3C/svg%3E"), "#", "%23") !default;\n\n//$custom-checkbox-indicator-indeterminate-bg:    $component-active-bg !default;\n//$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;\n//$custom-checkbox-indicator-icon-indeterminate:  str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 4 4\'%3E%3Cpath stroke=\'#{$custom-checkbox-indicator-indeterminate-color}\' d=\'M0 2h4\'/%3E%3C/svg%3E"), "#", "%23") !default;\n//$custom-checkbox-indicator-indeterminate-box-shadow: none !default;\n\n//$custom-radio-indicator-border-radius:          50% !default;\n//$custom-radio-indicator-icon-checked:           str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'-4 -4 8 8\'%3E%3Ccircle r=\'3\' fill=\'#{$custom-control-indicator-checked-color}\'/%3E%3C/svg%3E"), "#", "%23") !default;\n\n//$custom-select-padding-y:           .375rem !default;\n//$custom-select-padding-x:          .75rem !default;\n//$custom-select-height:              $input-height !default;\n//$custom-select-indicator-padding:   1rem !default; // Extra padding to account for the presence of the background-image based indicator\n//$custom-select-line-height:         $input-btn-line-height !default;\n//$custom-select-color:               $input-color !default;\n$custom-select-disabled-color: $medium-gray;\n//$custom-select-bg:                  $white !default;\n$custom-select-disabled-bg: $input-disabled-bg;\n$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions\n$custom-select-indicator-color: $input-color;\n//$custom-select-indicator:           str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 4 5\'%3E%3Cpath fill=\'#{$custom-select-indicator-color}\' d=\'M2 0L0 2h4zm0 5L0 3h4z\'/%3E%3C/svg%3E"), "#", "%23") !default;\n//$custom-select-border-width:        $input-btn-border-width !default;\n//$custom-select-border-color:        $input-border-color !default;\n//$custom-select-border-radius:       $border-radius !default;\n\n$custom-select-focus-border-color: $input-focus-border-color;\n$custom-select-focus-box-shadow: $input-focus-box-shadow;\n\n//$custom-select-font-size-sm:        75% !default;\n//$custom-select-height-sm:           $input-height-sm !default;\n\n//$custom-select-font-size-lg:        125% !default;\n//$custom-select-height-lg:           $input-height-lg !default;\n\n//$custom-file-height:                $input-height !default;\n//$custom-file-focus-border-color:    $input-focus-border-color !default;\n$custom-file-focus-box-shadow: $input-focus-box-shadow;\n\n//$custom-file-padding-y:             $input-btn-padding-y !default;\n//$custom-file-padding-x:             $input-btn-padding-x !default;\n//$custom-file-line-height:           $input-btn-line-height !default;\n//$custom-file-color:                 $input-color !default;\n//$custom-file-bg:                    $input-bg !default;\n//$custom-file-border-width:          $input-btn-border-width !default;\n//$custom-file-border-color:          $input-border-color !default;\n//$custom-file-border-radius:         $input-border-radius !default;\n//$custom-file-box-shadow:            $input-box-shadow !default;\n//$custom-file-button-color:          $custom-file-color !default;\n//$custom-file-button-bg:             $input-group-addon-bg !default;\n//$custom-file-text: (\n//        en: "Browse"\n//) !default;\n\n$cursor-disabled: not-allowed; // PS custom\n\n// Form validation\n//$form-feedback-margin-top:          $form-text-margin-top !default;\n//$form-feedback-font-size:           $small-font-size !default;\n$form-feedback-valid-color: theme-color("success");\n$form-feedback-invalid-color: theme-color("danger");\n$form-feedback-warning-color: theme-color("warning"); // PS custom\n\n// Dropdowns\n//$dropdown-min-width:                10rem !default;\n$dropdown-padding-y: 0;\n//$dropdown-padding-y:                .5rem !default;\n//$dropdown-spacer:                   .125rem !default;\n//$dropdown-bg:                       $white !default;\n$dropdown-border-color: $light-gray;\n//$dropdown-border-radius:            $border-radius !default;\n//$dropdown-border-width:             $border-width !default;\n$dropdown-divider-bg: $light-gray;\n//$dropdown-box-shadow:               0 .5rem 1rem rgba($black, .175) !default;\n\n$dropdown-link-color: $medium-gray;\n$dropdown-link-hover-color: theme-color("primary");\n$dropdown-link-hover-bg: $white;\n\n//$dropdown-link-active-color:        $component-active-color !default;\n//$dropdown-link-active-bg:           $component-active-bg !default;\n\n//$dropdown-link-disabled-color:      $gray-600 !default;\n\n$dropdown-item-padding-x: .3125rem;\n$dropdown-item-padding-y: .3125rem;\n\n//$dropdown-header-color:             $gray-600 !default;\n\n// Navs\n$nav-link-padding-y: .9375rem;\n$nav-link-padding-x: 1.25rem;\n$nav-link-disabled-color: $light-gray;\n\n$nav-tabs-border-color: $white;\n//$nav-tabs-border-width:             $border-width !default;\n//$nav-tabs-border-radius:            $border-radius !default;\n$nav-tabs-link-hover-border-color: theme-color("primary");\n$nav-tabs-link-active-color: $body-color;\n$nav-tabs-link-active-bg: $body-bg;\n$nav-tabs-link-active-border-color: theme-color("primary");\n\n$nav-pills-link-hover-border-color: $nav-tabs-link-hover-border-color;\n$nav-pills-link-active-color: $nav-tabs-link-active-color;\n$nav-pills-link-active-bg: #f4f9fb;\n$nav-pills-link-active-border-color: $nav-tabs-link-active-border-color; // PS custom\n\n//$nav-pills-border-radius:           $border-radius !default;\n//$nav-pills-link-active-color:       $component-active-color !default;\n//$nav-pills-link-active-bg:          $component-active-bg !default;\n\n// Navbar\n//$navbar-padding-y:                  ($spacer / 2) !default;\n//$navbar-padding-x:                  $spacer !default;\n\n//$navbar-nav-link-padding-x:         .5rem !default;\n\n//$navbar-brand-font-size:            $font-size-lg !default;\n\n//$nav-link-height:                   ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;\n//$navbar-brand-height:               $navbar-brand-font-size * $line-height-base !default;\n//$navbar-brand-padding-y:            ($nav-link-height - $navbar-brand-height) / 2 !default;\n\n//$navbar-toggler-padding-y:          .25rem !default;\n//$navbar-toggler-padding-x:          .75rem !default;\n//$navbar-toggler-font-size:          $font-size-lg !default;\n//$navbar-toggler-border-radius:      $btn-border-radius !default;\n\n//$navbar-dark-color:                 rgba($white, .5) !default;\n//$navbar-dark-hover-color:           rgba($white, .75) !default;\n//$navbar-dark-active-color:          $white !default;\n//$navbar-dark-disabled-color:        rgba($white, .25) !default;\n//$navbar-dark-toggler-icon-bg:       str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox=\'0 0 30 30\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath stroke=\'#{$navbar-dark-color}\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' d=\'M4 7h22M4 15h22M4 23h22\'/%3E%3C/svg%3E"), "#", "%23") !default;\n//$navbar-dark-toggler-border-color:  rgba($white, .1) !default;\n\n//$navbar-light-color:                rgba($black, .5) !default;\n//$navbar-light-hover-color:          rgba($black, .7) !default;\n//$navbar-light-active-color:         rgba($black, .9) !default;\n//$navbar-light-disabled-color:       rgba($black, .3) !default;\n//$navbar-light-toggler-icon-bg:      str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox=\'0 0 30 30\' xmlns=\'http://www.w3.org/2000/svg\'%3E%3Cpath stroke=\'#{$navbar-light-color}\' stroke-width=\'2\' stroke-linecap=\'round\' stroke-miterlimit=\'10\' d=\'M4 7h22M4 15h22M4 23h22\'/%3E%3C/svg%3E"), "#", "%23") !default;\n//$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n// Pagination\n$pagination-padding-y: .65rem;\n$pagination-padding-x: .5rem;\n//$pagination-padding-y-sm:           .25rem !default;\n//$pagination-padding-x-sm:           .5rem !default;\n//$pagination-padding-y-lg:           .75rem !default;\n//$pagination-padding-x-lg:           1.5rem !default;\n//$pagination-line-height:            1.25 !default;\n\n$pagination-color: $medium-gray;\n$pagination-bg: $white;\n//$pagination-border-width:           $border-width !default;\n$pagination-border-color: $white;\n\n//$pagination-focus-box-shadow:       $input-btn-focus-box-shadow !default;\n\n$pagination-hover-color: $pagination-color;\n$pagination-hover-bg: $pagination-bg;\n$pagination-hover-border-color: $pagination-border-color;\n\n$pagination-active-color: theme-color("primary");\n$pagination-active-bg: $pagination-bg;\n$pagination-active-border-color: $pagination-border-color;\n\n$pagination-disabled-color: $light-gray;\n$pagination-disabled-bg: $pagination-bg;\n$pagination-disabled-border-color: $pagination-border-color;\n\n// Jumbotron\n$jumbotron-padding: 2rem !default;\n$jumbotron-bg: $extra-light-gray;\n\n// Cards\n$card-spacer-x: .625rem !default;\n$card-spacer-y: .625rem !default;\n$card-border-width: 1px !default;\n$card-border-radius: 5px !default;\n$card-border-radius-inner: $card-border-radius !default;\n$card-cap-bg: $gray-200 !default;\n$card-bg: #fff !default;\n$card-link-hover-color: #fff !default;\n$card-border-color: #dbe6e9 !default;\n//$card-inner-border-radius:          calc(#{$card-border-radius} - #{$card-border-width}) !default;\n//$card-cap-bg:                       rgba($black, .03) !default;\n//$card-bg:                           $white !default;\n\n//$card-img-overlay-padding:          1.25rem !default;\n\n//$card-group-margin:                 ($grid-gutter-width / 2) !default;\n//$card-deck-margin:                  $card-group-margin !default;\n\n//$card-columns-count:                3 !default;\n//$card-columns-gap:                  1.25rem !default;\n//$card-columns-margin:               $card-spacer-y !default;\n\n// Tooltips\n//$tooltip-font-size:           $font-size-sm !default;\n//$tooltip-max-width:           200px !default;\n//$tooltip-color:               $white !default;\n$tooltip-bg: $medium-gray;\n//$tooltip-border-radius:        $border-radius !default;\n//$tooltip-opacity:             .9 !default;\n$tooltip-padding-y: .625rem;\n$tooltip-padding-x: 1.25rem;\n//$tooltip-margin:              0 !default;\n\n//$tooltip-arrow-width:         .8rem !default;\n//$tooltip-arrow-height:        .4rem !default;\n//$tooltip-arrow-color:         $tooltip-bg !default;\n\n// Popovers\n//$popover-font-size:                 $font-size-sm !default;\n//$popover-bg:                        $white !default;\n//$popover-max-width:                 276px !default;\n//$popover-border-width:              $border-width !default;\n$popover-border-color: $light-gray;\n//$popover-border-radius:             $border-radius-lg !default;\n$popover-box-shadow: none;\n\n$popover-header-bg: $extra-light-gray;\n//$popover-header-color:              $headings-color !default;\n$popover-header-padding-y: .625rem;\n$popover-header-padding-x: 1.25rem;\n\n//$popover-body-color:                $body-color !default;\n$popover-body-padding-y: .625rem;\n$popover-body-padding-x: 1.25rem;\n\n//$popover-arrow-width:               1rem !default;\n//$popover-arrow-height:              .5rem !default;\n//$popover-arrow-color:               $popover-bg !default;\n\n//$popover-arrow-outer-color:         fade-in($popover-border-color, .05) !default;\n\n// Badges\n$badge-font-size: .625rem !default;\n$badge-font-weight: 500 !default;\n$badge-padding-y: .25rem;\n$badge-padding-x: .5rem;\n//$badge-border-radius:               $border-radius !default;\n\n//$badge-pill-padding-x:              .6em !default;\n//$badge-pill-border-radius:          10rem !default;\n\n// Modals\n$modal-inner-padding: 1.875rem;\n\n//$modal-dialog-margin:         .5rem !default;\n//$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n//$modal-title-line-height:           $line-height-base !default;\n\n//$modal-content-bg:               $white !default;\n$modal-content-border-color: none;\n//$modal-content-border-width:     $border-width !default;\n$modal-content-box-shadow-xs: 0 8px 16px 0 rgba(0, 0, 0, .1);\n$modal-content-box-shadow-sm-up: 0 8px 16px 0 rgba(0, 0, 0, .1);\n\n//$modal-backdrop-bg:           $black !default;\n//$modal-backdrop-opacity:      .5 !default;\n$modal-header-border-color: none;\n//$modal-footer-border-color:   $modal-header-border-color !default;\n//$modal-header-border-width:   $modal-content-border-width !default;\n//$modal-footer-border-width:   $modal-header-border-width !default;\n$modal-header-padding: $modal-inner-padding;\n\n$modal-lg: 900px;\n$modal-md: 680px;\n$modal-sm: 400px;\n\n//$modal-transition:                  transform .3s ease-out !default;\n\n// Alerts\n$alert-padding-y: 1rem !default;\n$alert-padding-x: 1rem;\n//$alert-margin-bottom:               1rem !default;\n//$alert-border-radius:               $border-radius !default;\n//$alert-link-font-weight:            $font-weight-bold !default;\n$alert-border-width: .125rem;\n\n//$alert-bg-level:                    -10 !default;\n//$alert-border-level:                -9 !default;\n//$alert-color-level:                 6 !default;\n\n// Progress bars\n//$progress-height:                   1rem !default;\n//$progress-font-size:                ($font-size-base * .75) !default;\n//$progress-bg:                       $gray-200 !default;\n//$progress-border-radius:            $border-radius !default;\n//$progress-box-shadow:               inset 0 .1rem .1rem rgba($black, .1) !default;\n//$progress-bar-color:                $white !default;\n//$progress-bar-bg:                   theme-color("primary") !default;\n//$progress-bar-animation-timing:     1s linear infinite !default;\n//$progress-bar-transition:           width .6s ease !default;\n\n// List group\n//$list-group-bg:                     $white !default;\n$list-group-border-color: $light-gray;\n//$list-group-border-width:           $border-width !default;\n//$list-group-border-radius:          $border-radius !default;\n\n$list-group-item-padding-y: $input-padding-y;\n$list-group-item-padding-x: $input-padding-x;\n\n$list-group-hover-bg: theme-color-hover("primary");\n//$list-group-active-color:           $component-active-color !default;\n$list-group-active-bg: theme-color-hover("primary");\n//$list-group-active-border-color:    $list-group-active-bg !default;\n\n$list-group-disabled-color: $light-gray;\n//$list-group-disabled-bg:            $list-group-bg !default;\n\n//$list-group-action-color:           $gray-700 !default;\n$list-group-action-hover-color: $white;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n\n// Image thumbnails\n$thumbnail-padding: 0;\n//$thumbnail-bg:                      $body-bg !default;\n//$thumbnail-border-width:            $border-width !default;\n$thumbnail-border-color: $light-gray;\n//$thumbnail-border-radius:           $border-radius !default;\n$thumbnail-box-shadow: none;\n\n// Figures\n//$figure-caption-font-size:          90% !default;\n$figure-caption-color: $medium-gray;\n\n// Breadcrumbs\n$breadcrumb-padding-y: .3125rem;\n$breadcrumb-padding-x: .3125rem;\n$breadcrumb-item-padding: .3rem;\n\n$breadcrumb-margin-bottom: 0;\n\n$breadcrumb-bg: none;\n$breadcrumb-divider-color: $dark-gray;\n$breadcrumb-active-color: $extra-dark-gray;\n$breadcrumb-divider: "/";\n\n// Carousel\n//$carousel-control-color:            $white !default;\n//$carousel-control-width:            15% !default;\n//$carousel-control-opacity:          .5 !default;\n\n//$carousel-indicator-width:          30px !default;\n//$carousel-indicator-height:         3px !default;\n//$carousel-indicator-spacer:         3px !default;\n//$carousel-indicator-active-bg:      $white !default;\n\n//$carousel-caption-width:            70% !default;\n//$carousel-caption-color:            $white !default;\n\n//$carousel-control-icon-width:       20px !default;\n\n//$carousel-control-prev-icon-bg:     str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' fill=\'#{$carousel-control-color}\' viewBox=\'0 0 8 8\'%3E%3Cpath d=\'M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z\'/%3E%3C/svg%3E"), "#", "%23") !default;\n//$carousel-control-next-icon-bg:     str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' fill=\'#{$carousel-control-color}\' viewBox=\'0 0 8 8\'%3E%3Cpath d=\'M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z\'/%3E%3C/svg%3E"), "#", "%23") !default;\n\n//$carousel-transition:               transform .6s ease !default;\n\n// Close\n//$close-font-size:             $font-size-base * 1.5 !default;\n//$close-font-weight:           $font-weight-bold !default;\n//$close-color:                 $black !default;\n//$close-text-shadow:           0 1px 0 $white !default;\n\n// Code\n//$code-font-size:                    87.5% !default;\n$code-color: $body-color;\n\n//$kbd-padding-y:                     .2rem !default;\n//$kbd-padding-x:                     .4rem !default;\n//$kbd-font-size:                     $code-font-size !default;\n$kbd-color: $white;\n$kbd-bg: $extra-dark-gray;\n\n$pre-color: $body-color;\n//$pre-scrollable-max-height:         340px !default;\n\n// Printing\n//$print-page-size:                   a3 !default;\n//$print-body-min-width:              map-get($grid-breakpoints, "lg") !default;\n'],sourceRoot:""}]);const s=a},85487:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>s});var r=n(94015),o=n.n(r),i=n(23645),a=n.n(i)()(o());a.push([t.id,".modal.show[data-v-4f674025]{display:block}.modal-fade-enter-active[data-v-4f674025],.modal-fade-leave-active[data-v-4f674025]{transition:opacity .5s}.modal-fade-enter[data-v-4f674025],.modal-fade-leave-to[data-v-4f674025]{opacity:0}\n","",{version:3,sources:["webpack://./js/vue/components/Modal.vue"],names:[],mappings:"AAkKA,6BACE,aAAc,CACf,oFAEC,sBAAuB,CACxB,yEAEC,SAAU",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.modal.show {\n  display: block;\n}\n.modal-fade-enter-active, .modal-fade-leave-active {\n  transition: opacity .5s;\n}\n.modal-fade-enter, .modal-fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n  opacity: 0;\n}\n"],sourceRoot:""}]);const s=a},23645:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n=t(e);return e[2]?"@media ".concat(e[2]," {").concat(n,"}"):n})).join("")},e.i=function(t,n,r){"string"==typeof t&&(t=[[null,t,""]]);var o={};if(r)for(var i=0;i<this.length;i++){var a=this[i][0];null!=a&&(o[a]=!0)}for(var s=0;s<t.length;s++){var c=[].concat(t[s]);r&&o[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),e.push(c))}},e}},94015:t=>{"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}t.exports=function(t){var n,r,o=(r=4,function(t){if(Array.isArray(t))return t}(n=t)||function(t,e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t)){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=t[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!e||n.length!==e);r=!0);}catch(t){o=!0,i=t}finally{try{r||null==s.return||s.return()}finally{if(o)throw i}}return n}}(n,r)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(t,n):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=o[1],a=o[3];if("function"==typeof btoa){var s=btoa(unescape(encodeURIComponent(JSON.stringify(a)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(s),u="/*# ".concat(c," */"),l=a.sources.map((function(t){return"/*# sourceURL=".concat(a.sourceRoot||"").concat(t," */")}));return[i].concat(l).concat([u]).join("\n")}return[i].join("\n")}},91658:(t,e,n)=>{var r=/[\\^$.*+?()[\]{}|]/g,o=RegExp(r.source),i="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,a="object"==typeof self&&self&&self.Object===Object&&self,s=i||a||Function("return this")(),c=Object.prototype.toString,u=s.Symbol,l=u?u.prototype:void 0,f=l?l.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]"==c.call(t)}(t))return f?f.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}(e))&&o.test(t)?t.replace(r,"\\$&"):t}},20205:(t,e,n)=>{var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(35666),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},35666:t=>{!function(e){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",u=e.regeneratorRuntime;if(u)t.exports=u;else{(u=e.regeneratorRuntime=t.exports).wrap=b;var l="suspendedStart",f="suspendedYield",d="executing",p="completed",h={},v={};v[a]=function(){return this};var m=Object.getPrototypeOf,g=m&&m(m(M([])));g&&g!==r&&o.call(g,a)&&(v=g);var y=x.prototype=_.prototype=Object.create(v);w.prototype=y.constructor=x,x.constructor=w,x[c]=w.displayName="GeneratorFunction",u.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},u.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,x):(t.__proto__=x,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(y),t},u.awrap=function(t){return{__await:t}},k(C.prototype),C.prototype[s]=function(){return this},u.AsyncIterator=C,u.async=function(t,e,n,r){var o=new C(b(t,e,n,r));return u.isGeneratorFunction(e)?o:o.next().then((function(t){return t.done?t.value:o.next()}))},k(y),y[c]="Generator",y[a]=function(){return this},y.toString=function(){return"[object Generator]"},u.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},u.values=M,T.prototype={constructor:T,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(A),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,o){return s.type="throw",s.arg=t,e.next=r,o&&(e.method="next",e.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),h},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),A(n),h}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;A(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:M(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),h}}}function b(t,e,n,r){var o=e&&e.prototype instanceof _?e:_,i=Object.create(o.prototype),a=new T(r||[]);return i._invoke=function(t,e,n){var r=l;return function(o,i){if(r===d)throw new Error("Generator is already running");if(r===p){if("throw"===o)throw i;return j()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=S(a,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===l)throw r=p,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=d;var c=$(t,e,n);if("normal"===c.type){if(r=n.done?p:f,c.arg===h)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=p,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function $(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function _(){}function w(){}function x(){}function k(t){["next","throw","return"].forEach((function(e){t[e]=function(t){return this._invoke(e,t)}}))}function C(t){function e(n,r,i,a){var s=$(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then((function(t){e("next",t,i,a)}),(function(t){e("throw",t,i,a)})):Promise.resolve(u).then((function(t){c.value=t,i(c)}),a)}a(s.arg)}var n;this._invoke=function(t,r){function o(){return new Promise((function(n,o){e(t,r,n,o)}))}return n=n?n.then(o,o):o()}}function S(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,S(t,e),"throw"===e.method))return h;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=$(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,h;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,h):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,h)}function O(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function A(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function M(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r<t.length;)if(o.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return i.next=i}}return{next:j}}function j(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},17152:(t,e,n)=>{"use strict";n.r(e),n.d(e,{default:()=>V});var r=["style","currency","currencyDisplay","useGrouping","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","localeMatcher","formatMatcher","unit"];function o(t,e){"undefined"!=typeof console&&(console.warn("[vue-i18n] "+t),e&&console.warn(e.stack))}function i(t){return null!==t&&"object"==typeof t}var a=Object.prototype.toString;function s(t){return"[object Object]"===a.call(t)}function c(t){return null==t}function u(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=null,r=null;return 1===t.length?i(t[0])||Array.isArray(t[0])?r=t[0]:"string"==typeof t[0]&&(n=t[0]):2===t.length&&("string"==typeof t[0]&&(n=t[0]),(i(t[1])||Array.isArray(t[1]))&&(r=t[1])),{locale:n,params:r}}function l(t){return JSON.parse(JSON.stringify(t))}function f(t,e){return!!~t.indexOf(e)}var d=Object.prototype.hasOwnProperty;function p(t,e){return d.call(t,e)}function h(t){for(var e=arguments,n=Object(t),r=1;r<arguments.length;r++){var o=e[r];if(null!=o){var a=void 0;for(a in o)p(o,a)&&(i(o[a])?n[a]=h(n[a],o[a]):n[a]=o[a])}}return n}function v(t,e){if(t===e)return!0;var n=i(t),r=i(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var o=Array.isArray(t),a=Array.isArray(e);if(o&&a)return t.length===e.length&&t.every((function(t,n){return v(t,e[n])}));if(o||a)return!1;var s=Object.keys(t),c=Object.keys(e);return s.length===c.length&&s.every((function(n){return v(t[n],e[n])}))}catch(t){return!1}}var m={beforeCreate:function(){var t=this.$options;if(t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n){if(t.i18n instanceof W){if(t.__i18n)try{var e={};t.__i18n.forEach((function(t){e=h(e,JSON.parse(t))})),Object.keys(e).forEach((function(n){t.i18n.mergeLocaleMessage(n,e[n])}))}catch(t){}this._i18n=t.i18n,this._i18nWatcher=this._i18n.watchI18nData()}else if(s(t.i18n)){if(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W&&(t.i18n.root=this.$root,t.i18n.formatter=this.$root.$i18n.formatter,t.i18n.fallbackLocale=this.$root.$i18n.fallbackLocale,t.i18n.formatFallbackMessages=this.$root.$i18n.formatFallbackMessages,t.i18n.silentTranslationWarn=this.$root.$i18n.silentTranslationWarn,t.i18n.silentFallbackWarn=this.$root.$i18n.silentFallbackWarn,t.i18n.pluralizationRules=this.$root.$i18n.pluralizationRules,t.i18n.preserveDirectiveContent=this.$root.$i18n.preserveDirectiveContent),t.__i18n)try{var n={};t.__i18n.forEach((function(t){n=h(n,JSON.parse(t))})),t.i18n.messages=n}catch(t){}var r=t.i18n.sharedMessages;r&&s(r)&&(t.i18n.messages=h(t.i18n.messages,r)),this._i18n=new W(t.i18n),this._i18nWatcher=this._i18n.watchI18nData(),(void 0===t.i18n.sync||t.i18n.sync)&&(this._localeWatcher=this.$i18n.watchLocale())}}else this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W?this._i18n=this.$root.$i18n:t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof W&&(this._i18n=t.parent.$i18n)},beforeMount:function(){var t=this.$options;t.i18n=t.i18n||(t.__i18n?{}:null),t.i18n?(t.i18n instanceof W||s(t.i18n))&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0):(this.$root&&this.$root.$i18n&&this.$root.$i18n instanceof W||t.parent&&t.parent.$i18n&&t.parent.$i18n instanceof W)&&(this._i18n.subscribeDataChanging(this),this._subscribing=!0)},beforeDestroy:function(){if(this._i18n){var t=this;this.$nextTick((function(){t._subscribing&&(t._i18n.unsubscribeDataChanging(t),delete t._subscribing),t._i18nWatcher&&(t._i18nWatcher(),t._i18n.destroyVM(),delete t._i18nWatcher),t._localeWatcher&&(t._localeWatcher(),delete t._localeWatcher),t._i18n=null}))}}},g={name:"i18n",functional:!0,props:{tag:{type:String},path:{type:String,required:!0},locale:{type:String},places:{type:[Array,Object]}},render:function(t,e){var n=e.data,r=e.parent,o=e.props,i=e.slots,a=r.$i18n;if(a){var s=o.path,c=o.locale,u=o.places,l=i(),f=a.i(s,c,function(t){var e;for(e in t)if("default"!==e)return!1;return Boolean(e)}(l)||u?function(t,e){var n=e?function(t){return Array.isArray(t)?t.reduce(b,{}):Object.assign({},t)}(e):{};if(!t)return n;var r=(t=t.filter((function(t){return t.tag||""!==t.text.trim()}))).every($);return t.reduce(r?y:b,n)}(l.default,u):l),d=o.tag||"span";return d?t(d,n,f):f}}};function y(t,e){return e.data&&e.data.attrs&&e.data.attrs.place&&(t[e.data.attrs.place]=e),t}function b(t,e,n){return t[n]=e,t}function $(t){return Boolean(t.data&&t.data.attrs&&t.data.attrs.place)}var _,w={name:"i18n-n",functional:!0,props:{tag:{type:String,default:"span"},value:{type:Number,required:!0},format:{type:[String,Object]},locale:{type:String}},render:function(t,e){var n=e.props,o=e.parent,a=e.data,s=o.$i18n;if(!s)return null;var c=null,u=null;"string"==typeof n.format?c=n.format:i(n.format)&&(n.format.key&&(c=n.format.key),u=Object.keys(n.format).reduce((function(t,e){var o;return f(r,e)?Object.assign({},t,((o={})[e]=n.format[e],o)):t}),null));var l=n.locale||s.locale,d=s._ntp(n.value,l,c,u),p=d.map((function(t,e){var n,r=a.scopedSlots&&a.scopedSlots[t.type];return r?r(((n={})[t.type]=t.value,n.index=e,n.parts=d,n)):t.value}));return t(n.tag,{attrs:a.attrs,class:a.class,staticClass:a.staticClass},p)}};function x(t,e,n){S(0,n)&&O(t,e,n)}function k(t,e,n,r){if(S(0,n)){var o=n.context.$i18n;(function(t,e){var n=e.context;return t._locale===n.$i18n.locale})(t,n)&&v(e.value,e.oldValue)&&v(t._localeMessage,o.getLocaleMessage(o.locale))||O(t,e,n)}}function C(t,e,n,r){if(n.context){var i=n.context.$i18n||{};e.modifiers.preserve||i.preserveDirectiveContent||(t.textContent=""),t._vt=void 0,delete t._vt,t._locale=void 0,delete t._locale,t._localeMessage=void 0,delete t._localeMessage}else o("Vue instance does not exists in VNode context")}function S(t,e){var n=e.context;return n?!!n.$i18n||(o("VueI18n instance does not exists in Vue instance"),!1):(o("Vue instance does not exists in VNode context"),!1)}function O(t,e,n){var r,i,a=function(t){var e,n,r,o;return"string"==typeof t?e=t:s(t)&&(e=t.path,n=t.locale,r=t.args,o=t.choice),{path:e,locale:n,args:r,choice:o}}(e.value),c=a.path,u=a.locale,l=a.args,f=a.choice;if(c||u||l)if(c){var d=n.context;t._vt=t.textContent=f?(r=d.$i18n).tc.apply(r,[c,f].concat(A(u,l))):(i=d.$i18n).t.apply(i,[c].concat(A(u,l))),t._locale=d.$i18n.locale,t._localeMessage=d.$i18n.getLocaleMessage(d.$i18n.locale)}else o("`path` is required in v-t directive");else o("value type not supported")}function A(t,e){var n=[];return t&&n.push(t),e&&(Array.isArray(e)||s(e))&&n.push(e),n}function T(t){T.installed=!0,(_=t).version&&Number(_.version.split(".")[0]),function(t){t.prototype.hasOwnProperty("$i18n")||Object.defineProperty(t.prototype,"$i18n",{get:function(){return this._i18n}}),t.prototype.$t=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var r=this.$i18n;return r._t.apply(r,[t,r.locale,r._getMessages(),this].concat(e))},t.prototype.$tc=function(t,e){for(var n=[],r=arguments.length-2;r-- >0;)n[r]=arguments[r+2];var o=this.$i18n;return o._tc.apply(o,[t,o.locale,o._getMessages(),this,e].concat(n))},t.prototype.$te=function(t,e){var n=this.$i18n;return n._te(t,n.locale,n._getMessages(),e)},t.prototype.$d=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).d.apply(e,[t].concat(n))},t.prototype.$n=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this.$i18n).n.apply(e,[t].concat(n))}}(_),_.mixin(m),_.directive("t",{bind:x,update:k,unbind:C}),_.component(g.name,g),_.component(w.name,w),_.config.optionMergeStrategies.i18n=function(t,e){return void 0===e?t:e}}var M=function(){this._caches=Object.create(null)};M.prototype.interpolate=function(t,e){if(!e)return[t];var n=this._caches[t];return n||(n=function(t){for(var e=[],n=0,r="";n<t.length;){var o=t[n++];if("{"===o){r&&e.push({type:"text",value:r}),r="";var i="";for(o=t[n++];void 0!==o&&"}"!==o;)i+=o,o=t[n++];var a="}"===o,s=j.test(i)?"list":a&&E.test(i)?"named":"unknown";e.push({value:i,type:s})}else"%"===o?"{"!==t[n]&&(r+=o):r+=o}return r&&e.push({type:"text",value:r}),e}(t),this._caches[t]=n),function(t,e){var n=[],r=0,o=Array.isArray(e)?"list":i(e)?"named":"unknown";if("unknown"===o)return n;for(;r<t.length;){var a=t[r];switch(a.type){case"text":n.push(a.value);break;case"list":n.push(e[parseInt(a.value,10)]);break;case"named":"named"===o&&n.push(e[a.value])}r++}return n}(n,e)};var j=/^(?:\d)+/,E=/^(?:\w)+/,F=[];F[0]={ws:[0],ident:[3,0],"[":[4],eof:[7]},F[1]={ws:[1],".":[2],"[":[4],eof:[7]},F[2]={ws:[2],ident:[3,0],0:[3,0],number:[3,0]},F[3]={ident:[3,0],0:[3,0],number:[3,0],ws:[1,1],".":[2,1],"[":[4,1],eof:[7,1]},F[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],eof:8,else:[4,0]},F[5]={"'":[4,0],eof:8,else:[5,0]},F[6]={'"':[4,0],eof:8,else:[6,0]};var L=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function P(t){if(null==t)return"eof";switch(t.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return t;case 95:case 36:case 45:return"ident";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return"ident"}var D=function(){this._cache=Object.create(null)};D.prototype.parsePath=function(t){var e=this._cache[t];return e||(e=function(t){var e,n,r,o,i,a,s,c=[],u=-1,l=0,f=0,d=[];function p(){var e=t[u+1];if(5===l&&"'"===e||6===l&&'"'===e)return u++,r="\\"+e,d[0](),!0}for(d[1]=function(){void 0!==n&&(c.push(n),n=void 0)},d[0]=function(){void 0===n?n=r:n+=r},d[2]=function(){d[0](),f++},d[3]=function(){if(f>0)f--,l=4,d[0]();else{if(f=0,void 0===n)return!1;if(!1===(n=function(t){var e,n,r,o=t.trim();return("0"!==t.charAt(0)||!isNaN(t))&&(r=o,L.test(r)?(n=(e=o).charCodeAt(0))!==e.charCodeAt(e.length-1)||34!==n&&39!==n?e:e.slice(1,-1):"*"+o)}(n)))return!1;d[1]()}};null!==l;)if(u++,"\\"!==(e=t[u])||!p()){if(o=P(e),8===(i=(s=F[l])[o]||s.else||8))return;if(l=i[0],(a=d[i[1]])&&(r=void 0===(r=i[2])?e:r,!1===a()))return;if(7===l)return c}}(t))&&(this._cache[t]=e),e||[]},D.prototype.getPathValue=function(t,e){if(!i(t))return null;var n=this.parsePath(e);if(0===n.length)return null;for(var r=n.length,o=t,a=0;a<r;){var s=o[n[a]];if(void 0===s)return null;o=s,a++}return o};var I,N=/<\/?[\w\s="/.':;#-\/]+>/,R=/(?:@(?:\.[a-z]+)?:(?:[\w\-_|.]+|\([\w\-_|.]+\)))/g,z=/^@(?:\.([a-z]+))?:/,B=/[()]/g,U={upper:function(t){return t.toLocaleUpperCase()},lower:function(t){return t.toLocaleLowerCase()},capitalize:function(t){return""+t.charAt(0).toLocaleUpperCase()+t.substr(1)}},H=new M,W=function(t){var e=this;void 0===t&&(t={}),!_&&"undefined"!=typeof window&&window.Vue&&T(window.Vue);var n=t.locale||"en-US",r=!1!==t.fallbackLocale&&(t.fallbackLocale||"en-US"),o=t.messages||{},i=t.dateTimeFormats||{},a=t.numberFormats||{};this._vm=null,this._formatter=t.formatter||H,this._modifiers=t.modifiers||{},this._missing=t.missing||null,this._root=t.root||null,this._sync=void 0===t.sync||!!t.sync,this._fallbackRoot=void 0===t.fallbackRoot||!!t.fallbackRoot,this._formatFallbackMessages=void 0!==t.formatFallbackMessages&&!!t.formatFallbackMessages,this._silentTranslationWarn=void 0!==t.silentTranslationWarn&&t.silentTranslationWarn,this._silentFallbackWarn=void 0!==t.silentFallbackWarn&&!!t.silentFallbackWarn,this._dateTimeFormatters={},this._numberFormatters={},this._path=new D,this._dataListeners=[],this._preserveDirectiveContent=void 0!==t.preserveDirectiveContent&&!!t.preserveDirectiveContent,this.pluralizationRules=t.pluralizationRules||{},this._warnHtmlInMessage=t.warnHtmlInMessage||"off",this._postTranslation=t.postTranslation||null,this._exist=function(t,n){return!(!t||!n||c(e._path.getPathValue(t,n))&&!t[n])},"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||Object.keys(o).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,o[t])})),this._initVM({locale:n,fallbackLocale:r,messages:o,dateTimeFormats:i,numberFormats:a})},G={vm:{configurable:!0},messages:{configurable:!0},dateTimeFormats:{configurable:!0},numberFormats:{configurable:!0},availableLocales:{configurable:!0},locale:{configurable:!0},fallbackLocale:{configurable:!0},formatFallbackMessages:{configurable:!0},missing:{configurable:!0},formatter:{configurable:!0},silentTranslationWarn:{configurable:!0},silentFallbackWarn:{configurable:!0},preserveDirectiveContent:{configurable:!0},warnHtmlInMessage:{configurable:!0},postTranslation:{configurable:!0}};W.prototype._checkLocaleMessage=function(t,e,n){var r=function(t,e,n,i){if(s(n))Object.keys(n).forEach((function(o){var a=n[o];s(a)?(i.push(o),i.push("."),r(t,e,a,i),i.pop(),i.pop()):(i.push(o),r(t,e,a,i),i.pop())}));else if(Array.isArray(n))n.forEach((function(n,o){s(n)?(i.push("["+o+"]"),i.push("."),r(t,e,n,i),i.pop(),i.pop()):(i.push("["+o+"]"),r(t,e,n,i),i.pop())}));else if("string"==typeof n&&N.test(n)){var a="Detected HTML in message '"+n+"' of keypath '"+i.join("")+"' at '"+e+"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";"warn"===t?o(a):"error"===t&&function(t,e){"undefined"!=typeof console&&console.error("[vue-i18n] "+t)}(a)}};r(e,t,n,[])},W.prototype._initVM=function(t){var e=_.config.silent;_.config.silent=!0,this._vm=new _({data:t}),_.config.silent=e},W.prototype.destroyVM=function(){this._vm.$destroy()},W.prototype.subscribeDataChanging=function(t){this._dataListeners.push(t)},W.prototype.unsubscribeDataChanging=function(t){!function(t,e){if(t.length){var n=t.indexOf(e);n>-1&&t.splice(n,1)}}(this._dataListeners,t)},W.prototype.watchI18nData=function(){var t=this;return this._vm.$watch("$data",(function(){for(var e=t._dataListeners.length;e--;)_.nextTick((function(){t._dataListeners[e]&&t._dataListeners[e].$forceUpdate()}))}),{deep:!0})},W.prototype.watchLocale=function(){if(!this._sync||!this._root)return null;var t=this._vm;return this._root.$i18n.vm.$watch("locale",(function(e){t.$set(t,"locale",e),t.$forceUpdate()}),{immediate:!0})},G.vm.get=function(){return this._vm},G.messages.get=function(){return l(this._getMessages())},G.dateTimeFormats.get=function(){return l(this._getDateTimeFormats())},G.numberFormats.get=function(){return l(this._getNumberFormats())},G.availableLocales.get=function(){return Object.keys(this.messages).sort()},G.locale.get=function(){return this._vm.locale},G.locale.set=function(t){this._vm.$set(this._vm,"locale",t)},G.fallbackLocale.get=function(){return this._vm.fallbackLocale},G.fallbackLocale.set=function(t){this._localeChainCache={},this._vm.$set(this._vm,"fallbackLocale",t)},G.formatFallbackMessages.get=function(){return this._formatFallbackMessages},G.formatFallbackMessages.set=function(t){this._formatFallbackMessages=t},G.missing.get=function(){return this._missing},G.missing.set=function(t){this._missing=t},G.formatter.get=function(){return this._formatter},G.formatter.set=function(t){this._formatter=t},G.silentTranslationWarn.get=function(){return this._silentTranslationWarn},G.silentTranslationWarn.set=function(t){this._silentTranslationWarn=t},G.silentFallbackWarn.get=function(){return this._silentFallbackWarn},G.silentFallbackWarn.set=function(t){this._silentFallbackWarn=t},G.preserveDirectiveContent.get=function(){return this._preserveDirectiveContent},G.preserveDirectiveContent.set=function(t){this._preserveDirectiveContent=t},G.warnHtmlInMessage.get=function(){return this._warnHtmlInMessage},G.warnHtmlInMessage.set=function(t){var e=this,n=this._warnHtmlInMessage;if(this._warnHtmlInMessage=t,n!==t&&("warn"===t||"error"===t)){var r=this._getMessages();Object.keys(r).forEach((function(t){e._checkLocaleMessage(t,e._warnHtmlInMessage,r[t])}))}},G.postTranslation.get=function(){return this._postTranslation},G.postTranslation.set=function(t){this._postTranslation=t},W.prototype._getMessages=function(){return this._vm.messages},W.prototype._getDateTimeFormats=function(){return this._vm.dateTimeFormats},W.prototype._getNumberFormats=function(){return this._vm.numberFormats},W.prototype._warnDefault=function(t,e,n,r,o,i){if(!c(n))return n;if(this._missing){var a=this._missing.apply(null,[t,e,r,o]);if("string"==typeof a)return a}if(this._formatFallbackMessages){var s=u.apply(void 0,o);return this._render(e,i,s.params,e)}return e},W.prototype._isFallbackRoot=function(t){return!t&&!c(this._root)&&this._fallbackRoot},W.prototype._isSilentFallbackWarn=function(t){return this._silentFallbackWarn instanceof RegExp?this._silentFallbackWarn.test(t):this._silentFallbackWarn},W.prototype._isSilentFallback=function(t,e){return this._isSilentFallbackWarn(e)&&(this._isFallbackRoot()||t!==this.fallbackLocale)},W.prototype._isSilentTranslationWarn=function(t){return this._silentTranslationWarn instanceof RegExp?this._silentTranslationWarn.test(t):this._silentTranslationWarn},W.prototype._interpolate=function(t,e,n,r,o,i,a){if(!e)return null;var u,l=this._path.getPathValue(e,n);if(Array.isArray(l)||s(l))return l;if(c(l)){if(!s(e))return null;if("string"!=typeof(u=e[n]))return null}else{if("string"!=typeof l)return null;u=l}return(u.indexOf("@:")>=0||u.indexOf("@.")>=0)&&(u=this._link(t,e,u,r,"raw",i,a)),this._render(u,o,i,n)},W.prototype._link=function(t,e,n,r,o,i,a){var s=n,c=s.match(R);for(var u in c)if(c.hasOwnProperty(u)){var l=c[u],d=l.match(z),p=d[0],h=d[1],v=l.replace(p,"").replace(B,"");if(f(a,v))return s;a.push(v);var m=this._interpolate(t,e,v,r,"raw"===o?"string":o,"raw"===o?void 0:i,a);if(this._isFallbackRoot(m)){if(!this._root)throw Error("unexpected error");var g=this._root.$i18n;m=g._translate(g._getMessages(),g.locale,g.fallbackLocale,v,r,o,i)}m=this._warnDefault(t,v,m,r,Array.isArray(i)?i:[i],o),this._modifiers.hasOwnProperty(h)?m=this._modifiers[h](m):U.hasOwnProperty(h)&&(m=U[h](m)),a.pop(),s=m?s.replace(l,m):s}return s},W.prototype._render=function(t,e,n,r){var o=this._formatter.interpolate(t,n,r);return o||(o=H.interpolate(t,n,r)),"string"===e&&"string"!=typeof o?o.join(""):o},W.prototype._appendItemToChain=function(t,e,n){var r=!1;return f(t,e)||(r=!0,e&&(r="!"!==e[e.length-1],e=e.replace(/!/g,""),t.push(e),n&&n[e]&&(r=n[e]))),r},W.prototype._appendLocaleToChain=function(t,e,n){var r,o=e.split("-");do{var i=o.join("-");r=this._appendItemToChain(t,i,n),o.splice(-1,1)}while(o.length&&!0===r);return r},W.prototype._appendBlockToChain=function(t,e,n){for(var r=!0,o=0;o<e.length&&"boolean"==typeof r;o++){var i=e[o];r=this._appendLocaleToChain(t,i,n)}return r},W.prototype._getLocaleChain=function(t,e){if(""===t)return[];this._localeChainCache||(this._localeChainCache={});var n=this._localeChainCache[t];if(!n){e||(e=this.fallbackLocale),n=[];for(var r,o=[t];Array.isArray(o);)o=this._appendBlockToChain(n,o,e);(o="string"==typeof(r=Array.isArray(e)?e:e instanceof Object?e.default?e.default:null:e)?[r]:r)&&this._appendBlockToChain(n,o,null),this._localeChainCache[t]=n}return n},W.prototype._translate=function(t,e,n,r,o,i,a){for(var s,u=this._getLocaleChain(e,n),l=0;l<u.length;l++){var f=u[l];if(!c(s=this._interpolate(f,t[f],r,o,i,a,[r])))return s}return null},W.prototype._t=function(t,e,n,r){for(var o,i=[],a=arguments.length-4;a-- >0;)i[a]=arguments[a+4];if(!t)return"";var s=u.apply(void 0,i),c=s.locale||e,l=this._translate(n,c,this.fallbackLocale,t,r,"string",s.params);if(this._isFallbackRoot(l)){if(!this._root)throw Error("unexpected error");return(o=this._root).$t.apply(o,[t].concat(i))}return l=this._warnDefault(c,t,l,r,i,"string"),this._postTranslation&&null!=l&&(l=this._postTranslation(l,t)),l},W.prototype.t=function(t){for(var e,n=[],r=arguments.length-1;r-- >0;)n[r]=arguments[r+1];return(e=this)._t.apply(e,[t,this.locale,this._getMessages(),null].concat(n))},W.prototype._i=function(t,e,n,r,o){var i=this._translate(n,e,this.fallbackLocale,t,r,"raw",o);if(this._isFallbackRoot(i)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.i(t,e,o)}return this._warnDefault(e,t,i,r,[o],"raw")},W.prototype.i=function(t,e,n){return t?("string"!=typeof e&&(e=this.locale),this._i(t,e,this._getMessages(),null,n)):""},W.prototype._tc=function(t,e,n,r,o){for(var i,a=[],s=arguments.length-5;s-- >0;)a[s]=arguments[s+5];if(!t)return"";void 0===o&&(o=1);var c={count:o,n:o},l=u.apply(void 0,a);return l.params=Object.assign(c,l.params),a=null===l.locale?[l.params]:[l.locale,l.params],this.fetchChoice((i=this)._t.apply(i,[t,e,n,r].concat(a)),o)},W.prototype.fetchChoice=function(t,e){if(!t&&"string"!=typeof t)return null;var n=t.split("|");return n[e=this.getChoiceIndex(e,n.length)]?n[e].trim():t},W.prototype.getChoiceIndex=function(t,e){var n,r;return this.locale in this.pluralizationRules?this.pluralizationRules[this.locale].apply(this,[t,e]):(n=t,r=e,n=Math.abs(n),2===r?n?n>1?1:0:1:n?Math.min(n,2):0)},W.prototype.tc=function(t,e){for(var n,r=[],o=arguments.length-2;o-- >0;)r[o]=arguments[o+2];return(n=this)._tc.apply(n,[t,this.locale,this._getMessages(),null,e].concat(r))},W.prototype._te=function(t,e,n){for(var r=[],o=arguments.length-3;o-- >0;)r[o]=arguments[o+3];var i=u.apply(void 0,r).locale||e;return this._exist(n[i],t)},W.prototype.te=function(t,e){return this._te(t,this.locale,this._getMessages(),e)},W.prototype.getLocaleMessage=function(t){return l(this._vm.messages[t]||{})},W.prototype.setLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,e)},W.prototype.mergeLocaleMessage=function(t,e){"warn"!==this._warnHtmlInMessage&&"error"!==this._warnHtmlInMessage||this._checkLocaleMessage(t,this._warnHtmlInMessage,e),this._vm.$set(this._vm.messages,t,h({},this._vm.messages[t]||{},e))},W.prototype.getDateTimeFormat=function(t){return l(this._vm.dateTimeFormats[t]||{})},W.prototype.setDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,e),this._clearDateTimeFormat(t,e)},W.prototype.mergeDateTimeFormat=function(t,e){this._vm.$set(this._vm.dateTimeFormats,t,h(this._vm.dateTimeFormats[t]||{},e)),this._clearDateTimeFormat(t,e)},W.prototype._clearDateTimeFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._dateTimeFormatters.hasOwnProperty(r)&&delete this._dateTimeFormatters[r]}},W.prototype._localizeDateTime=function(t,e,n,r,o){for(var i=e,a=r[i],s=this._getLocaleChain(e,n),u=0;u<s.length;u++){var l=s[u];if(i=l,!c(a=r[l])&&!c(a[o]))break}if(c(a)||c(a[o]))return null;var f=a[o],d=i+"__"+o,p=this._dateTimeFormatters[d];return p||(p=this._dateTimeFormatters[d]=new Intl.DateTimeFormat(i,f)),p.format(t)},W.prototype._d=function(t,e,n){if(!n)return new Intl.DateTimeFormat(e).format(t);var r=this._localizeDateTime(t,e,this.fallbackLocale,this._getDateTimeFormats(),n);if(this._isFallbackRoot(r)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.d(t,n,e)}return r||""},W.prototype.d=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var r=this.locale,o=null;return 1===e.length?"string"==typeof e[0]?o=e[0]:i(e[0])&&(e[0].locale&&(r=e[0].locale),e[0].key&&(o=e[0].key)):2===e.length&&("string"==typeof e[0]&&(o=e[0]),"string"==typeof e[1]&&(r=e[1])),this._d(t,r,o)},W.prototype.getNumberFormat=function(t){return l(this._vm.numberFormats[t]||{})},W.prototype.setNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,e),this._clearNumberFormat(t,e)},W.prototype.mergeNumberFormat=function(t,e){this._vm.$set(this._vm.numberFormats,t,h(this._vm.numberFormats[t]||{},e)),this._clearNumberFormat(t,e)},W.prototype._clearNumberFormat=function(t,e){for(var n in e){var r=t+"__"+n;this._numberFormatters.hasOwnProperty(r)&&delete this._numberFormatters[r]}},W.prototype._getNumberFormatter=function(t,e,n,r,o,i){for(var a=e,s=r[a],u=this._getLocaleChain(e,n),l=0;l<u.length;l++){var f=u[l];if(a=f,!c(s=r[f])&&!c(s[o]))break}if(c(s)||c(s[o]))return null;var d,p=s[o];if(i)d=new Intl.NumberFormat(a,Object.assign({},p,i));else{var h=a+"__"+o;(d=this._numberFormatters[h])||(d=this._numberFormatters[h]=new Intl.NumberFormat(a,p))}return d},W.prototype._n=function(t,e,n,r){if(!W.availabilities.numberFormat)return"";if(!n)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).format(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),i=o&&o.format(t);if(this._isFallbackRoot(i)){if(!this._root)throw Error("unexpected error");return this._root.$i18n.n(t,Object.assign({},{key:n,locale:e},r))}return i||""},W.prototype.n=function(t){for(var e=[],n=arguments.length-1;n-- >0;)e[n]=arguments[n+1];var o=this.locale,a=null,s=null;return 1===e.length?"string"==typeof e[0]?a=e[0]:i(e[0])&&(e[0].locale&&(o=e[0].locale),e[0].key&&(a=e[0].key),s=Object.keys(e[0]).reduce((function(t,n){var o;return f(r,n)?Object.assign({},t,((o={})[n]=e[0][n],o)):t}),null)):2===e.length&&("string"==typeof e[0]&&(a=e[0]),"string"==typeof e[1]&&(o=e[1])),this._n(t,o,a,s)},W.prototype._ntp=function(t,e,n,r){if(!W.availabilities.numberFormat)return[];if(!n)return(r?new Intl.NumberFormat(e,r):new Intl.NumberFormat(e)).formatToParts(t);var o=this._getNumberFormatter(t,e,this.fallbackLocale,this._getNumberFormats(),n,r),i=o&&o.formatToParts(t);if(this._isFallbackRoot(i)){if(!this._root)throw Error("unexpected error");return this._root.$i18n._ntp(t,e,n,r)}return i||[]},Object.defineProperties(W.prototype,G),Object.defineProperty(W,"availabilities",{get:function(){if(!I){var t="undefined"!=typeof Intl;I={dateTimeFormat:t&&void 0!==Intl.DateTimeFormat,numberFormat:t&&void 0!==Intl.NumberFormat}}return I}}),W.install=T,W.version="8.17.4";const V=W},87222:(t,e,n)=>{"use strict";n.r(e),n.d(e,{__esModule:()=>o.X,default:()=>s});var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"row"},[n("div",{staticClass:"col-4"},[n("h4",[t._v(t._s(t.$t("step.symbol")))]),t._v(" "),n("input",{directives:[{name:"model",rawName:"v-model",value:t.customSymbol,expression:"customSymbol"}],attrs:{type:"text"},domProps:{value:t.customSymbol},on:{input:function(e){e.target.composing||(t.customSymbol=e.target.value)}}})]),t._v(" "),n("div",{staticClass:"col-8 border-left"},[n("h4",[t._v(t._s(t.$t("step.format")))]),t._v(" "),n("div",{staticClass:"row"},t._l(t.availableFormats,(function(e,r){return n("div",{key:r,staticClass:"ps-radio col-6",attrs:{id:r}},[n("input",{attrs:{type:"radio"},domProps:{checked:r===t.customTransformation,value:r}}),t._v(" "),n("label",{on:{click:function(e){e.preventDefault(),e.stopPropagation(),t.customTransformation=r}}},[t._v("\n          "+t._s(t.displayPattern(e))+"\n        ")])])})),0)])])};r._withStripped=!0;var o=n(49042);const i=o.Z;var a=(0,n(51900).Z)(i,r,[],!1,null,null,null);a.options.__file="js/pages/currency/form/components/CurrencyFormatForm.vue";const s=a.exports},41747:(t,e,n)=>{"use strict";n.r(e),n.d(e,{__esModule:()=>o.X,default:()=>s});var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"card-block row",attrs:{id:t.id}},[n("div",{staticClass:"col-sm"},[t.languagesCount?n("language-list",{attrs:{languages:t.languages},on:{selectLanguage:t.selectLanguage,resetLanguage:t.resetLanguage}}):t._e(),t._v(" "),n("currency-modal",{attrs:{language:t.selectedLanguage},on:{close:t.closeModal,applyCustomization:t.applyCustomization}})],1)])};r._withStripped=!0;var o=n(71337);const i=o.Z;var a=(0,n(51900).Z)(i,r,[],!1,null,null,null);a.options.__file="js/pages/currency/form/components/CurrencyFormatter.vue";const s=a.exports},50545:(t,e,n)=>{"use strict";n.r(e),n.d(e,{__esModule:()=>o.X,default:()=>s});var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return null!==t.language?n("modal",{attrs:{confirmation:"","modal-title":t.modalTitle},on:{close:function(e){return t.$emit("close")},confirm:function(e){return t.$emit("applyCustomization",t.customData)}}},[n("template",{slot:"body"},[n("currency-format-form",{attrs:{language:t.language},on:{input:function(e){t.customData=e}}})],1)],2):t._e()};r._withStripped=!0;var o=n(62352);const i=o.Z;n(55657);var a=(0,n(51900).Z)(i,r,[],!1,null,"01d68143",null);a.options.__file="js/pages/currency/form/components/CurrencyModal.vue";const s=a.exports},73605:(t,e,n)=>{"use strict";n.r(e),n.d(e,{__esModule:()=>o.X,default:()=>s});var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("table",{staticClass:"grid-table js-grid-table table"},[n("thead",{staticClass:"thead-default"},[n("tr",{staticClass:"column-headers"},[n("th",{attrs:{scope:"col"}},[t._v("\n        "+t._s(t.$t("list.language"))+"\n      ")]),t._v(" "),n("th",{attrs:{scope:"col"}},[t._v("\n        "+t._s(t.$t("list.example"))+"\n      ")]),t._v(" "),n("th",{attrs:{scope:"col"}},[n("div",{staticClass:"text-right"},[t._v("\n          "+t._s(t.$t("list.edit"))+"\n        ")])]),t._v(" "),n("th",{attrs:{scope:"col"}},[n("div",{staticClass:"grid-actions-header-text"},[t._v("\n          "+t._s(t.$t("list.reset"))+"\n        ")])])])]),t._v(" "),n("tbody",t._l(t.languages,(function(e){return n("tr",{key:e.id},[n("td",[t._v("\n        "+t._s(e.name)+"\n      ")]),t._v(" "),n("td",[t._v("\n        "+t._s(t.displayFormat(e))+"\n      ")]),t._v(" "),n("td",[n("div",{staticClass:"btn-group-action text-right"},[n("div",{staticClass:"btn-group"},[n("button",{staticClass:"btn",attrs:{type:"button"},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.$emit("selectLanguage",e)}}},[n("i",{staticClass:"material-icons"},[t._v("edit")])])])])]),t._v(" "),n("td",[n("div",{staticClass:"btn-group-action text-right"},[n("div",{staticClass:"btn-group"},[n("button",{staticClass:"btn",attrs:{type:"button"},on:{click:function(n){return n.preventDefault(),n.stopPropagation(),t.$emit("resetLanguage",e)}}},[n("i",{staticClass:"material-icons"},[t._v("refresh")])])])])])])})),0)])};r._withStripped=!0;var o=n(56058);const i=o.Z;var a=(0,n(51900).Z)(i,r,[],!1,null,null,null);a.options.__file="js/pages/currency/form/components/LanguageList.vue";const s=a.exports},56995:(t,e,n)=>{"use strict";n.r(e),n.d(e,{__esModule:()=>o.X,default:()=>s});var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("transition",{attrs:{name:"fade"}},[n("div",{staticClass:"modal show"},[n("div",{staticClass:"modal-dialog modal-dialog-centered",attrs:{role:"document"}},[n("div",{directives:[{name:"click-outside",rawName:"v-click-outside",value:t.close,expression:"close"}],staticClass:"modal-content",attrs:{"aria-labelledby":"modalTitle","aria-describedby":"modalDescription"}},[n("header",{staticClass:"modal-header"},[t._t("header",[n("h5",{staticClass:"modal-title"},[t._v("\n                "+t._s(t.modalTitle)+"\n              ")]),t._v(" "),n("button",{staticClass:"close",attrs:{type:"button","data-dismiss":"modal","aria-label":"Close"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.close(e)}}},[n("span",{attrs:{"aria-hidden":"true"}},[t._v("×")])])])],2),t._v(" "),n("section",{staticClass:"modal-body"},[t._t("body")],2),t._v(" "),n("footer",{staticClass:"modal-footer"},[t.confirmation?t._e():t._t("footer",[n("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button","aria-label":"Close modal"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.close(e)}}},[t._v("\n                "+t._s(t.closeLabel)+"\n              ")])]),t._v(" "),t.confirmation?t._t("footer-confirmation",[n("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button","aria-label":"Close modal"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.close(e)}}},[t._v("\n                "+t._s(t.cancelLabel)+"\n              ")]),t._v(" "),n("button",{staticClass:"btn btn-primary",attrs:{type:"button"},on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.confirm(e)}}},[t._v("\n                "+t._s(t.confirmLabel)+"\n              ")])]):t._e()],2)])]),t._v(" "),t._t("outside")],2)]),t._v(" "),n("div",{staticClass:"modal-backdrop show",on:{click:function(e){return e.preventDefault(),e.stopPropagation(),t.close(e)}}})],1)};r._withStripped=!0;var o=n(59845);const i=o.Z;n(91312);var a=(0,n(51900).Z)(i,r,[],!1,null,"4f674025",null);a.options.__file="js/vue/components/Modal.vue";const s=a.exports},51900:(t,e,n)=>{"use strict";function r(t,e,n,r,o,i,a,s){var c,u="function"==typeof t?t.options:t;if(e&&(u.render=e,u.staticRenderFns=n,u._compiled=!0),r&&(u.functional=!0),i&&(u._scopeId="data-v-"+i),a?(c=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(a)},u._ssrRegister=c):o&&(c=s?function(){o.call(this,(u.functional?this.parent:this).$root.$options.shadowRoot)}:o),c)if(u.functional){u._injectStyles=c;var l=u.render;u.render=function(t,e){return c.call(e),l(t,e)}}else{var f=u.beforeCreate;u.beforeCreate=f?[].concat(f,c):[c]}return{exports:t,options:u}}n.d(e,{Z:()=>r})},74104:(t,e,n)=>{"use strict";function r(t){this.state=2,this.value=void 0,this.deferred=[];var e=this;try{t((function(t){e.resolve(t)}),(function(t){e.reject(t)}))}catch(t){e.reject(t)}}n.r(e),n.d(e,{default:()=>V,Url:()=>T,Http:()=>U,Resource:()=>H}),r.reject=function(t){return new r((function(e,n){n(t)}))},r.resolve=function(t){return new r((function(e,n){e(t)}))},r.all=function(t){return new r((function(e,n){var o=0,i=[];function a(n){return function(r){i[n]=r,(o+=1)===t.length&&e(i)}}0===t.length&&e(i);for(var s=0;s<t.length;s+=1)r.resolve(t[s]).then(a(s),n)}))},r.race=function(t){return new r((function(e,n){for(var o=0;o<t.length;o+=1)r.resolve(t[o]).then(e,n)}))};var o=r.prototype;function i(t,e){this.promise=t instanceof Promise?t:new Promise(t.bind(e)),this.context=e}o.resolve=function(t){var e=this;if(2===e.state){if(t===e)throw new TypeError("Promise settled with itself.");var n=!1;try{var r=t&&t.then;if(null!==t&&"object"==typeof t&&"function"==typeof r)return void r.call(t,(function(t){n||e.resolve(t),n=!0}),(function(t){n||e.reject(t),n=!0}))}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},o.reject=function(t){var e=this;if(2===e.state){if(t===e)throw new TypeError("Promise settled with itself.");e.state=1,e.value=t,e.notify()}},o.notify=function(){var t=this;s((function(){if(2!==t.state)for(;t.deferred.length;){var e=t.deferred.shift(),n=e[0],r=e[1],o=e[2],i=e[3];try{0===t.state?o("function"==typeof n?n.call(void 0,t.value):t.value):1===t.state&&("function"==typeof r?o(r.call(void 0,t.value)):i(t.value))}catch(t){i(t)}}}),undefined)},o.then=function(t,e){var n=this;return new r((function(r,o){n.deferred.push([t,e,r,o]),n.notify()}))},o.catch=function(t){return this.then(void 0,t)},"undefined"==typeof Promise&&(window.Promise=r),i.all=function(t,e){return new i(Promise.all(t),e)},i.resolve=function(t,e){return new i(Promise.resolve(t),e)},i.reject=function(t,e){return new i(Promise.reject(t),e)},i.race=function(t,e){return new i(Promise.race(t),e)};var a=i.prototype;a.bind=function(t){return this.context=t,this},a.then=function(t,e){return t&&t.bind&&this.context&&(t=t.bind(this.context)),e&&e.bind&&this.context&&(e=e.bind(this.context)),new i(this.promise.then(t,e),this.context)},a.catch=function(t){return t&&t.bind&&this.context&&(t=t.bind(this.context)),new i(this.promise.catch(t),this.context)},a.finally=function(t){return this.then((function(e){return t.call(this),e}),(function(e){return t.call(this),Promise.reject(e)}))};var s,c={}.hasOwnProperty,u=[].slice,l=!1,f="undefined"!=typeof window;function d(t){return t?t.replace(/^\s*|\s*$/g,""):""}function p(t){return t?t.toLowerCase():""}var h=Array.isArray;function v(t){return"string"==typeof t}function m(t){return"function"==typeof t}function g(t){return null!==t&&"object"==typeof t}function y(t){return g(t)&&Object.getPrototypeOf(t)==Object.prototype}function b(t,e,n){var r=i.resolve(t);return arguments.length<2?r:r.then(e,n)}function $(t,e,n){return m(n=n||{})&&(n=n.call(e)),x(t.bind({$vm:e,$options:n}),t,{$options:n})}function _(t,e){var n,r;if(h(t))for(n=0;n<t.length;n++)e.call(t[n],t[n],n);else if(g(t))for(r in t)c.call(t,r)&&e.call(t[r],t[r],r);return t}var w=Object.assign||function(t){var e=u.call(arguments,1);return e.forEach((function(e){k(t,e)})),t};function x(t){var e=u.call(arguments,1);return e.forEach((function(e){k(t,e,!0)})),t}function k(t,e,n){for(var r in e)n&&(y(e[r])||h(e[r]))?(y(e[r])&&!y(t[r])&&(t[r]={}),h(e[r])&&!h(t[r])&&(t[r]=[]),k(t[r],e[r],n)):void 0!==e[r]&&(t[r]=e[r])}function C(t){return null!=t}function S(t){return";"===t||"&"===t||"?"===t}function O(t,e,n){return e="+"===t||"#"===t?A(e):encodeURIComponent(e),n?encodeURIComponent(n)+"="+e:e}function A(t){return t.split(/(%[0-9A-Fa-f]{2})/g).map((function(t){return/%[0-9A-Fa-f]/.test(t)||(t=encodeURI(t)),t})).join("")}function T(t,e){var n,r=this||{},o=t;return v(t)&&(o={url:t,params:e}),o=x({},T.options,r.$options,o),T.transforms.forEach((function(t){v(t)&&(t=T.transform[t]),m(t)&&(n=function(t,e,n){return function(r){return t.call(n,r,e)}}(t,n,r.$vm))})),n(o)}function M(t,e,n){var r,o=h(e),i=y(e);_(e,(function(e,a){r=g(e)||h(e),n&&(a=n+"["+(i||r?a:"")+"]"),!n&&o?t.add(e.name,e.value):r?M(t,e,a):t.add(a,e)}))}function j(t){return new i((function(e){var n=new XDomainRequest,r=function(r){var o=r.type,i=0;"load"===o?i=200:"error"===o&&(i=500),e(t.respondWith(n.responseText,{status:i}))};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl()),t.timeout&&(n.timeout=t.timeout),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.onprogress=function(){},n.send(t.getBody())}))}T.options={url:"",root:null,params:{}},T.transform={template:function(t){var e=[],n=function(t,e,n){var r=function(t){var e=["+","#",".","/",";","?","&"],n=[];return{vars:n,expand:function(r){return t.replace(/\{([^{}]+)\}|([^{}]+)/g,(function(t,o,i){if(o){var a=null,s=[];if(-1!==e.indexOf(o.charAt(0))&&(a=o.charAt(0),o=o.substr(1)),o.split(/,/g).forEach((function(t){var e=/([^:*]*)(?::(\d+)|(\*))?/.exec(t);s.push.apply(s,function(t,e,n,r){var o=t[n],i=[];if(C(o)&&""!==o)if("string"==typeof o||"number"==typeof o||"boolean"==typeof o)o=o.toString(),r&&"*"!==r&&(o=o.substring(0,parseInt(r,10))),i.push(O(e,o,S(e)?n:null));else if("*"===r)Array.isArray(o)?o.filter(C).forEach((function(t){i.push(O(e,t,S(e)?n:null))})):Object.keys(o).forEach((function(t){C(o[t])&&i.push(O(e,o[t],t))}));else{var a=[];Array.isArray(o)?o.filter(C).forEach((function(t){a.push(O(e,t))})):Object.keys(o).forEach((function(t){C(o[t])&&(a.push(encodeURIComponent(t)),a.push(O(e,o[t].toString())))})),S(e)?i.push(encodeURIComponent(n)+"="+a.join(",")):0!==a.length&&i.push(a.join(","))}else";"===e?i.push(encodeURIComponent(n)):""!==o||"&"!==e&&"?"!==e?""===o&&i.push(""):i.push(encodeURIComponent(n)+"=");return i}(r,a,e[1],e[2]||e[3])),n.push(e[1])})),a&&"+"!==a){var c=",";return"?"===a?c="&":"#"!==a&&(c=a),(0!==s.length?a:"")+s.join(c)}return s.join(",")}return A(i)}))}}}(t),o=r.expand(e);return n&&n.push.apply(n,r.vars),o}(t.url,t.params,e);return e.forEach((function(e){delete t.params[e]})),n},query:function(t,e){var n=Object.keys(T.options.params),r={},o=e(t);return _(t.params,(function(t,e){-1===n.indexOf(e)&&(r[e]=t)})),(r=T.params(r))&&(o+=(-1==o.indexOf("?")?"?":"&")+r),o},root:function(t,e){var n,r=e(t);return v(t.root)&&!/^(https?:)?\//.test(r)&&("/",r=((n=t.root)?n.replace(new RegExp("[/]+$"),""):n)+"/"+r),r}},T.transforms=["template","query","root"],T.params=function(t){var e=[],n=encodeURIComponent;return e.add=function(t,e){m(e)&&(e=e()),null===e&&(e=""),this.push(n(t)+"="+n(e))},M(e,t),e.join("&").replace(/%20/g,"+")},T.parse=function(t){var e=document.createElement("a");return document.documentMode&&(e.href=t,t=e.href),e.href=t,{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",port:e.port,host:e.host,hostname:e.hostname,pathname:"/"===e.pathname.charAt(0)?e.pathname:"/"+e.pathname,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):""}};var E=f&&"withCredentials"in new XMLHttpRequest;function F(t){return new i((function(e){var n,r,o=t.jsonp||"callback",i=t.jsonpCallback||"_jsonp"+Math.random().toString(36).substr(2),a=null;n=function(n){var o=n.type,s=0;"load"===o&&null!==a?s=200:"error"===o&&(s=500),s&&window[i]&&(delete window[i],document.body.removeChild(r)),e(t.respondWith(a,{status:s}))},window[i]=function(t){a=JSON.stringify(t)},t.abort=function(){n({type:"abort"})},t.params[o]=i,t.timeout&&setTimeout(t.abort,t.timeout),(r=document.createElement("script")).src=t.getUrl(),r.type="text/javascript",r.async=!0,r.onload=n,r.onerror=n,document.body.appendChild(r)}))}function L(t){return new i((function(e){var n=new XMLHttpRequest,r=function(r){var o=t.respondWith("response"in n?n.response:n.responseText,{status:1223===n.status?204:n.status,statusText:1223===n.status?"No Content":d(n.statusText)});_(d(n.getAllResponseHeaders()).split("\n"),(function(t){o.headers.append(t.slice(0,t.indexOf(":")),t.slice(t.indexOf(":")+1))})),e(o)};t.abort=function(){return n.abort()},n.open(t.method,t.getUrl(),!0),t.timeout&&(n.timeout=t.timeout),t.responseType&&"responseType"in n&&(n.responseType=t.responseType),(t.withCredentials||t.credentials)&&(n.withCredentials=!0),t.crossOrigin||t.headers.set("X-Requested-With","XMLHttpRequest"),m(t.progress)&&"GET"===t.method&&n.addEventListener("progress",t.progress),m(t.downloadProgress)&&n.addEventListener("progress",t.downloadProgress),m(t.progress)&&/^(POST|PUT)$/i.test(t.method)&&n.upload.addEventListener("progress",t.progress),m(t.uploadProgress)&&n.upload&&n.upload.addEventListener("progress",t.uploadProgress),t.headers.forEach((function(t,e){n.setRequestHeader(e,t)})),n.onload=r,n.onabort=r,n.onerror=r,n.ontimeout=r,n.send(t.getBody())}))}function P(t){var e=n(76608);return new i((function(n){var r,o=t.getUrl(),i=t.getBody(),a=t.method,s={};t.headers.forEach((function(t,e){s[e]=t})),e(o,{body:i,method:a,headers:s}).then(r=function(e){var r=t.respondWith(e.body,{status:e.statusCode,statusText:d(e.statusMessage)});_(e.headers,(function(t,e){r.headers.set(e,t)})),n(r)},(function(t){return r(t.response)}))}))}function D(t){return(t.client||(f?L:P))(t)}var I=function(t){var e=this;this.map={},_(t,(function(t,n){return e.append(n,t)}))};function N(t,e){return Object.keys(t).reduce((function(t,n){return p(e)===p(n)?n:t}),null)}I.prototype.has=function(t){return null!==N(this.map,t)},I.prototype.get=function(t){var e=this.map[N(this.map,t)];return e?e.join():null},I.prototype.getAll=function(t){return this.map[N(this.map,t)]||[]},I.prototype.set=function(t,e){this.map[function(t){if(/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return d(t)}(N(this.map,t)||t)]=[d(e)]},I.prototype.append=function(t,e){var n=this.map[N(this.map,t)];n?n.push(d(e)):this.set(t,e)},I.prototype.delete=function(t){delete this.map[N(this.map,t)]},I.prototype.deleteAll=function(){this.map={}},I.prototype.forEach=function(t,e){var n=this;_(this.map,(function(r,o){_(r,(function(r){return t.call(e,r,o,n)}))}))};var R=function(t,e){var n=e.url,r=e.headers,o=e.status,a=e.statusText;this.url=n,this.ok=o>=200&&o<300,this.status=o||0,this.statusText=a||"",this.headers=new I(r),this.body=t,v(t)?this.bodyText=t:"undefined"!=typeof Blob&&t instanceof Blob&&(this.bodyBlob=t,function(t){return 0===t.type.indexOf("text")||-1!==t.type.indexOf("json")}(t)&&(this.bodyText=function(t){return new i((function(e){var n=new FileReader;n.readAsText(t),n.onload=function(){e(n.result)}}))}(t)))};R.prototype.blob=function(){return b(this.bodyBlob)},R.prototype.text=function(){return b(this.bodyText)},R.prototype.json=function(){return b(this.text(),(function(t){return JSON.parse(t)}))},Object.defineProperty(R.prototype,"data",{get:function(){return this.body},set:function(t){this.body=t}});var z=function(t){var e;this.body=null,this.params={},w(this,t,{method:(e=t.method||"GET",e?e.toUpperCase():"")}),this.headers instanceof I||(this.headers=new I(this.headers))};z.prototype.getUrl=function(){return T(this)},z.prototype.getBody=function(){return this.body},z.prototype.respondWith=function(t,e){return new R(t,w(e||{},{url:this.getUrl()}))};var B={"Content-Type":"application/json;charset=utf-8"};function U(t){var e=this||{},n=function(t){var e=[D],n=[];function r(r){for(;e.length;){var o=e.pop();if(m(o)){var a=void 0,s=void 0;if(g(a=o.call(t,r,(function(t){return s=t}))||s))return new i((function(e,r){n.forEach((function(e){a=b(a,(function(n){return e.call(t,n)||n}),r)})),b(a,e,r)}),t);m(a)&&n.unshift(a)}else c="Invalid interceptor of type "+typeof o+", must be a function","undefined"!=typeof console&&l&&console.warn("[VueResource warn]: "+c)}var c}return g(t)||(t=null),r.use=function(t){e.push(t)},r}(e.$vm);return function(t){u.call(arguments,1).forEach((function(e){for(var n in e)void 0===t[n]&&(t[n]=e[n])}))}(t||{},e.$options,U.options),U.interceptors.forEach((function(t){v(t)&&(t=U.interceptor[t]),m(t)&&n.use(t)})),n(new z(t)).then((function(t){return t.ok?t:i.reject(t)}),(function(t){var e;return t instanceof Error&&(e=t,"undefined"!=typeof console&&console.error(e)),i.reject(t)}))}function H(t,e,n,r){var o=this||{},i={};return _(n=w({},H.actions,n),(function(n,a){n=x({url:t,params:w({},e)},r,n),i[a]=function(){return(o.$http||U)(W(n,arguments))}})),i}function W(t,e){var n,r=w({},t),o={};switch(e.length){case 2:o=e[0],n=e[1];break;case 1:/^(POST|PUT|PATCH)$/i.test(r.method)?n=e[0]:o=e[0];break;case 0:break;default:throw"Expected up to 2 arguments [params, body], got "+e.length+" arguments"}return r.body=n,r.params=w({},r.params,o),r}function G(t){var e,n,r;G.installed||(n=(e=t).config,r=e.nextTick,s=r,l=n.debug||!n.silent,t.url=T,t.http=U,t.resource=H,t.Promise=i,Object.defineProperties(t.prototype,{$url:{get:function(){return $(t.url,this,this.$options.url)}},$http:{get:function(){return $(t.http,this,this.$options.http)}},$resource:{get:function(){return t.resource.bind(this)}},$promise:{get:function(){var e=this;return function(n){return new t.Promise(n,e)}}}}))}U.options={},U.headers={put:B,post:B,patch:B,delete:B,common:{Accept:"application/json, text/plain, */*"},custom:{}},U.interceptor={before:function(t){m(t.before)&&t.before.call(this,t)},method:function(t){t.emulateHTTP&&/^(PUT|PATCH|DELETE)$/i.test(t.method)&&(t.headers.set("X-HTTP-Method-Override",t.method),t.method="POST")},jsonp:function(t){"JSONP"==t.method&&(t.client=F)},json:function(t){var e=t.headers.get("Content-Type")||"";return g(t.body)&&0===e.indexOf("application/json")&&(t.body=JSON.stringify(t.body)),function(t){return t.bodyText?b(t.text(),(function(e){var n,r;if(0===(t.headers.get("Content-Type")||"").indexOf("application/json")||(r=(n=e).match(/^\s*(\[|\{)/))&&{"[":/]\s*$/,"{":/}\s*$/}[r[1]].test(n))try{t.body=JSON.parse(e)}catch(e){t.body=null}else t.body=e;return t})):t}},form:function(t){var e;e=t.body,"undefined"!=typeof FormData&&e instanceof FormData?t.headers.delete("Content-Type"):g(t.body)&&t.emulateJSON&&(t.body=T.params(t.body),t.headers.set("Content-Type","application/x-www-form-urlencoded"))},header:function(t){_(w({},U.headers.common,t.crossOrigin?{}:U.headers.custom,U.headers[p(t.method)]),(function(e,n){t.headers.has(n)||t.headers.set(n,e)}))},cors:function(t){if(f){var e=T.parse(location.href),n=T.parse(t.getUrl());n.protocol===e.protocol&&n.host===e.host||(t.crossOrigin=!0,t.emulateHTTP=!1,E||(t.client=j))}}},U.interceptors=["before","method","jsonp","json","form","header","cors"],["get","delete","head","jsonp"].forEach((function(t){U[t]=function(e,n){return this(w(n||{},{url:e,method:t}))}})),["post","put","patch"].forEach((function(t){U[t]=function(e,n,r){return this(w(r||{},{url:e,method:t,body:n}))}})),H.actions={get:{method:"GET"},save:{method:"POST"},query:{method:"GET"},update:{method:"PUT"},remove:{method:"DELETE"},delete:{method:"DELETE"}},"undefined"!=typeof window&&window.Vue&&window.Vue.use(G);const V=G},55657:(t,e,n)=>{var r=n(21120);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.id,r,""]]),r.locals&&(t.exports=r.locals),(0,n(45346).Z)("78ab6558",r,!1,{})},91312:(t,e,n)=>{var r=n(85487);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[t.id,r,""]]),r.locals&&(t.exports=r.locals),(0,n(45346).Z)("0bdb9180",r,!1,{})},45346:(t,e,n)=>{"use strict";function r(t,e){for(var n=[],r={},o=0;o<e.length;o++){var i=e[o],a=i[0],s={id:t+":"+o,css:i[1],media:i[2],sourceMap:i[3]};r[a]?r[a].parts.push(s):n.push(r[a]={id:a,parts:[s]})}return n}n.d(e,{Z:()=>h});var o="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!o)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var i={},a=o&&(document.head||document.getElementsByTagName("head")[0]),s=null,c=0,u=!1,l=function(){},f=null,d="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function h(t,e,n,o){u=n,f=o||{};var a=r(t,e);return v(a),function(e){for(var n=[],o=0;o<a.length;o++){var s=a[o];(c=i[s.id]).refs--,n.push(c)}for(e?v(a=r(t,e)):a=[],o=0;o<n.length;o++){var c;if(0===(c=n[o]).refs){for(var u=0;u<c.parts.length;u++)c.parts[u]();delete i[c.id]}}}}function v(t){for(var e=0;e<t.length;e++){var n=t[e],r=i[n.id];if(r){r.refs++;for(var o=0;o<r.parts.length;o++)r.parts[o](n.parts[o]);for(;o<n.parts.length;o++)r.parts.push(g(n.parts[o]));r.parts.length>n.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(o=0;o<n.parts.length;o++)a.push(g(n.parts[o]));i[n.id]={id:n.id,refs:1,parts:a}}}}function m(){var t=document.createElement("style");return t.type="text/css",a.appendChild(t),t}function g(t){var e,n,r=document.querySelector("style["+d+'~="'+t.id+'"]');if(r){if(u)return l;r.parentNode.removeChild(r)}if(p){var o=c++;r=s||(s=m()),e=$.bind(null,r,o,!1),n=$.bind(null,r,o,!0)}else r=m(),e=_.bind(null,r),n=function(){r.parentNode.removeChild(r)};return e(t),function(r){if(r){if(r.css===t.css&&r.media===t.media&&r.sourceMap===t.sourceMap)return;e(t=r)}else n()}}var y,b=(y=[],function(t,e){return y[t]=e,y.filter(Boolean).join("\n")});function $(t,e,n,r){var o=n?"":r.css;if(t.styleSheet)t.styleSheet.cssText=b(e,o);else{var i=document.createTextNode(o),a=t.childNodes;a[e]&&t.removeChild(a[e]),a.length?t.insertBefore(i,a[e]):t.appendChild(i)}}function _(t,e){var n=e.css,r=e.media,o=e.sourceMap;if(r&&t.setAttribute("media",r),f.ssrId&&t.setAttribute(d,e.id),o&&(n+="\n/*# sourceURL="+o.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(o))))+" */"),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}},72100:(t,e,n)=>{t.exports=n(91317)},91317:(t,e,n)=>{"use strict";var r=Object.freeze({});function o(t){return null==t}function i(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return i(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function v(t,e){for(var n=Object.create(null),r=t.split(","),o=0;o<r.length;o++)n[r[o]]=!0;return e?function(t){return n[t.toLowerCase()]}:function(t){return n[t]}}var m=v("slot,component",!0),g=v("key,ref,slot,slot-scope,is");function y(t,e){if(t.length){var n=t.indexOf(e);if(n>-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function $(t,e){return b.call(t,e)}function _(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,x=_((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),k=_((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),C=/\B([A-Z])/g,S=_((function(t){return t.replace(C,"-$1").toLowerCase()})),O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function A(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function T(t,e){for(var n in e)t[n]=e[n];return t}function M(t){for(var e={},n=0;n<t.length;n++)t[n]&&T(e,t[n]);return e}function j(t,e,n){}var E=function(t,e,n){return!1},F=function(t){return t};function L(t,e){if(t===e)return!0;var n=c(t),r=c(e);if(!n||!r)return!n&&!r&&String(t)===String(e);try{var o=Array.isArray(t),i=Array.isArray(e);if(o&&i)return t.length===e.length&&t.every((function(t,n){return L(t,e[n])}));if(t instanceof Date&&e instanceof Date)return t.getTime()===e.getTime();if(o||i)return!1;var a=Object.keys(t),s=Object.keys(e);return a.length===s.length&&a.every((function(n){return L(t[n],e[n])}))}catch(t){return!1}}function P(t,e){for(var n=0;n<t.length;n++)if(L(t[n],e))return n;return-1}function D(t){var e=!1;return function(){e||(e=!0,t.apply(this,arguments))}}var I="data-server-rendered",N=["component","directive","filter"],R=["beforeCreate","created","beforeMount","mounted","beforeUpdate","updated","beforeDestroy","destroyed","activated","deactivated","errorCaptured","serverPrefetch"],z={optionMergeStrategies:Object.create(null),silent:!1,productionTip:!1,devtools:!1,performance:!1,errorHandler:null,warnHandler:null,ignoredElements:[],keyCodes:Object.create(null),isReservedTag:E,isReservedAttr:E,isUnknownElement:E,getTagNamespace:j,parsePlatformTagName:F,mustUseProp:E,async:!0,_lifecycleHooks:R},B=/a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;function U(t,e,n,r){Object.defineProperty(t,e,{value:n,enumerable:!!r,writable:!0,configurable:!0})}var H,W=new RegExp("[^"+B.source+".$_\\d]"),G="__proto__"in{},V="undefined"!=typeof window,q="undefined"!=typeof WXEnvironment&&!!WXEnvironment.platform,J=q&&WXEnvironment.platform.toLowerCase(),Z=V&&window.navigator.userAgent.toLowerCase(),K=Z&&/msie|trident/.test(Z),X=Z&&Z.indexOf("msie 9.0")>0,Y=Z&&Z.indexOf("edge/")>0,Q=(Z&&Z.indexOf("android"),Z&&/iphone|ipad|ipod|ios/.test(Z)||"ios"===J),tt=(Z&&/chrome\/\d+/.test(Z),Z&&/phantomjs/.test(Z),Z&&Z.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(V)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,rt)}catch(r){}var ot=function(){return void 0===H&&(H=!V&&!q&&void 0!==n.g&&n.g.process&&"server"===n.g.process.env.VUE_ENV),H},it=V&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ut=j,lt=0,ft=function(){this.id=lt++,this.subs=[]};ft.prototype.addSub=function(t){this.subs.push(t)},ft.prototype.removeSub=function(t){y(this.subs,t)},ft.prototype.depend=function(){ft.target&&ft.target.addDep(this)},ft.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e<n;e++)t[e].update()},ft.target=null;var dt=[];function pt(t){dt.push(t),ft.target=t}function ht(){dt.pop(),ft.target=dt[dt.length-1]}var vt=function(t,e,n,r,o,i,a,s){this.tag=t,this.data=e,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=e&&e.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=s,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1},mt={child:{configurable:!0}};mt.child.get=function(){return this.componentInstance},Object.defineProperties(vt.prototype,mt);var gt=function(t){void 0===t&&(t="");var e=new vt;return e.text=t,e.isComment=!0,e};function yt(t){return new vt(void 0,void 0,void 0,String(t))}function bt(t){var e=new vt(t.tag,t.data,t.children&&t.children.slice(),t.text,t.elm,t.context,t.componentOptions,t.asyncFactory);return e.ns=t.ns,e.isStatic=t.isStatic,e.key=t.key,e.isComment=t.isComment,e.fnContext=t.fnContext,e.fnOptions=t.fnOptions,e.fnScopeId=t.fnScopeId,e.asyncMeta=t.asyncMeta,e.isCloned=!0,e}var $t=Array.prototype,_t=Object.create($t);["push","pop","shift","unshift","splice","sort","reverse"].forEach((function(t){var e=$t[t];U(_t,t,(function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];var o,i=e.apply(this,n),a=this.__ob__;switch(t){case"push":case"unshift":o=n;break;case"splice":o=n.slice(2)}return o&&a.observeArray(o),a.dep.notify(),i}))}));var wt=Object.getOwnPropertyNames(_t),xt=!0;function kt(t){xt=t}var Ct=function(t){var e;this.value=t,this.dep=new ft,this.vmCount=0,U(t,"__ob__",this),Array.isArray(t)?(G?(e=_t,t.__proto__=e):function(t,e,n){for(var r=0,o=n.length;r<o;r++){var i=n[r];U(t,i,e[i])}}(t,_t,wt),this.observeArray(t)):this.walk(t)};function St(t,e){var n;if(c(t)&&!(t instanceof vt))return $(t,"__ob__")&&t.__ob__ instanceof Ct?n=t.__ob__:xt&&!ot()&&(Array.isArray(t)||l(t))&&Object.isExtensible(t)&&!t._isVue&&(n=new Ct(t)),e&&n&&n.vmCount++,n}function Ot(t,e,n,r,o){var i=new ft,a=Object.getOwnPropertyDescriptor(t,e);if(!a||!1!==a.configurable){var s=a&&a.get,c=a&&a.set;s&&!c||2!==arguments.length||(n=t[e]);var u=!o&&St(n);Object.defineProperty(t,e,{enumerable:!0,configurable:!0,get:function(){var e=s?s.call(t):n;return ft.target&&(i.depend(),u&&(u.dep.depend(),Array.isArray(e)&&function t(e){for(var n=void 0,r=0,o=e.length;r<o;r++)(n=e[r])&&n.__ob__&&n.__ob__.dep.depend(),Array.isArray(n)&&t(n)}(e))),e},set:function(e){var r=s?s.call(t):n;e===r||e!=e&&r!=r||s&&!c||(c?c.call(t,e):n=e,u=!o&&St(e),i.notify())}})}}function At(t,e,n){if(Array.isArray(t)&&f(e))return t.length=Math.max(t.length,e),t.splice(e,1,n),n;if(e in t&&!(e in Object.prototype))return t[e]=n,n;var r=t.__ob__;return t._isVue||r&&r.vmCount?n:r?(Ot(r.value,e,n),r.dep.notify(),n):(t[e]=n,n)}function Tt(t,e){if(Array.isArray(t)&&f(e))t.splice(e,1);else{var n=t.__ob__;t._isVue||n&&n.vmCount||$(t,e)&&(delete t[e],n&&n.dep.notify())}}Ct.prototype.walk=function(t){for(var e=Object.keys(t),n=0;n<e.length;n++)Ot(t,e[n])},Ct.prototype.observeArray=function(t){for(var e=0,n=t.length;e<n;e++)St(t[e])};var Mt=z.optionMergeStrategies;function jt(t,e){if(!e)return t;for(var n,r,o,i=ct?Reflect.ownKeys(e):Object.keys(e),a=0;a<i.length;a++)"__ob__"!==(n=i[a])&&(r=t[n],o=e[n],$(t,n)?r!==o&&l(r)&&l(o)&&jt(r,o):At(t,n,o));return t}function Et(t,e,n){return n?function(){var r="function"==typeof e?e.call(n,n):e,o="function"==typeof t?t.call(n,n):t;return r?jt(r,o):o}:e?t?function(){return jt("function"==typeof e?e.call(this,this):e,"function"==typeof t?t.call(this,this):t)}:e:t}function Ft(t,e){var n=e?t?t.concat(e):Array.isArray(e)?e:[e]:t;return n?function(t){for(var e=[],n=0;n<t.length;n++)-1===e.indexOf(t[n])&&e.push(t[n]);return e}(n):n}function Lt(t,e,n,r){var o=Object.create(t||null);return e?T(o,e):o}Mt.data=function(t,e,n){return n?Et(t,e,n):e&&"function"!=typeof e?t:Et(t,e)},R.forEach((function(t){Mt[t]=Ft})),N.forEach((function(t){Mt[t+"s"]=Lt})),Mt.watch=function(t,e,n,r){if(t===et&&(t=void 0),e===et&&(e=void 0),!e)return Object.create(t||null);if(!t)return e;var o={};for(var i in T(o,t),e){var a=o[i],s=e[i];a&&!Array.isArray(a)&&(a=[a]),o[i]=a?a.concat(s):Array.isArray(s)?s:[s]}return o},Mt.props=Mt.methods=Mt.inject=Mt.computed=function(t,e,n,r){if(!t)return e;var o=Object.create(null);return T(o,t),e&&T(o,e),o},Mt.provide=Et;var Pt=function(t,e){return void 0===e?t:e};function Dt(t,e,n){if("function"==typeof e&&(e=e.options),function(t,e){var n=t.props;if(n){var r,o,i={};if(Array.isArray(n))for(r=n.length;r--;)"string"==typeof(o=n[r])&&(i[x(o)]={type:null});else if(l(n))for(var a in n)o=n[a],i[x(a)]=l(o)?o:{type:o};t.props=i}}(e),function(t,e){var n=t.inject;if(n){var r=t.inject={};if(Array.isArray(n))for(var o=0;o<n.length;o++)r[n[o]]={from:n[o]};else if(l(n))for(var i in n){var a=n[i];r[i]=l(a)?T({from:i},a):{from:a}}}}(e),function(t){var e=t.directives;if(e)for(var n in e){var r=e[n];"function"==typeof r&&(e[n]={bind:r,update:r})}}(e),!e._base&&(e.extends&&(t=Dt(t,e.extends,n)),e.mixins))for(var r=0,o=e.mixins.length;r<o;r++)t=Dt(t,e.mixins[r],n);var i,a={};for(i in t)s(i);for(i in e)$(t,i)||s(i);function s(r){var o=Mt[r]||Pt;a[r]=o(t[r],e[r],n,r)}return a}function It(t,e,n,r){if("string"==typeof n){var o=t[e];if($(o,n))return o[n];var i=x(n);if($(o,i))return o[i];var a=k(i);return $(o,a)?o[a]:o[n]||o[i]||o[a]}}function Nt(t,e,n,r){var o=e[t],i=!$(n,t),a=n[t],s=Bt(Boolean,o.type);if(s>-1)if(i&&!$(o,"default"))a=!1;else if(""===a||a===S(t)){var c=Bt(String,o.type);(c<0||s<c)&&(a=!0)}if(void 0===a){a=function(t,e,n){if($(e,"default")){var r=e.default;return t&&t.$options.propsData&&void 0===t.$options.propsData[n]&&void 0!==t._props[n]?t._props[n]:"function"==typeof r&&"Function"!==Rt(e.type)?r.call(t):r}}(r,o,t);var u=xt;kt(!0),St(a),kt(u)}return a}function Rt(t){var e=t&&t.toString().match(/^\s*function (\w+)/);return e?e[1]:""}function zt(t,e){return Rt(t)===Rt(e)}function Bt(t,e){if(!Array.isArray(e))return zt(e,t)?0:-1;for(var n=0,r=e.length;n<r;n++)if(zt(e[n],t))return n;return-1}function Ut(t,e,n){pt();try{if(e)for(var r=e;r=r.$parent;){var o=r.$options.errorCaptured;if(o)for(var i=0;i<o.length;i++)try{if(!1===o[i].call(r,t,e,n))return}catch(t){Wt(t,r,"errorCaptured hook")}}Wt(t,e,n)}finally{ht()}}function Ht(t,e,n,r,o){var i;try{(i=n?t.apply(e,n):t.call(e))&&!i._isVue&&d(i)&&!i._handled&&(i.catch((function(t){return Ut(t,r,o+" (Promise/async)")})),i._handled=!0)}catch(t){Ut(t,r,o)}return i}function Wt(t,e,n){if(z.errorHandler)try{return z.errorHandler.call(null,t,e,n)}catch(e){e!==t&&Gt(e)}Gt(t)}function Gt(t,e,n){if(!V&&!q||"undefined"==typeof console)throw t;console.error(t)}var Vt,qt=!1,Jt=[],Zt=!1;function Kt(){Zt=!1;var t=Jt.slice(0);Jt.length=0;for(var e=0;e<t.length;e++)t[e]()}if("undefined"!=typeof Promise&&at(Promise)){var Xt=Promise.resolve();Vt=function(){Xt.then(Kt),Q&&setTimeout(j)},qt=!0}else if(K||"undefined"==typeof MutationObserver||!at(MutationObserver)&&"[object MutationObserverConstructor]"!==MutationObserver.toString())Vt="undefined"!=typeof setImmediate&&at(setImmediate)?function(){setImmediate(Kt)}:function(){setTimeout(Kt,0)};else{var Yt=1,Qt=new MutationObserver(Kt),te=document.createTextNode(String(Yt));Qt.observe(te,{characterData:!0}),Vt=function(){Yt=(Yt+1)%2,te.data=String(Yt)},qt=!0}function ee(t,e){var n;if(Jt.push((function(){if(t)try{t.call(e)}catch(t){Ut(t,e,"nextTick")}else n&&n(e)})),Zt||(Zt=!0,Vt()),!t&&"undefined"!=typeof Promise)return new Promise((function(t){n=t}))}var ne=new st;function re(t){!function t(e,n){var r,o,i=Array.isArray(e);if(!(!i&&!c(e)||Object.isFrozen(e)||e instanceof vt)){if(e.__ob__){var a=e.__ob__.dep.id;if(n.has(a))return;n.add(a)}if(i)for(r=e.length;r--;)t(e[r],n);else for(r=(o=Object.keys(e)).length;r--;)t(e[o[r]],n)}}(t,ne),ne.clear()}var oe=_((function(t){var e="&"===t.charAt(0),n="~"===(t=e?t.slice(1):t).charAt(0),r="!"===(t=n?t.slice(1):t).charAt(0);return{name:t=r?t.slice(1):t,once:n,capture:r,passive:e}}));function ie(t,e){function n(){var t=arguments,r=n.fns;if(!Array.isArray(r))return Ht(r,null,arguments,e,"v-on handler");for(var o=r.slice(),i=0;i<o.length;i++)Ht(o[i],null,t,e,"v-on handler")}return n.fns=t,n}function ae(t,e,n,r,i,s){var c,u,l,f;for(c in t)u=t[c],l=e[c],f=oe(c),o(u)||(o(l)?(o(u.fns)&&(u=t[c]=ie(u,s)),a(f.once)&&(u=t[c]=i(f.name,u,f.capture)),n(f.name,u,f.capture,f.passive,f.params)):u!==l&&(l.fns=u,t[c]=l));for(c in e)o(t[c])&&r((f=oe(c)).name,e[c],f.capture)}function se(t,e,n){var r;t instanceof vt&&(t=t.data.hook||(t.data.hook={}));var s=t[e];function c(){n.apply(this,arguments),y(r.fns,c)}o(s)?r=ie([c]):i(s.fns)&&a(s.merged)?(r=s).fns.push(c):r=ie([s,c]),r.merged=!0,t[e]=r}function ce(t,e,n,r,o){if(i(e)){if($(e,n))return t[n]=e[n],o||delete e[n],!0;if($(e,r))return t[n]=e[r],o||delete e[r],!0}return!1}function ue(t){return s(t)?[yt(t)]:Array.isArray(t)?function t(e,n){var r,c,u,l,f=[];for(r=0;r<e.length;r++)o(c=e[r])||"boolean"==typeof c||(l=f[u=f.length-1],Array.isArray(c)?c.length>0&&(le((c=t(c,(n||"")+"_"+r))[0])&&le(l)&&(f[u]=yt(l.text+c[0].text),c.shift()),f.push.apply(f,c)):s(c)?le(l)?f[u]=yt(l.text+c):""!==c&&f.push(yt(c)):le(c)&&le(l)?f[u]=yt(l.text+c.text):(a(e._isVList)&&i(c.tag)&&o(c.key)&&i(n)&&(c.key="__vlist"+n+"_"+r+"__"),f.push(c)));return f}(t):void 0}function le(t){return i(t)&&i(t.text)&&!1===t.isComment}function fe(t,e){if(t){for(var n=Object.create(null),r=ct?Reflect.ownKeys(t):Object.keys(t),o=0;o<r.length;o++){var i=r[o];if("__ob__"!==i){for(var a=t[i].from,s=e;s;){if(s._provided&&$(s._provided,a)){n[i]=s._provided[a];break}s=s.$parent}if(!s&&"default"in t[i]){var c=t[i].default;n[i]="function"==typeof c?c.call(e):c}}}return n}}function de(t,e){if(!t||!t.length)return{};for(var n={},r=0,o=t.length;r<o;r++){var i=t[r],a=i.data;if(a&&a.attrs&&a.attrs.slot&&delete a.attrs.slot,i.context!==e&&i.fnContext!==e||!a||null==a.slot)(n.default||(n.default=[])).push(i);else{var s=a.slot,c=n[s]||(n[s]=[]);"template"===i.tag?c.push.apply(c,i.children||[]):c.push(i)}}for(var u in n)n[u].every(pe)&&delete n[u];return n}function pe(t){return t.isComment&&!t.asyncFactory||" "===t.text}function he(t,e,n){var o,i=Object.keys(e).length>0,a=t?!!t.$stable:!i,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!i&&!n.$hasNormal)return n;for(var c in o={},t)t[c]&&"$"!==c[0]&&(o[c]=ve(e,c,t[c]))}else o={};for(var u in e)u in o||(o[u]=me(e,u));return t&&Object.isExtensible(t)&&(t._normalized=o),U(o,"$stable",a),U(o,"$key",s),U(o,"$hasNormal",i),o}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:ue(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function me(t,e){return function(){return t[e]}}function ge(t,e){var n,r,o,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,o=t.length;r<o;r++)n[r]=e(t[r],r);else if("number"==typeof t)for(n=new Array(t),r=0;r<t;r++)n[r]=e(r+1,r);else if(c(t))if(ct&&t[Symbol.iterator]){n=[];for(var u=t[Symbol.iterator](),l=u.next();!l.done;)n.push(e(l.value,n.length)),l=u.next()}else for(a=Object.keys(t),n=new Array(a.length),r=0,o=a.length;r<o;r++)s=a[r],n[r]=e(t[s],s,r);return i(n)||(n=[]),n._isVList=!0,n}function ye(t,e,n,r){var o,i=this.$scopedSlots[t];i?(n=n||{},r&&(n=T(T({},r),n)),o=i(n)||e):o=this.$slots[t]||e;var a=n&&n.slot;return a?this.$createElement("template",{slot:a},o):o}function be(t){return It(this.$options,"filters",t)||F}function $e(t,e){return Array.isArray(t)?-1===t.indexOf(e):t!==e}function _e(t,e,n,r,o){var i=z.keyCodes[e]||n;return o&&r&&!z.keyCodes[e]?$e(o,r):i?$e(i,t):r?S(r)!==e:void 0}function we(t,e,n,r,o){if(n&&c(n)){var i;Array.isArray(n)&&(n=M(n));var a=function(a){if("class"===a||"style"===a||g(a))i=t;else{var s=t.attrs&&t.attrs.type;i=r||z.mustUseProp(e,s,a)?t.domProps||(t.domProps={}):t.attrs||(t.attrs={})}var c=x(a),u=S(a);c in i||u in i||(i[a]=n[a],o&&((t.on||(t.on={}))["update:"+a]=function(t){n[a]=t}))};for(var s in n)a(s)}return t}function xe(t,e){var n=this._staticTrees||(this._staticTrees=[]),r=n[t];return r&&!e||Ce(r=n[t]=this.$options.staticRenderFns[t].call(this._renderProxy,null,this),"__static__"+t,!1),r}function ke(t,e,n){return Ce(t,"__once__"+e+(n?"_"+n:""),!0),t}function Ce(t,e,n){if(Array.isArray(t))for(var r=0;r<t.length;r++)t[r]&&"string"!=typeof t[r]&&Se(t[r],e+"_"+r,n);else Se(t,e,n)}function Se(t,e,n){t.isStatic=!0,t.key=e,t.isOnce=n}function Oe(t,e){if(e&&l(e)){var n=t.on=t.on?T({},t.on):{};for(var r in e){var o=n[r],i=e[r];n[r]=o?[].concat(o,i):i}}return t}function Ae(t,e,n,r){e=e||{$stable:!n};for(var o=0;o<t.length;o++){var i=t[o];Array.isArray(i)?Ae(i,e,n):i&&(i.proxy&&(i.fn.proxy=!0),e[i.key]=i.fn)}return r&&(e.$key=r),e}function Te(t,e){for(var n=0;n<e.length;n+=2){var r=e[n];"string"==typeof r&&r&&(t[e[n]]=e[n+1])}return t}function Me(t,e){return"string"==typeof t?e+t:t}function je(t){t._o=ke,t._n=h,t._s=p,t._l=ge,t._t=ye,t._q=L,t._i=P,t._m=xe,t._f=be,t._k=_e,t._b=we,t._v=yt,t._e=gt,t._u=Ae,t._g=Oe,t._d=Te,t._p=Me}function Ee(t,e,n,o,i){var s,c=this,u=i.options;$(o,"_uid")?(s=Object.create(o))._original=o:(s=o,o=o._original);var l=a(u._compiled),f=!l;this.data=t,this.props=e,this.children=n,this.parent=o,this.listeners=t.on||r,this.injections=fe(u.inject,o),this.slots=function(){return c.$slots||he(t.scopedSlots,c.$slots=de(n,o)),c.$slots},Object.defineProperty(this,"scopedSlots",{enumerable:!0,get:function(){return he(t.scopedSlots,this.slots())}}),l&&(this.$options=u,this.$slots=this.slots(),this.$scopedSlots=he(t.scopedSlots,this.$slots)),u._scopeId?this._c=function(t,e,n,r){var i=Re(s,t,e,n,r,f);return i&&!Array.isArray(i)&&(i.fnScopeId=u._scopeId,i.fnContext=o),i}:this._c=function(t,e,n,r){return Re(s,t,e,n,r,f)}}function Fe(t,e,n,r,o){var i=bt(t);return i.fnContext=n,i.fnOptions=r,e.slot&&((i.data||(i.data={})).slot=e.slot),i}function Le(t,e){for(var n in e)t[x(n)]=e[n]}je(Ee.prototype);var Pe={init:function(t,e){if(t.componentInstance&&!t.componentInstance._isDestroyed&&t.data.keepAlive){var n=t;Pe.prepatch(n,n)}else(t.componentInstance=function(t,e){var n={_isComponent:!0,_parentVnode:t,parent:e},r=t.data.inlineTemplate;return i(r)&&(n.render=r.render,n.staticRenderFns=r.staticRenderFns),new t.componentOptions.Ctor(n)}(t,Ze)).$mount(e?t.elm:void 0,e)},prepatch:function(t,e){var n=e.componentOptions;!function(t,e,n,o,i){var a=o.data.scopedSlots,s=t.$scopedSlots,c=!!(a&&!a.$stable||s!==r&&!s.$stable||a&&t.$scopedSlots.$key!==a.$key),u=!!(i||t.$options._renderChildren||c);if(t.$options._parentVnode=o,t.$vnode=o,t._vnode&&(t._vnode.parent=o),t.$options._renderChildren=i,t.$attrs=o.data.attrs||r,t.$listeners=n||r,e&&t.$options.props){kt(!1);for(var l=t._props,f=t.$options._propKeys||[],d=0;d<f.length;d++){var p=f[d],h=t.$options.props;l[p]=Nt(p,h,e,t)}kt(!0),t.$options.propsData=e}n=n||r;var v=t.$options._parentListeners;t.$options._parentListeners=n,Je(t,n,v),u&&(t.$slots=de(i,o.context),t.$forceUpdate())}(e.componentInstance=t.componentInstance,n.propsData,n.listeners,e,n.children)},insert:function(t){var e,n=t.context,r=t.componentInstance;r._isMounted||(r._isMounted=!0,Qe(r,"mounted")),t.data.keepAlive&&(n._isMounted?((e=r)._inactive=!1,en.push(e)):Ye(r,!0))},destroy:function(t){var e=t.componentInstance;e._isDestroyed||(t.data.keepAlive?function t(e,n){if(!(n&&(e._directInactive=!0,Xe(e))||e._inactive)){e._inactive=!0;for(var r=0;r<e.$children.length;r++)t(e.$children[r]);Qe(e,"deactivated")}}(e,!0):e.$destroy())}},De=Object.keys(Pe);function Ie(t,e,n,s,u){if(!o(t)){var l=n.$options._base;if(c(t)&&(t=l.extend(t)),"function"==typeof t){var f;if(o(t.cid)&&void 0===(t=function(t,e){if(a(t.error)&&i(t.errorComp))return t.errorComp;if(i(t.resolved))return t.resolved;var n=Be;if(n&&i(t.owners)&&-1===t.owners.indexOf(n)&&t.owners.push(n),a(t.loading)&&i(t.loadingComp))return t.loadingComp;if(n&&!i(t.owners)){var r=t.owners=[n],s=!0,u=null,l=null;n.$on("hook:destroyed",(function(){return y(r,n)}));var f=function(t){for(var e=0,n=r.length;e<n;e++)r[e].$forceUpdate();t&&(r.length=0,null!==u&&(clearTimeout(u),u=null),null!==l&&(clearTimeout(l),l=null))},p=D((function(n){t.resolved=Ue(n,e),s?r.length=0:f(!0)})),h=D((function(e){i(t.errorComp)&&(t.error=!0,f(!0))})),v=t(p,h);return c(v)&&(d(v)?o(t.resolved)&&v.then(p,h):d(v.component)&&(v.component.then(p,h),i(v.error)&&(t.errorComp=Ue(v.error,e)),i(v.loading)&&(t.loadingComp=Ue(v.loading,e),0===v.delay?t.loading=!0:u=setTimeout((function(){u=null,o(t.resolved)&&o(t.error)&&(t.loading=!0,f(!1))}),v.delay||200)),i(v.timeout)&&(l=setTimeout((function(){l=null,o(t.resolved)&&h(null)}),v.timeout)))),s=!1,t.loading?t.loadingComp:t.resolved}}(f=t,l)))return function(t,e,n,r,o){var i=gt();return i.asyncFactory=t,i.asyncMeta={data:e,context:n,children:r,tag:o},i}(f,e,n,s,u);e=e||{},_n(t),i(e.model)&&function(t,e){var n=t.model&&t.model.prop||"value",r=t.model&&t.model.event||"input";(e.attrs||(e.attrs={}))[n]=e.model.value;var o=e.on||(e.on={}),a=o[r],s=e.model.callback;i(a)?(Array.isArray(a)?-1===a.indexOf(s):a!==s)&&(o[r]=[s].concat(a)):o[r]=s}(t.options,e);var p=function(t,e,n){var r=e.options.props;if(!o(r)){var a={},s=t.attrs,c=t.props;if(i(s)||i(c))for(var u in r){var l=S(u);ce(a,c,u,l,!0)||ce(a,s,u,l,!1)}return a}}(e,t);if(a(t.options.functional))return function(t,e,n,o,a){var s=t.options,c={},u=s.props;if(i(u))for(var l in u)c[l]=Nt(l,u,e||r);else i(n.attrs)&&Le(c,n.attrs),i(n.props)&&Le(c,n.props);var f=new Ee(n,c,a,o,t),d=s.render.call(null,f._c,f);if(d instanceof vt)return Fe(d,n,f.parent,s);if(Array.isArray(d)){for(var p=ue(d)||[],h=new Array(p.length),v=0;v<p.length;v++)h[v]=Fe(p[v],n,f.parent,s);return h}}(t,p,e,n,s);var h=e.on;if(e.on=e.nativeOn,a(t.options.abstract)){var v=e.slot;e={},v&&(e.slot=v)}!function(t){for(var e=t.hook||(t.hook={}),n=0;n<De.length;n++){var r=De[n],o=e[r],i=Pe[r];o===i||o&&o._merged||(e[r]=o?Ne(i,o):i)}}(e);var m=t.options.name||u;return new vt("vue-component-"+t.cid+(m?"-"+m:""),e,void 0,void 0,void 0,n,{Ctor:t,propsData:p,listeners:h,tag:u,children:s},f)}}}function Ne(t,e){var n=function(n,r){t(n,r),e(n,r)};return n._merged=!0,n}function Re(t,e,n,r,u,l){return(Array.isArray(n)||s(n))&&(u=r,r=n,n=void 0),a(l)&&(u=2),function(t,e,n,r,s){return i(n)&&i(n.__ob__)?gt():(i(n)&&i(n.is)&&(e=n.is),e?(Array.isArray(r)&&"function"==typeof r[0]&&((n=n||{}).scopedSlots={default:r[0]},r.length=0),2===s?r=ue(r):1===s&&(r=function(t){for(var e=0;e<t.length;e++)if(Array.isArray(t[e]))return Array.prototype.concat.apply([],t);return t}(r)),"string"==typeof e?(l=t.$vnode&&t.$vnode.ns||z.getTagNamespace(e),u=z.isReservedTag(e)?new vt(z.parsePlatformTagName(e),n,r,void 0,void 0,t):n&&n.pre||!i(f=It(t.$options,"components",e))?new vt(e,n,r,void 0,void 0,t):Ie(f,n,t,r,e)):u=Ie(e,n,t,r),Array.isArray(u)?u:i(u)?(i(l)&&function t(e,n,r){if(e.ns=n,"foreignObject"===e.tag&&(n=void 0,r=!0),i(e.children))for(var s=0,c=e.children.length;s<c;s++){var u=e.children[s];i(u.tag)&&(o(u.ns)||a(r)&&"svg"!==u.tag)&&t(u,n,r)}}(u,l),i(n)&&function(t){c(t.style)&&re(t.style),c(t.class)&&re(t.class)}(n),u):gt()):gt());var u,l,f}(t,e,n,r,u)}var ze,Be=null;function Ue(t,e){return(t.__esModule||ct&&"Module"===t[Symbol.toStringTag])&&(t=t.default),c(t)?e.extend(t):t}function He(t){return t.isComment&&t.asyncFactory}function We(t){if(Array.isArray(t))for(var e=0;e<t.length;e++){var n=t[e];if(i(n)&&(i(n.componentOptions)||He(n)))return n}}function Ge(t,e){ze.$on(t,e)}function Ve(t,e){ze.$off(t,e)}function qe(t,e){var n=ze;return function r(){null!==e.apply(null,arguments)&&n.$off(t,r)}}function Je(t,e,n){ze=t,ae(e,n||{},Ge,Ve,qe,t),ze=void 0}var Ze=null;function Ke(t){var e=Ze;return Ze=t,function(){Ze=e}}function Xe(t){for(;t&&(t=t.$parent);)if(t._inactive)return!0;return!1}function Ye(t,e){if(e){if(t._directInactive=!1,Xe(t))return}else if(t._directInactive)return;if(t._inactive||null===t._inactive){t._inactive=!1;for(var n=0;n<t.$children.length;n++)Ye(t.$children[n]);Qe(t,"activated")}}function Qe(t,e){pt();var n=t.$options[e],r=e+" hook";if(n)for(var o=0,i=n.length;o<i;o++)Ht(n[o],t,null,t,r);t._hasHookEvent&&t.$emit("hook:"+e),ht()}var tn=[],en=[],nn={},rn=!1,on=!1,an=0,sn=0,cn=Date.now;if(V&&!K){var un=window.performance;un&&"function"==typeof un.now&&cn()>document.createEvent("Event").timeStamp&&(cn=function(){return un.now()})}function ln(){var t,e;for(sn=cn(),on=!0,tn.sort((function(t,e){return t.id-e.id})),an=0;an<tn.length;an++)(t=tn[an]).before&&t.before(),e=t.id,nn[e]=null,t.run();var n=en.slice(),r=tn.slice();an=tn.length=en.length=0,nn={},rn=on=!1,function(t){for(var e=0;e<t.length;e++)t[e]._inactive=!0,Ye(t[e],!0)}(n),function(t){for(var e=t.length;e--;){var n=t[e],r=n.vm;r._watcher===n&&r._isMounted&&!r._isDestroyed&&Qe(r,"updated")}}(r),it&&z.devtools&&it.emit("flush")}var fn=0,dn=function(t,e,n,r,o){this.vm=t,o&&(t._watcher=this),t._watchers.push(this),r?(this.deep=!!r.deep,this.user=!!r.user,this.lazy=!!r.lazy,this.sync=!!r.sync,this.before=r.before):this.deep=this.user=this.lazy=this.sync=!1,this.cb=n,this.id=++fn,this.active=!0,this.dirty=this.lazy,this.deps=[],this.newDeps=[],this.depIds=new st,this.newDepIds=new st,this.expression="","function"==typeof e?this.getter=e:(this.getter=function(t){if(!W.test(t)){var e=t.split(".");return function(t){for(var n=0;n<e.length;n++){if(!t)return;t=t[e[n]]}return t}}}(e),this.getter||(this.getter=j)),this.value=this.lazy?void 0:this.get()};dn.prototype.get=function(){var t;pt(this);var e=this.vm;try{t=this.getter.call(e,e)}catch(t){if(!this.user)throw t;Ut(t,e,'getter for watcher "'+this.expression+'"')}finally{this.deep&&re(t),ht(),this.cleanupDeps()}return t},dn.prototype.addDep=function(t){var e=t.id;this.newDepIds.has(e)||(this.newDepIds.add(e),this.newDeps.push(t),this.depIds.has(e)||t.addSub(this))},dn.prototype.cleanupDeps=function(){for(var t=this.deps.length;t--;){var e=this.deps[t];this.newDepIds.has(e.id)||e.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},dn.prototype.update=function(){this.lazy?this.dirty=!0:this.sync?this.run():function(t){var e=t.id;if(null==nn[e]){if(nn[e]=!0,on){for(var n=tn.length-1;n>an&&tn[n].id>t.id;)n--;tn.splice(n+1,0,t)}else tn.push(t);rn||(rn=!0,ee(ln))}}(this)},dn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ut(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},dn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},dn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},dn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var pn={enumerable:!0,configurable:!0,get:j,set:j};function hn(t,e,n){pn.get=function(){return this[e][n]},pn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,pn)}var vn={lazy:!0};function mn(t,e,n){var r=!ot();"function"==typeof n?(pn.get=r?gn(e):yn(n),pn.set=j):(pn.get=n.get?r&&!1!==n.cache?gn(e):yn(n.get):j,pn.set=n.set||j),Object.defineProperty(t,e,pn)}function gn(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),ft.target&&e.depend(),e.value}}function yn(t){return function(){return t.call(this,this)}}function bn(t,e,n,r){return l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var $n=0;function _n(t){var e=t.options;if(t.super){var n=_n(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var o in n)n[o]!==r[o]&&(e||(e={}),e[o]=n[o]);return e}(t);r&&T(t.extendOptions,r),(e=t.options=Dt(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function wn(t){this._init(t)}function xn(t){return t&&(t.Ctor.options.name||t.tag)}function kn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:(n=t,"[object RegExp]"===u.call(n)&&t.test(e));var n}function Cn(t,e){var n=t.cache,r=t.keys,o=t._vnode;for(var i in n){var a=n[i];if(a){var s=xn(a.componentOptions);s&&!e(s)&&Sn(n,i,r,o)}}}function Sn(t,e,n,r){var o=t[e];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=$n++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Dt(_n(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Je(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,o=n&&n.context;t.$slots=de(e._renderChildren,o),t.$scopedSlots=r,t._c=function(e,n,r,o){return Re(t,e,n,r,o,!1)},t.$createElement=function(e,n,r,o){return Re(t,e,n,r,o,!0)};var i=n&&n.data;Ot(t,"$attrs",i&&i.attrs||r,null,!0),Ot(t,"$listeners",e._parentListeners||r,null,!0)}(e),Qe(e,"beforeCreate"),function(t){var e=fe(t.$options.inject,t);e&&(kt(!1),Object.keys(e).forEach((function(n){Ot(t,n,e[n])})),kt(!0))}(e),function(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},o=t.$options._propKeys=[];t.$parent&&kt(!1);var i=function(i){o.push(i);var a=Nt(i,e,n,t);Ot(r,i,a),i in t||hn(t,"_props",i)};for(var a in e)i(a);kt(!0)}(t,e.props),e.methods&&function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?j:O(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;l(e=t._data="function"==typeof e?function(t,e){pt();try{return t.call(e,e)}catch(t){return Ut(t,e,"data()"),{}}finally{ht()}}(e,t):e||{})||(e={});for(var n,r=Object.keys(e),o=t.$options.props,i=(t.$options.methods,r.length);i--;){var a=r[i];o&&$(o,a)||36!==(n=(a+"").charCodeAt(0))&&95!==n&&hn(t,"_data",a)}St(e,!0)}(t):St(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=ot();for(var o in e){var i=e[o],a="function"==typeof i?i:i.get;r||(n[o]=new dn(t,a||j,j,vn)),o in t||mn(t,o,i)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var o=0;o<r.length;o++)bn(t,n,r[o]);else bn(t,n,r)}}(t,e.watch)}(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),Qe(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(wn),function(t){Object.defineProperty(t.prototype,"$data",{get:function(){return this._data}}),Object.defineProperty(t.prototype,"$props",{get:function(){return this._props}}),t.prototype.$set=At,t.prototype.$delete=Tt,t.prototype.$watch=function(t,e,n){if(l(e))return bn(this,t,e,n);(n=n||{}).user=!0;var r=new dn(this,t,e,n);if(n.immediate)try{e.call(this,r.value)}catch(t){Ut(t,this,'callback for immediate watcher "'+r.expression+'"')}return function(){r.teardown()}}}(wn),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var r=this;if(Array.isArray(t))for(var o=0,i=t.length;o<i;o++)r.$on(t[o],n);else(r._events[t]||(r._events[t]=[])).push(n),e.test(t)&&(r._hasHookEvent=!0);return r},t.prototype.$once=function(t,e){var n=this;function r(){n.$off(t,r),e.apply(n,arguments)}return r.fn=e,n.$on(t,r),n},t.prototype.$off=function(t,e){var n=this;if(!arguments.length)return n._events=Object.create(null),n;if(Array.isArray(t)){for(var r=0,o=t.length;r<o;r++)n.$off(t[r],e);return n}var i,a=n._events[t];if(!a)return n;if(!e)return n._events[t]=null,n;for(var s=a.length;s--;)if((i=a[s])===e||i.fn===e){a.splice(s,1);break}return n},t.prototype.$emit=function(t){var e=this._events[t];if(e){e=e.length>1?A(e):e;for(var n=A(arguments,1),r='event handler for "'+t+'"',o=0,i=e.length;o<i;o++)Ht(e[o],this,n,this,r)}return this}}(wn),function(t){t.prototype._update=function(t,e){var n=this,r=n.$el,o=n._vnode,i=Ke(n);n._vnode=t,n.$el=o?n.__patch__(o,t):n.__patch__(n.$el,t,e,!1),i(),r&&(r.__vue__=null),n.$el&&(n.$el.__vue__=n),n.$vnode&&n.$parent&&n.$vnode===n.$parent._vnode&&(n.$parent.$el=n.$el)},t.prototype.$forceUpdate=function(){this._watcher&&this._watcher.update()},t.prototype.$destroy=function(){var t=this;if(!t._isBeingDestroyed){Qe(t,"beforeDestroy"),t._isBeingDestroyed=!0;var e=t.$parent;!e||e._isBeingDestroyed||t.$options.abstract||y(e.$children,t),t._watcher&&t._watcher.teardown();for(var n=t._watchers.length;n--;)t._watchers[n].teardown();t._data.__ob__&&t._data.__ob__.vmCount--,t._isDestroyed=!0,t.__patch__(t._vnode,null),Qe(t,"destroyed"),t.$off(),t.$el&&(t.$el.__vue__=null),t.$vnode&&(t.$vnode.parent=null)}}}(wn),function(t){je(t.prototype),t.prototype.$nextTick=function(t){return ee(t,this)},t.prototype._render=function(){var t,e=this,n=e.$options,r=n.render,o=n._parentVnode;o&&(e.$scopedSlots=he(o.data.scopedSlots,e.$slots,e.$scopedSlots)),e.$vnode=o;try{Be=e,t=r.call(e._renderProxy,e.$createElement)}catch(n){Ut(n,e,"render"),t=e._vnode}finally{Be=null}return Array.isArray(t)&&1===t.length&&(t=t[0]),t instanceof vt||(t=gt()),t.parent=o,t}}(wn);var On=[String,RegExp,Array],An={KeepAlive:{name:"keep-alive",abstract:!0,props:{include:On,exclude:On,max:[String,Number]},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var t in this.cache)Sn(this.cache,t,this.keys)},mounted:function(){var t=this;this.$watch("include",(function(e){Cn(t,(function(t){return kn(e,t)}))})),this.$watch("exclude",(function(e){Cn(t,(function(t){return!kn(e,t)}))}))},render:function(){var t=this.$slots.default,e=We(t),n=e&&e.componentOptions;if(n){var r=xn(n),o=this.include,i=this.exclude;if(o&&(!r||!kn(o,r))||i&&r&&kn(i,r))return e;var a=this.cache,s=this.keys,c=null==e.key?n.Ctor.cid+(n.tag?"::"+n.tag:""):e.key;a[c]?(e.componentInstance=a[c].componentInstance,y(s,c),s.push(c)):(a[c]=e,s.push(c),this.max&&s.length>parseInt(this.max)&&Sn(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return z}};Object.defineProperty(t,"config",e),t.util={warn:ut,extend:T,mergeOptions:Dt,defineReactive:Ot},t.set=At,t.delete=Tt,t.nextTick=ee,t.observable=function(t){return St(t),t},t.options=Object.create(null),N.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,T(t.options.components,An),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=A(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Dt(this.options,t),this}}(t),function(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,o=t._Ctor||(t._Ctor={});if(o[r])return o[r];var i=t.name||n.options.name,a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Dt(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)hn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)mn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,N.forEach((function(t){a[t]=n[t]})),i&&(a.options.components[i]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=T({},a.options),o[r]=a,a}}(t),function(t){N.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(wn),Object.defineProperty(wn.prototype,"$isServer",{get:ot}),Object.defineProperty(wn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(wn,"FunctionalRenderContext",{value:Ee}),wn.version="2.6.12";var Tn=v("style,class"),Mn=v("input,textarea,option,select,progress"),jn=function(t,e,n){return"value"===n&&Mn(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},En=v("contenteditable,draggable,spellcheck"),Fn=v("events,caret,typing,plaintext-only"),Ln=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Pn="http://www.w3.org/1999/xlink",Dn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},In=function(t){return Dn(t)?t.slice(6,t.length):""},Nn=function(t){return null==t||!1===t};function Rn(t,e){return{staticClass:zn(t.staticClass,e.staticClass),class:i(t.class)?[t.class,e.class]:e.class}}function zn(t,e){return t?e?t+" "+e:t:e||""}function Bn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,o=t.length;r<o;r++)i(e=Bn(t[r]))&&""!==e&&(n&&(n+=" "),n+=e);return n}(t):c(t)?function(t){var e="";for(var n in t)t[n]&&(e&&(e+=" "),e+=n);return e}(t):"string"==typeof t?t:""}var Un={svg:"http://www.w3.org/2000/svg",math:"http://www.w3.org/1998/Math/MathML"},Hn=v("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"),Wn=v("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view",!0),Gn=function(t){return Hn(t)||Wn(t)};function Vn(t){return Wn(t)?"svg":"math"===t?"math":void 0}var qn=Object.create(null),Jn=v("text,number,password,search,email,tel,url");function Zn(t){return"string"==typeof t?document.querySelector(t)||document.createElement("div"):t}var Kn=Object.freeze({createElement:function(t,e){var n=document.createElement(t);return"select"!==t||e.data&&e.data.attrs&&void 0!==e.data.attrs.multiple&&n.setAttribute("multiple","multiple"),n},createElementNS:function(t,e){return document.createElementNS(Un[t],e)},createTextNode:function(t){return document.createTextNode(t)},createComment:function(t){return document.createComment(t)},insertBefore:function(t,e,n){t.insertBefore(e,n)},removeChild:function(t,e){t.removeChild(e)},appendChild:function(t,e){t.appendChild(e)},parentNode:function(t){return t.parentNode},nextSibling:function(t){return t.nextSibling},tagName:function(t){return t.tagName},setTextContent:function(t,e){t.textContent=e},setStyleScope:function(t,e){t.setAttribute(e,"")}}),Xn={create:function(t,e){Yn(e)},update:function(t,e){t.data.ref!==e.data.ref&&(Yn(t,!0),Yn(e))},destroy:function(t){Yn(t,!0)}};function Yn(t,e){var n=t.data.ref;if(i(n)){var r=t.context,o=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?y(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])?a[n].indexOf(o)<0&&a[n].push(o):a[n]=[o]:a[n]=o}}var Qn=new vt("",{},[]),tr=["create","activate","update","remove","destroy"];function er(t,e){return t.key===e.key&&(t.tag===e.tag&&t.isComment===e.isComment&&i(t.data)===i(e.data)&&function(t,e){if("input"!==t.tag)return!0;var n,r=i(n=t.data)&&i(n=n.attrs)&&n.type,o=i(n=e.data)&&i(n=n.attrs)&&n.type;return r===o||Jn(r)&&Jn(o)}(t,e)||a(t.isAsyncPlaceholder)&&t.asyncFactory===e.asyncFactory&&o(e.asyncFactory.error))}function nr(t,e,n){var r,o,a={};for(r=e;r<=n;++r)i(o=t[r].key)&&(a[o]=r);return a}var rr={create:or,update:or,destroy:function(t){or(t,Qn)}};function or(t,e){(t.data.directives||e.data.directives)&&function(t,e){var n,r,o,i=t===Qn,a=e===Qn,s=ar(t.data.directives,t.context),c=ar(e.data.directives,e.context),u=[],l=[];for(n in c)r=s[n],o=c[n],r?(o.oldValue=r.value,o.oldArg=r.arg,cr(o,"update",e,t),o.def&&o.def.componentUpdated&&l.push(o)):(cr(o,"bind",e,t),o.def&&o.def.inserted&&u.push(o));if(u.length){var f=function(){for(var n=0;n<u.length;n++)cr(u[n],"inserted",e,t)};i?se(e,"insert",f):f()}if(l.length&&se(e,"postpatch",(function(){for(var n=0;n<l.length;n++)cr(l[n],"componentUpdated",e,t)})),!i)for(n in s)c[n]||cr(s[n],"unbind",t,t,a)}(t,e)}var ir=Object.create(null);function ar(t,e){var n,r,o=Object.create(null);if(!t)return o;for(n=0;n<t.length;n++)(r=t[n]).modifiers||(r.modifiers=ir),o[sr(r)]=r,r.def=It(e.$options,"directives",r.name);return o}function sr(t){return t.rawName||t.name+"."+Object.keys(t.modifiers||{}).join(".")}function cr(t,e,n,r,o){var i=t.def&&t.def[e];if(i)try{i(n.elm,t,n,r,o)}catch(r){Ut(r,n.context,"directive "+t.name+" "+e+" hook")}}var ur=[Xn,rr];function lr(t,e){var n=e.componentOptions;if(!(i(n)&&!1===n.Ctor.options.inheritAttrs||o(t.data.attrs)&&o(e.data.attrs))){var r,a,s=e.elm,c=t.data.attrs||{},u=e.data.attrs||{};for(r in i(u.__ob__)&&(u=e.data.attrs=T({},u)),u)a=u[r],c[r]!==a&&fr(s,r,a);for(r in(K||Y)&&u.value!==c.value&&fr(s,"value",u.value),c)o(u[r])&&(Dn(r)?s.removeAttributeNS(Pn,In(r)):En(r)||s.removeAttribute(r))}}function fr(t,e,n){t.tagName.indexOf("-")>-1?dr(t,e,n):Ln(e)?Nn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):En(e)?t.setAttribute(e,function(t,e){return Nn(e)||"false"===e?"false":"contenteditable"===t&&Fn(e)?e:"true"}(e,n)):Dn(e)?Nn(n)?t.removeAttributeNS(Pn,In(e)):t.setAttributeNS(Pn,e,n):dr(t,e,n)}function dr(t,e,n){if(Nn(n))t.removeAttribute(e);else{if(K&&!X&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var pr={create:lr,update:lr};function hr(t,e){var n=e.elm,r=e.data,a=t.data;if(!(o(r.staticClass)&&o(r.class)&&(o(a)||o(a.staticClass)&&o(a.class)))){var s=function(t){for(var e=t.data,n=t,r=t;i(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Rn(r.data,e));for(;i(n=n.parent);)n&&n.data&&(e=Rn(e,n.data));return function(t,e){return i(t)||i(e)?zn(t,Bn(e)):""}(e.staticClass,e.class)}(e),c=n._transitionClasses;i(c)&&(s=zn(s,Bn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var vr,mr,gr,yr,br,$r,_r={create:hr,update:hr},wr=/[\w).+\-_$\]]/;function xr(t){var e,n,r,o,i,a=!1,s=!1,c=!1,u=!1,l=0,f=0,d=0,p=0;for(r=0;r<t.length;r++)if(n=e,e=t.charCodeAt(r),a)39===e&&92!==n&&(a=!1);else if(s)34===e&&92!==n&&(s=!1);else if(c)96===e&&92!==n&&(c=!1);else if(u)47===e&&92!==n&&(u=!1);else if(124!==e||124===t.charCodeAt(r+1)||124===t.charCodeAt(r-1)||l||f||d){switch(e){case 34:s=!0;break;case 39:a=!0;break;case 96:c=!0;break;case 40:d++;break;case 41:d--;break;case 91:f++;break;case 93:f--;break;case 123:l++;break;case 125:l--}if(47===e){for(var h=r-1,v=void 0;h>=0&&" "===(v=t.charAt(h));h--);v&&wr.test(v)||(u=!0)}}else void 0===o?(p=r+1,o=t.slice(0,r).trim()):m();function m(){(i||(i=[])).push(t.slice(p,r).trim()),p=r+1}if(void 0===o?o=t.slice(0,r).trim():0!==p&&m(),i)for(r=0;r<i.length;r++)o=kr(o,i[r]);return o}function kr(t,e){var n=e.indexOf("(");if(n<0)return'_f("'+e+'")('+t+")";var r=e.slice(0,n),o=e.slice(n+1);return'_f("'+r+'")('+t+(")"!==o?","+o:o)}function Cr(t,e){console.error("[Vue compiler]: "+t)}function Sr(t,e){return t?t.map((function(t){return t[e]})).filter((function(t){return t})):[]}function Or(t,e,n,r,o){(t.props||(t.props=[])).push(Dr({name:e,value:n,dynamic:o},r)),t.plain=!1}function Ar(t,e,n,r,o){(o?t.dynamicAttrs||(t.dynamicAttrs=[]):t.attrs||(t.attrs=[])).push(Dr({name:e,value:n,dynamic:o},r)),t.plain=!1}function Tr(t,e,n,r){t.attrsMap[e]=n,t.attrsList.push(Dr({name:e,value:n},r))}function Mr(t,e,n,r,o,i,a,s){(t.directives||(t.directives=[])).push(Dr({name:e,rawName:n,value:r,arg:o,isDynamicArg:i,modifiers:a},s)),t.plain=!1}function jr(t,e,n){return n?"_p("+e+',"'+t+'")':t+e}function Er(t,e,n,o,i,a,s,c){var u;(o=o||r).right?c?e="("+e+")==='click'?'contextmenu':("+e+")":"click"===e&&(e="contextmenu",delete o.right):o.middle&&(c?e="("+e+")==='click'?'mouseup':("+e+")":"click"===e&&(e="mouseup")),o.capture&&(delete o.capture,e=jr("!",e,c)),o.once&&(delete o.once,e=jr("~",e,c)),o.passive&&(delete o.passive,e=jr("&",e,c)),o.native?(delete o.native,u=t.nativeEvents||(t.nativeEvents={})):u=t.events||(t.events={});var l=Dr({value:n.trim(),dynamic:c},s);o!==r&&(l.modifiers=o);var f=u[e];Array.isArray(f)?i?f.unshift(l):f.push(l):u[e]=f?i?[l,f]:[f,l]:l,t.plain=!1}function Fr(t,e,n){var r=Lr(t,":"+e)||Lr(t,"v-bind:"+e);if(null!=r)return xr(r);if(!1!==n){var o=Lr(t,e);if(null!=o)return JSON.stringify(o)}}function Lr(t,e,n){var r;if(null!=(r=t.attrsMap[e]))for(var o=t.attrsList,i=0,a=o.length;i<a;i++)if(o[i].name===e){o.splice(i,1);break}return n&&delete t.attrsMap[e],r}function Pr(t,e){for(var n=t.attrsList,r=0,o=n.length;r<o;r++){var i=n[r];if(e.test(i.name))return n.splice(r,1),i}}function Dr(t,e){return e&&(null!=e.start&&(t.start=e.start),null!=e.end&&(t.end=e.end)),t}function Ir(t,e,n){var r=n||{},o=r.number,i="$$v";r.trim&&(i="(typeof $$v === 'string'? $$v.trim(): $$v)"),o&&(i="_n("+i+")");var a=Nr(e,i);t.model={value:"("+e+")",expression:JSON.stringify(e),callback:"function ($$v) {"+a+"}"}}function Nr(t,e){var n=function(t){if(t=t.trim(),vr=t.length,t.indexOf("[")<0||t.lastIndexOf("]")<vr-1)return(yr=t.lastIndexOf("."))>-1?{exp:t.slice(0,yr),key:'"'+t.slice(yr+1)+'"'}:{exp:t,key:null};for(mr=t,yr=br=$r=0;!zr();)Br(gr=Rr())?Hr(gr):91===gr&&Ur(gr);return{exp:t.slice(0,br),key:t.slice(br+1,$r)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Rr(){return mr.charCodeAt(++yr)}function zr(){return yr>=vr}function Br(t){return 34===t||39===t}function Ur(t){var e=1;for(br=yr;!zr();)if(Br(t=Rr()))Hr(t);else if(91===t&&e++,93===t&&e--,0===e){$r=yr;break}}function Hr(t){for(var e=t;!zr()&&(t=Rr())!==e;);}var Wr;function Gr(t,e,n){var r=Wr;return function o(){null!==e.apply(null,arguments)&&Jr(t,o,n,r)}}var Vr=qt&&!(tt&&Number(tt[1])<=53);function qr(t,e,n,r){if(Vr){var o=sn,i=e;e=i._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=o||t.timeStamp<=0||t.target.ownerDocument!==document)return i.apply(this,arguments)}}Wr.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function Jr(t,e,n,r){(r||Wr).removeEventListener(t,e._wrapper||e,n)}function Zr(t,e){if(!o(t.data.on)||!o(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Wr=e.elm,function(t){if(i(t.__r)){var e=K?"change":"input";t[e]=[].concat(t.__r,t[e]||[]),delete t.__r}i(t.__c)&&(t.change=[].concat(t.__c,t.change||[]),delete t.__c)}(n),ae(n,r,qr,Jr,Gr,e.context),Wr=void 0}}var Kr,Xr={create:Zr,update:Zr};function Yr(t,e){if(!o(t.data.domProps)||!o(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in i(c.__ob__)&&(c=e.data.domProps=T({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=o(r)?"":String(r);Qr(a,u)&&(a.value=u)}else if("innerHTML"===n&&Wn(a.tagName)&&o(a.innerHTML)){(Kr=Kr||document.createElement("div")).innerHTML="<svg>"+r+"</svg>";for(var l=Kr.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function Qr(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(i(r)){if(r.number)return h(n)!==h(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var to={create:Yr,update:Yr},eo=_((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function no(t){var e=ro(t.style);return t.staticStyle?T(t.staticStyle,e):e}function ro(t){return Array.isArray(t)?M(t):"string"==typeof t?eo(t):t}var oo,io=/^--/,ao=/\s*!important$/,so=function(t,e,n){if(io.test(e))t.style.setProperty(e,n);else if(ao.test(n))t.style.setProperty(S(e),n.replace(ao,""),"important");else{var r=uo(e);if(Array.isArray(n))for(var o=0,i=n.length;o<i;o++)t.style[r]=n[o];else t.style[r]=n}},co=["Webkit","Moz","ms"],uo=_((function(t){if(oo=oo||document.createElement("div").style,"filter"!==(t=x(t))&&t in oo)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n<co.length;n++){var r=co[n]+e;if(r in oo)return r}}));function lo(t,e){var n=e.data,r=t.data;if(!(o(n.staticStyle)&&o(n.style)&&o(r.staticStyle)&&o(r.style))){var a,s,c=e.elm,u=r.staticStyle,l=r.normalizedStyle||r.style||{},f=u||l,d=ro(e.data.style)||{};e.data.normalizedStyle=i(d.__ob__)?T({},d):d;var p=function(t,e){for(var n,r={},o=t;o.componentInstance;)(o=o.componentInstance._vnode)&&o.data&&(n=no(o.data))&&T(r,n);(n=no(t.data))&&T(r,n);for(var i=t;i=i.parent;)i.data&&(n=no(i.data))&&T(r,n);return r}(e);for(s in f)o(p[s])&&so(c,s,"");for(s in p)(a=p[s])!==f[s]&&so(c,s,null==a?"":a)}}var fo={create:lo,update:lo},po=/\s+/;function ho(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(po).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function vo(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(po).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function mo(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&T(e,go(t.name||"v")),T(e,t),e}return"string"==typeof t?go(t):void 0}}var go=_((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),yo=V&&!X,bo="transition",$o="animation",_o="transition",wo="transitionend",xo="animation",ko="animationend";yo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(_o="WebkitTransition",wo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(xo="WebkitAnimation",ko="webkitAnimationEnd"));var Co=V?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function So(t){Co((function(){Co(t)}))}function Oo(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),ho(t,e))}function Ao(t,e){t._transitionClasses&&y(t._transitionClasses,e),vo(t,e)}function To(t,e,n){var r=jo(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===bo?wo:ko,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c<a&&u()}),i+1),t.addEventListener(s,l)}var Mo=/\b(transform|all)(,|$)/;function jo(t,e){var n,r=window.getComputedStyle(t),o=(r[_o+"Delay"]||"").split(", "),i=(r[_o+"Duration"]||"").split(", "),a=Eo(o,i),s=(r[xo+"Delay"]||"").split(", "),c=(r[xo+"Duration"]||"").split(", "),u=Eo(s,c),l=0,f=0;return e===bo?a>0&&(n=bo,l=a,f=i.length):e===$o?u>0&&(n=$o,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?bo:$o:null)?n===bo?i.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===bo&&Mo.test(r[_o+"Property"])}}function Eo(t,e){for(;t.length<e.length;)t=t.concat(t);return Math.max.apply(null,e.map((function(e,n){return Fo(e)+Fo(t[n])})))}function Fo(t){return 1e3*Number(t.slice(0,-1).replace(",","."))}function Lo(t,e){var n=t.elm;i(n._leaveCb)&&(n._leaveCb.cancelled=!0,n._leaveCb());var r=mo(t.data.transition);if(!o(r)&&!i(n._enterCb)&&1===n.nodeType){for(var a=r.css,s=r.type,u=r.enterClass,l=r.enterToClass,f=r.enterActiveClass,d=r.appearClass,p=r.appearToClass,v=r.appearActiveClass,m=r.beforeEnter,g=r.enter,y=r.afterEnter,b=r.enterCancelled,$=r.beforeAppear,_=r.appear,w=r.afterAppear,x=r.appearCancelled,k=r.duration,C=Ze,S=Ze.$vnode;S&&S.parent;)C=S.context,S=S.parent;var O=!C._isMounted||!t.isRootInsert;if(!O||_||""===_){var A=O&&d?d:u,T=O&&v?v:f,M=O&&p?p:l,j=O&&$||m,E=O&&"function"==typeof _?_:g,F=O&&w||y,L=O&&x||b,P=h(c(k)?k.enter:k),I=!1!==a&&!X,N=Io(E),R=n._enterCb=D((function(){I&&(Ao(n,M),Ao(n,T)),R.cancelled?(I&&Ao(n,A),L&&L(n)):F&&F(n),n._enterCb=null}));t.data.show||se(t,"insert",(function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];r&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),E&&E(n,R)})),j&&j(n),I&&(Oo(n,A),Oo(n,T),So((function(){Ao(n,A),R.cancelled||(Oo(n,M),N||(Do(P)?setTimeout(R,P):To(n,s,R)))}))),t.data.show&&(e&&e(),E&&E(n,R)),I||N||R()}}}function Po(t,e){var n=t.elm;i(n._enterCb)&&(n._enterCb.cancelled=!0,n._enterCb());var r=mo(t.data.transition);if(o(r)||1!==n.nodeType)return e();if(!i(n._leaveCb)){var a=r.css,s=r.type,u=r.leaveClass,l=r.leaveToClass,f=r.leaveActiveClass,d=r.beforeLeave,p=r.leave,v=r.afterLeave,m=r.leaveCancelled,g=r.delayLeave,y=r.duration,b=!1!==a&&!X,$=Io(p),_=h(c(y)?y.leave:y),w=n._leaveCb=D((function(){n.parentNode&&n.parentNode._pending&&(n.parentNode._pending[t.key]=null),b&&(Ao(n,l),Ao(n,f)),w.cancelled?(b&&Ao(n,u),m&&m(n)):(e(),v&&v(n)),n._leaveCb=null}));g?g(x):x()}function x(){w.cancelled||(!t.data.show&&n.parentNode&&((n.parentNode._pending||(n.parentNode._pending={}))[t.key]=t),d&&d(n),b&&(Oo(n,u),Oo(n,f),So((function(){Ao(n,u),w.cancelled||(Oo(n,l),$||(Do(_)?setTimeout(w,_):To(n,s,w)))}))),p&&p(n,w),b||$||w())}}function Do(t){return"number"==typeof t&&!isNaN(t)}function Io(t){if(o(t))return!1;var e=t.fns;return i(e)?Io(Array.isArray(e)?e[0]:e):(t._length||t.length)>1}function No(t,e){!0!==e.data.show&&Lo(e)}var Ro=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;e<tr.length;++e)for(r[tr[e]]=[],n=0;n<c.length;++n)i(c[n][tr[e]])&&r[tr[e]].push(c[n][tr[e]]);function l(t){var e=u.parentNode(t);i(e)&&u.removeChild(e,t)}function f(t,e,n,o,s,c,l){if(i(t.elm)&&i(c)&&(t=c[l]=bt(t)),t.isRootInsert=!s,!function(t,e,n,o){var s=t.data;if(i(s)){var c=i(t.componentInstance)&&s.keepAlive;if(i(s=s.hook)&&i(s=s.init)&&s(t,!1),i(t.componentInstance))return d(t,e),p(n,t.elm,o),a(c)&&function(t,e,n,o){for(var a,s=t;s.componentInstance;)if(i(a=(s=s.componentInstance._vnode).data)&&i(a=a.transition)){for(a=0;a<r.activate.length;++a)r.activate[a](Qn,s);e.push(s);break}p(n,t.elm,o)}(t,e,n,o),!0}}(t,e,n,o)){var f=t.data,v=t.children,m=t.tag;i(m)?(t.elm=t.ns?u.createElementNS(t.ns,m):u.createElement(m,t),y(t),h(t,v,e),i(f)&&g(t,e),p(n,t.elm,o)):a(t.isComment)?(t.elm=u.createComment(t.text),p(n,t.elm,o)):(t.elm=u.createTextNode(t.text),p(n,t.elm,o))}}function d(t,e){i(t.data.pendingInsert)&&(e.push.apply(e,t.data.pendingInsert),t.data.pendingInsert=null),t.elm=t.componentInstance.$el,m(t)?(g(t,e),y(t)):(Yn(t),e.push(t))}function p(t,e,n){i(t)&&(i(n)?u.parentNode(n)===t&&u.insertBefore(t,e,n):u.appendChild(t,e))}function h(t,e,n){if(Array.isArray(e))for(var r=0;r<e.length;++r)f(e[r],n,t.elm,null,!0,e,r);else s(t.text)&&u.appendChild(t.elm,u.createTextNode(String(t.text)))}function m(t){for(;t.componentInstance;)t=t.componentInstance._vnode;return i(t.tag)}function g(t,n){for(var o=0;o<r.create.length;++o)r.create[o](Qn,t);i(e=t.data.hook)&&(i(e.create)&&e.create(Qn,t),i(e.insert)&&n.push(t))}function y(t){var e;if(i(e=t.fnScopeId))u.setStyleScope(t.elm,e);else for(var n=t;n;)i(e=n.context)&&i(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e),n=n.parent;i(e=Ze)&&e!==t.context&&e!==t.fnContext&&i(e=e.$options._scopeId)&&u.setStyleScope(t.elm,e)}function b(t,e,n,r,o,i){for(;r<=o;++r)f(n[r],i,t,e,!1,n,r)}function $(t){var e,n,o=t.data;if(i(o))for(i(e=o.hook)&&i(e=e.destroy)&&e(t),e=0;e<r.destroy.length;++e)r.destroy[e](t);if(i(e=t.children))for(n=0;n<t.children.length;++n)$(t.children[n])}function _(t,e,n){for(;e<=n;++e){var r=t[e];i(r)&&(i(r.tag)?(w(r),$(r)):l(r.elm))}}function w(t,e){if(i(e)||i(t.data)){var n,o=r.remove.length+1;for(i(e)?e.listeners+=o:e=function(t,e){function n(){0==--n.listeners&&l(t)}return n.listeners=e,n}(t.elm,o),i(n=t.componentInstance)&&i(n=n._vnode)&&i(n.data)&&w(n,e),n=0;n<r.remove.length;++n)r.remove[n](t,e);i(n=t.data.hook)&&i(n=n.remove)?n(t,e):e()}else l(t.elm)}function x(t,e,n,r){for(var o=n;o<r;o++){var a=e[o];if(i(a)&&er(t,a))return o}}function k(t,e,n,s,c,l){if(t!==e){i(e.elm)&&i(s)&&(e=s[c]=bt(e));var d=e.elm=t.elm;if(a(t.isAsyncPlaceholder))i(e.asyncFactory.resolved)?O(t.elm,e,n):e.isAsyncPlaceholder=!0;else if(a(e.isStatic)&&a(t.isStatic)&&e.key===t.key&&(a(e.isCloned)||a(e.isOnce)))e.componentInstance=t.componentInstance;else{var p,h=e.data;i(h)&&i(p=h.hook)&&i(p=p.prepatch)&&p(t,e);var v=t.children,g=e.children;if(i(h)&&m(e)){for(p=0;p<r.update.length;++p)r.update[p](t,e);i(p=h.hook)&&i(p=p.update)&&p(t,e)}o(e.text)?i(v)&&i(g)?v!==g&&function(t,e,n,r,a){for(var s,c,l,d=0,p=0,h=e.length-1,v=e[0],m=e[h],g=n.length-1,y=n[0],$=n[g],w=!a;d<=h&&p<=g;)o(v)?v=e[++d]:o(m)?m=e[--h]:er(v,y)?(k(v,y,r,n,p),v=e[++d],y=n[++p]):er(m,$)?(k(m,$,r,n,g),m=e[--h],$=n[--g]):er(v,$)?(k(v,$,r,n,g),w&&u.insertBefore(t,v.elm,u.nextSibling(m.elm)),v=e[++d],$=n[--g]):er(m,y)?(k(m,y,r,n,p),w&&u.insertBefore(t,m.elm,v.elm),m=e[--h],y=n[++p]):(o(s)&&(s=nr(e,d,h)),o(c=i(y.key)?s[y.key]:x(y,e,d,h))?f(y,r,t,v.elm,!1,n,p):er(l=e[c],y)?(k(l,y,r,n,p),e[c]=void 0,w&&u.insertBefore(t,l.elm,v.elm)):f(y,r,t,v.elm,!1,n,p),y=n[++p]);d>h?b(t,o(n[g+1])?null:n[g+1].elm,n,p,g,r):p>g&&_(e,d,h)}(d,v,g,n,l):i(g)?(i(t.text)&&u.setTextContent(d,""),b(d,null,g,0,g.length-1,n)):i(v)?_(v,0,v.length-1):i(t.text)&&u.setTextContent(d,""):t.text!==e.text&&u.setTextContent(d,e.text),i(h)&&i(p=h.hook)&&i(p=p.postpatch)&&p(t,e)}}}function C(t,e,n){if(a(n)&&i(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r<e.length;++r)e[r].data.hook.insert(e[r])}var S=v("attrs,class,staticClass,staticStyle,key");function O(t,e,n,r){var o,s=e.tag,c=e.data,u=e.children;if(r=r||c&&c.pre,e.elm=t,a(e.isComment)&&i(e.asyncFactory))return e.isAsyncPlaceholder=!0,!0;if(i(c)&&(i(o=c.hook)&&i(o=o.init)&&o(e,!0),i(o=e.componentInstance)))return d(e,n),!0;if(i(s)){if(i(u))if(t.hasChildNodes())if(i(o=c)&&i(o=o.domProps)&&i(o=o.innerHTML)){if(o!==t.innerHTML)return!1}else{for(var l=!0,f=t.firstChild,p=0;p<u.length;p++){if(!f||!O(f,u[p],n,r)){l=!1;break}f=f.nextSibling}if(!l||f)return!1}else h(e,u,n);if(i(c)){var v=!1;for(var m in c)if(!S(m)){v=!0,g(e,n);break}!v&&c.class&&re(c.class)}}else t.data!==e.text&&(t.data=e.text);return!0}return function(t,e,n,s){if(!o(e)){var c,l=!1,d=[];if(o(t))l=!0,f(e,d);else{var p=i(t.nodeType);if(!p&&er(t,e))k(t,e,d,null,null,s);else{if(p){if(1===t.nodeType&&t.hasAttribute(I)&&(t.removeAttribute(I),n=!0),a(n)&&O(t,e,d))return C(e,d,!0),t;c=t,t=new vt(u.tagName(c).toLowerCase(),{},[],void 0,c)}var h=t.elm,v=u.parentNode(h);if(f(e,d,h._leaveCb?null:v,u.nextSibling(h)),i(e.parent))for(var g=e.parent,y=m(e);g;){for(var b=0;b<r.destroy.length;++b)r.destroy[b](g);if(g.elm=e.elm,y){for(var w=0;w<r.create.length;++w)r.create[w](Qn,g);var x=g.data.hook.insert;if(x.merged)for(var S=1;S<x.fns.length;S++)x.fns[S]()}else Yn(g);g=g.parent}i(v)?_([t],0,0):i(t.tag)&&$(t)}}return C(e,d,l),e.elm}i(t)&&$(t)}}({nodeOps:Kn,modules:[pr,_r,Xr,to,fo,V?{create:No,activate:No,remove:function(t,e){!0!==t.data.show?Po(t,e):e()}}:{}].concat(ur)});X&&document.addEventListener("selectionchange",(function(){var t=document.activeElement;t&&t.vmodel&&qo(t,"input")}));var zo={inserted:function(t,e,n,r){"select"===n.tag?(r.elm&&!r.elm._vOptions?se(n,"postpatch",(function(){zo.componentUpdated(t,e,n)})):Bo(t,e,n.context),t._vOptions=[].map.call(t.options,Wo)):("textarea"===n.tag||Jn(t.type))&&(t._vModifiers=e.modifiers,e.modifiers.lazy||(t.addEventListener("compositionstart",Go),t.addEventListener("compositionend",Vo),t.addEventListener("change",Vo),X&&(t.vmodel=!0)))},componentUpdated:function(t,e,n){if("select"===n.tag){Bo(t,e,n.context);var r=t._vOptions,o=t._vOptions=[].map.call(t.options,Wo);o.some((function(t,e){return!L(t,r[e])}))&&(t.multiple?e.value.some((function(t){return Ho(t,o)})):e.value!==e.oldValue&&Ho(e.value,o))&&qo(t,"change")}}};function Bo(t,e,n){Uo(t,e),(K||Y)&&setTimeout((function(){Uo(t,e)}),0)}function Uo(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s<c;s++)if(a=t.options[s],o)i=P(r,Wo(a))>-1,a.selected!==i&&(a.selected=i);else if(L(Wo(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function Ho(t,e){return e.every((function(e){return!L(e,t)}))}function Wo(t){return"_value"in t?t._value:t.value}function Go(t){t.target.composing=!0}function Vo(t){t.target.composing&&(t.target.composing=!1,qo(t.target,"input"))}function qo(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Jo(t){return!t.componentInstance||t.data&&t.data.transition?t:Jo(t.componentInstance._vnode)}var Zo={model:zo,show:{bind:function(t,e,n){var r=e.value,o=(n=Jo(n)).data&&n.data.transition,i=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&o?(n.data.show=!0,Lo(n,(function(){t.style.display=i}))):t.style.display=r?i:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Jo(n)).data&&n.data.transition?(n.data.show=!0,r?Lo(n,(function(){t.style.display=t.__vOriginalDisplay})):Po(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,o){o||(t.style.display=t.__vOriginalDisplay)}}},Ko={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Xo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?Xo(We(e.children)):t}function Yo(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var o=n._parentListeners;for(var i in o)e[x(i)]=o[i];return e}function Qo(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var ti=function(t){return t.tag||He(t)},ei=function(t){return"show"===t.name},ni={name:"transition",props:Ko,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(ti)).length){var r=this.mode,o=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return o;var i=Xo(o);if(!i)return o;if(this._leaving)return Qo(t,o);var a="__transition-"+this._uid+"-";i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var c=(i.data||(i.data={})).transition=Yo(this),u=this._vnode,l=Xo(u);if(i.data.directives&&i.data.directives.some(ei)&&(i.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(i,l)&&!He(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=T({},c);if("out-in"===r)return this._leaving=!0,se(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),Qo(t,o);if("in-out"===r){if(He(i))return u;var d,p=function(){d()};se(c,"afterEnter",p),se(c,"enterCancelled",p),se(f,"delayLeave",(function(t){d=t}))}}return o}}},ri=T({tag:String,moveClass:String},Ko);function oi(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function ii(t){t.data.newPos=t.elm.getBoundingClientRect()}function ai(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,o=e.top-n.top;if(r||o){t.data.moved=!0;var i=t.elm.style;i.transform=i.WebkitTransform="translate("+r+"px,"+o+"px)",i.transitionDuration="0s"}}delete ri.mode;var si={Transition:ni,TransitionGroup:{props:ri,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var o=Ke(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,o(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Yo(this),s=0;s<o.length;s++){var c=o[s];c.tag&&null!=c.key&&0!==String(c.key).indexOf("__vlist")&&(i.push(c),n[c.key]=c,(c.data||(c.data={})).transition=a)}if(r){for(var u=[],l=[],f=0;f<r.length;f++){var d=r[f];d.data.transition=a,d.data.pos=d.elm.getBoundingClientRect(),n[d.key]?u.push(d):l.push(d)}this.kept=t(e,null,u),this.removed=l}return t(e,null,i)},updated:function(){var t=this.prevChildren,e=this.moveClass||(this.name||"v")+"-move";t.length&&this.hasMove(t[0].elm,e)&&(t.forEach(oi),t.forEach(ii),t.forEach(ai),this._reflow=document.body.offsetHeight,t.forEach((function(t){if(t.data.moved){var n=t.elm,r=n.style;Oo(n,e),r.transform=r.WebkitTransform=r.transitionDuration="",n.addEventListener(wo,n._moveCb=function t(r){r&&r.target!==n||r&&!/transform$/.test(r.propertyName)||(n.removeEventListener(wo,t),n._moveCb=null,Ao(n,e))})}})))},methods:{hasMove:function(t,e){if(!yo)return!1;if(this._hasMove)return this._hasMove;var n=t.cloneNode();t._transitionClasses&&t._transitionClasses.forEach((function(t){vo(n,t)})),ho(n,e),n.style.display="none",this.$el.appendChild(n);var r=jo(n);return this.$el.removeChild(n),this._hasMove=r.hasTransform}}}};wn.config.mustUseProp=jn,wn.config.isReservedTag=Gn,wn.config.isReservedAttr=Tn,wn.config.getTagNamespace=Vn,wn.config.isUnknownElement=function(t){if(!V)return!0;if(Gn(t))return!1;if(t=t.toLowerCase(),null!=qn[t])return qn[t];var e=document.createElement(t);return t.indexOf("-")>-1?qn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:qn[t]=/HTMLUnknownElement/.test(e.toString())},T(wn.options.directives,Zo),T(wn.options.components,si),wn.prototype.__patch__=V?Ro:j,wn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),Qe(t,"beforeMount"),r=function(){t._update(t._render(),n)},new dn(t,r,j,{before:function(){t._isMounted&&!t._isDestroyed&&Qe(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,Qe(t,"mounted")),t}(this,t=t&&V?Zn(t):void 0,e)},V&&setTimeout((function(){z.devtools&&it&&it.emit("init",wn)}),0);var ci,ui=/\{\{((?:.|\r?\n)+?)\}\}/g,li=/[-.*+?^${}()|[\]\/\\]/g,fi=_((function(t){var e=t[0].replace(li,"\\$&"),n=t[1].replace(li,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")})),di={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var n=Lr(t,"class");n&&(t.staticClass=JSON.stringify(n));var r=Fr(t,"class",!1);r&&(t.classBinding=r)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},pi={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var n=Lr(t,"style");n&&(t.staticStyle=JSON.stringify(eo(n)));var r=Fr(t,"style",!1);r&&(t.styleBinding=r)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},hi=v("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),vi=v("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),mi=v("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),gi=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,yi=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,bi="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+B.source+"]*",$i="((?:"+bi+"\\:)?"+bi+")",_i=new RegExp("^<"+$i),wi=/^\s*(\/?)>/,xi=new RegExp("^<\\/"+$i+"[^>]*>"),ki=/^<!DOCTYPE [^>]+>/i,Ci=/^<!\--/,Si=/^<!\[/,Oi=v("script,style,textarea",!0),Ai={},Ti={"&lt;":"<","&gt;":">","&quot;":'"',"&amp;":"&","&#10;":"\n","&#9;":"\t","&#39;":"'"},Mi=/&(?:lt|gt|quot|amp|#39);/g,ji=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Ei=v("pre,textarea",!0),Fi=function(t,e){return t&&Ei(t)&&"\n"===e[0]};function Li(t,e){var n=e?ji:Mi;return t.replace(n,(function(t){return Ti[t]}))}var Pi,Di,Ii,Ni,Ri,zi,Bi,Ui,Hi=/^@|^v-on:/,Wi=/^v-|^@|^:|^#/,Gi=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Vi=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,qi=/^\(|\)$/g,Ji=/^\[.*\]$/,Zi=/:(.*)$/,Ki=/^:|^\.|^v-bind:/,Xi=/\.[^.\]]+(?=[^\]]*$)/g,Yi=/^v-slot(:|$)|^#/,Qi=/[\r\n]/,ta=/\s+/g,ea=_((function(t){return(ci=ci||document.createElement("div")).innerHTML=t,ci.textContent})),na="_empty_";function ra(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:ua(e),rawAttrsMap:{},parent:n,children:[]}}function oa(t,e){var n,r;(r=Fr(n=t,"key"))&&(n.key=r),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,function(t){var e=Fr(t,"ref");e&&(t.ref=e,t.refInFor=function(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}(t))}(t),function(t){var e;"template"===t.tag?(e=Lr(t,"scope"),t.slotScope=e||Lr(t,"slot-scope")):(e=Lr(t,"slot-scope"))&&(t.slotScope=e);var n=Fr(t,"slot");if(n&&(t.slotTarget='""'===n?'"default"':n,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||Ar(t,"slot",n,function(t,e){return t.rawAttrsMap[":"+e]||t.rawAttrsMap["v-bind:"+e]||t.rawAttrsMap[e]}(t,"slot"))),"template"===t.tag){var r=Pr(t,Yi);if(r){var o=sa(r),i=o.name,a=o.dynamic;t.slotTarget=i,t.slotTargetDynamic=a,t.slotScope=r.value||na}}else{var s=Pr(t,Yi);if(s){var c=t.scopedSlots||(t.scopedSlots={}),u=sa(s),l=u.name,f=u.dynamic,d=c[l]=ra("template",[],t);d.slotTarget=l,d.slotTargetDynamic=f,d.children=t.children.filter((function(t){if(!t.slotScope)return t.parent=d,!0})),d.slotScope=s.value||na,t.children=[],t.plain=!1}}}(t),function(t){"slot"===t.tag&&(t.slotName=Fr(t,"name"))}(t),function(t){var e;(e=Fr(t,"is"))&&(t.component=e),null!=Lr(t,"inline-template")&&(t.inlineTemplate=!0)}(t);for(var o=0;o<Ii.length;o++)t=Ii[o](t,e)||t;return function(t){var e,n,r,o,i,a,s,c,u=t.attrsList;for(e=0,n=u.length;e<n;e++)if(r=o=u[e].name,i=u[e].value,Wi.test(r))if(t.hasBindings=!0,(a=ca(r.replace(Wi,"")))&&(r=r.replace(Xi,"")),Ki.test(r))r=r.replace(Ki,""),i=xr(i),(c=Ji.test(r))&&(r=r.slice(1,-1)),a&&(a.prop&&!c&&"innerHtml"===(r=x(r))&&(r="innerHTML"),a.camel&&!c&&(r=x(r)),a.sync&&(s=Nr(i,"$event"),c?Er(t,'"update:"+('+r+")",s,null,!1,0,u[e],!0):(Er(t,"update:"+x(r),s,null,!1,0,u[e]),S(r)!==x(r)&&Er(t,"update:"+S(r),s,null,!1,0,u[e])))),a&&a.prop||!t.component&&Bi(t.tag,t.attrsMap.type,r)?Or(t,r,i,u[e],c):Ar(t,r,i,u[e],c);else if(Hi.test(r))r=r.replace(Hi,""),(c=Ji.test(r))&&(r=r.slice(1,-1)),Er(t,r,i,a,!1,0,u[e],c);else{var l=(r=r.replace(Wi,"")).match(Zi),f=l&&l[1];c=!1,f&&(r=r.slice(0,-(f.length+1)),Ji.test(f)&&(f=f.slice(1,-1),c=!0)),Mr(t,r,o,i,f,c,a,u[e])}else Ar(t,r,JSON.stringify(i),u[e]),!t.component&&"muted"===r&&Bi(t.tag,t.attrsMap.type,r)&&Or(t,r,"true",u[e])}(t),t}function ia(t){var e;if(e=Lr(t,"v-for")){var n=function(t){var e=t.match(Gi);if(e){var n={};n.for=e[2].trim();var r=e[1].trim().replace(qi,""),o=r.match(Vi);return o?(n.alias=r.replace(Vi,"").trim(),n.iterator1=o[1].trim(),o[2]&&(n.iterator2=o[2].trim())):n.alias=r,n}}(e);n&&T(t,n)}}function aa(t,e){t.ifConditions||(t.ifConditions=[]),t.ifConditions.push(e)}function sa(t){var e=t.name.replace(Yi,"");return e||"#"!==t.name[0]&&(e="default"),Ji.test(e)?{name:e.slice(1,-1),dynamic:!0}:{name:'"'+e+'"',dynamic:!1}}function ca(t){var e=t.match(Xi);if(e){var n={};return e.forEach((function(t){n[t.slice(1)]=!0})),n}}function ua(t){for(var e={},n=0,r=t.length;n<r;n++)e[t[n].name]=t[n].value;return e}var la=/^xmlns:NS\d+/,fa=/^NS\d+:/;function da(t){return ra(t.tag,t.attrsList.slice(),t.parent)}var pa,ha,va=[di,pi,{preTransformNode:function(t,e){if("input"===t.tag){var n,r=t.attrsMap;if(!r["v-model"])return;if((r[":type"]||r["v-bind:type"])&&(n=Fr(t,"type")),r.type||n||!r["v-bind"]||(n="("+r["v-bind"]+").type"),n){var o=Lr(t,"v-if",!0),i=o?"&&("+o+")":"",a=null!=Lr(t,"v-else",!0),s=Lr(t,"v-else-if",!0),c=da(t);ia(c),Tr(c,"type","checkbox"),oa(c,e),c.processed=!0,c.if="("+n+")==='checkbox'"+i,aa(c,{exp:c.if,block:c});var u=da(t);Lr(u,"v-for",!0),Tr(u,"type","radio"),oa(u,e),aa(c,{exp:"("+n+")==='radio'"+i,block:u});var l=da(t);return Lr(l,"v-for",!0),Tr(l,":type",n),oa(l,e),aa(c,{exp:o,block:l}),a?c.else=!0:s&&(c.elseif=s),c}}}}],ma={expectHTML:!0,modules:va,directives:{model:function(t,e,n){var r=e.value,o=e.modifiers,i=t.tag,a=t.attrsMap.type;if(t.component)return Ir(t,r,o),!1;if("select"===i)!function(t,e,n){var r='var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return '+(n&&n.number?"_n(val)":"val")+"});";Er(t,"change",r=r+" "+Nr(e,"$event.target.multiple ? $$selectedVal : $$selectedVal[0]"),null,!0)}(t,r,o);else if("input"===i&&"checkbox"===a)!function(t,e,n){var r=n&&n.number,o=Fr(t,"value")||"null",i=Fr(t,"true-value")||"true",a=Fr(t,"false-value")||"false";Or(t,"checked","Array.isArray("+e+")?_i("+e+","+o+")>-1"+("true"===i?":("+e+")":":_q("+e+","+i+")")),Er(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+i+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+o+")":o)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Nr(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Nr(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Nr(e,"$$c")+"}",null,!0)}(t,r,o);else if("input"===i&&"radio"===a)!function(t,e,n){var r=n&&n.number,o=Fr(t,"value")||"null";Or(t,"checked","_q("+e+","+(o=r?"_n("+o+")":o)+")"),Er(t,"change",Nr(e,o),null,!0)}(t,r,o);else if("input"===i||"textarea"===i)!function(t,e,n){var r=t.attrsMap.type,o=n||{},i=o.lazy,a=o.number,s=o.trim,c=!i&&"range"!==r,u=i?"change":"range"===r?"__r":"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=Nr(e,l);c&&(f="if($event.target.composing)return;"+f),Or(t,"value","("+e+")"),Er(t,u,f,null,!0),(s||a)&&Er(t,"blur","$forceUpdate()")}(t,r,o);else if(!z.isReservedTag(i))return Ir(t,r,o),!1;return!0},text:function(t,e){e.value&&Or(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Or(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:hi,mustUseProp:jn,canBeLeftOpenTag:vi,isReservedTag:Gn,getTagNamespace:Vn,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(va)},ga=_((function(t){return v("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))})),ya=/^([\w$_]+|\([^)]*?\))\s*=>|^function(?:\s+[\w$]+)?\s*\(/,ba=/\([^)]*?\);*$/,$a=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,_a={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},wa={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},xa=function(t){return"if("+t+")return null;"},ka={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:xa("$event.target !== $event.currentTarget"),ctrl:xa("!$event.ctrlKey"),shift:xa("!$event.shiftKey"),alt:xa("!$event.altKey"),meta:xa("!$event.metaKey"),left:xa("'button' in $event && $event.button !== 0"),middle:xa("'button' in $event && $event.button !== 1"),right:xa("'button' in $event && $event.button !== 2")};function Ca(t,e){var n=e?"nativeOn:":"on:",r="",o="";for(var i in t){var a=Sa(t[i]);t[i]&&t[i].dynamic?o+=i+","+a+",":r+='"'+i+'":'+a+","}return r="{"+r.slice(0,-1)+"}",o?n+"_d("+r+",["+o.slice(0,-1)+"])":n+r}function Sa(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Sa(t)})).join(",")+"]";var e=$a.test(t.value),n=ya.test(t.value),r=$a.test(t.value.replace(ba,""));if(t.modifiers){var o="",i="",a=[];for(var s in t.modifiers)if(ka[s])i+=ka[s],_a[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;i+=xa(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);return a.length&&(o+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Oa).join("&&")+")return null;"}(a)),i&&(o+=i),"function($event){"+o+(e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function Oa(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=_a[t],r=wa[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Aa={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:j},Ta=function(t){this.options=t,this.warn=t.warn||Cr,this.transforms=Sr(t.modules,"transformCode"),this.dataGenFns=Sr(t.modules,"genData"),this.directives=T(T({},Aa),t.directives);var e=t.isReservedTag||E;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Ma(t,e){var n=new Ta(e);return{render:"with(this){return "+(t?ja(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function ja(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Ea(t,e);if(t.once&&!t.onceProcessed)return Fa(t,e);if(t.for&&!t.forProcessed)return Pa(t,e);if(t.if&&!t.ifProcessed)return La(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=Ra(t,e),o="_t("+n+(r?","+r:""),i=t.attrs||t.dynamicAttrs?Ua((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:x(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];return!i&&!a||r||(o+=",null"),i&&(o+=","+i),a&&(o+=(i?"":",null")+","+a),o+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:Ra(e,n,!0);return"_c("+t+","+Da(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=Da(t,e));var o=t.inlineTemplate?null:Ra(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(o?","+o:"")+")"}for(var i=0;i<e.transforms.length;i++)n=e.transforms[i](t,n);return n}return Ra(t,e)||"void 0"}function Ea(t,e){t.staticProcessed=!0;var n=e.pre;return t.pre&&(e.pre=t.pre),e.staticRenderFns.push("with(this){return "+ja(t,e)+"}"),e.pre=n,"_m("+(e.staticRenderFns.length-1)+(t.staticInFor?",true":"")+")"}function Fa(t,e){if(t.onceProcessed=!0,t.if&&!t.ifProcessed)return La(t,e);if(t.staticInFor){for(var n="",r=t.parent;r;){if(r.for){n=r.key;break}r=r.parent}return n?"_o("+ja(t,e)+","+e.onceId+++","+n+")":ja(t,e)}return Ea(t,e)}function La(t,e,n,r){return t.ifProcessed=!0,function t(e,n,r,o){if(!e.length)return o||"_e()";var i=e.shift();return i.exp?"("+i.exp+")?"+a(i.block)+":"+t(e,n,r,o):""+a(i.block);function a(t){return r?r(t,n):t.once?Fa(t,n):ja(t,n)}}(t.ifConditions.slice(),e,n,r)}function Pa(t,e,n,r){var o=t.for,i=t.alias,a=t.iterator1?","+t.iterator1:"",s=t.iterator2?","+t.iterator2:"";return t.forProcessed=!0,(r||"_l")+"(("+o+"),function("+i+a+s+"){return "+(n||ja)(t,e)+"})"}function Da(t,e){var n="{",r=function(t,e){var n=t.directives;if(n){var r,o,i,a,s="directives:[",c=!1;for(r=0,o=n.length;r<o;r++){i=n[r],a=!0;var u=e.directives[i.name];u&&(a=!!u(t,i,e.warn)),a&&(c=!0,s+='{name:"'+i.name+'",rawName:"'+i.rawName+'"'+(i.value?",value:("+i.value+"),expression:"+JSON.stringify(i.value):"")+(i.arg?",arg:"+(i.isDynamicArg?i.arg:'"'+i.arg+'"'):"")+(i.modifiers?",modifiers:"+JSON.stringify(i.modifiers):"")+"},")}return c?s.slice(0,-1)+"]":void 0}}(t,e);r&&(n+=r+","),t.key&&(n+="key:"+t.key+","),t.ref&&(n+="ref:"+t.ref+","),t.refInFor&&(n+="refInFor:true,"),t.pre&&(n+="pre:true,"),t.component&&(n+='tag:"'+t.tag+'",');for(var o=0;o<e.dataGenFns.length;o++)n+=e.dataGenFns[o](t);if(t.attrs&&(n+="attrs:"+Ua(t.attrs)+","),t.props&&(n+="domProps:"+Ua(t.props)+","),t.events&&(n+=Ca(t.events,!1)+","),t.nativeEvents&&(n+=Ca(t.nativeEvents,!0)+","),t.slotTarget&&!t.slotScope&&(n+="slot:"+t.slotTarget+","),t.scopedSlots&&(n+=function(t,e,n){var r=t.for||Object.keys(e).some((function(t){var n=e[t];return n.slotTargetDynamic||n.if||n.for||Ia(n)})),o=!!t.if;if(!r)for(var i=t.parent;i;){if(i.slotScope&&i.slotScope!==na||i.for){r=!0;break}i.if&&(o=!0),i=i.parent}var a=Object.keys(e).map((function(t){return Na(e[t],n)})).join(",");return"scopedSlots:_u(["+a+"]"+(r?",null,true":"")+(!r&&o?",null,false,"+function(t){for(var e=5381,n=t.length;n;)e=33*e^t.charCodeAt(--n);return e>>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var i=function(t,e){var n=t.children[0];if(n&&1===n.type){var r=Ma(n,e.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);i&&(n+=i+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+Ua(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Ia(t){return 1===t.type&&("slot"===t.tag||t.children.some(Ia))}function Na(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return La(t,e,Na,"null");if(t.for&&!t.forProcessed)return Pa(t,e,Na);var r=t.slotScope===na?"":String(t.slotScope),o="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Ra(t,e)||"undefined")+":undefined":Ra(t,e)||"undefined":ja(t,e))+"}",i=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+o+i+"}"}function Ra(t,e,n,r,o){var i=t.children;if(i.length){var a=i[0];if(1===i.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||ja)(a,e)+s}var c=n?function(t,e){for(var n=0,r=0;r<t.length;r++){var o=t[r];if(1===o.type){if(za(o)||o.ifConditions&&o.ifConditions.some((function(t){return za(t.block)}))){n=2;break}(e(o)||o.ifConditions&&o.ifConditions.some((function(t){return e(t.block)})))&&(n=1)}}return n}(i,e.maybeComponent):0,u=o||Ba;return"["+i.map((function(t){return u(t,e)})).join(",")+"]"+(c?","+c:"")}}function za(t){return void 0!==t.for||"template"===t.tag||"slot"===t.tag}function Ba(t,e){return 1===t.type?ja(t,e):3===t.type&&t.isComment?(r=t,"_e("+JSON.stringify(r.text)+")"):"_v("+(2===(n=t).type?n.expression:Ha(JSON.stringify(n.text)))+")";var n,r}function Ua(t){for(var e="",n="",r=0;r<t.length;r++){var o=t[r],i=Ha(o.value);o.dynamic?n+=o.name+","+i+",":e+='"'+o.name+'":'+i+","}return e="{"+e.slice(0,-1)+"}",n?"_d("+e+",["+n.slice(0,-1)+"])":e}function Ha(t){return t.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}function Wa(t,e){try{return new Function(t)}catch(n){return e.push({err:n,code:t}),j}}function Ga(t){var e=Object.create(null);return function(n,r,o){(r=T({},r)).warn,delete r.warn;var i=r.delimiters?String(r.delimiters)+n:n;if(e[i])return e[i];var a=t(n,r),s={},c=[];return s.render=Wa(a.render,c),s.staticRenderFns=a.staticRenderFns.map((function(t){return Wa(t,c)})),e[i]=s}}new RegExp("\\b"+"do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b")+"\\b");var Va,qa,Ja=(Va=function(t,e){var n=function(t,e){Pi=e.warn||Cr,zi=e.isPreTag||E,Bi=e.mustUseProp||E,Ui=e.getTagNamespace||E,e.isReservedTag,Ii=Sr(e.modules,"transformNode"),Ni=Sr(e.modules,"preTransformNode"),Ri=Sr(e.modules,"postTransformNode"),Di=e.delimiters;var n,r,o=[],i=!1!==e.preserveWhitespace,a=e.whitespace,s=!1,c=!1;function u(t){if(l(t),s||t.processed||(t=oa(t,e)),o.length||t===n||n.if&&(t.elseif||t.else)&&aa(n,{exp:t.elseif,block:t}),r&&!t.forbidden)if(t.elseif||t.else)a=t,(u=function(t){for(var e=t.length;e--;){if(1===t[e].type)return t[e];t.pop()}}(r.children))&&u.if&&aa(u,{exp:a.elseif,block:a});else{if(t.slotScope){var i=t.slotTarget||'"default"';(r.scopedSlots||(r.scopedSlots={}))[i]=t}r.children.push(t),t.parent=r}var a,u;t.children=t.children.filter((function(t){return!t.slotScope})),l(t),t.pre&&(s=!1),zi(t.tag)&&(c=!1);for(var f=0;f<Ri.length;f++)Ri[f](t,e)}function l(t){if(!c)for(var e;(e=t.children[t.children.length-1])&&3===e.type&&" "===e.text;)t.children.pop()}return function(t,e){for(var n,r,o=[],i=e.expectHTML,a=e.isUnaryTag||E,s=e.canBeLeftOpenTag||E,c=0;t;){if(n=t,r&&Oi(r)){var u=0,l=r.toLowerCase(),f=Ai[l]||(Ai[l]=new RegExp("([\\s\\S]*?)(</"+l+"[^>]*>)","i")),d=t.replace(f,(function(t,n,r){return u=r.length,Oi(l)||"noscript"===l||(n=n.replace(/<!\--([\s\S]*?)-->/g,"$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g,"$1")),Fi(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-d.length,t=d,S(l,c-u,c)}else{var p=t.indexOf("<");if(0===p){if(Ci.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),x(h+3);continue}}if(Si.test(t)){var v=t.indexOf("]>");if(v>=0){x(v+2);continue}}var m=t.match(ki);if(m){x(m[0].length);continue}var g=t.match(xi);if(g){var y=c;x(g[0].length),S(g[1],y,c);continue}var b=k();if(b){C(b),Fi(b.tagName,t)&&x(1);continue}}var $=void 0,_=void 0,w=void 0;if(p>=0){for(_=t.slice(p);!(xi.test(_)||_i.test(_)||Ci.test(_)||Si.test(_)||(w=_.indexOf("<",1))<0);)p+=w,_=t.slice(p);$=t.substring(0,p)}p<0&&($=t),$&&x($.length),e.chars&&$&&e.chars($,c-$.length,c)}if(t===n){e.chars&&e.chars(t);break}}function x(e){c+=e,t=t.substring(e)}function k(){var e=t.match(_i);if(e){var n,r,o={tagName:e[1],attrs:[],start:c};for(x(e[0].length);!(n=t.match(wi))&&(r=t.match(yi)||t.match(gi));)r.start=c,x(r[0].length),r.end=c,o.attrs.push(r);if(n)return o.unarySlash=n[1],x(n[0].length),o.end=c,o}}function C(t){var n=t.tagName,c=t.unarySlash;i&&("p"===r&&mi(n)&&S(r),s(n)&&r===n&&S(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),d=0;d<l;d++){var p=t.attrs[d],h=p[3]||p[4]||p[5]||"",v="a"===n&&"href"===p[1]?e.shouldDecodeNewlinesForHref:e.shouldDecodeNewlines;f[d]={name:p[1],value:Li(h,v)}}u||(o.push({tag:n,lowerCasedTag:n.toLowerCase(),attrs:f,start:t.start,end:t.end}),r=n),e.start&&e.start(n,f,u,t.start,t.end)}function S(t,n,i){var a,s;if(null==n&&(n=c),null==i&&(i=c),t)for(s=t.toLowerCase(),a=o.length-1;a>=0&&o[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=o.length-1;u>=a;u--)e.end&&e.end(o[u].tag,n,i);o.length=a,r=a&&o[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,i):"p"===s&&(e.start&&e.start(t,[],!1,n,i),e.end&&e.end(t,n,i))}S()}(t,{warn:Pi,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,i,a,l,f){var d=r&&r.ns||Ui(t);K&&"svg"===d&&(i=function(t){for(var e=[],n=0;n<t.length;n++){var r=t[n];la.test(r.name)||(r.name=r.name.replace(fa,""),e.push(r))}return e}(i));var p,h=ra(t,i,r);d&&(h.ns=d),"style"!==(p=h).tag&&("script"!==p.tag||p.attrsMap.type&&"text/javascript"!==p.attrsMap.type)||ot()||(h.forbidden=!0);for(var v=0;v<Ni.length;v++)h=Ni[v](h,e)||h;s||(function(t){null!=Lr(t,"v-pre")&&(t.pre=!0)}(h),h.pre&&(s=!0)),zi(h.tag)&&(c=!0),s?function(t){var e=t.attrsList,n=e.length;if(n)for(var r=t.attrs=new Array(n),o=0;o<n;o++)r[o]={name:e[o].name,value:JSON.stringify(e[o].value)},null!=e[o].start&&(r[o].start=e[o].start,r[o].end=e[o].end);else t.pre||(t.plain=!0)}(h):h.processed||(ia(h),function(t){var e=Lr(t,"v-if");if(e)t.if=e,aa(t,{exp:e,block:t});else{null!=Lr(t,"v-else")&&(t.else=!0);var n=Lr(t,"v-else-if");n&&(t.elseif=n)}}(h),function(t){null!=Lr(t,"v-once")&&(t.once=!0)}(h)),n||(n=h),a?u(h):(r=h,o.push(h))},end:function(t,e,n){var i=o[o.length-1];o.length-=1,r=o[o.length-1],u(i)},chars:function(t,e,n){if(r&&(!K||"textarea"!==r.tag||r.attrsMap.placeholder!==t)){var o,u,l,f=r.children;(t=c||t.trim()?"script"===(o=r).tag||"style"===o.tag?t:ea(t):f.length?a?"condense"===a&&Qi.test(t)?"":" ":i?" ":"":"")&&(c||"condense"!==a||(t=t.replace(ta," ")),!s&&" "!==t&&(u=function(t,e){var n=e?fi(e):ui;if(n.test(t)){for(var r,o,i,a=[],s=[],c=n.lastIndex=0;r=n.exec(t);){(o=r.index)>c&&(s.push(i=t.slice(c,o)),a.push(JSON.stringify(i)));var u=xr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=o+r[0].length}return c<t.length&&(s.push(i=t.slice(c)),a.push(JSON.stringify(i))),{expression:a.join("+"),tokens:s}}}(t,Di))?l={type:2,expression:u.expression,tokens:u.tokens,text:t}:" "===t&&f.length&&" "===f[f.length-1].text||(l={type:3,text:t}),l&&f.push(l))}},comment:function(t,e,n){if(r){var o={type:3,text:t,isComment:!0};r.children.push(o)}}}),n}(t.trim(),e);!1!==e.optimize&&function(t,e){t&&(pa=ga(e.staticKeys||""),ha=e.isReservedTag||E,function t(e){if(e.static=function(t){return 2!==t.type&&(3===t.type||!(!t.pre&&(t.hasBindings||t.if||t.for||m(t.tag)||!ha(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(pa))))}(e),1===e.type){if(!ha(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,r=e.children.length;n<r;n++){var o=e.children[n];t(o),o.static||(e.static=!1)}if(e.ifConditions)for(var i=1,a=e.ifConditions.length;i<a;i++){var s=e.ifConditions[i].block;t(s),s.static||(e.static=!1)}}}(t),function t(e,n){if(1===e.type){if((e.static||e.once)&&(e.staticInFor=n),e.static&&e.children.length&&(1!==e.children.length||3!==e.children[0].type))return void(e.staticRoot=!0);if(e.staticRoot=!1,e.children)for(var r=0,o=e.children.length;r<o;r++)t(e.children[r],n||!!e.for);if(e.ifConditions)for(var i=1,a=e.ifConditions.length;i<a;i++)t(e.ifConditions[i].block,n)}}(t,!1))}(n,e);var r=Ma(n,e);return{ast:n,render:r.render,staticRenderFns:r.staticRenderFns}},function(t){function e(e,n){var r=Object.create(t),o=[],i=[];if(n)for(var a in n.modules&&(r.modules=(t.modules||[]).concat(n.modules)),n.directives&&(r.directives=T(Object.create(t.directives||null),n.directives)),n)"modules"!==a&&"directives"!==a&&(r[a]=n[a]);r.warn=function(t,e,n){(n?i:o).push(t)};var s=Va(e.trim(),r);return s.errors=o,s.tips=i,s}return{compile:e,compileToFunctions:Ga(e)}})(ma),Za=(Ja.compile,Ja.compileToFunctions);function Ka(t){return(qa=qa||document.createElement("div")).innerHTML=t?'<a href="\n"/>':'<div a="\n"/>',qa.innerHTML.indexOf("&#10;")>0}var Xa=!!V&&Ka(!1),Ya=!!V&&Ka(!0),Qa=_((function(t){var e=Zn(t);return e&&e.innerHTML})),ts=wn.prototype.$mount;wn.prototype.$mount=function(t,e){if((t=t&&Zn(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=Qa(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){var o=Za(r,{outputSourceRange:!1,shouldDecodeNewlines:Xa,shouldDecodeNewlinesForHref:Ya,delimiters:n.delimiters,comments:n.comments},this),i=o.render,a=o.staticRenderFns;n.render=i,n.staticRenderFns=a}}return ts.call(this,t,e)},wn.compile=Za,t.exports=wn},73609:t=>{"use strict";t.exports=window.jQuery},76608:()=>{}},e={};function n(r){var o=e[r];if(void 0!==o)return o.exports;var i=e[r]={id:r,exports:{}};return t[r](i,i.exports,n),i.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{"use strict";var t=r(n(36794)),e=r(n(59640));function r(t){return t&&t.__esModule?t:{default:t}}(0,window.$)((function(){window.prestashop.component.initComponents(["TranslatableInput"]),new window.prestashop.component.ChoiceTree(t.default.shopAssociationTree).enableAutoCheckChildren(),new e.default(t.default).init()}))})(),window.currency_form={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvY2xkci9leGNlcHRpb24vbG9jYWxpemF0aW9uLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC9jbGRyL2luZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC9jbGRyL251bWJlci1mb3JtYXR0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL2NsZHIvbnVtYmVyLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9hcHAvY2xkci9zcGVjaWZpY2F0aW9ucy9udW1iZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvcHJpY2UuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvYXBwL3V0aWxzL2dyb3dsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvbW9kYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jdXJyZW5jeS1mb3JtLW1hcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2N1cnJlbmN5LWZvcm0uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvdnVlL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvcGx1Z2lucy92dWUtaTE4bi9yZXBsYWNlLWZvcm1hdHRlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5Rm9ybWF0Rm9ybS52dWUiLCJ3ZWJwYWNrOi8vW25hbWVdL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeUZvcm1hdHRlci52dWUiLCJ3ZWJwYWNrOi8vW25hbWVdL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeU1vZGFsLnZ1ZSIsIndlYnBhY2s6Ly9bbmFtZV0vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0xhbmd1YWdlTGlzdC52dWUiLCJ3ZWJwYWNrOi8vW25hbWVdL2pzL3Z1ZS9jb21wb25lbnRzL01vZGFsLnZ1ZSIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL2FycmF5L2Zyb20uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9pcy1pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3Byb21pc2UuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9zeW1ib2wvaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy90eXBlb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vZ2V0LWl0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2NyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2luZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2FuLWluc3RhbmNlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jbGFzc29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29mLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY29yZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2N0eC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RlZmluZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2RvbS1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZW51bS1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZXhwb3J0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZmFpbHMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mb3Itb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oYXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19oaWRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faHRtbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW52b2tlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLWFycmF5LWl0ZXIuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19tZXRhLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BkLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4tZXh0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWdvcG4uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtZ29wcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXBpZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1zYXAuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wZXJmb3JtLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3JlZGVmaW5lLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXByb3RvLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc3RyaW5nLWF0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdGFzay5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191c2VyLWFnZW50LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fd2tzLWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3drcy1leHQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvY29yZS5nZXQtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuaXMtaXRlcmFibGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5hcnJheS5mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5wcm9taXNlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3ltYm9sLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS5maW5hbGx5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczcucHJvbWlzZS50cnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvd2ViLmRvbS5pdGVyYWJsZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvQ3VycmVuY3lNb2RhbC52dWU/YWFmYyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWU/Yzk5YSIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9sb2Rhc2guZXNjYXBlcmVnZXhwL2luZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUtbW9kdWxlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS1pMThuL2Rpc3QvdnVlLWkxOG4uZXNtLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeUZvcm1hdEZvcm0udnVlP2Y3NTciLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5Rm9ybWF0Rm9ybS52dWU/NmQ3NyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvQ3VycmVuY3lGb3JtYXRGb3JtLnZ1ZSIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvQ3VycmVuY3lGb3JtYXR0ZXIudnVlPzU1YjAiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5Rm9ybWF0dGVyLnZ1ZT9kODVlIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeUZvcm1hdHRlci52dWUiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5TW9kYWwudnVlP2QwNTIiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5TW9kYWwudnVlP2FkOTkiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0N1cnJlbmN5TW9kYWwudnVlIiwid2VicGFjazovL1tuYW1lXS8uL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9MYW5ndWFnZUxpc3QudnVlPzc3MWQiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0xhbmd1YWdlTGlzdC52dWU/MDAxYyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvTGFuZ3VhZ2VMaXN0LnZ1ZSIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWU/YWEzNCIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWU/MzEyOSIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWUiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvdnVlLXJlc291cmNlL2Rpc3QvdnVlLXJlc291cmNlLmVzbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvQ3VycmVuY3lNb2RhbC52dWU/ZTNkNyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWU/Y2M4OCIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5jb21tb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL3Z1ZS9kaXN0L3Z1ZS5jb21tb24ucHJvZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vZXh0ZXJuYWwgXCJqUXVlcnlcIiIsIndlYnBhY2s6Ly9bbmFtZV0vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL1tuYW1lXS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vanMvcGFnZXMvY3VycmVuY3kvZm9ybS9pbmRleC5qcyJdLCJuYW1lcyI6WyJtZXNzYWdlIiwidGhpcyIsIm5hbWUiLCJQcmljZVNwZWNpZmljYXRpb24iLCJOdW1iZXJTcGVjaWZpY2F0aW9uIiwiTnVtYmVyRm9ybWF0dGVyIiwiTnVtYmVyU3ltYm9sIiwiZXNjYXBlUkUiLCJyZXF1aXJlIiwic3BlY2lmaWNhdGlvbiIsIm51bWJlclNwZWNpZmljYXRpb24iLCJudW1iZXIiLCJ1bmRlZmluZWQiLCJudW0iLCJNYXRoIiwiYWJzIiwidG9GaXhlZCIsImdldE1heEZyYWN0aW9uRGlnaXRzIiwiZXh0cmFjdE1ham9yTWlub3JEaWdpdHMiLCJtYWpvckRpZ2l0cyIsIm1pbm9yRGlnaXRzIiwiZm9ybWF0dGVkTnVtYmVyIiwic3BsaXRNYWpvckdyb3VwcyIsImFkanVzdE1pbm9yRGlnaXRzWmVyb2VzIiwicGF0dGVybiIsImdldENsZHJQYXR0ZXJuIiwiYWRkUGxhY2Vob2xkZXJzIiwicmVwbGFjZVN5bWJvbHMiLCJwZXJmb3JtU3BlY2lmaWNSZXBsYWNlbWVudHMiLCJyZXN1bHQiLCJ0b1N0cmluZyIsInNwbGl0IiwiZGlnaXQiLCJpc0dyb3VwaW5nVXNlZCIsInJldmVyc2UiLCJncm91cHMiLCJwdXNoIiwic3BsaWNlIiwiZ2V0UHJpbWFyeUdyb3VwU2l6ZSIsImxlbmd0aCIsImdldFNlY29uZGFyeUdyb3VwU2l6ZSIsIm5ld0dyb3VwcyIsImZvckVhY2giLCJncm91cCIsImpvaW4iLCJyZXBsYWNlIiwiZ2V0TWluRnJhY3Rpb25EaWdpdHMiLCJwYWRFbmQiLCJpc05lZ2F0aXZlIiwiZ2V0TmVnYXRpdmVQYXR0ZXJuIiwiZ2V0UG9zaXRpdmVQYXR0ZXJuIiwic3ltYm9scyIsImdldFN5bWJvbCIsIm1hcCIsImdldERlY2ltYWwiLCJnZXRHcm91cCIsImdldE1pbnVzU2lnbiIsImdldFBlcmNlbnRTaWduIiwiZ2V0UGx1c1NpZ24iLCJzdHJ0ciIsInN0ciIsInBhaXJzIiwic3Vic3RycyIsIlJlZ0V4cCIsInBhcnQiLCJnZXRDdXJyZW5jeVN5bWJvbCIsInNwZWNpZmljYXRpb25zIiwic3ltYm9sIiwibnVtYmVyU3ltYm9scyIsImN1cnJlbmN5U3ltYm9sIiwicG9zaXRpdmVQYXR0ZXJuIiwibmVnYXRpdmVQYXR0ZXJuIiwicGFyc2VJbnQiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsIm1pbkZyYWN0aW9uRGlnaXRzIiwiZ3JvdXBpbmdVc2VkIiwicHJpbWFyeUdyb3VwU2l6ZSIsInNlY29uZGFyeUdyb3VwU2l6ZSIsImN1cnJlbmN5Q29kZSIsImRlY2ltYWwiLCJsaXN0IiwicGVyY2VudFNpZ24iLCJtaW51c1NpZ24iLCJwbHVzU2lnbiIsImV4cG9uZW50aWFsIiwic3VwZXJzY3JpcHRpbmdFeHBvbmVudCIsInBlck1pbGxlIiwiaW5maW5pdHkiLCJuYW4iLCJ2YWxpZGF0ZURhdGEiLCJMb2NhbGl6YXRpb25FeGNlcHRpb24iLCJzaG93R3Jvd2wiLCJ0eXBlIiwiZHVyYXRpb25UaW1lIiwiZHVyYXRpb24iLCJ3aW5kb3ciLCIkIiwiZ3Jvd2wiLCJ0aXRsZSIsInNpemUiLCJwYXJhbXMiLCJjb25maXJtQ2FsbGJhY2siLCJjYW5jZWxDYWxsYmFjayIsImlkIiwiY2xvc2FibGUiLCJtb2RhbCIsImNvbmZpcm1UaXRsZSIsImNvbmZpcm1NZXNzYWdlIiwiY2xvc2VCdXR0b25MYWJlbCIsImNvbmZpcm1CdXR0b25MYWJlbCIsImNvbmZpcm1CdXR0b25DbGFzcyIsImN1c3RvbUJ1dHRvbnMiLCJjb250YWluZXIiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc0xpc3QiLCJhZGQiLCJkaWFsb2ciLCJjb250ZW50IiwiaGVhZGVyIiwiaW5uZXJIVE1MIiwiY2xvc2VJY29uIiwic2V0QXR0cmlidXRlIiwiZGF0YXNldCIsImRpc21pc3MiLCJib2R5IiwiZm9vdGVyIiwiY2xvc2VCdXR0b24iLCJjb25maXJtQnV0dG9uIiwiYXBwZW5kIiwiYXBwZW5kQ2hpbGQiLCJNb2RhbCIsIiRtb2RhbCIsInNob3ciLCJhZGRFdmVudExpc3RlbmVyIiwiYmFja2Ryb3AiLCJrZXlib2FyZCIsIm9uIiwicXVlcnlTZWxlY3RvciIsInJlbW92ZSIsImN1cnJlbmN5Rm9ybSIsImN1cnJlbmN5Rm9ybUZvb3RlciIsImN1cnJlbmN5U2VsZWN0b3IiLCJpc1Vub2ZmaWNpYWxDaGVja2JveCIsIm5hbWVzSW5wdXQiLCJsYW5nSWQiLCJzeW1ib2xzSW5wdXQiLCJ0cmFuc2Zvcm1hdGlvbnNJbnB1dCIsImlzb0NvZGVJbnB1dCIsImV4Y2hhbmdlUmF0ZUlucHV0IiwicmVzZXREZWZhdWx0U2V0dGluZ3NJbnB1dCIsImxvYWRpbmdEYXRhTW9kYWwiLCJwcmVjaXNpb25JbnB1dCIsInNob3BBc3NvY2lhdGlvblRyZWUiLCJjdXJyZW5jeUZvcm1hdHRlciIsIlZ1ZSIsInVzZSIsIlZ1ZVJlc291cmNlIiwiVnVlSTE4biIsIkN1cnJlbmN5Rm9ybSIsImN1cnJlbmN5Rm9ybU1hcCIsIiRjdXJyZW5jeUZvcm0iLCIkY3VycmVuY3lGb3JtRm9vdGVyIiwiYXBpUmVmZXJlbmNlVXJsIiwiZGF0YSIsInJlZmVyZW5jZUN1cnJlbmN5UmVzb3VyY2UiLCJyZXNvdXJjZSIsIm9yaWdpbmFsTGFuZ3VhZ2VzIiwidHJhbnNsYXRpb25zIiwiJGN1cnJlbmN5U2VsZWN0b3IiLCIkaXNVbm9mZmljaWFsQ2hlY2tib3giLCIkaXNvQ29kZUlucHV0IiwiJGV4Y2hhbmdlUmF0ZUlucHV0IiwiJHByZWNpc2lvbklucHV0IiwiJHJlc2V0RGVmYXVsdFNldHRpbmdzQnV0dG9uIiwiJGxvYWRpbmdEYXRhTW9kYWwiLCJjdXJyZW5jeUZvcm1hdHRlcklkIiwiaGlkZU1vZGFsIiwiaW5pdExpc3RlbmVycyIsImluaXRGaWVsZHMiLCJpbml0U3RhdGUiLCJpbml0Q3VycmVuY3lGb3JtYXR0ZXIiLCJzdGF0ZSIsImN1cnJlbmN5RGF0YSIsImdldEN1cnJlbmN5RGF0YUZyb21Gb3JtIiwibGFuZ3VhZ2VzIiwiaTE4biIsImxvY2FsZSIsImZvcm1hdHRlciIsIlJlcGxhY2VGb3JtYXR0ZXIiLCJtZXNzYWdlcyIsImVuIiwiaW5zZXJ0QmVmb3JlIiwiZWwiLCJjb21wb25lbnRzIiwiQ3VycmVuY3lGb3JtYXR0ZXIiLCJ0ZW1wbGF0ZSIsIiR3YXRjaCIsImZpbGxDdXJyZW5jeUN1c3RvbURhdGEiLCJkZWVwIiwiaW1tZWRpYXRlIiwiY2hhbmdlIiwib25DdXJyZW5jeVNlbGVjdG9yQ2hhbmdlIiwiYmluZCIsIm9uSXNVbm9mZmljaWFsQ2hlY2tib3hDaGFuZ2UiLCJjbGljayIsIm9uUmVzZXREZWZhdWx0U2V0dGluZ3NDbGljayIsImlzVW5vZmZpY2lhbEN1cnJlbmN5IiwidmFsIiwicHJvcCIsInNlbGVjdGVkSVNPQ29kZSIsInJlc2V0Q3VycmVuY3lEYXRhIiwiYXR0ciIsIkNvbmZpcm1Nb2RhbCIsImFkZENsYXNzIiwiZmV0Y2hDdXJyZW5jeSIsImZpbGxDdXJyZW5jeURhdGEiLCJsYW5ndWFnZSIsInBhdHRlcm5zIiwiY3VycmVuY3lQYXR0ZXJuIiwicHJpY2VTcGVjaWZpY2F0aW9uIiwicmVtb3ZlQ2xhc3MiLCJjdXJyZW5jeUlzb0NvZGUiLCJnZXQiLCJ0aGVuIiwicmVzcG9uc2UiLCJlcnJvclJlc3BvbnNlIiwiZXJyb3IiLCJ0cmFuc2Zvcm1hdGlvbnMiLCJsYW5nTmFtZVNlbGVjdG9yIiwibmFtZXMiLCJpc29Db2RlIiwiZXhjaGFuZ2VSYXRlIiwicHJlY2lzaW9uIiwibGFuZ1N5bWJvbFNlbGVjdG9yIiwibGFuZ1RyYW5zZm9ybWF0aW9uU2VsZWN0b3IiLCJsYW5nIiwiYmluZGVkIiwiaGFuZGxlciIsImUiLCJwYXRoIiwiaSIsIm5vZGUiLCJjYWxsYmFjayIsImNvbnRhaW5zIiwidGFyZ2V0IiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsImZpbHRlciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkaXJlY3RpdmUiLCJiaW5kaW5nIiwidmFsdWUiLCJ1cGRhdGUiLCJvbGRWYWx1ZSIsInVuYmluZCIsInZhbHVlcyIsIm1zZyIsInBhcmFtIiwicGxhY2Vob2xkZXIiLCJpbmRleE9mIiwidHJhbnNmb3JtYXRpb24iLCJzZWxlY3RlZExhbmd1YWdlIiwiY3VzdG9tRGF0YSIsIm1vZHVsZSIsImV4cG9ydHMiLCJfX2VzTW9kdWxlIiwib2JqIiwiX3Byb21pc2UyIiwiZGVmYXVsdCIsImZuIiwiZ2VuIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZXNvbHZlIiwicmVqZWN0Iiwic3RlcCIsImtleSIsImFyZyIsImluZm8iLCJkb25lIiwiZXJyIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwicHJvdG90eXBlIiwiX2Fzc2lnbjIiLCJzb3VyY2UiLCJPYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfc2V0UHJvdG90eXBlT2YyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9jcmVhdGUyIiwiX3R5cGVvZjMiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJjb25zdHJ1Y3RvciIsIl9fcHJvdG9fXyIsInNlbGYiLCJSZWZlcmVuY2VFcnJvciIsIl9pc0l0ZXJhYmxlMyIsIl9nZXRJdGVyYXRvcjMiLCJhcnIiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwiX3MiLCJfaSIsIm5leHQiLCJzbGljZUl0ZXJhdG9yIiwiX2Zyb20yIiwiYXJyMiIsIl9pdGVyYXRvcjIiLCJfc3ltYm9sMiIsIl90eXBlb2YiLCIkT2JqZWN0IiwiUCIsIkQiLCJjcmVhdGUiLCJpdCIsImRlc2MiLCJkZWZpbmVQcm9wZXJ0eSIsImZvcmJpZGRlbkZpZWxkIiwiaXNPYmplY3QiLCJ0b0lPYmplY3QiLCJ0b0xlbmd0aCIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJmcm9tSW5kZXgiLCJPIiwiaW5kZXgiLCJjb2YiLCJUQUciLCJBUkciLCJUIiwiQiIsInRyeUdldCIsImNhbGxlZSIsInNsaWNlIiwiY29yZSIsInZlcnNpb24iLCJfX2UiLCIkZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVEZXNjIiwib2JqZWN0IiwiZiIsImFGdW5jdGlvbiIsInRoYXQiLCJhIiwiYiIsImMiLCJpcyIsImdldEtleXMiLCJnT1BTIiwicElFIiwiZ2V0U3ltYm9scyIsImlzRW51bSIsImdsb2JhbCIsImN0eCIsImhpZGUiLCJoYXMiLCIkZXhwb3J0Iiwib3duIiwib3V0IiwiSVNfRk9SQ0VEIiwiRiIsIklTX0dMT0JBTCIsIkciLCJJU19TVEFUSUMiLCJTIiwiSVNfUFJPVE8iLCJJU19CSU5EIiwiSVNfV1JBUCIsIlciLCJleHBQcm90byIsIkMiLCJGdW5jdGlvbiIsInZpcnR1YWwiLCJSIiwiVSIsImV4ZWMiLCJpc0FycmF5SXRlciIsImFuT2JqZWN0IiwiZ2V0SXRlckZuIiwiQlJFQUsiLCJSRVRVUk4iLCJpdGVyYWJsZSIsImVudHJpZXMiLCJJVEVSQVRPUiIsIml0ZXJhdG9yIiwiaXRlckZuIiwiX19nIiwiZFAiLCJkb2N1bWVudEVsZW1lbnQiLCJhcmdzIiwidW4iLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkl0ZXJhdG9ycyIsIkFycmF5UHJvdG8iLCJyZXQiLCJzZXRUb1N0cmluZ1RhZyIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiTkFNRSIsIkxJQlJBUlkiLCJyZWRlZmluZSIsIiRpdGVyQ3JlYXRlIiwiZ2V0UHJvdG90eXBlT2YiLCJCVUdHWSIsImtleXMiLCJLRVlTIiwiVkFMVUVTIiwicmV0dXJuVGhpcyIsIkJhc2UiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwibWV0aG9kcyIsImdldE1ldGhvZCIsImtpbmQiLCJwcm90byIsIkRFRl9WQUxVRVMiLCJWQUxVRVNfQlVHIiwiJG5hdGl2ZSIsIiRkZWZhdWx0IiwiJGVudHJpZXMiLCIkYW55TmF0aXZlIiwiU0FGRV9DTE9TSU5HIiwicml0ZXIiLCJmcm9tIiwic2tpcENsb3NpbmciLCJzYWZlIiwiaXRlciIsIk1FVEEiLCJzZXREZXNjIiwiaXNFeHRlbnNpYmxlIiwiRlJFRVpFIiwicHJldmVudEV4dGVuc2lvbnMiLCJzZXRNZXRhIiwidyIsIm1ldGEiLCJLRVkiLCJORUVEIiwiZmFzdEtleSIsImdldFdlYWsiLCJvbkZyZWV6ZSIsIm1hY3JvdGFzayIsIk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCJwcm9jZXNzIiwiUHJvbWlzZSIsImlzTm9kZSIsImhlYWQiLCJsYXN0Iiwibm90aWZ5IiwiZmx1c2giLCJwYXJlbnQiLCJkb21haW4iLCJleGl0IiwiZW50ZXIiLCJuZXh0VGljayIsIm5hdmlnYXRvciIsInN0YW5kYWxvbmUiLCJwcm9taXNlIiwidG9nZ2xlIiwiY3JlYXRlVGV4dE5vZGUiLCJvYnNlcnZlIiwiY2hhcmFjdGVyRGF0YSIsInRhc2siLCJQcm9taXNlQ2FwYWJpbGl0eSIsIiQkcmVzb2x2ZSIsIiQkcmVqZWN0IiwiREVTQ1JJUFRPUlMiLCJ0b09iamVjdCIsIklPYmplY3QiLCIkYXNzaWduIiwiYXNzaWduIiwiQSIsIlN5bWJvbCIsIksiLCJrIiwiYUxlbiIsImNvbmNhdCIsImoiLCJkUHMiLCJlbnVtQnVnS2V5cyIsIklFX1BST1RPIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJzcmMiLCJjb250ZW50V2luZG93Iiwib3BlbiIsIndyaXRlIiwibHQiLCJjbG9zZSIsIlByb3BlcnRpZXMiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiQXR0cmlidXRlcyIsImdPUEQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnT1BOIiwid2luZG93TmFtZXMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0V2luZG93TmFtZXMiLCIka2V5cyIsImhpZGRlbktleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJPYmplY3RQcm90byIsImFycmF5SW5kZXhPZiIsImZhaWxzIiwiZXhwIiwidiIsIm5ld1Byb21pc2VDYXBhYmlsaXR5IiwieCIsInByb21pc2VDYXBhYmlsaXR5IiwiYml0bWFwIiwiY2hlY2siLCJzZXQiLCJzZXRQcm90b3R5cGVPZiIsInRlc3QiLCJidWdneSIsIlNQRUNJRVMiLCJkZWYiLCJ0YWciLCJzdGF0Iiwic2hhcmVkIiwidWlkIiwiU0hBUkVEIiwic3RvcmUiLCJtb2RlIiwiY29weXJpZ2h0IiwidG9JbnRlZ2VyIiwiZGVmaW5lZCIsIlRPX1NUUklORyIsInBvcyIsInMiLCJTdHJpbmciLCJsIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsImRlZmVyIiwiY2hhbm5lbCIsInBvcnQiLCJpbnZva2UiLCJodG1sIiwiY2VsIiwic2V0VGFzayIsInNldEltbWVkaWF0ZSIsImNsZWFyVGFzayIsImNsZWFySW1tZWRpYXRlIiwiTWVzc2FnZUNoYW5uZWwiLCJEaXNwYXRjaCIsImNvdW50ZXIiLCJxdWV1ZSIsInJ1biIsImxpc3RlbmVyIiwiZXZlbnQiLCJub3ciLCJwb3J0MiIsInBvcnQxIiwib25tZXNzYWdlIiwicG9zdE1lc3NhZ2UiLCJpbXBvcnRTY3JpcHRzIiwicmVtb3ZlQ2hpbGQiLCJzZXRUaW1lb3V0IiwiY2xlYXIiLCJtYXgiLCJtaW4iLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsInZhbHVlT2YiLCJweCIsInJhbmRvbSIsInVzZXJBZ2VudCIsIndrc0V4dCIsIiRTeW1ib2wiLCJVU0VfU1lNQk9MIiwiY2xhc3NvZiIsImNyZWF0ZVByb3BlcnR5IiwiYXJyYXlMaWtlIiwibWFwZm4iLCJtYXBwaW5nIiwiYWRkVG9VbnNjb3BhYmxlcyIsIml0ZXJhdGVkIiwiX3QiLCJfayIsIkFyZ3VtZW50cyIsIiRnZXRQcm90b3R5cGVPZiIsIkludGVybmFsIiwibmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5IiwiT3duUHJvbWlzZUNhcGFiaWxpdHkiLCJXcmFwcGVyIiwiYW5JbnN0YW5jZSIsImZvck9mIiwic3BlY2llc0NvbnN0cnVjdG9yIiwibWljcm90YXNrIiwibmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUiLCJwZXJmb3JtIiwicHJvbWlzZVJlc29sdmUiLCJQUk9NSVNFIiwidmVyc2lvbnMiLCJ2OCIsIiRQcm9taXNlIiwiZW1wdHkiLCJVU0VfTkFUSVZFIiwiRmFrZVByb21pc2UiLCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCJpc1RoZW5hYmxlIiwiaXNSZWplY3QiLCJjaGFpbiIsIl9jIiwiX3YiLCJvayIsInJlYWN0aW9uIiwiZXhpdGVkIiwiZmFpbCIsIl9oIiwib25IYW5kbGVVbmhhbmRsZWQiLCJvblVuaGFuZGxlZCIsImNvbnNvbGUiLCJ1bmhhbmRsZWQiLCJpc1VuaGFuZGxlZCIsImVtaXQiLCJvbnVuaGFuZGxlZHJlamVjdGlvbiIsInJlYXNvbiIsIl9hIiwib25yZWplY3Rpb25oYW5kbGVkIiwiJHJlamVjdCIsIl93IiwiJHJlc29sdmUiLCJ3cmFwcGVyIiwiZXhlY3V0b3IiLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyIiwiY2FwYWJpbGl0eSIsImFsbCIsInJlbWFpbmluZyIsIiRpbmRleCIsImFscmVhZHlDYWxsZWQiLCJyYWNlIiwiJGF0IiwicG9pbnQiLCIkZmFpbHMiLCJ3a3MiLCJ3a3NEZWZpbmUiLCJlbnVtS2V5cyIsIl9jcmVhdGUiLCJnT1BORXh0IiwiJEdPUEQiLCIkR09QUyIsIiREUCIsIiRKU09OIiwiSlNPTiIsIl9zdHJpbmdpZnkiLCJzdHJpbmdpZnkiLCJISURERU4iLCJUT19QUklNSVRJVkUiLCJTeW1ib2xSZWdpc3RyeSIsIkFsbFN5bWJvbHMiLCJPUFN5bWJvbHMiLCJRT2JqZWN0Iiwic2V0dGVyIiwiZmluZENoaWxkIiwic2V0U3ltYm9sRGVzYyIsInByb3RvRGVzYyIsIndyYXAiLCJzeW0iLCJpc1N5bWJvbCIsIiRkZWZpbmVQcm9wZXJ0aWVzIiwiJHByb3BlcnR5SXNFbnVtZXJhYmxlIiwiRSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCIkZ2V0T3duUHJvcGVydHlOYW1lcyIsIiRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJJU19PUCIsIiRzZXQiLCJlczZTeW1ib2xzIiwid2VsbEtub3duU3ltYm9scyIsImtleUZvciIsInVzZVNldHRlciIsInVzZVNpbXBsZSIsIkZBSUxTX09OX1BSSU1JVElWRVMiLCJyZXBsYWNlciIsIiRyZXBsYWNlciIsIm9uRmluYWxseSIsImlzRnVuY3Rpb24iLCJjYWxsYmFja2ZuIiwiVE9fU1RSSU5HX1RBRyIsIkRPTUl0ZXJhYmxlcyIsIkNvbGxlY3Rpb24iLCJfX19DU1NfTE9BREVSX0VYUE9SVF9fXyIsImNzc1dpdGhNYXBwaW5nVG9TdHJpbmciLCJpdGVtIiwibW9kdWxlcyIsIm1lZGlhUXVlcnkiLCJkZWR1cGUiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJsZW4iLCJfaXRlbSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIm8iLCJtaW5MZW4iLCJuIiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsImNzc01hcHBpbmciLCJidG9hIiwiYmFzZTY0IiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzb3VyY2VNYXBwaW5nIiwic291cmNlVVJMcyIsInNvdXJjZXMiLCJzb3VyY2VSb290IiwicmVSZWdFeHBDaGFyIiwicmVIYXNSZWdFeHBDaGFyIiwiZnJlZUdsb2JhbCIsImciLCJmcmVlU2VsZiIsInJvb3QiLCJvYmplY3RUb1N0cmluZyIsInN5bWJvbFByb3RvIiwic3ltYm9sVG9TdHJpbmciLCJzdHJpbmciLCJpc09iamVjdExpa2UiLCJiYXNlVG9TdHJpbmciLCJoYWRSdW50aW1lIiwicmVnZW5lcmF0b3JSdW50aW1lIiwib2xkUnVudGltZSIsIk9wIiwiaGFzT3duIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJydW50aW1lIiwiR2VuU3RhdGVTdXNwZW5kZWRTdGFydCIsIkdlblN0YXRlU3VzcGVuZGVkWWllbGQiLCJHZW5TdGF0ZUV4ZWN1dGluZyIsIkdlblN0YXRlQ29tcGxldGVkIiwiQ29udGludWVTZW50aW5lbCIsImdldFByb3RvIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJHcCIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiR2VuZXJhdG9yIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwibWFyayIsImF3cmFwIiwiX19hd2FpdCIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJwb3AiLCJDb250ZXh0IiwicmVzZXQiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsInNlbnQiLCJfc2VudCIsImRlbGVnYXRlIiwibWV0aG9kIiwidHJ5RW50cmllcyIsInJlc2V0VHJ5RW50cnkiLCJzdG9wIiwicm9vdFJlY29yZCIsImNvbXBsZXRpb24iLCJydmFsIiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJleGNlcHRpb24iLCJjb250ZXh0IiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwicmVjb3JkIiwiZW50cnkiLCJ0cnlMb2MiLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJFcnJvciIsImFicnVwdCIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiYWZ0ZXJMb2MiLCJmaW5pc2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJwcm90b0dlbmVyYXRvciIsImdlbmVyYXRvciIsIl9pbnZva2UiLCJkb25lUmVzdWx0IiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwidHJ5Q2F0Y2giLCJtYWtlSW52b2tlTWV0aG9kIiwidW53cmFwcGVkIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJyZXR1cm4iLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiaXRlcmF0b3JNZXRob2QiLCJudW1iZXJGb3JtYXRLZXlzIiwid2FybiIsInN0YWNrIiwiaXNQbGFpbk9iamVjdCIsImlzTnVsbCIsInBhcnNlQXJncyIsImxvb3NlQ2xvbmUiLCJwYXJzZSIsImluY2x1ZGVzIiwibWVyZ2UiLCJhcmd1bWVudHMkMSIsIm91dHB1dCIsImxvb3NlRXF1YWwiLCJpc09iamVjdEEiLCJpc09iamVjdEIiLCJpc0FycmF5QSIsImlzQXJyYXlCIiwiZXZlcnkiLCJrZXlzQSIsImtleXNCIiwibWl4aW4iLCJiZWZvcmVDcmVhdGUiLCJvcHRpb25zIiwiJG9wdGlvbnMiLCJfX2kxOG4iLCJsb2NhbGVNZXNzYWdlcyIsIm1lcmdlTG9jYWxlTWVzc2FnZSIsIl9pMThuIiwiX2kxOG5XYXRjaGVyIiwid2F0Y2hJMThuRGF0YSIsIiRyb290IiwiJGkxOG4iLCJmYWxsYmFja0xvY2FsZSIsImZvcm1hdEZhbGxiYWNrTWVzc2FnZXMiLCJzaWxlbnRUcmFuc2xhdGlvbldhcm4iLCJzaWxlbnRGYWxsYmFja1dhcm4iLCJwbHVyYWxpemF0aW9uUnVsZXMiLCJwcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQiLCJsb2NhbGVNZXNzYWdlcyQxIiwic2hhcmVkTWVzc2FnZXMiLCJzeW5jIiwiX2xvY2FsZVdhdGNoZXIiLCJ3YXRjaExvY2FsZSIsImJlZm9yZU1vdW50Iiwic3Vic2NyaWJlRGF0YUNoYW5naW5nIiwiX3N1YnNjcmliaW5nIiwiYmVmb3JlRGVzdHJveSIsIiRuZXh0VGljayIsInVuc3Vic2NyaWJlRGF0YUNoYW5naW5nIiwiZGVzdHJveVZNIiwiaW50ZXJwb2xhdGlvbkNvbXBvbmVudCIsImZ1bmN0aW9uYWwiLCJyZXF1aXJlZCIsInBsYWNlcyIsInJlbmRlciIsImgiLCJyZWYiLCJzbG90cyIsImNoaWxkcmVuIiwiQm9vbGVhbiIsIm9ubHlIYXNEZWZhdWx0UGxhY2UiLCJyZWR1Y2UiLCJhc3NpZ25DaGlsZEluZGV4IiwiY3JlYXRlUGFyYW1zRnJvbVBsYWNlcyIsImV2ZXJ5UGxhY2UiLCJjaGlsZCIsInRleHQiLCJ0cmltIiwidm5vZGVIYXNQbGFjZUF0dHJpYnV0ZSIsImFzc2lnbkNoaWxkUGxhY2UiLCJ1c2VMZWdhY3lQbGFjZXMiLCJhdHRycyIsInBsYWNlIiwidm5vZGUiLCJudW1iZXJDb21wb25lbnQiLCJOdW1iZXIiLCJmb3JtYXQiLCJhY2MiLCJwYXJ0cyIsIl9udHAiLCJzbG90Iiwic2NvcGVkU2xvdHMiLCJzdGF0aWNDbGFzcyIsImFzc2VydCIsInQiLCJvbGRWTm9kZSIsInZtIiwiX2xvY2FsZSIsImxvY2FsZUVxdWFsIiwiX2xvY2FsZU1lc3NhZ2UiLCJnZXRMb2NhbGVNZXNzYWdlIiwibW9kaWZpZXJzIiwicHJlc2VydmUiLCJ0ZXh0Q29udGVudCIsIl92dCIsInJlZiQxIiwicmVmJDIiLCJjaG9pY2UiLCJwYXJzZVZhbHVlIiwidGMiLCJtYWtlUGFyYW1zIiwiaW5zdGFsbCIsIl9WdWUiLCJpbnN0YWxsZWQiLCIkdCIsIl9nZXRNZXNzYWdlcyIsIiR0YyIsIl90YyIsIiR0ZSIsIl90ZSIsIiRkIiwiZCIsIiRuIiwiZXh0ZW5kIiwiY29tcG9uZW50IiwiY29uZmlnIiwib3B0aW9uTWVyZ2VTdHJhdGVnaWVzIiwicGFyZW50VmFsIiwiY2hpbGRWYWwiLCJCYXNlRm9ybWF0dGVyIiwiX2NhY2hlcyIsImludGVycG9sYXRlIiwidG9rZW5zIiwicG9zaXRpb24iLCJjaGFyIiwic3ViIiwiaXNDbG9zZWQiLCJSRV9UT0tFTl9MSVNUX1ZBTFVFIiwiUkVfVE9LRU5fTkFNRURfVkFMVUUiLCJjb21waWxlZCIsInRva2VuIiwiY29tcGlsZSIsInBhdGhTdGF0ZU1hY2hpbmUiLCJsaXRlcmFsVmFsdWVSRSIsImdldFBhdGhDaGFyVHlwZSIsImNoIiwiSTE4blBhdGgiLCJfY2FjaGUiLCJwYXJzZVBhdGgiLCJoaXQiLCJuZXdDaGFyIiwidHJhbnNpdGlvbiIsImFjdGlvbiIsInR5cGVNYXAiLCJzdWJQYXRoRGVwdGgiLCJhY3Rpb25zIiwibWF5YmVVbmVzY2FwZVF1b3RlIiwibmV4dENoYXIiLCJ0cmltbWVkIiwiZm9ybWF0U3ViUGF0aCIsInBhcnNlJDEiLCJnZXRQYXRoVmFsdWUiLCJwYXRocyIsImF2YWlsYWJpbGl0aWVzIiwiaHRtbFRhZ01hdGNoZXIiLCJsaW5rS2V5TWF0Y2hlciIsImxpbmtLZXlQcmVmaXhNYXRjaGVyIiwiYnJhY2tldHNNYXRjaGVyIiwiZGVmYXVsdE1vZGlmaWVycyIsInRvTG9jYWxlVXBwZXJDYXNlIiwidG9Mb2NhbGVMb3dlckNhc2UiLCJzdWJzdHIiLCJkZWZhdWx0Rm9ybWF0dGVyIiwidGhpcyQxIiwiZGF0ZVRpbWVGb3JtYXRzIiwibnVtYmVyRm9ybWF0cyIsIl92bSIsIl9mb3JtYXR0ZXIiLCJfbW9kaWZpZXJzIiwiX21pc3NpbmciLCJtaXNzaW5nIiwiX3Jvb3QiLCJfc3luYyIsIl9mYWxsYmFja1Jvb3QiLCJmYWxsYmFja1Jvb3QiLCJfZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyIsIl9zaWxlbnRUcmFuc2xhdGlvbldhcm4iLCJfc2lsZW50RmFsbGJhY2tXYXJuIiwiX2RhdGVUaW1lRm9ybWF0dGVycyIsIl9udW1iZXJGb3JtYXR0ZXJzIiwiX3BhdGgiLCJfZGF0YUxpc3RlbmVycyIsIl9wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQiLCJfd2Fybkh0bWxJbk1lc3NhZ2UiLCJ3YXJuSHRtbEluTWVzc2FnZSIsIl9wb3N0VHJhbnNsYXRpb24iLCJwb3N0VHJhbnNsYXRpb24iLCJfZXhpc3QiLCJfY2hlY2tMb2NhbGVNZXNzYWdlIiwiX2luaXRWTSIsInByb3RvdHlwZUFjY2Vzc29ycyIsImF2YWlsYWJsZUxvY2FsZXMiLCJsZXZlbCIsInNpbGVudCIsIiRkZXN0cm95IiwiJGZvcmNlVXBkYXRlIiwiX2dldERhdGVUaW1lRm9ybWF0cyIsIl9nZXROdW1iZXJGb3JtYXRzIiwic29ydCIsIl9sb2NhbGVDaGFpbkNhY2hlIiwiZmFsbGJhY2siLCJvcmdMZXZlbCIsIl93YXJuRGVmYXVsdCIsImludGVycG9sYXRlTW9kZSIsIm1pc3NpbmdSZXQiLCJwYXJzZWRBcmdzIiwiX3JlbmRlciIsIl9pc0ZhbGxiYWNrUm9vdCIsIl9pc1NpbGVudEZhbGxiYWNrV2FybiIsIl9pc1NpbGVudEZhbGxiYWNrIiwiX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuIiwiX2ludGVycG9sYXRlIiwiaG9zdCIsInZpc2l0ZWRMaW5rU3RhY2siLCJwYXRoUmV0IiwiX2xpbmsiLCJtYXRjaGVzIiwibWF0Y2giLCJpZHgiLCJsaW5rIiwibGlua0tleVByZWZpeE1hdGNoZXMiLCJsaW5rUHJlZml4IiwiZm9ybWF0dGVyTmFtZSIsImxpbmtQbGFjZWhvbGRlciIsInRyYW5zbGF0ZWQiLCJfdHJhbnNsYXRlIiwiX2FwcGVuZEl0ZW1Ub0NoYWluIiwiYmxvY2tzIiwiZm9sbG93IiwiX2FwcGVuZExvY2FsZVRvQ2hhaW4iLCJfYXBwZW5kQmxvY2tUb0NoYWluIiwiYmxvY2siLCJfZ2V0TG9jYWxlQ2hhaW4iLCJzdGFydCIsImRlZmF1bHRzIiwicmVzIiwicHJlZGVmaW5lZCIsImZldGNoQ2hvaWNlIiwiY2hvaWNlcyIsImdldENob2ljZUluZGV4IiwiY2hvaWNlc0xlbmd0aCIsIl9jaG9pY2UiLCJfY2hvaWNlc0xlbmd0aCIsInRlIiwic2V0TG9jYWxlTWVzc2FnZSIsImdldERhdGVUaW1lRm9ybWF0Iiwic2V0RGF0ZVRpbWVGb3JtYXQiLCJfY2xlYXJEYXRlVGltZUZvcm1hdCIsIm1lcmdlRGF0ZVRpbWVGb3JtYXQiLCJfbG9jYWxpemVEYXRlVGltZSIsImZvcm1hdHMiLCJJbnRsIiwiRGF0ZVRpbWVGb3JtYXQiLCJnZXROdW1iZXJGb3JtYXQiLCJzZXROdW1iZXJGb3JtYXQiLCJfY2xlYXJOdW1iZXJGb3JtYXQiLCJtZXJnZU51bWJlckZvcm1hdCIsIl9nZXROdW1iZXJGb3JtYXR0ZXIiLCJOdW1iZXJGb3JtYXQiLCJudW1iZXJGb3JtYXQiLCJmb3JtYXRUb1BhcnRzIiwiaW50bERlZmluZWQiLCJkYXRlVGltZUZvcm1hdCIsIiRjcmVhdGVFbGVtZW50IiwiX3NlbGYiLCJkaXJlY3RpdmVzIiwicmF3TmFtZSIsImN1c3RvbVN5bWJvbCIsImV4cHJlc3Npb24iLCJkb21Qcm9wcyIsImlucHV0IiwiJGV2ZW50IiwiY29tcG9zaW5nIiwiX2wiLCJhdmFpbGFibGVGb3JtYXRzIiwiY2hlY2tlZCIsImN1c3RvbVRyYW5zZm9ybWF0aW9uIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJkaXNwbGF5UGF0dGVybiIsIl93aXRoU3RyaXBwZWQiLCJfX2ZpbGUiLCJsYW5ndWFnZXNDb3VudCIsInNlbGVjdExhbmd1YWdlIiwicmVzZXRMYW5ndWFnZSIsImNsb3NlTW9kYWwiLCJhcHBseUN1c3RvbWl6YXRpb24iLCJjb25maXJtYXRpb24iLCJtb2RhbFRpdGxlIiwiJGVtaXQiLCJjb25maXJtIiwic2NvcGUiLCJkaXNwbGF5Rm9ybWF0Iiwicm9sZSIsImNsb3NlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImNvbmZpcm1MYWJlbCIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsInNjcmlwdEV4cG9ydHMiLCJzdGF0aWNSZW5kZXJGbnMiLCJmdW5jdGlvbmFsVGVtcGxhdGUiLCJpbmplY3RTdHlsZXMiLCJzY29wZUlkIiwibW9kdWxlSWRlbnRpZmllciIsInNoYWRvd01vZGUiLCJob29rIiwiX2NvbXBpbGVkIiwiX3Njb3BlSWQiLCIkdm5vZGUiLCJzc3JDb250ZXh0IiwiX19WVUVfU1NSX0NPTlRFWFRfXyIsIl9yZWdpc3RlcmVkQ29tcG9uZW50cyIsIl9zc3JSZWdpc3RlciIsInNoYWRvd1Jvb3QiLCJfaW5qZWN0U3R5bGVzIiwib3JpZ2luYWxSZW5kZXIiLCJleGlzdGluZyIsIlByb21pc2UkMSIsImRlZmVycmVkIiwiY291bnQiLCJyZXNvbHZlciIsInAiLCJQcm9taXNlT2JqIiwiY2FsbGVkIiwibnRpY2siLCJzaGlmdCIsIm9uUmVzb2x2ZWQiLCJjYXRjaCIsInAkMSIsImZ1bGZpbGxlZCIsInJlamVjdGVkIiwiZmluYWxseSIsImRlYnVnIiwiaW5Ccm93c2VyIiwidG9Mb3dlciIsInRvTG93ZXJDYXNlIiwiaXNTdHJpbmciLCJ3aGVuIiwib3B0cyIsIiR2bSIsImVhY2giLCJfbWVyZ2UiLCJpc0RlZmluZWQiLCJpc0tleU9wZXJhdG9yIiwib3BlcmF0b3IiLCJlbmNvZGVWYWx1ZSIsImVuY29kZVJlc2VydmVkIiwiZW5jb2RlVVJJIiwiVXJsIiwidXJsIiwidHJhbnNmb3JtIiwib3B0aW9ucyQkMSIsInRyYW5zZm9ybXMiLCJmYWN0b3J5Iiwic2VyaWFsaXplIiwiaGFzaCIsImFycmF5IiwicGxhaW4iLCJ4ZHJDbGllbnQiLCJyZXF1ZXN0IiwieGRyIiwiWERvbWFpblJlcXVlc3QiLCJzdGF0dXMiLCJyZXNwb25kV2l0aCIsInJlc3BvbnNlVGV4dCIsImFib3J0IiwiZ2V0VXJsIiwidGltZW91dCIsIm9ubG9hZCIsIm9uYWJvcnQiLCJvbmVycm9yIiwib250aW1lb3V0Iiwib25wcm9ncmVzcyIsInNlbmQiLCJnZXRCb2R5IiwidmFyaWFibGVzIiwidG1wbCIsIm9wZXJhdG9ycyIsInZhcnMiLCJleHBhbmQiLCJfIiwibGl0ZXJhbCIsInZhcmlhYmxlIiwidG1wIiwibW9kaWZpZXIiLCJzdWJzdHJpbmciLCJnZXRWYWx1ZXMiLCJzZXBhcmF0b3IiLCJleHBhbmRlZCIsInF1ZXJ5IiwidXJsUGFyYW1zIiwiZXNjYXBlIiwiZG9jdW1lbnRNb2RlIiwiaHJlZiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJwYXRobmFtZSIsInNlYXJjaCIsIlNVUFBPUlRTX0NPUlMiLCJYTUxIdHRwUmVxdWVzdCIsImpzb25wQ2xpZW50Iiwic2NyaXB0IiwianNvbnAiLCJqc29ucENhbGxiYWNrIiwieGhyQ2xpZW50IiwieGhyIiwic3RhdHVzVGV4dCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJvdyIsImhlYWRlcnMiLCJyZXNwb25zZVR5cGUiLCJ3aXRoQ3JlZGVudGlhbHMiLCJjcmVkZW50aWFscyIsImNyb3NzT3JpZ2luIiwicHJvZ3Jlc3MiLCJkb3dubG9hZFByb2dyZXNzIiwidXBsb2FkIiwidXBsb2FkUHJvZ3Jlc3MiLCJzZXRSZXF1ZXN0SGVhZGVyIiwibm9kZUNsaWVudCIsImNsaWVudCIsInJlc3AiLCJzdGF0dXNDb2RlIiwic3RhdHVzTWVzc2FnZSIsImVycm9yJCQxIiwic2VuZFJlcXVlc3QiLCJIZWFkZXJzIiwiZ2V0TmFtZSIsImN1cnIiLCJnZXRBbGwiLCJub3JtYWxpemVOYW1lIiwiZGVsZXRlIiwiZGVsZXRlQWxsIiwidGhpc0FyZyIsIlJlc3BvbnNlIiwiYm9keVRleHQiLCJCbG9iIiwiYm9keUJsb2IiLCJpc0Jsb2JUZXh0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsInJlYWRBc1RleHQiLCJibG9iVGV4dCIsImJsb2IiLCJqc29uIiwiUmVxdWVzdCIsInRvVXBwZXJDYXNlIiwiSlNPTl9DT05URU5UX1RZUEUiLCJIdHRwIiwicmVxSGFuZGxlcnMiLCJyZXNIYW5kbGVycyIsIkNsaWVudCIsInVuc2hpZnQiLCJpbnRlcmNlcHRvcnMiLCJpbnRlcmNlcHRvciIsIlJlc291cmNlIiwiJGh0dHAiLCJwbHVnaW4iLCJodHRwIiwiJHVybCIsIiRyZXNvdXJjZSIsIiRwcm9taXNlIiwicHV0IiwicG9zdCIsInBhdGNoIiwiY29tbW9uIiwiY3VzdG9tIiwiYmVmb3JlIiwiZW11bGF0ZUhUVFAiLCJmb3JtIiwiRm9ybURhdGEiLCJlbXVsYXRlSlNPTiIsImNvcnMiLCJvcmdVcmwiLCJsb2NhdGlvbiIsInJlcVVybCIsIm1ldGhvZCQkMSIsInNhdmUiLCJsb2NhbHMiLCJsaXN0VG9TdHlsZXMiLCJwYXJlbnRJZCIsInN0eWxlcyIsIm5ld1N0eWxlcyIsImNzcyIsIm1lZGlhIiwic291cmNlTWFwIiwiaGFzRG9jdW1lbnQiLCJERUJVRyIsInN0eWxlc0luRG9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzaW5nbGV0b25FbGVtZW50Iiwic2luZ2xldG9uQ291bnRlciIsImlzUHJvZHVjdGlvbiIsIm5vb3AiLCJzc3JJZEtleSIsImlzT2xkSUUiLCJhZGRTdHlsZXNDbGllbnQiLCJfaXNQcm9kdWN0aW9uIiwiX29wdGlvbnMiLCJhZGRTdHlsZXNUb0RvbSIsIm5ld0xpc3QiLCJtYXlSZW1vdmUiLCJkb21TdHlsZSIsInJlZnMiLCJhZGRTdHlsZSIsImNyZWF0ZVN0eWxlRWxlbWVudCIsInN0eWxlRWxlbWVudCIsInBhcmVudE5vZGUiLCJzdHlsZUluZGV4IiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsImFwcGx5VG9UYWciLCJuZXdPYmoiLCJ0ZXh0U3RvcmUiLCJyZXBsYWNlVGV4dCIsInJlcGxhY2VtZW50Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJjc3NOb2RlIiwiY2hpbGROb2RlcyIsInNzcklkIiwiZmlyc3RDaGlsZCIsImZyZWV6ZSIsInBhcnNlRmxvYXQiLCJpc0Zpbml0ZSIsInUiLCJtIiwieSIsIl9sZW5ndGgiLCJOIiwiRGF0ZSIsImdldFRpbWUiLCJMIiwiTSIsIkkiLCJwcm9kdWN0aW9uVGlwIiwiZGV2dG9vbHMiLCJwZXJmb3JtYW5jZSIsImVycm9ySGFuZGxlciIsIndhcm5IYW5kbGVyIiwiaWdub3JlZEVsZW1lbnRzIiwia2V5Q29kZXMiLCJpc1Jlc2VydmVkVGFnIiwiaXNSZXNlcnZlZEF0dHIiLCJpc1Vua25vd25FbGVtZW50IiwiZ2V0VGFnTmFtZXNwYWNlIiwicGFyc2VQbGF0Zm9ybVRhZ05hbWUiLCJtdXN0VXNlUHJvcCIsIl9saWZlY3ljbGVIb29rcyIsIkgiLCJ6IiwiViIsIldYRW52aXJvbm1lbnQiLCJwbGF0Zm9ybSIsIkoiLCJxIiwiWiIsIlgiLCJZIiwid2F0Y2giLCJRIiwiZWUiLCJlbnYiLCJWVUVfRU5WIiwibmUiLCJfX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fIiwicmUiLCJpZSIsIm9lIiwiUmVmbGVjdCIsIm93bktleXMiLCJTZXQiLCJhZSIsInNlIiwiY2UiLCJzdWJzIiwiYWRkU3ViIiwicmVtb3ZlU3ViIiwiZGVwZW5kIiwiYWRkRGVwIiwidWUiLCJsZSIsImZlIiwicGUiLCJlbG0iLCJucyIsImZuQ29udGV4dCIsImZuT3B0aW9ucyIsImZuU2NvcGVJZCIsImNvbXBvbmVudE9wdGlvbnMiLCJjb21wb25lbnRJbnN0YW5jZSIsInJhdyIsImlzU3RhdGljIiwiaXNSb290SW5zZXJ0IiwiaXNDb21tZW50IiwiaXNDbG9uZWQiLCJpc09uY2UiLCJhc3luY0ZhY3RvcnkiLCJhc3luY01ldGEiLCJpc0FzeW5jUGxhY2Vob2xkZXIiLCJkZSIsInZlIiwiaGUiLCJtZSIsInllIiwiZ2UiLCJfX29iX18iLCJvYnNlcnZlQXJyYXkiLCJkZXAiLCJiZSIsIiRlIiwid2UiLCJ2bUNvdW50Iiwid2FsayIsIkNlIiwiX2lzVnVlIiwieGUiLCJrZSIsIkFlIiwiT2UiLCJTZSIsIlRlIiwiRWUiLCJOZSIsImluamVjdCIsImNvbXB1dGVkIiwicHJvdmlkZSIsImplIiwiRGUiLCJfYmFzZSIsImV4dGVuZHMiLCJtaXhpbnMiLCJMZSIsIk1lIiwiUGUiLCJwcm9wc0RhdGEiLCJfcHJvcHMiLCJJZSIsIkZlIiwiUmUiLCIkcGFyZW50IiwiZXJyb3JDYXB0dXJlZCIsIkJlIiwiSGUiLCJfaGFuZGxlZCIsIlVlIiwiemUiLCJWZSIsIktlIiwiSmUiLCJxZSIsIldlIiwiWmUiLCJHZSIsIlhlIiwiWWUiLCJRZSIsImV0IiwiaXNGcm96ZW4iLCJ0dCIsIm9uY2UiLCJjYXB0dXJlIiwicGFzc2l2ZSIsIm50IiwiZm5zIiwicnQiLCJtZXJnZWQiLCJvdCIsImF0Iiwic3QiLCJfaXNWTGlzdCIsImN0IiwiX3Byb3ZpZGVkIiwidXQiLCJmdCIsIiRzdGFibGUiLCIka2V5IiwiX25vcm1hbGl6ZWQiLCIkaGFzTm9ybWFsIiwicHQiLCJkdCIsInByb3h5IiwidnQiLCJodCIsIiRzY29wZWRTbG90cyIsIiRzbG90cyIsIm10IiwieXQiLCJndCIsImJ0IiwiX3N0YXRpY1RyZWVzIiwid3QiLCJfcmVuZGVyUHJveHkiLCJDdCIsInh0Iiwia3QiLCJBdCIsIk90IiwiU3QiLCJfbyIsIl9xIiwiX20iLCJfZiIsIl9iIiwiX3UiLCJfZyIsIl9wIiwiVHQiLCJfb3JpZ2luYWwiLCJsaXN0ZW5lcnMiLCJpbmplY3Rpb25zIiwiUHQiLCJFdCIsIk50IiwianQiLCJpbml0IiwiX2lzRGVzdHJveWVkIiwia2VlcEFsaXZlIiwicHJlcGF0Y2giLCJfaXNDb21wb25lbnQiLCJfcGFyZW50Vm5vZGUiLCJpbmxpbmVUZW1wbGF0ZSIsIkN0b3IiLCJXdCIsIiRtb3VudCIsIl9yZW5kZXJDaGlsZHJlbiIsIl92bm9kZSIsIiRhdHRycyIsIiRsaXN0ZW5lcnMiLCJfcHJvcEtleXMiLCJfcGFyZW50TGlzdGVuZXJzIiwicXQiLCJpbnNlcnQiLCJfaXNNb3VudGVkIiwiWXQiLCJfaW5hY3RpdmUiLCJYdCIsImRlc3Ryb3kiLCJfZGlyZWN0SW5hY3RpdmUiLCJHdCIsIiRjaGlsZHJlbiIsIkR0IiwiTHQiLCJjaWQiLCJlcnJvckNvbXAiLCJyZXNvbHZlZCIsIkh0Iiwib3duZXJzIiwibG9hZGluZyIsImxvYWRpbmdDb21wIiwiJG9uIiwiY2xlYXJUaW1lb3V0IiwiQnQiLCJkZWxheSIsIm1vZGVsIiwibmF0aXZlT24iLCJhYnN0cmFjdCIsIl9tZXJnZWQiLCJNdCIsInByZSIsImNsYXNzIiwiUnQiLCJVdCIsInp0IiwiVnQiLCJLdCIsIiRvZmYiLCJKdCIsIlp0IiwiX2hhc0hvb2tFdmVudCIsIlF0IiwidG4iLCJubiIsInJuIiwiYW4iLCJzbiIsImNuIiwiY3JlYXRlRXZlbnQiLCJ0aW1lU3RhbXAiLCJfd2F0Y2hlciIsImxuIiwiX3dhdGNoZXJzIiwidXNlciIsImxhenkiLCJjYiIsImFjdGl2ZSIsImRpcnR5IiwiZGVwcyIsIm5ld0RlcHMiLCJkZXBJZHMiLCJuZXdEZXBJZHMiLCJnZXR0ZXIiLCJjbGVhbnVwRGVwcyIsImV2YWx1YXRlIiwidGVhcmRvd24iLCJfaXNCZWluZ0Rlc3Ryb3llZCIsInBuIiwiZG4iLCJobiIsIm1uIiwieW4iLCJnbiIsImNhY2hlIiwiX2NvbXB1dGVkV2F0Y2hlcnMiLCJibiIsInN1cGVyIiwic3VwZXJPcHRpb25zIiwic2VhbGVkT3B0aW9ucyIsImV4dGVuZE9wdGlvbnMiLCJ3biIsIl9pbml0IiwieG4iLCJrbiIsIkFuIiwiT24iLCJfdWlkIiwiX2NvbXBvbmVudFRhZyIsIiRyZWZzIiwiX2V2ZW50cyIsIl9kYXRhIiwidm4iLCIkZGVsZXRlIiwiJG9uY2UiLCJfdXBkYXRlIiwiJGVsIiwiX19wYXRjaF9fIiwiX192dWVfXyIsIlNuIiwiVG4iLCJLZWVwQWxpdmUiLCJpbmNsdWRlIiwiZXhjbHVkZSIsImNyZWF0ZWQiLCJkZXN0cm95ZWQiLCJtb3VudGVkIiwidXRpbCIsIm1lcmdlT3B0aW9ucyIsImRlZmluZVJlYWN0aXZlIiwib2JzZXJ2YWJsZSIsIl9pbnN0YWxsZWRQbHVnaW5zIiwiX0N0b3IiLCJDbiIsIkVuIiwiTm4iLCJqbiIsIkRuIiwiTG4iLCJJbiIsIkZuIiwiUG4iLCJSbiIsIkhuIiwiVW4iLCJ6biIsIlZuIiwiS24iLCJzdmciLCJtYXRoIiwiSm4iLCJxbiIsIlduIiwiWm4iLCJHbiIsIlhuIiwiWW4iLCJRbiIsIm11bHRpcGxlIiwiY3JlYXRlRWxlbWVudE5TIiwiY3JlYXRlQ29tbWVudCIsIm5leHRTaWJsaW5nIiwidGFnTmFtZSIsInNldFRleHRDb250ZW50Iiwic2V0U3R5bGVTY29wZSIsImVyIiwidHIiLCJyZWZJbkZvciIsIm5yIiwicnIiLCJpciIsIm9yIiwiYXIiLCJzciIsInVyIiwib2xkQXJnIiwiZnIiLCJjb21wb25lbnRVcGRhdGVkIiwiaW5zZXJ0ZWQiLCJjciIsImxyIiwicHIiLCJkciIsImluaGVyaXRBdHRycyIsInZyIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJociIsIk1uIiwic2V0QXR0cmlidXRlTlMiLCJfX2llcGgiLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJtciIsInlyIiwiQm4iLCJfdHJhbnNpdGlvbkNsYXNzZXMiLCJfcHJldkNsYXNzIiwiZ3IiLCJfciIsImJyIiwiJHIiLCJ3ciIsIkNyIiwieHIiLCJrciIsIkFyIiwiT3IiLCJTciIsIlRyIiwiRXIiLCJSciIsImR5bmFtaWMiLCJOciIsImR5bmFtaWNBdHRycyIsImpyIiwiYXR0cnNNYXAiLCJhdHRyc0xpc3QiLCJEciIsImlzRHluYW1pY0FyZyIsIkxyIiwiTXIiLCJyaWdodCIsIm1pZGRsZSIsIm5hdGl2ZSIsIm5hdGl2ZUV2ZW50cyIsImV2ZW50cyIsIklyIiwiRnIiLCJQciIsImVuZCIsIkhyIiwiQnIiLCJsYXN0SW5kZXhPZiIsInpyIiwiVnIiLCJVciIsIkpyIiwiS3IiLCJxciIsIkdyIiwiUXIiLCJYciIsIllyIiwiX3dyYXBwZXIiLCJjdXJyZW50VGFyZ2V0Iiwib3duZXJEb2N1bWVudCIsImVpIiwidGkiLCJuaSIsInJpIiwiX3ZhbHVlIiwiaWkiLCJhY3RpdmVFbGVtZW50IiwiX3ZNb2RpZmllcnMiLCJvaSIsImFpIiwic2kiLCJjaSIsInN0YXRpY1N0eWxlIiwidWkiLCJsaSIsImZpIiwicGkiLCJzZXRQcm9wZXJ0eSIsInZpIiwiZGkiLCJoaSIsIm5vcm1hbGl6ZWRTdHlsZSIsIm1pIiwieWkiLCJnaSIsImdldEF0dHJpYnV0ZSIsImJpIiwiJGkiLCJlbnRlckNsYXNzIiwiZW50ZXJUb0NsYXNzIiwiZW50ZXJBY3RpdmVDbGFzcyIsImxlYXZlQ2xhc3MiLCJsZWF2ZVRvQ2xhc3MiLCJsZWF2ZUFjdGl2ZUNsYXNzIiwid2kiLCJDaSIsInhpIiwia2kiLCJBaSIsIk9pIiwiU2kiLCJvbnRyYW5zaXRpb25lbmQiLCJvbndlYmtpdHRyYW5zaXRpb25lbmQiLCJvbmFuaW1hdGlvbmVuZCIsIm9ud2Via2l0YW5pbWF0aW9uZW5kIiwiVGkiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJFaSIsIk5pIiwiamkiLCJEaSIsIk1pIiwicHJvcENvdW50IiwiTGkiLCJnZXRDb21wdXRlZFN0eWxlIiwiSWkiLCJoYXNUcmFuc2Zvcm0iLCJGaSIsIlBpIiwiX2xlYXZlQ2IiLCJjYW5jZWxsZWQiLCJfZW50ZXJDYiIsIm5vZGVUeXBlIiwiYXBwZWFyQ2xhc3MiLCJhcHBlYXJUb0NsYXNzIiwiYXBwZWFyQWN0aXZlQ2xhc3MiLCJiZWZvcmVFbnRlciIsImFmdGVyRW50ZXIiLCJlbnRlckNhbmNlbGxlZCIsImJlZm9yZUFwcGVhciIsImFwcGVhciIsImFmdGVyQXBwZWFyIiwiYXBwZWFyQ2FuY2VsbGVkIiwiQmkiLCJfcGVuZGluZyIsIkhpIiwiUmkiLCJiZWZvcmVMZWF2ZSIsImxlYXZlIiwiYWZ0ZXJMZWF2ZSIsImxlYXZlQ2FuY2VsbGVkIiwiZGVsYXlMZWF2ZSIsIlVpIiwiemkiLCJub2RlT3BzIiwiYWN0aXZhdGUiLCJwZW5kaW5nSW5zZXJ0IiwicG9zdHBhdGNoIiwiaGFzQ2hpbGROb2RlcyIsImhhc0F0dHJpYnV0ZSIsInZtb2RlbCIsIlhpIiwiVmkiLCJfdk9wdGlvbnMiLCJLaSIsIldpIiwiWmkiLCJHaSIsInNvbWUiLCJxaSIsIkppIiwic2VsZWN0ZWQiLCJzZWxlY3RlZEluZGV4IiwiaW5pdEV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIllpIiwiUWkiLCJfX3ZPcmlnaW5hbERpc3BsYXkiLCJlbyIsInRvIiwibm8iLCJybyIsImlvIiwib28iLCJhbyIsIl9sZWF2aW5nIiwic28iLCJtb3ZlQ2xhc3MiLCJjbyIsIl9tb3ZlQ2IiLCJ1byIsIm5ld1BvcyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImxvIiwibGVmdCIsInRvcCIsIm1vdmVkIiwiV2Via2l0VHJhbnNmb3JtIiwidHJhbnNpdGlvbkR1cmF0aW9uIiwiZm8iLCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvbkdyb3VwIiwia2VwdCIsInByZXZDaGlsZHJlbiIsInJlbW92ZWQiLCJ1cGRhdGVkIiwiaGFzTW92ZSIsIl9yZWZsb3ciLCJvZmZzZXRIZWlnaHQiLCJwcm9wZXJ0eU5hbWUiLCJfaGFzTW92ZSIsImNsb25lTm9kZSIsIkhUTUxVbmtub3duRWxlbWVudCIsIkhUTUxFbGVtZW50IiwieW8iLCJwbyIsInZvIiwiaG8iLCJtbyIsInN0YXRpY0tleXMiLCJ0cmFuc2Zvcm1Ob2RlIiwiY2xhc3NCaW5kaW5nIiwiZ2VuRGF0YSIsImdvIiwic3R5bGVCaW5kaW5nIiwiYm8iLCIkbyIsIndvIiwiQ28iLCJ4byIsImtvIiwiQW8iLCJPbyIsIlNvIiwiVG8iLCJFbyIsIk5vIiwiam8iLCJEbyIsIkxvIiwiTW8iLCJJbyIsIkZvIiwiUG8iLCJSbyIsIkhvIiwiQm8iLCJVbyIsInpvIiwiVm8iLCJLbyIsIkpvIiwicW8iLCJXbyIsIlpvIiwiR28iLCJYbyIsIllvIiwiUW8iLCJlYSIsInRhIiwibmEiLCJyYSIsImlhIiwib2EiLCJhYSIsInNhIiwiY2EiLCJ1YSIsIm1hIiwicmF3QXR0cnNNYXAiLCJmYSIsImZvciIsInNsb3RTY29wZSIsInNsb3RUYXJnZXQiLCJzbG90VGFyZ2V0RHluYW1pYyIsInZhIiwic2xvdE5hbWUiLCJoYXNCaW5kaW5ncyIsImhhIiwiY2FtZWwiLCJwYSIsImFsaWFzIiwiaXRlcmF0b3IxIiwiaXRlcmF0b3IyIiwiZGEiLCJpZkNvbmRpdGlvbnMiLCJ5YSIsImdhIiwiJGEiLCJ3YSIsImJhIiwicHJlVHJhbnNmb3JtTm9kZSIsInByb2Nlc3NlZCIsImlmIiwiZWxzZSIsImVsc2VpZiIsIkNhIiwiZXhwZWN0SFRNTCIsImlzUHJlVGFnIiwiaXNVbmFyeVRhZyIsImNhbkJlTGVmdE9wZW5UYWciLCJ4YSIsIkFhIiwiT2EiLCJTYSIsIlRhIiwiZXNjIiwidGFiIiwic3BhY2UiLCJ1cCIsImRvd24iLCJFYSIsIk5hIiwiamEiLCJwcmV2ZW50IiwiY3RybCIsImFsdCIsIkRhIiwiTGEiLCJNYSIsIklhIiwid3JhcExpc3RlbmVycyIsIndyYXBEYXRhIiwiY2xvYWsiLCJGYSIsImRhdGFHZW5GbnMiLCJtYXliZUNvbXBvbmVudCIsIm9uY2VJZCIsIlBhIiwiUmEiLCJzdGF0aWNSb290Iiwic3RhdGljUHJvY2Vzc2VkIiwiSGEiLCJvbmNlUHJvY2Vzc2VkIiwiQmEiLCJmb3JQcm9jZXNzZWQiLCJ6YSIsImlmUHJvY2Vzc2VkIiwiVWEiLCJxYSIsIkdhIiwiVmEiLCJzdGF0aWNJbkZvciIsIkthIiwiSmEiLCJXYSIsIlphIiwiWGEiLCJZYSIsImNvZGUiLCJRYSIsImRlbGltaXRlcnMiLCJlcyIsInRzIiwicHJlc2VydmVXaGl0ZXNwYWNlIiwid2hpdGVzcGFjZSIsImZvcmJpZGRlbiIsImNoYXJzIiwic2hvdWxkS2VlcENvbW1lbnQiLCJjb21tZW50IiwidW5hcnlTbGFzaCIsInNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZiIsInNob3VsZERlY29kZU5ld2xpbmVzIiwibG93ZXJDYXNlZFRhZyIsImNvbW1lbnRzIiwib3V0cHV0U291cmNlUmFuZ2UiLCJsYXN0SW5kZXgiLCJsYSIsIm9wdGltaXplIiwic3RhdGljIiwia2EiLCJhc3QiLCJlcnJvcnMiLCJ0aXBzIiwiY29tcGlsZVRvRnVuY3Rpb25zIiwicnMiLCJvcyIsImFzIiwic3MiLCJjcyIsIm91dGVySFRNTCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJkZWZpbml0aW9uIiwiZ2xvYmFsVGhpcyIsInByZXN0YXNob3AiLCJpbml0Q29tcG9uZW50cyIsIkNob2ljZVRyZWUiLCJlbmFibGVBdXRvQ2hlY2tDaGlsZHJlbiJdLCJtYXBwaW5ncyI6IjtzSkF5QkUsV0FBWUEsSUFBUyxxQkFDbkJDLEtBQUtELFFBQVVBLEVBQ2ZDLEtBQUtDLEtBQU8sMEIsaUtDSGhCLEksSUFBQSxVLElBQ0EsVSxJQUNBLFUsSUFDQSxVLHdFQUdFQyxVLHNCQUNBQyxVLGtCQUNBQyxVLGVBQ0FDLFcsNEpDTEYsVSxJQUNBLFUsSUFDQSxVLG1EQUVBLElBQU1DLEVBQVdDLEVBQVEsT0FTbkJILEUsV0FLSixXQUFZSSxJQUFlLHFCQUN6QlIsS0FBS1Msb0JBQXNCRCxFLG9EQWF0QkUsRUFBUUYsUUFDU0csSUFBbEJILElBQ0ZSLEtBQUtTLG9CQUFzQkQsR0FPN0IsSUFBTUksRUFBTUMsS0FBS0MsSUFBSUosR0FBUUssUUFBUWYsS0FBS1Msb0JBQW9CTyx3QkFUbEMsRUFXS2hCLEtBQUtpQix3QkFBd0JMLEdBWGxDLHFCQVd2Qk0sRUFYdUIsS0FXVkMsRUFYVSxLQWdCeEJDLEVBSkpGLEVBQWNsQixLQUFLcUIsaUJBQWlCSCxJQUNwQ0MsRUFBY25CLEtBQUtzQix3QkFBd0JILE1BTXpDQyxHQTVDZ0MsSUE0Q21CRCxHQUlyRCxJQUFNSSxFQUFVdkIsS0FBS3dCLGVBQWVkLEVBQVMsR0FNN0MsT0FMQVUsRUFBa0JwQixLQUFLeUIsZ0JBQWdCTCxFQUFpQkcsR0FDeERILEVBQWtCcEIsS0FBSzBCLGVBQWVOLEdBRXBCcEIsS0FBSzJCLDRCQUE0QlAsSyw4Q0FtQjdCVixHQUV0QixJQUFNa0IsRUFBU2xCLEVBQU9tQixXQUFXQyxNQUFNLEtBSXZDLE1BQU8sQ0FIYUYsRUFBTyxRQUNR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QUFPQSxXQUMzQyxJQUNDLE9BQU8zakUsTUFBUSxJQUFJcVksU0FBUyxjQUFiLEdBQ2QsTUFBT3ZKLEdBQ1IsR0FBc0IsaUJBQVhoSixPQUFxQixPQUFPQSxRQUxqQixHQ0F4Qnc5RCxFQUFvQnAyQyxFQUFJLENBQUN4YyxFQUFLMUQsSUFBVXdGLE9BQU9ILFVBQVVJLGVBQWVDLEtBQUtoQyxFQUFLMUQsR0NDbEZzMkQsRUFBb0J6NkMsRUFBS3JZLElBQ0gsb0JBQVhtTyxRQUEwQkEsT0FBTzBRLGFBQzFDN2MsT0FBT3FDLGVBQWVyRSxFQUFTbU8sT0FBTzBRLFlBQWEsQ0FBRTFmLE1BQU8sV0FFN0Q2QyxPQUFPcUMsZUFBZXJFLEVBQVMsYUFBYyxDQUFFYixPQUFPLEssbUJDb0J2RCxJLElBQUEsVSxJQUNBLFUsb0RBSUE1SixFQUZZRCxPQUFMQyxJQUVMLFdBQ0FELE9BQU84OUQsV0FBV3RvQyxVQUFVdW9DLGVBQzFCLENBQ0Usc0JBR2UsSUFBSS85RCxPQUFPODlELFdBQVd0b0MsVUFBVXdvQyxXQUFXLzVELFVBQWdCUCxxQkFDbkV1NkQsMEJBQ1UsSUFBSWo2RCxVQUFhQyxXQUN6QisyQyxXIiwiZmlsZSI6ImN1cnJlbmN5X2Zvcm0uYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuY2xhc3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgdGhpcy5uYW1lID0gJ0xvY2FsaXphdGlvbkV4Y2VwdGlvbic7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxpemF0aW9uRXhjZXB0aW9uO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IE51bWJlckZvcm1hdHRlciBmcm9tICdAYXBwL2NsZHIvbnVtYmVyLWZvcm1hdHRlcic7XG5pbXBvcnQgTnVtYmVyU3ltYm9sIGZyb20gJ0BhcHAvY2xkci9udW1iZXItc3ltYm9sJztcbmltcG9ydCBQcmljZVNwZWNpZmljYXRpb24gZnJvbSAnQGFwcC9jbGRyL3NwZWNpZmljYXRpb25zL3ByaWNlJztcbmltcG9ydCBOdW1iZXJTcGVjaWZpY2F0aW9uIGZyb20gJ0BhcHAvY2xkci9zcGVjaWZpY2F0aW9ucy9udW1iZXInO1xuXG5leHBvcnQge1xuICBQcmljZVNwZWNpZmljYXRpb24sXG4gIE51bWJlclNwZWNpZmljYXRpb24sXG4gIE51bWJlckZvcm1hdHRlcixcbiAgTnVtYmVyU3ltYm9sLFxufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbi8qKlxuICogVGhlc2UgcGxhY2Vob2xkZXJzIGFyZSB1c2VkIGluIENMRFIgbnVtYmVyIGZvcm1hdHRpbmcgdGVtcGxhdGVzLlxuICogVGhleSBhcmUgbWVhbnQgdG8gYmUgcmVwbGFjZWQgYnkgdGhlIGNvcnJlY3QgbG9jYWxpemVkIHN5bWJvbHMgaW4gdGhlIG51bWJlciBmb3JtYXR0aW5nIHByb2Nlc3MuXG4gKi9cbmltcG9ydCBOdW1iZXJTeW1ib2wgZnJvbSAnQGFwcC9jbGRyL251bWJlci1zeW1ib2wnO1xuaW1wb3J0IFByaWNlU3BlY2lmaWNhdGlvbiBmcm9tICdAYXBwL2NsZHIvc3BlY2lmaWNhdGlvbnMvcHJpY2UnO1xuaW1wb3J0IE51bWJlclNwZWNpZmljYXRpb24gZnJvbSAnQGFwcC9jbGRyL3NwZWNpZmljYXRpb25zL251bWJlcic7XG5cbmNvbnN0IGVzY2FwZVJFID0gcmVxdWlyZSgnbG9kYXNoLmVzY2FwZXJlZ2V4cCcpO1xuXG5jb25zdCBDVVJSRU5DWV9TWU1CT0xfUExBQ0VIT0xERVIgPSAnwqQnO1xuY29uc3QgREVDSU1BTF9TRVBBUkFUT1JfUExBQ0VIT0xERVIgPSAnLic7XG5jb25zdCBHUk9VUF9TRVBBUkFUT1JfUExBQ0VIT0xERVIgPSAnLCc7XG5jb25zdCBNSU5VU19TSUdOX1BMQUNFSE9MREVSID0gJy0nO1xuY29uc3QgUEVSQ0VOVF9TWU1CT0xfUExBQ0VIT0xERVIgPSAnJSc7XG5jb25zdCBQTFVTX1NJR05fUExBQ0VIT0xERVIgPSAnKyc7XG5cbmNsYXNzIE51bWJlckZvcm1hdHRlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0gTnVtYmVyU3BlY2lmaWNhdGlvbiBzcGVjaWZpY2F0aW9uIE51bWJlciBzcGVjaWZpY2F0aW9uIHRvIGJlIHVzZWRcbiAgICogICAoY2FuIGJlIGEgbnVtYmVyIHNwZWMsIGEgcHJpY2Ugc3BlYywgYSBwZXJjZW50YWdlIHNwZWMpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzcGVjaWZpY2F0aW9uKSB7XG4gICAgdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uID0gc3BlY2lmaWNhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtYXRzIHRoZSBwYXNzZWQgbnVtYmVyIGFjY29yZGluZyB0byBzcGVjaWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIGludHxmbG9hdHxzdHJpbmcgbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0XG4gICAqIEBwYXJhbSBOdW1iZXJTcGVjaWZpY2F0aW9uIHNwZWNpZmljYXRpb24gTnVtYmVyIHNwZWNpZmljYXRpb24gdG8gYmUgdXNlZFxuICAgKiAgIChjYW4gYmUgYSBudW1iZXIgc3BlYywgYSBwcmljZSBzcGVjLCBhIHBlcmNlbnRhZ2Ugc3BlYylcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmcgVGhlIGZvcm1hdHRlZCBudW1iZXJcbiAgICogICAgICAgICAgICAgICAgWW91IHNob3VsZCB1c2UgdGhpcyB0aGlzIHZhbHVlIGZvciBkaXNwbGF5LCB3aXRob3V0IG1vZGlmeWluZyBpdFxuICAgKi9cbiAgZm9ybWF0KG51bWJlciwgc3BlY2lmaWNhdGlvbikge1xuICAgIGlmIChzcGVjaWZpY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbiA9IHNwZWNpZmljYXRpb247XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBXZSBuZWVkIHRvIHdvcmsgb24gdGhlIGFic29sdXRlIHZhbHVlIGZpcnN0LlxuICAgICAqIFRoZW4gdGhlIENMRFIgcGF0dGVybiB3aWxsIGFkZCB0aGUgc2lnbiBpZiByZWxldmFudCAoYXQgdGhlIGVuZCkuXG4gICAgICovXG4gICAgY29uc3QgbnVtID0gTWF0aC5hYnMobnVtYmVyKS50b0ZpeGVkKHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRNYXhGcmFjdGlvbkRpZ2l0cygpKTtcblxuICAgIGxldCBbbWFqb3JEaWdpdHMsIG1pbm9yRGlnaXRzXSA9IHRoaXMuZXh0cmFjdE1ham9yTWlub3JEaWdpdHMobnVtKTtcbiAgICBtYWpvckRpZ2l0cyA9IHRoaXMuc3BsaXRNYWpvckdyb3VwcyhtYWpvckRpZ2l0cyk7XG4gICAgbWlub3JEaWdpdHMgPSB0aGlzLmFkanVzdE1pbm9yRGlnaXRzWmVyb2VzKG1pbm9yRGlnaXRzKTtcblxuICAgIC8vIEFzc2VtYmxlIHRoZSBmaW5hbCBudW1iZXJcbiAgICBsZXQgZm9ybWF0dGVkTnVtYmVyID0gbWFqb3JEaWdpdHM7XG5cbiAgICBpZiAobWlub3JEaWdpdHMpIHtcbiAgICAgIGZvcm1hdHRlZE51bWJlciArPSBERUNJTUFMX1NFUEFSQVRPUl9QTEFDRUhPTERFUiArIG1pbm9yRGlnaXRzO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgZ29vZCBDTERSIGZvcm1hdHRpbmcgcGF0dGVybi4gU2lnbiBpcyBpbXBvcnRhbnQgaGVyZSAhXG4gICAgY29uc3QgcGF0dGVybiA9IHRoaXMuZ2V0Q2xkclBhdHRlcm4obnVtYmVyIDwgMCk7XG4gICAgZm9ybWF0dGVkTnVtYmVyID0gdGhpcy5hZGRQbGFjZWhvbGRlcnMoZm9ybWF0dGVkTnVtYmVyLCBwYXR0ZXJuKTtcbiAgICBmb3JtYXR0ZWROdW1iZXIgPSB0aGlzLnJlcGxhY2VTeW1ib2xzKGZvcm1hdHRlZE51bWJlcik7XG5cbiAgICBmb3JtYXR0ZWROdW1iZXIgPSB0aGlzLnBlcmZvcm1TcGVjaWZpY1JlcGxhY2VtZW50cyhmb3JtYXR0ZWROdW1iZXIpO1xuXG4gICAgcmV0dXJuIGZvcm1hdHRlZE51bWJlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbnVtYmVyJ3MgbWFqb3IgYW5kIG1pbm9yIGRpZ2l0cy5cbiAgICpcbiAgICogTWFqb3IgZGlnaXRzIGFyZSB0aGUgXCJpbnRlZ2VyXCIgcGFydCAoYmVmb3JlIGRlY2ltYWwgc2VwYXJhdG9yKSxcbiAgICogbWlub3IgZGlnaXRzIGFyZSB0aGUgZnJhY3Rpb25hbCBwYXJ0XG4gICAqIFJlc3VsdCB3aWxsIGJlIGFuIGFycmF5IG9mIGV4YWN0bHkgMiBpdGVtczogW21ham9yRGlnaXRzLCBtaW5vckRpZ2l0c11cbiAgICpcbiAgICogVXNhZ2UgZXhhbXBsZTpcbiAgICogIGxpc3QobWFqb3JEaWdpdHMsIG1pbm9yRGlnaXRzKSA9IHRoaXMuZ2V0TWFqb3JNaW5vckRpZ2l0cyhkZWNpbWFsTnVtYmVyKTtcbiAgICpcbiAgICogQHBhcmFtIERlY2ltYWxOdW1iZXIgbnVtYmVyXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nW11cbiAgICovXG4gIGV4dHJhY3RNYWpvck1pbm9yRGlnaXRzKG51bWJlcikge1xuICAgIC8vIEdldCB0aGUgbnVtYmVyJ3MgbWFqb3IgYW5kIG1pbm9yIGRpZ2l0cy5cbiAgICBjb25zdCByZXN1bHQgPSBudW1iZXIudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IG1ham9yRGlnaXRzID0gcmVzdWx0WzBdO1xuICAgIGNvbnN0IG1pbm9yRGlnaXRzID0gKHJlc3VsdFsxXSA9PT0gdW5kZWZpbmVkKSA/ICcnIDogcmVzdWx0WzFdO1xuXG4gICAgcmV0dXJuIFttYWpvckRpZ2l0cywgbWlub3JEaWdpdHNdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwbGl0cyBtYWpvciBkaWdpdHMgaW50byBncm91cHMuXG4gICAqXG4gICAqIGUuZy46IEdpdmVuIHRoZSBtYWpvciBkaWdpdHMgXCIxMjM0NTY3XCIsIGFuZCBtYWpvciBncm91cCBzaXplXG4gICAqICBjb25maWd1cmVkIHRvIDMgZGlnaXRzLCB0aGUgcmVzdWx0IHdvdWxkIGJlIFwiMSAyMzQgNTY3XCJcbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBtYWpvckRpZ2l0cyBUaGUgbWFqb3IgZGlnaXRzIHRvIGJlIGdyb3VwZWRcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmcgVGhlIGdyb3VwZWQgbWFqb3IgZGlnaXRzXG4gICAqL1xuICBzcGxpdE1ham9yR3JvdXBzKGRpZ2l0KSB7XG4gICAgaWYgKCF0aGlzLm51bWJlclNwZWNpZmljYXRpb24uaXNHcm91cGluZ1VzZWQoKSkge1xuICAgICAgcmV0dXJuIGRpZ2l0O1xuICAgIH1cblxuICAgIC8vIFJldmVyc2UgdGhlIG1ham9yIGRpZ2l0cywgc2luY2UgdGhleSBhcmUgZ3JvdXBlZCBmcm9tIHRoZSByaWdodC5cbiAgICBjb25zdCBtYWpvckRpZ2l0cyA9IGRpZ2l0LnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgICAvLyBHcm91cCB0aGUgbWFqb3IgZGlnaXRzLlxuICAgIGxldCBncm91cHMgPSBbXTtcbiAgICBncm91cHMucHVzaChtYWpvckRpZ2l0cy5zcGxpY2UoMCwgdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uLmdldFByaW1hcnlHcm91cFNpemUoKSkpO1xuICAgIHdoaWxlIChtYWpvckRpZ2l0cy5sZW5ndGgpIHtcbiAgICAgIGdyb3Vwcy5wdXNoKG1ham9yRGlnaXRzLnNwbGljZSgwLCB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0U2Vjb25kYXJ5R3JvdXBTaXplKCkpKTtcbiAgICB9XG5cbiAgICAvLyBSZXZlcnNlIGJhY2sgdGhlIGRpZ2l0cyBhbmQgdGhlIGdyb3Vwc1xuICAgIGdyb3VwcyA9IGdyb3Vwcy5yZXZlcnNlKCk7XG4gICAgY29uc3QgbmV3R3JvdXBzID0gW107XG4gICAgZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICBuZXdHcm91cHMucHVzaChncm91cC5yZXZlcnNlKCkuam9pbignJykpO1xuICAgIH0pO1xuXG4gICAgLy8gUmVjb25zdHJ1Y3QgdGhlIG1ham9yIGRpZ2l0cy5cbiAgICByZXR1cm4gbmV3R3JvdXBzLmpvaW4oR1JPVVBfU0VQQVJBVE9SX1BMQUNFSE9MREVSKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9yIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXMsIGRlcGVuZGluZyBvbiBzcGVjaWZpZWQgbWluIGFuZCBtYXggZnJhY3Rpb24gZGlnaXRzIG51bWJlcnMuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgbWlub3JEaWdpdHMgRGlnaXRzIHRvIGJlIGFkanVzdGVkIHdpdGggKHRyaW1tZWQgb3IgcGFkZGVkKSB6ZXJvZXNcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmcgVGhlIGFkanVzdGVkIG1pbm9yIGRpZ2l0c1xuICAgKi9cbiAgYWRqdXN0TWlub3JEaWdpdHNaZXJvZXMobWlub3JEaWdpdHMpIHtcbiAgICBsZXQgZGlnaXQgPSBtaW5vckRpZ2l0cztcblxuICAgIGlmIChkaWdpdC5sZW5ndGggPiB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0TWF4RnJhY3Rpb25EaWdpdHMoKSkge1xuICAgICAgLy8gU3RyaXAgYW55IHRyYWlsaW5nIHplcm9lcy5cbiAgICAgIGRpZ2l0ID0gZGlnaXQucmVwbGFjZSgvMCskLywgJycpO1xuICAgIH1cblxuICAgIGlmIChkaWdpdC5sZW5ndGggPCB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0TWluRnJhY3Rpb25EaWdpdHMoKSkge1xuICAgICAgLy8gUmUtYWRkIG5lZWRlZCB6ZXJvZXNcbiAgICAgIGRpZ2l0ID0gZGlnaXQucGFkRW5kKFxuICAgICAgICB0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0TWluRnJhY3Rpb25EaWdpdHMoKSxcbiAgICAgICAgJzAnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBDTERSIGZvcm1hdHRpbmcgcGF0dGVybi5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vY2xkci51bmljb2RlLm9yZy90cmFuc2xhdGlvbi9udW1iZXItcGF0dGVybnNcbiAgICpcbiAgICogQHBhcmFtIGJvb2wgaXNOZWdhdGl2ZSBJZiB0cnVlLCB0aGUgbmVnYXRpdmUgcGF0dGVyblxuICAgKiB3aWxsIGJlIHJldHVybmVkIGluc3RlYWQgb2YgdGhlIHBvc2l0aXZlIG9uZVxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgQ0xEUiBmb3JtYXR0aW5nIHBhdHRlcm5cbiAgICovXG4gIGdldENsZHJQYXR0ZXJuKGlzTmVnYXRpdmUpIHtcbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcmV0dXJuIHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXROZWdhdGl2ZVBhdHRlcm4oKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5udW1iZXJTcGVjaWZpY2F0aW9uLmdldFBvc2l0aXZlUGF0dGVybigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgcGxhY2Vob2xkZXIgbnVtYmVyIHN5bWJvbHMgd2l0aCByZWxldmFudCBudW1iZXJpbmcgc3lzdGVtJ3Mgc3ltYm9scy5cbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBudW1iZXJcbiAgICogICAgICAgICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgdG8gcHJvY2Vzc1xuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKiAgICAgICAgICAgICAgICBUaGUgbnVtYmVyIHdpdGggcmVwbGFjZWQgc3ltYm9sc1xuICAgKi9cbiAgcmVwbGFjZVN5bWJvbHMobnVtYmVyKSB7XG4gICAgY29uc3Qgc3ltYm9scyA9IHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbi5nZXRTeW1ib2woKTtcblxuICAgIGNvbnN0IG1hcCA9IHt9O1xuICAgIG1hcFtERUNJTUFMX1NFUEFSQVRPUl9QTEFDRUhPTERFUl0gPSBzeW1ib2xzLmdldERlY2ltYWwoKTtcbiAgICBtYXBbR1JPVVBfU0VQQVJBVE9SX1BMQUNFSE9MREVSXSA9IHN5bWJvbHMuZ2V0R3JvdXAoKTtcbiAgICBtYXBbTUlOVVNfU0lHTl9QTEFDRUhPTERFUl0gPSBzeW1ib2xzLmdldE1pbnVzU2lnbigpO1xuICAgIG1hcFtQRVJDRU5UX1NZTUJPTF9QTEFDRUhPTERFUl0gPSBzeW1ib2xzLmdldFBlcmNlbnRTaWduKCk7XG4gICAgbWFwW1BMVVNfU0lHTl9QTEFDRUhPTERFUl0gPSBzeW1ib2xzLmdldFBsdXNTaWduKCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJ0cihudW1iZXIsIG1hcCk7XG4gIH1cblxuICAvKipcbiAgICogc3RydHIoKSBmb3IgSmF2YVNjcmlwdFxuICAgKiBUcmFuc2xhdGUgY2hhcmFjdGVycyBvciByZXBsYWNlIHN1YnN0cmluZ3NcbiAgICpcbiAgICogQHBhcmFtIHN0clxuICAgKiAgU3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSBwYWlyc1xuICAgKiAgSGFzaCBvZiAoJ2Zyb20nID0+ICd0bycsIC4uLikuXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBzdHJ0cihzdHIsIHBhaXJzKSB7XG4gICAgY29uc3Qgc3Vic3RycyA9IE9iamVjdC5rZXlzKHBhaXJzKS5tYXAoZXNjYXBlUkUpO1xuXG4gICAgcmV0dXJuIHN0ci5zcGxpdChSZWdFeHAoYCgke3N1YnN0cnMuam9pbignfCcpfSlgKSlcbiAgICAgIC5tYXAoKHBhcnQpID0+IHBhaXJzW3BhcnRdIHx8IHBhcnQpXG4gICAgICAuam9pbignJyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG1pc3NpbmcgcGxhY2Vob2xkZXJzIHRvIHRoZSBudW1iZXIgdXNpbmcgdGhlIHBhc3NlZCBDTERSIHBhdHRlcm4uXG4gICAqXG4gICAqIE1pc3NpbmcgcGxhY2Vob2xkZXJzIGNhbiBiZSB0aGUgcGVyY2VudCBzaWduLCBjdXJyZW5jeSBzeW1ib2wsIGV0Yy5cbiAgICpcbiAgICogZS5nLiB3aXRoIGEgY3VycmVuY3kgQ0xEUiBwYXR0ZXJuOlxuICAgKiAgLSBQYXNzZWQgbnVtYmVyIChwYXJ0aWFsbHkgZm9ybWF0dGVkKTogMSwyMzQuNTY3XG4gICAqICAtIFJldHVybmVkIG51bWJlcjogMSwyMzQuNTY3IMKkXG4gICAqICAoXCLCpFwiIHN5bWJvbCBpcyB0aGUgY3VycmVuY3kgc3ltYm9sIHBsYWNlaG9sZGVyKVxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly9jbGRyLnVuaWNvZGUub3JnL3RyYW5zbGF0aW9uL251bWJlci1wYXR0ZXJuc1xuICAgKlxuICAgKiBAcGFyYW0gZm9ybWF0dGVkTnVtYmVyXG4gICAqICBOdW1iZXIgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0gcGF0dGVyblxuICAgKiAgQ0xEUiBmb3JtYXR0aW5nIHBhdHRlcm4gdG8gdXNlXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBhZGRQbGFjZWhvbGRlcnMoZm9ybWF0dGVkTnVtYmVyLCBwYXR0ZXJuKSB7XG4gICAgLypcbiAgICAgKiBSZWdleCBncm91cHMgZXhwbGFuYXRpb246XG4gICAgICogIyAgICAgICAgICA6IGxpdGVyYWwgXCIjXCIgY2hhcmFjdGVyLiBPbmNlLlxuICAgICAqICgsIyspKiAgICAgOiBhbnkgb3RoZXIgXCIjXCIgY2hhcmFjdGVycyBncm91cCwgc2VwYXJhdGVkIGJ5IFwiLFwiLiBaZXJvIHRvIGluZmluaXR5IHRpbWVzLlxuICAgICAqIDAgICAgICAgICAgOiBsaXRlcmFsIFwiMFwiIGNoYXJhY3Rlci4gT25jZS5cbiAgICAgKiAoXFwuWzAjXSspKiA6IGFueSBjb21iaW5hdGlvbiBvZiBcIjBcIiBhbmQgXCIjXCIgY2hhcmFjdGVycyBncm91cHMsIHNlcGFyYXRlZCBieSAnLicuXG4gICAgICogICAgICAgICAgICAgIFplcm8gdG8gaW5maW5pdHkgdGltZXMuXG4gICAgICovXG4gICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZSgvIz8oLCMrKSowKFxcLlswI10rKSovLCBmb3JtYXR0ZWROdW1iZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gc29tZSBtb3JlIHNwZWNpZmljIHJlcGxhY2VtZW50cy5cbiAgICpcbiAgICogU3BlY2lmaWMgcmVwbGFjZW1lbnRzIGFyZSBuZWVkZWQgd2hlbiBudW1iZXIgc3BlY2lmaWNhdGlvbiBpcyBleHRlbmRlZC5cbiAgICogRm9yIGluc3RhbmNlLCBwcmljZXMgaGF2ZSBhbiBleHRlbmRlZCBudW1iZXIgc3BlY2lmaWNhdGlvbiBpbiBvcmRlciB0b1xuICAgKiBhZGQgY3VycmVuY3kgc3ltYm9sIHRvIHRoZSBmb3JtYXR0ZWQgbnVtYmVyLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIGZvcm1hdHRlZE51bWJlclxuICAgKlxuICAgKiBAcmV0dXJuIG1peGVkXG4gICAqL1xuICBwZXJmb3JtU3BlY2lmaWNSZXBsYWNlbWVudHMoZm9ybWF0dGVkTnVtYmVyKSB7XG4gICAgaWYgKHRoaXMubnVtYmVyU3BlY2lmaWNhdGlvbiBpbnN0YW5jZW9mIFByaWNlU3BlY2lmaWNhdGlvbikge1xuICAgICAgcmV0dXJuIGZvcm1hdHRlZE51bWJlclxuICAgICAgICAuc3BsaXQoQ1VSUkVOQ1lfU1lNQk9MX1BMQUNFSE9MREVSKVxuICAgICAgICAuam9pbih0aGlzLm51bWJlclNwZWNpZmljYXRpb24uZ2V0Q3VycmVuY3lTeW1ib2woKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZE51bWJlcjtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChzcGVjaWZpY2F0aW9ucykge1xuICAgIGxldCBzeW1ib2w7XG5cbiAgICBpZiAodW5kZWZpbmVkICE9PSBzcGVjaWZpY2F0aW9ucy5udW1iZXJTeW1ib2xzKSB7XG4gICAgICBzeW1ib2wgPSBuZXcgTnVtYmVyU3ltYm9sKC4uLnNwZWNpZmljYXRpb25zLm51bWJlclN5bWJvbHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzeW1ib2wgPSBuZXcgTnVtYmVyU3ltYm9sKC4uLnNwZWNpZmljYXRpb25zLnN5bWJvbCk7XG4gICAgfVxuXG4gICAgbGV0IHNwZWNpZmljYXRpb247XG5cbiAgICBpZiAoc3BlY2lmaWNhdGlvbnMuY3VycmVuY3lTeW1ib2wpIHtcbiAgICAgIHNwZWNpZmljYXRpb24gPSBuZXcgUHJpY2VTcGVjaWZpY2F0aW9uKFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5wb3NpdGl2ZVBhdHRlcm4sXG4gICAgICAgIHNwZWNpZmljYXRpb25zLm5lZ2F0aXZlUGF0dGVybixcbiAgICAgICAgc3ltYm9sLFxuICAgICAgICBwYXJzZUludChzcGVjaWZpY2F0aW9ucy5tYXhGcmFjdGlvbkRpZ2l0cywgMTApLFxuICAgICAgICBwYXJzZUludChzcGVjaWZpY2F0aW9ucy5taW5GcmFjdGlvbkRpZ2l0cywgMTApLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5ncm91cGluZ1VzZWQsXG4gICAgICAgIHNwZWNpZmljYXRpb25zLnByaW1hcnlHcm91cFNpemUsXG4gICAgICAgIHNwZWNpZmljYXRpb25zLnNlY29uZGFyeUdyb3VwU2l6ZSxcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMuY3VycmVuY3lTeW1ib2wsXG4gICAgICAgIHNwZWNpZmljYXRpb25zLmN1cnJlbmN5Q29kZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNwZWNpZmljYXRpb24gPSBuZXcgTnVtYmVyU3BlY2lmaWNhdGlvbihcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMucG9zaXRpdmVQYXR0ZXJuLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5uZWdhdGl2ZVBhdHRlcm4sXG4gICAgICAgIHN5bWJvbCxcbiAgICAgICAgcGFyc2VJbnQoc3BlY2lmaWNhdGlvbnMubWF4RnJhY3Rpb25EaWdpdHMsIDEwKSxcbiAgICAgICAgcGFyc2VJbnQoc3BlY2lmaWNhdGlvbnMubWluRnJhY3Rpb25EaWdpdHMsIDEwKSxcbiAgICAgICAgc3BlY2lmaWNhdGlvbnMuZ3JvdXBpbmdVc2VkLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5wcmltYXJ5R3JvdXBTaXplLFxuICAgICAgICBzcGVjaWZpY2F0aW9ucy5zZWNvbmRhcnlHcm91cFNpemUsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgTnVtYmVyRm9ybWF0dGVyKHNwZWNpZmljYXRpb24pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE51bWJlckZvcm1hdHRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCBMb2NhbGl6YXRpb25FeGNlcHRpb24gZnJvbSAnQGFwcC9jbGRyL2V4Y2VwdGlvbi9sb2NhbGl6YXRpb24nO1xuXG5jbGFzcyBOdW1iZXJTeW1ib2wge1xuICAvKipcbiAgICogTnVtYmVyU3ltYm9sTGlzdCBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIHN0cmluZyBkZWNpbWFsIERlY2ltYWwgc2VwYXJhdG9yIGNoYXJhY3RlclxuICAgKiBAcGFyYW0gc3RyaW5nIGdyb3VwIERpZ2l0cyBncm91cCBzZXBhcmF0b3IgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgbGlzdCBMaXN0IGVsZW1lbnRzIHNlcGFyYXRvciBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBwZXJjZW50U2lnbiBQZXJjZW50IHNpZ24gY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgbWludXNTaWduIE1pbnVzIHNpZ24gY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgcGx1c1NpZ24gUGx1cyBzaWduIGNoYXJhY3RlclxuICAgKiBAcGFyYW0gc3RyaW5nIGV4cG9uZW50aWFsIEV4cG9uZW50aWFsIGNoYXJhY3RlclxuICAgKiBAcGFyYW0gc3RyaW5nIHN1cGVyc2NyaXB0aW5nRXhwb25lbnQgU3VwZXJzY3JpcHRpbmcgZXhwb25lbnQgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSBzdHJpbmcgcGVyTWlsbGUgUGVybWlsbGUgc2lnbiBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHN0cmluZyBpbmZpbml0eSBUaGUgaW5maW5pdHkgc2lnbi4gQ29ycmVzcG9uZHMgdG8gdGhlIElFRUUgaW5maW5pdHkgYml0IHBhdHRlcm4uXG4gICAqIEBwYXJhbSBzdHJpbmcgbmFuIFRoZSBOYU4gKE5vdCBBIE51bWJlcikgc2lnbi4gQ29ycmVzcG9uZHMgdG8gdGhlIElFRUUgTmFOIGJpdCBwYXR0ZXJuLlxuICAgKlxuICAgKiBAdGhyb3dzIExvY2FsaXphdGlvbkV4Y2VwdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZGVjaW1hbCxcbiAgICBncm91cCxcbiAgICBsaXN0LFxuICAgIHBlcmNlbnRTaWduLFxuICAgIG1pbnVzU2lnbixcbiAgICBwbHVzU2lnbixcbiAgICBleHBvbmVudGlhbCxcbiAgICBzdXBlcnNjcmlwdGluZ0V4cG9uZW50LFxuICAgIHBlck1pbGxlLFxuICAgIGluZmluaXR5LFxuICAgIG5hbixcbiAgKSB7XG4gICAgdGhpcy5kZWNpbWFsID0gZGVjaW1hbDtcbiAgICB0aGlzLmdyb3VwID0gZ3JvdXA7XG4gICAgdGhpcy5saXN0ID0gbGlzdDtcbiAgICB0aGlzLnBlcmNlbnRTaWduID0gcGVyY2VudFNpZ247XG4gICAgdGhpcy5taW51c1NpZ24gPSBtaW51c1NpZ247XG4gICAgdGhpcy5wbHVzU2lnbiA9IHBsdXNTaWduO1xuICAgIHRoaXMuZXhwb25lbnRpYWwgPSBleHBvbmVudGlhbDtcbiAgICB0aGlzLnN1cGVyc2NyaXB0aW5nRXhwb25lbnQgPSBzdXBlcnNjcmlwdGluZ0V4cG9uZW50O1xuICAgIHRoaXMucGVyTWlsbGUgPSBwZXJNaWxsZTtcbiAgICB0aGlzLmluZmluaXR5ID0gaW5maW5pdHk7XG4gICAgdGhpcy5uYW4gPSBuYW47XG5cbiAgICB0aGlzLnZhbGlkYXRlRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXREZWNpbWFsKCkge1xuICAgIHJldHVybiB0aGlzLmRlY2ltYWw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBkaWdpdCBncm91cHMgc2VwYXJhdG9yLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0R3JvdXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IGVsZW1lbnRzIHNlcGFyYXRvci5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldExpc3QoKSB7XG4gICAgcmV0dXJuIHRoaXMubGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHBlcmNlbnQgc2lnbi5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldFBlcmNlbnRTaWduKCkge1xuICAgIHJldHVybiB0aGlzLnBlcmNlbnRTaWduO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXMgc2lnbi5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldE1pbnVzU2lnbigpIHtcbiAgICByZXR1cm4gdGhpcy5taW51c1NpZ247XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBwbHVzIHNpZ24uXG4gICAqXG4gICAqIEByZXR1cm4gc3RyaW5nXG4gICAqL1xuICBnZXRQbHVzU2lnbigpIHtcbiAgICByZXR1cm4gdGhpcy5wbHVzU2lnbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGV4cG9uZW50aWFsIGNoYXJhY3Rlci5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldEV4cG9uZW50aWFsKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9uZW50aWFsO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXhwb25lbnQgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0U3VwZXJzY3JpcHRpbmdFeHBvbmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdXBlcnNjcmlwdGluZ0V4cG9uZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEdlcnQgdGhlIHBlciBtaWxsZSBzeW1ib2wgKG9mdGVuIFwi4oCwXCIpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Blcl9taWxsZVxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0UGVyTWlsbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGVyTWlsbGU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpbmZpbml0eSBzeW1ib2wgKG9mdGVuIFwi4oieXCIpLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0luZmluaXR5X3N5bWJvbFxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0SW5maW5pdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5maW5pdHk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBOYU4gKG5vdCBhIG51bWJlcikgc2lnbi5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldE5hbigpIHtcbiAgICByZXR1cm4gdGhpcy5uYW47XG4gIH1cblxuICAvKipcbiAgICogU3ltYm9scyBsaXN0IHZhbGlkYXRpb24uXG4gICAqXG4gICAqIEB0aHJvd3MgTG9jYWxpemF0aW9uRXhjZXB0aW9uXG4gICAqL1xuICB2YWxpZGF0ZURhdGEoKSB7XG4gICAgaWYgKCF0aGlzLmRlY2ltYWwgfHwgdHlwZW9mIHRoaXMuZGVjaW1hbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgZGVjaW1hbCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5ncm91cCB8fCB0eXBlb2YgdGhpcy5ncm91cCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgZ3JvdXAnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubGlzdCB8fCB0eXBlb2YgdGhpcy5saXN0ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBzeW1ib2wgbGlzdCcpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5wZXJjZW50U2lnbiB8fCB0eXBlb2YgdGhpcy5wZXJjZW50U2lnbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgcGVyY2VudFNpZ24nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubWludXNTaWduIHx8IHR5cGVvZiB0aGlzLm1pbnVzU2lnbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgbWludXNTaWduJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBsdXNTaWduIHx8IHR5cGVvZiB0aGlzLnBsdXNTaWduICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBwbHVzU2lnbicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5leHBvbmVudGlhbCB8fCB0eXBlb2YgdGhpcy5leHBvbmVudGlhbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgZXhwb25lbnRpYWwnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3VwZXJzY3JpcHRpbmdFeHBvbmVudCB8fCB0eXBlb2YgdGhpcy5zdXBlcnNjcmlwdGluZ0V4cG9uZW50ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBzdXBlcnNjcmlwdGluZ0V4cG9uZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBlck1pbGxlIHx8IHR5cGVvZiB0aGlzLnBlck1pbGxlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBwZXJNaWxsZScpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pbmZpbml0eSB8fCB0eXBlb2YgdGhpcy5pbmZpbml0eSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgaW5maW5pdHknKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubmFuIHx8IHR5cGVvZiB0aGlzLm5hbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgbmFuJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE51bWJlclN5bWJvbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCBMb2NhbGl6YXRpb25FeGNlcHRpb24gZnJvbSAnQGFwcC9jbGRyL2V4Y2VwdGlvbi9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IE51bWJlclN5bWJvbCBmcm9tICdAYXBwL2NsZHIvbnVtYmVyLXN5bWJvbCc7XG5cbmNsYXNzIE51bWJlclNwZWNpZmljYXRpb24ge1xuICAvKipcbiAgICogTnVtYmVyIHNwZWNpZmljYXRpb24gY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBzdHJpbmcgcG9zaXRpdmVQYXR0ZXJuIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuIGZvciBwb3NpdGl2ZSBhbW91bnRzXG4gICAqIEBwYXJhbSBzdHJpbmcgbmVnYXRpdmVQYXR0ZXJuIENMRFIgZm9ybWF0dGluZyBwYXR0ZXJuIGZvciBuZWdhdGl2ZSBhbW91bnRzXG4gICAqIEBwYXJhbSBOdW1iZXJTeW1ib2wgc3ltYm9sIE51bWJlciBzeW1ib2xcbiAgICogQHBhcmFtIGludCBtYXhGcmFjdGlvbkRpZ2l0cyBNYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIGludCBtaW5GcmFjdGlvbkRpZ2l0cyBNaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBzZXBhcmF0b3JcbiAgICogQHBhcmFtIGJvb2wgZ3JvdXBpbmdVc2VkIElzIGRpZ2l0cyBncm91cGluZyB1c2VkID9cbiAgICogQHBhcmFtIGludCBwcmltYXJ5R3JvdXBTaXplIFNpemUgb2YgcHJpbWFyeSBkaWdpdHMgZ3JvdXAgaW4gdGhlIG51bWJlclxuICAgKiBAcGFyYW0gaW50IHNlY29uZGFyeUdyb3VwU2l6ZSBTaXplIG9mIHNlY29uZGFyeSBkaWdpdHMgZ3JvdXAgaW4gdGhlIG51bWJlclxuICAgKlxuICAgKiBAdGhyb3dzIExvY2FsaXphdGlvbkV4Y2VwdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcG9zaXRpdmVQYXR0ZXJuLFxuICAgIG5lZ2F0aXZlUGF0dGVybixcbiAgICBzeW1ib2wsXG4gICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgbWluRnJhY3Rpb25EaWdpdHMsXG4gICAgZ3JvdXBpbmdVc2VkLFxuICAgIHByaW1hcnlHcm91cFNpemUsXG4gICAgc2Vjb25kYXJ5R3JvdXBTaXplLFxuICApIHtcbiAgICB0aGlzLnBvc2l0aXZlUGF0dGVybiA9IHBvc2l0aXZlUGF0dGVybjtcbiAgICB0aGlzLm5lZ2F0aXZlUGF0dGVybiA9IG5lZ2F0aXZlUGF0dGVybjtcbiAgICB0aGlzLnN5bWJvbCA9IHN5bWJvbDtcblxuICAgIHRoaXMubWF4RnJhY3Rpb25EaWdpdHMgPSBtYXhGcmFjdGlvbkRpZ2l0cztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB0aGlzLm1pbkZyYWN0aW9uRGlnaXRzID0gbWF4RnJhY3Rpb25EaWdpdHMgPCBtaW5GcmFjdGlvbkRpZ2l0cyA/IG1heEZyYWN0aW9uRGlnaXRzIDogbWluRnJhY3Rpb25EaWdpdHM7XG5cbiAgICB0aGlzLmdyb3VwaW5nVXNlZCA9IGdyb3VwaW5nVXNlZDtcbiAgICB0aGlzLnByaW1hcnlHcm91cFNpemUgPSBwcmltYXJ5R3JvdXBTaXplO1xuICAgIHRoaXMuc2Vjb25kYXJ5R3JvdXBTaXplID0gc2Vjb25kYXJ5R3JvdXBTaXplO1xuXG4gICAgaWYgKCF0aGlzLnBvc2l0aXZlUGF0dGVybiB8fCB0eXBlb2YgdGhpcy5wb3NpdGl2ZVBhdHRlcm4gIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHBvc2l0aXZlUGF0dGVybicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5uZWdhdGl2ZVBhdHRlcm4gfHwgdHlwZW9mIHRoaXMubmVnYXRpdmVQYXR0ZXJuICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBuZWdhdGl2ZVBhdHRlcm4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuc3ltYm9sIHx8ICEodGhpcy5zeW1ib2wgaW5zdGFuY2VvZiBOdW1iZXJTeW1ib2wpKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIHN5bWJvbCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cyAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgbWF4RnJhY3Rpb25EaWdpdHMnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHRoaXMubWluRnJhY3Rpb25EaWdpdHMgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIG1pbkZyYWN0aW9uRGlnaXRzJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmdyb3VwaW5nVXNlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgTG9jYWxpemF0aW9uRXhjZXB0aW9uKCdJbnZhbGlkIGdyb3VwaW5nVXNlZCcpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy5wcmltYXJ5R3JvdXBTaXplICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IExvY2FsaXphdGlvbkV4Y2VwdGlvbignSW52YWxpZCBwcmltYXJ5R3JvdXBTaXplJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNlY29uZGFyeUdyb3VwU2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgc2Vjb25kYXJ5R3JvdXBTaXplJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBzeW1ib2wuXG4gICAqXG4gICAqIEByZXR1cm4gTnVtYmVyU3ltYm9sXG4gICAqL1xuICBnZXRTeW1ib2woKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZm9ybWF0dGluZyBydWxlcyBmb3IgdGhpcyBudW1iZXIgKHdoZW4gcG9zaXRpdmUpLlxuICAgKlxuICAgKiBUaGlzIHBhdHRlcm4gdXNlcyB0aGUgVW5pY29kZSBDTERSIG51bWJlciBwYXR0ZXJuIHN5bnRheFxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0UG9zaXRpdmVQYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLnBvc2l0aXZlUGF0dGVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZvcm1hdHRpbmcgcnVsZXMgZm9yIHRoaXMgbnVtYmVyICh3aGVuIG5lZ2F0aXZlKS5cbiAgICpcbiAgICogVGhpcyBwYXR0ZXJuIHVzZXMgdGhlIFVuaWNvZGUgQ0xEUiBudW1iZXIgcGF0dGVybiBzeW50YXhcbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldE5lZ2F0aXZlUGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZVBhdHRlcm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBzZXBhcmF0b3IgKHJvdW5kaW5nIGlmIG5lZWRlZCkuXG4gICAqXG4gICAqIEByZXR1cm4gaW50XG4gICAqL1xuICBnZXRNYXhGcmFjdGlvbkRpZ2l0cygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXhGcmFjdGlvbkRpZ2l0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHNlcGFyYXRvciAoZmlsbCB3aXRoIFwiMFwiIGlmIG5lZWRlZCkuXG4gICAqXG4gICAqIEByZXR1cm4gaW50XG4gICAqL1xuICBnZXRNaW5GcmFjdGlvbkRpZ2l0cygpIHtcbiAgICByZXR1cm4gdGhpcy5taW5GcmFjdGlvbkRpZ2l0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFwiZ3JvdXBpbmdcIiBmbGFnLiBUaGlzIGZsYWcgZGVmaW5lcyBpZiBkaWdpdHNcbiAgICogZ3JvdXBpbmcgc2hvdWxkIGJlIHVzZWQgd2hlbiBmb3JtYXR0aW5nIHRoaXMgbnVtYmVyLlxuICAgKlxuICAgKiBAcmV0dXJuIGJvb2xcbiAgICovXG4gIGlzR3JvdXBpbmdVc2VkKCkge1xuICAgIHJldHVybiB0aGlzLmdyb3VwaW5nVXNlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpemUgb2YgcHJpbWFyeSBkaWdpdHMgZ3JvdXAgaW4gdGhlIG51bWJlci5cbiAgICpcbiAgICogQHJldHVybiBpbnRcbiAgICovXG4gIGdldFByaW1hcnlHcm91cFNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJpbWFyeUdyb3VwU2l6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpemUgb2Ygc2Vjb25kYXJ5IGRpZ2l0cyBncm91cHMgaW4gdGhlIG51bWJlci5cbiAgICpcbiAgICogQHJldHVybiBpbnRcbiAgICovXG4gIGdldFNlY29uZGFyeUdyb3VwU2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zZWNvbmRhcnlHcm91cFNpemU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTnVtYmVyU3BlY2lmaWNhdGlvbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi9cbmltcG9ydCBMb2NhbGl6YXRpb25FeGNlcHRpb24gZnJvbSAnQGFwcC9jbGRyL2V4Y2VwdGlvbi9sb2NhbGl6YXRpb24nO1xuaW1wb3J0IE51bWJlclNwZWNpZmljYXRpb24gZnJvbSAnQGFwcC9jbGRyL3NwZWNpZmljYXRpb25zL251bWJlcic7XG5cbi8qKlxuICogQ3VycmVuY3kgZGlzcGxheSBvcHRpb246IHN5bWJvbCBub3RhdGlvbi5cbiAqL1xuY29uc3QgQ1VSUkVOQ1lfRElTUExBWV9TWU1CT0wgPSAnc3ltYm9sJztcblxuY2xhc3MgUHJpY2VTcGVjaWZpY2F0aW9uIGV4dGVuZHMgTnVtYmVyU3BlY2lmaWNhdGlvbiB7XG4gIC8qKlxuICAgKiBQcmljZSBzcGVjaWZpY2F0aW9uIGNvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gc3RyaW5nIHBvc2l0aXZlUGF0dGVybiBDTERSIGZvcm1hdHRpbmcgcGF0dGVybiBmb3IgcG9zaXRpdmUgYW1vdW50c1xuICAgKiBAcGFyYW0gc3RyaW5nIG5lZ2F0aXZlUGF0dGVybiBDTERSIGZvcm1hdHRpbmcgcGF0dGVybiBmb3IgbmVnYXRpdmUgYW1vdW50c1xuICAgKiBAcGFyYW0gTnVtYmVyU3ltYm9sIHN5bWJvbCBOdW1iZXIgc3ltYm9sXG4gICAqIEBwYXJhbSBpbnQgbWF4RnJhY3Rpb25EaWdpdHMgTWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSBpbnQgbWluRnJhY3Rpb25EaWdpdHMgTWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIGRlY2ltYWwgc2VwYXJhdG9yXG4gICAqIEBwYXJhbSBib29sIGdyb3VwaW5nVXNlZCBJcyBkaWdpdHMgZ3JvdXBpbmcgdXNlZCA/XG4gICAqIEBwYXJhbSBpbnQgcHJpbWFyeUdyb3VwU2l6ZSBTaXplIG9mIHByaW1hcnkgZGlnaXRzIGdyb3VwIGluIHRoZSBudW1iZXJcbiAgICogQHBhcmFtIGludCBzZWNvbmRhcnlHcm91cFNpemUgU2l6ZSBvZiBzZWNvbmRhcnkgZGlnaXRzIGdyb3VwIGluIHRoZSBudW1iZXJcbiAgICogQHBhcmFtIHN0cmluZyBjdXJyZW5jeVN5bWJvbCBDdXJyZW5jeSBzeW1ib2wgb2YgdGhpcyBwcmljZSAoZWcuIDog4oKsKVxuICAgKiBAcGFyYW0gY3VycmVuY3lDb2RlIEN1cnJlbmN5IGNvZGUgb2YgdGhpcyBwcmljZSAoZS5nLjogRVVSKVxuICAgKlxuICAgKiBAdGhyb3dzIExvY2FsaXphdGlvbkV4Y2VwdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcG9zaXRpdmVQYXR0ZXJuLFxuICAgIG5lZ2F0aXZlUGF0dGVybixcbiAgICBzeW1ib2wsXG4gICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgbWluRnJhY3Rpb25EaWdpdHMsXG4gICAgZ3JvdXBpbmdVc2VkLFxuICAgIHByaW1hcnlHcm91cFNpemUsXG4gICAgc2Vjb25kYXJ5R3JvdXBTaXplLFxuICAgIGN1cnJlbmN5U3ltYm9sLFxuICAgIGN1cnJlbmN5Q29kZSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBwb3NpdGl2ZVBhdHRlcm4sXG4gICAgICBuZWdhdGl2ZVBhdHRlcm4sXG4gICAgICBzeW1ib2wsXG4gICAgICBtYXhGcmFjdGlvbkRpZ2l0cyxcbiAgICAgIG1pbkZyYWN0aW9uRGlnaXRzLFxuICAgICAgZ3JvdXBpbmdVc2VkLFxuICAgICAgcHJpbWFyeUdyb3VwU2l6ZSxcbiAgICAgIHNlY29uZGFyeUdyb3VwU2l6ZSxcbiAgICApO1xuICAgIHRoaXMuY3VycmVuY3lTeW1ib2wgPSBjdXJyZW5jeVN5bWJvbDtcbiAgICB0aGlzLmN1cnJlbmN5Q29kZSA9IGN1cnJlbmN5Q29kZTtcblxuICAgIGlmICghdGhpcy5jdXJyZW5jeVN5bWJvbCB8fCB0eXBlb2YgdGhpcy5jdXJyZW5jeVN5bWJvbCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgY3VycmVuY3lTeW1ib2wnKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY3VycmVuY3lDb2RlIHx8IHR5cGVvZiB0aGlzLmN1cnJlbmN5Q29kZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBMb2NhbGl6YXRpb25FeGNlcHRpb24oJ0ludmFsaWQgY3VycmVuY3lDb2RlJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0eXBlIG9mIGRpc3BsYXkgZm9yIGN1cnJlbmN5IHN5bWJvbC5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIHN0YXRpYyBnZXRDdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgcmV0dXJuIENVUlJFTkNZX0RJU1BMQVlfU1lNQk9MO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVuY3kgc3ltYm9sXG4gICAqIGUuZy46IOKCrC5cbiAgICpcbiAgICogQHJldHVybiBzdHJpbmdcbiAgICovXG4gIGdldEN1cnJlbmN5U3ltYm9sKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5U3ltYm9sO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVuY3kgSVNPIGNvZGVcbiAgICogZS5nLjogRVVSLlxuICAgKlxuICAgKiBAcmV0dXJuIHN0cmluZ1xuICAgKi9cbiAgZ2V0Q3VycmVuY3lDb2RlKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbmN5Q29kZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBQcmljZVNwZWNpZmljYXRpb247XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5leHBvcnQgY29uc3Qgc2hvd0dyb3dsID0gKHR5cGUsIG1lc3NhZ2UsIGR1cmF0aW9uVGltZSkgPT4ge1xuICBjb25zdCBkdXJhdGlvbiA9IHVuZGVmaW5lZCAhPT0gZHVyYXRpb25UaW1lID8gZHVyYXRpb25UaW1lIDogMjAwMDtcblxuICBpZiAodHlwZSA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgd2luZG93LiQuZ3Jvd2woe1xuICAgICAgdGl0bGU6ICcnLFxuICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkdXJhdGlvbixcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB3aW5kb3cuJC5ncm93bFt0eXBlXSh7XG4gICAgICB0aXRsZTogJycsXG4gICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzaG93R3Jvd2w7XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDb25maXJtTW9kYWwgY29tcG9uZW50XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybVRpdGxlXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybU1lc3NhZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBjbG9zZUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkNsYXNzXG4gKiBAcGFyYW0ge0FycmF5fSBjdXN0b21CdXR0b25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGNsb3NhYmxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maXJtQ2FsbGJhY2tcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbmNlbENhbGxiYWNrXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb25maXJtTW9kYWwocGFyYW1zLCBjb25maXJtQ2FsbGJhY2ssIGNhbmNlbENhbGxiYWNrKSB7XG4gIC8vIENvbnN0cnVjdCB0aGUgbW9kYWxcbiAgY29uc3Qge2lkLCBjbG9zYWJsZX0gPSBwYXJhbXM7XG4gIHRoaXMubW9kYWwgPSBNb2RhbChwYXJhbXMpO1xuXG4gIC8vIGpRdWVyeSBtb2RhbCBvYmplY3RcbiAgdGhpcy4kbW9kYWwgPSAkKHRoaXMubW9kYWwuY29udGFpbmVyKTtcblxuICB0aGlzLnNob3cgPSAoKSA9PiB7XG4gICAgdGhpcy4kbW9kYWwubW9kYWwoKTtcbiAgfTtcblxuICB0aGlzLm1vZGFsLmNvbmZpcm1CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjb25maXJtQ2FsbGJhY2spO1xuXG4gIHRoaXMuJG1vZGFsLm1vZGFsKHtcbiAgICBiYWNrZHJvcDogY2xvc2FibGUgPyB0cnVlIDogJ3N0YXRpYycsXG4gICAga2V5Ym9hcmQ6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgY2xvc2FibGU6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgc2hvdzogZmFsc2UsXG4gIH0pO1xuXG4gIHRoaXMuJG1vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkucmVtb3ZlKCk7XG4gICAgaWYgKGNhbmNlbENhbGxiYWNrKSB7XG4gICAgICBjYW5jZWxDYWxsYmFjaygpO1xuICAgIH1cbiAgfSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm1vZGFsLmNvbnRhaW5lcik7XG59XG5cbi8qKlxuICogTW9kYWwgY29tcG9uZW50IHRvIGltcHJvdmUgbGlzaWJpbGl0eSBieSBjb25zdHJ1Y3RpbmcgdGhlIG1vZGFsIG91dHNpZGUgdGhlIG1haW4gZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gKlxuICovXG5mdW5jdGlvbiBNb2RhbCh7XG4gIGlkID0gJ2NvbmZpcm0tbW9kYWwnLFxuICBjb25maXJtVGl0bGUsXG4gIGNvbmZpcm1NZXNzYWdlID0gJycsXG4gIGNsb3NlQnV0dG9uTGFiZWwgPSAnQ2xvc2UnLFxuICBjb25maXJtQnV0dG9uTGFiZWwgPSAnQWNjZXB0JyxcbiAgY29uZmlybUJ1dHRvbkNsYXNzID0gJ2J0bi1wcmltYXJ5JyxcbiAgY3VzdG9tQnV0dG9ucyA9IFtdLFxufSkge1xuICBjb25zdCBtb2RhbCA9IHt9O1xuXG4gIC8vIE1haW4gbW9kYWwgZWxlbWVudFxuICBtb2RhbC5jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsJywgJ2ZhZGUnKTtcbiAgbW9kYWwuY29udGFpbmVyLmlkID0gaWQ7XG5cbiAgLy8gTW9kYWwgZGlhbG9nIGVsZW1lbnRcbiAgbW9kYWwuZGlhbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmRpYWxvZy5jbGFzc0xpc3QuYWRkKCdtb2RhbC1kaWFsb2cnKTtcblxuICAvLyBNb2RhbCBjb250ZW50IGVsZW1lbnRcbiAgbW9kYWwuY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5jb250ZW50LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWNvbnRlbnQnKTtcblxuICAvLyBNb2RhbCBoZWFkZXIgZWxlbWVudFxuICBtb2RhbC5oZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsLWhlYWRlcicpO1xuXG4gIC8vIE1vZGFsIHRpdGxlIGVsZW1lbnRcbiAgaWYgKGNvbmZpcm1UaXRsZSkge1xuICAgIG1vZGFsLnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcbiAgICBtb2RhbC50aXRsZS5jbGFzc0xpc3QuYWRkKCdtb2RhbC10aXRsZScpO1xuICAgIG1vZGFsLnRpdGxlLmlubmVySFRNTCA9IGNvbmZpcm1UaXRsZTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNsb3NlIGJ1dHRvbiBpY29uXG4gIG1vZGFsLmNsb3NlSWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUljb24uY2xhc3NMaXN0LmFkZCgnY2xvc2UnKTtcbiAgbW9kYWwuY2xvc2VJY29uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VJY29uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlSWNvbi5pbm5lckhUTUwgPSAnw5cnO1xuXG4gIC8vIE1vZGFsIGJvZHkgZWxlbWVudFxuICBtb2RhbC5ib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtYm9keScsICd0ZXh0LWxlZnQnLCAnZm9udC13ZWlnaHQtbm9ybWFsJyk7XG5cbiAgLy8gTW9kYWwgbWVzc2FnZSBlbGVtZW50XG4gIG1vZGFsLm1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gIG1vZGFsLm1lc3NhZ2UuY2xhc3NMaXN0LmFkZCgnY29uZmlybS1tZXNzYWdlJyk7XG4gIG1vZGFsLm1lc3NhZ2UuaW5uZXJIVE1MID0gY29uZmlybU1lc3NhZ2U7XG5cbiAgLy8gTW9kYWwgZm9vdGVyIGVsZW1lbnRcbiAgbW9kYWwuZm9vdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmZvb3Rlci5jbGFzc0xpc3QuYWRkKCdtb2RhbC1mb290ZXInKTtcblxuICAvLyBNb2RhbCBjbG9zZSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsICdidG4tb3V0bGluZS1zZWNvbmRhcnknLCAnYnRuLWxnJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmlubmVySFRNTCA9IGNsb3NlQnV0dG9uTGFiZWw7XG5cbiAgLy8gTW9kYWwgY29uZmlybSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jb25maXJtQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gIG1vZGFsLmNvbmZpcm1CdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsIGNvbmZpcm1CdXR0b25DbGFzcywgJ2J0bi1sZycsICdidG4tY29uZmlybS1zdWJtaXQnKTtcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmlubmVySFRNTCA9IGNvbmZpcm1CdXR0b25MYWJlbDtcblxuICAvLyBDb25zdHJ1Y3RpbmcgdGhlIG1vZGFsXG4gIGlmIChjb25maXJtVGl0bGUpIHtcbiAgICBtb2RhbC5oZWFkZXIuYXBwZW5kKG1vZGFsLnRpdGxlLCBtb2RhbC5jbG9zZUljb24pO1xuICB9IGVsc2Uge1xuICAgIG1vZGFsLmhlYWRlci5hcHBlbmRDaGlsZChtb2RhbC5jbG9zZUljb24pO1xuICB9XG5cbiAgbW9kYWwuYm9keS5hcHBlbmRDaGlsZChtb2RhbC5tZXNzYWdlKTtcbiAgbW9kYWwuZm9vdGVyLmFwcGVuZChtb2RhbC5jbG9zZUJ1dHRvbiwgLi4uY3VzdG9tQnV0dG9ucywgbW9kYWwuY29uZmlybUJ1dHRvbik7XG4gIG1vZGFsLmNvbnRlbnQuYXBwZW5kKG1vZGFsLmhlYWRlciwgbW9kYWwuYm9keSwgbW9kYWwuZm9vdGVyKTtcbiAgbW9kYWwuZGlhbG9nLmFwcGVuZENoaWxkKG1vZGFsLmNvbnRlbnQpO1xuICBtb2RhbC5jb250YWluZXIuYXBwZW5kQ2hpbGQobW9kYWwuZGlhbG9nKTtcblxuICByZXR1cm4gbW9kYWw7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbi8qKlxuICogRGVmaW5lcyBhbGwgc2VsZWN0b3JzIHRoYXQgYXJlIHVzZWQgaW4gY3VycmVuY3kgYWRkL2VkaXQgZm9ybS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQge1xuICBjdXJyZW5jeUZvcm06ICcjY3VycmVuY3lfZm9ybScsXG4gIGN1cnJlbmN5Rm9ybUZvb3RlcjogJyNjdXJyZW5jeV9mb3JtIC5jYXJkIC5jYXJkLWZvb3RlcicsXG4gIGN1cnJlbmN5U2VsZWN0b3I6ICcjY3VycmVuY3lfc2VsZWN0ZWRfaXNvX2NvZGUnLFxuICBpc1Vub2ZmaWNpYWxDaGVja2JveDogJyNjdXJyZW5jeV91bm9mZmljaWFsJyxcbiAgbmFtZXNJbnB1dDogKGxhbmdJZCkgPT4gYCNjdXJyZW5jeV9uYW1lc18ke2xhbmdJZH1gLFxuICBzeW1ib2xzSW5wdXQ6IChsYW5nSWQpID0+IGAjY3VycmVuY3lfc3ltYm9sc18ke2xhbmdJZH1gLFxuICB0cmFuc2Zvcm1hdGlvbnNJbnB1dDogKGxhbmdJZCkgPT4gYCNjdXJyZW5jeV90cmFuc2Zvcm1hdGlvbnNfJHtsYW5nSWR9YCxcbiAgaXNvQ29kZUlucHV0OiAnI2N1cnJlbmN5X2lzb19jb2RlJyxcbiAgZXhjaGFuZ2VSYXRlSW5wdXQ6ICcjY3VycmVuY3lfZXhjaGFuZ2VfcmF0ZScsXG4gIHJlc2V0RGVmYXVsdFNldHRpbmdzSW5wdXQ6ICcjY3VycmVuY3lfcmVzZXRfZGVmYXVsdF9zZXR0aW5ncycsXG4gIGxvYWRpbmdEYXRhTW9kYWw6ICcjY3VycmVuY3lfbG9hZGluZ19kYXRhX21vZGFsJyxcbiAgcHJlY2lzaW9uSW5wdXQ6ICcjY3VycmVuY3lfcHJlY2lzaW9uJyxcbiAgc2hvcEFzc29jaWF0aW9uVHJlZTogJyNjdXJyZW5jeV9zaG9wX2Fzc29jaWF0aW9uJyxcbiAgY3VycmVuY3lGb3JtYXR0ZXI6ICcjY3VycmVuY3lfZm9ybWF0dGVyJyxcbn07XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSc7XG5pbXBvcnQgVnVlSTE4biBmcm9tICd2dWUtaTE4bic7XG5pbXBvcnQgVnVlUmVzb3VyY2UgZnJvbSAndnVlLXJlc291cmNlJztcbmltcG9ydCB7c2hvd0dyb3dsfSBmcm9tICdAYXBwL3V0aWxzL2dyb3dsJztcbmltcG9ydCBDb25maXJtTW9kYWwgZnJvbSAnQGNvbXBvbmVudHMvbW9kYWwnO1xuaW1wb3J0IFJlcGxhY2VGb3JtYXR0ZXIgZnJvbSAnQHZ1ZS9wbHVnaW5zL3Z1ZS1pMThuL3JlcGxhY2UtZm9ybWF0dGVyJztcbmltcG9ydCBDdXJyZW5jeUZvcm1hdHRlciBmcm9tICcuL2NvbXBvbmVudHMvQ3VycmVuY3lGb3JtYXR0ZXIudnVlJztcblxuVnVlLnVzZShWdWVSZXNvdXJjZSk7XG5WdWUudXNlKFZ1ZUkxOG4pO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdXJyZW5jeUZvcm0ge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGN1cnJlbmN5Rm9ybU1hcCAtIFBhZ2UgbWFwXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjdXJyZW5jeUZvcm1NYXApIHtcbiAgICB0aGlzLm1hcCA9IGN1cnJlbmN5Rm9ybU1hcDtcbiAgICB0aGlzLiRjdXJyZW5jeUZvcm0gPSAkKHRoaXMubWFwLmN1cnJlbmN5Rm9ybSk7XG4gICAgdGhpcy4kY3VycmVuY3lGb3JtRm9vdGVyID0gJCh0aGlzLm1hcC5jdXJyZW5jeUZvcm1Gb290ZXIpO1xuICAgIHRoaXMuYXBpUmVmZXJlbmNlVXJsID0gdGhpcy4kY3VycmVuY3lGb3JtLmRhdGEoJ3JlZmVyZW5jZS11cmwnKTtcbiAgICB0aGlzLnJlZmVyZW5jZUN1cnJlbmN5UmVzb3VyY2UgPSBWdWUucmVzb3VyY2UodGhpcy5hcGlSZWZlcmVuY2VVcmwpO1xuICAgIHRoaXMub3JpZ2luYWxMYW5ndWFnZXMgPSB0aGlzLiRjdXJyZW5jeUZvcm0uZGF0YSgnbGFuZ3VhZ2VzJyk7XG4gICAgdGhpcy50cmFuc2xhdGlvbnMgPSB0aGlzLiRjdXJyZW5jeUZvcm0uZGF0YSgndHJhbnNsYXRpb25zJyk7XG4gICAgdGhpcy4kY3VycmVuY3lTZWxlY3RvciA9ICQodGhpcy5tYXAuY3VycmVuY3lTZWxlY3Rvcik7XG4gICAgdGhpcy4kaXNVbm9mZmljaWFsQ2hlY2tib3ggPSAkKHRoaXMubWFwLmlzVW5vZmZpY2lhbENoZWNrYm94KTtcbiAgICB0aGlzLiRpc29Db2RlSW5wdXQgPSAkKHRoaXMubWFwLmlzb0NvZGVJbnB1dCk7XG4gICAgdGhpcy4kZXhjaGFuZ2VSYXRlSW5wdXQgPSAkKHRoaXMubWFwLmV4Y2hhbmdlUmF0ZUlucHV0KTtcbiAgICB0aGlzLiRwcmVjaXNpb25JbnB1dCA9ICQodGhpcy5tYXAucHJlY2lzaW9uSW5wdXQpO1xuICAgIHRoaXMuJHJlc2V0RGVmYXVsdFNldHRpbmdzQnV0dG9uID0gJCh0aGlzLm1hcC5yZXNldERlZmF1bHRTZXR0aW5nc0lucHV0KTtcbiAgICB0aGlzLiRsb2FkaW5nRGF0YU1vZGFsID0gJCh0aGlzLm1hcC5sb2FkaW5nRGF0YU1vZGFsKTtcbiAgICB0aGlzLmN1cnJlbmN5Rm9ybWF0dGVySWQgPSB0aGlzLm1hcC5jdXJyZW5jeUZvcm1hdHRlci5yZXBsYWNlKCcjJywgJycpO1xuICAgIHRoaXMuaGlkZU1vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLiRsb2FkaW5nRGF0YU1vZGFsLm9uKCdzaG93bi5icy5tb2RhbCcsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmhpZGVNb2RhbCkge1xuICAgICAgICB0aGlzLiRsb2FkaW5nRGF0YU1vZGFsLm1vZGFsKCdoaWRlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpbml0KCkge1xuICAgIHRoaXMuaW5pdExpc3RlbmVycygpO1xuICAgIHRoaXMuaW5pdEZpZWxkcygpO1xuICAgIHRoaXMuaW5pdFN0YXRlKCk7XG4gICAgdGhpcy5pbml0Q3VycmVuY3lGb3JtYXR0ZXIoKTtcbiAgfVxuXG4gIGluaXRTdGF0ZSgpIHtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgY3VycmVuY3lEYXRhOiB0aGlzLmdldEN1cnJlbmN5RGF0YUZyb21Gb3JtKCksXG4gICAgICBsYW5ndWFnZXM6IFsuLi50aGlzLm9yaWdpbmFsTGFuZ3VhZ2VzXSxcbiAgICB9O1xuICB9XG5cbiAgaW5pdEN1cnJlbmN5Rm9ybWF0dGVyKCkge1xuICAgIC8vIEN1c3RvbWl6ZXIgb25seSBwcmVzZW50IHdoZW4gbGFuZ3VhZ2VzIGRhdGEgYXJlIHByZXNlbnQgKGZvciBpbnN0YWxsZWQgY3VycmVuY2llcyBvbmx5KVxuICAgIGlmICghdGhpcy5vcmlnaW5hbExhbmd1YWdlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpMThuID0gbmV3IFZ1ZUkxOG4oe1xuICAgICAgbG9jYWxlOiAnZW4nLFxuICAgICAgZm9ybWF0dGVyOiBuZXcgUmVwbGFjZUZvcm1hdHRlcigpLFxuICAgICAgbWVzc2FnZXM6IHtlbjogdGhpcy50cmFuc2xhdGlvbnN9LFxuICAgIH0pO1xuXG4gICAgJChgPGRpdiBpZD1cIiR7dGhpcy5jdXJyZW5jeUZvcm1hdHRlcklkfVwiPjwvZGl2PmApLmluc2VydEJlZm9yZSh0aGlzLiRjdXJyZW5jeUZvcm1Gb290ZXIpO1xuICAgIHRoaXMuY3VycmVuY3lGb3JtYXR0ZXIgPSBuZXcgVnVlKHtcbiAgICAgIGVsOiB0aGlzLm1hcC5jdXJyZW5jeUZvcm1hdHRlcixcbiAgICAgIGkxOG4sXG4gICAgICBjb21wb25lbnRzOiB7Q3VycmVuY3lGb3JtYXR0ZXJ9LFxuICAgICAgZGF0YTogdGhpcy5zdGF0ZSxcbiAgICAgIHRlbXBsYXRlOiBgPGN1cnJlbmN5LWZvcm1hdHRlclxuICAgICAgICBpZD1cIiR7dGhpcy5jdXJyZW5jeUZvcm1hdHRlcklkfVwiXG4gICAgICAgIDpsYW5ndWFnZXM9XCJsYW5ndWFnZXNcIlxuICAgICAgICA6Y3VycmVuY3lEYXRhPVwiY3VycmVuY3lEYXRhXCI+XG4gICAgICA8L2N1cnJlbmN5LWZvcm1hdHRlcj5gLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jdXJyZW5jeUZvcm1hdHRlci4kd2F0Y2goJ2N1cnJlbmN5RGF0YScsICgpID0+IHtcbiAgICAgIC8vIFdlIHVzZSB0aGUgc3RhdGUgdmFsdWUgZGlyZWN0bHkgc2luY2UgdGhlIG9iamVjdCBpcyBzaGFyZWQgd2l0aCB0aGUgVnVlIGNvbXBvbmVudCBhbmQgYWxyZWFkeSB1cGRhdGVkXG4gICAgICB0aGlzLmZpbGxDdXJyZW5jeUN1c3RvbURhdGEodGhpcy5zdGF0ZS5jdXJyZW5jeURhdGEpO1xuICAgIH0sIHtkZWVwOiB0cnVlLCBpbW1lZGlhdGU6IHRydWV9KTtcbiAgfVxuXG4gIGluaXRMaXN0ZW5lcnMoKSB7XG4gICAgdGhpcy4kY3VycmVuY3lTZWxlY3Rvci5jaGFuZ2UodGhpcy5vbkN1cnJlbmN5U2VsZWN0b3JDaGFuZ2UuYmluZCh0aGlzKSk7XG4gICAgdGhpcy4kaXNVbm9mZmljaWFsQ2hlY2tib3guY2hhbmdlKHRoaXMub25Jc1Vub2ZmaWNpYWxDaGVja2JveENoYW5nZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLiRyZXNldERlZmF1bHRTZXR0aW5nc0J1dHRvbi5jbGljayh0aGlzLm9uUmVzZXREZWZhdWx0U2V0dGluZ3NDbGljay5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIGluaXRGaWVsZHMoKSB7XG4gICAgaWYgKCF0aGlzLmlzVW5vZmZpY2lhbEN1cnJlbmN5KCkpIHtcbiAgICAgIHRoaXMuJGlzVW5vZmZpY2lhbENoZWNrYm94LnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICB0aGlzLiRpc29Db2RlSW5wdXQucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kY3VycmVuY3lTZWxlY3Rvci52YWwoJycpO1xuICAgICAgdGhpcy4kaXNvQ29kZUlucHV0LnByb3AoJ3JlYWRvbmx5JywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ3VycmVuY3lTZWxlY3RvckNoYW5nZSgpIHtcbiAgICBjb25zdCBzZWxlY3RlZElTT0NvZGUgPSB0aGlzLiRjdXJyZW5jeVNlbGVjdG9yLnZhbCgpO1xuXG4gICAgaWYgKHNlbGVjdGVkSVNPQ29kZSAhPT0gJycpIHtcbiAgICAgIHRoaXMuJGlzVW5vZmZpY2lhbENoZWNrYm94LnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG4gICAgICB0aGlzLiRpc29Db2RlSW5wdXQucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcbiAgICAgIHRoaXMucmVzZXRDdXJyZW5jeURhdGEoc2VsZWN0ZWRJU09Db2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kaXNVbm9mZmljaWFsQ2hlY2tib3gucHJvcCgnY2hlY2tlZCcsIHRydWUpO1xuICAgICAgdGhpcy4kaXNvQ29kZUlucHV0LnByb3AoJ3JlYWRvbmx5JywgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIGlzVW5vZmZpY2lhbEN1cnJlbmN5KCkge1xuICAgIGlmICh0aGlzLiRpc1Vub2ZmaWNpYWxDaGVja2JveC5wcm9wKCd0eXBlJykgPT09ICdoaWRkZW4nKSB7XG4gICAgICByZXR1cm4gdGhpcy4kaXNVbm9mZmljaWFsQ2hlY2tib3guYXR0cigndmFsdWUnKSA9PT0gJzEnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLiRpc1Vub2ZmaWNpYWxDaGVja2JveC5wcm9wKCdjaGVja2VkJyk7XG4gIH1cblxuICBvbklzVW5vZmZpY2lhbENoZWNrYm94Q2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmlzVW5vZmZpY2lhbEN1cnJlbmN5KCkpIHtcbiAgICAgIHRoaXMuJGN1cnJlbmN5U2VsZWN0b3IudmFsKCcnKTtcbiAgICAgIHRoaXMuJGlzb0NvZGVJbnB1dC5wcm9wKCdyZWFkb25seScsIGZhbHNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy4kaXNvQ29kZUlucHV0LnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25SZXNldERlZmF1bHRTZXR0aW5nc0NsaWNrKCkge1xuICAgIGF3YWl0IHRoaXMucmVzZXRDdXJyZW5jeURhdGEodGhpcy4kaXNvQ29kZUlucHV0LnZhbCgpKTtcbiAgfVxuXG4gIHNob3dSZXNldERlZmF1bHRTZXR0aW5nc0NvbmZpcm1Nb2RhbCgpIHtcbiAgICBjb25zdCBjb25maXJtVGl0bGUgPSB0aGlzLnRyYW5zbGF0aW9uc1snbW9kYWwucmVzdG9yZS50aXRsZSddO1xuICAgIGNvbnN0IGNvbmZpcm1NZXNzYWdlID0gdGhpcy50cmFuc2xhdGlvbnNbJ21vZGFsLnJlc3RvcmUuYm9keSddO1xuICAgIGNvbnN0IGNvbmZpcm1CdXR0b25MYWJlbCA9IHRoaXMudHJhbnNsYXRpb25zWydtb2RhbC5yZXN0b3JlLmFwcGx5J107XG4gICAgY29uc3QgY2xvc2VCdXR0b25MYWJlbCA9IHRoaXMudHJhbnNsYXRpb25zWydtb2RhbC5yZXN0b3JlLmNhbmNlbCddO1xuXG4gICAgY29uc3QgbW9kYWwgPSBuZXcgQ29uZmlybU1vZGFsKHtcbiAgICAgIGlkOiAnY3VycmVuY3lfcmVzdG9yZV9kZWZhdWx0X3NldHRpbmdzJyxcbiAgICAgIGNvbmZpcm1UaXRsZSxcbiAgICAgIGNvbmZpcm1NZXNzYWdlLFxuICAgICAgY29uZmlybUJ1dHRvbkxhYmVsLFxuICAgICAgY2xvc2VCdXR0b25MYWJlbCxcbiAgICB9LCAoKSA9PiB0aGlzLm9uUmVzZXREZWZhdWx0U2V0dGluZ3NDbGljaygpKTtcblxuICAgIG1vZGFsLnNob3coKTtcbiAgfVxuXG4gIGFzeW5jIHJlc2V0Q3VycmVuY3lEYXRhKHNlbGVjdGVkSVNPQ29kZSkge1xuICAgIHRoaXMuJGxvYWRpbmdEYXRhTW9kYWwubW9kYWwoJ3Nob3cnKTtcbiAgICB0aGlzLiRyZXNldERlZmF1bHRTZXR0aW5nc0J1dHRvbi5hZGRDbGFzcygnc3Bpbm5lcicpO1xuXG4gICAgdGhpcy5zdGF0ZS5jdXJyZW5jeURhdGEgPSBhd2FpdCB0aGlzLmZldGNoQ3VycmVuY3koc2VsZWN0ZWRJU09Db2RlKTtcbiAgICB0aGlzLmZpbGxDdXJyZW5jeURhdGEodGhpcy5zdGF0ZS5jdXJyZW5jeURhdGEpO1xuXG4gICAgLy8gUmVzZXQgbGFuZ3VhZ2VzXG4gICAgdGhpcy5vcmlnaW5hbExhbmd1YWdlcy5mb3JFYWNoKChsYW5ndWFnZSkgPT4ge1xuICAgICAgLy8gVXNlIGxhbmd1YWdlIGRhdGEgKHdoaWNoIGNvbnRhaW4gdGhlIHJlZmVyZW5jZSkgdG8gcmVzZXRcbiAgICAgIC8vIHByaWNlIHNwZWNpZmljYXRpb24gZGF0YSAod2hpY2ggY29udGFpbiB0aGUgY3VzdG9tIHZhbHVlcylcbiAgICAgIGNvbnN0IHBhdHRlcm5zID0gbGFuZ3VhZ2UuY3VycmVuY3lQYXR0ZXJuLnNwbGl0KCc7Jyk7XG4gICAgICBsYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24ucG9zaXRpdmVQYXR0ZXJuID0gcGF0dGVybnNbMF07XG4gICAgICBsYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24ubmVnYXRpdmVQYXR0ZXJuID0gcGF0dGVybnMubGVuZ3RoID4gMSA/IHBhdHRlcm5zWzFdIDogYC0ke3BhdHRlcm5zWzBdfWA7XG4gICAgICBsYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24uY3VycmVuY3lTeW1ib2wgPSBsYW5ndWFnZS5jdXJyZW5jeVN5bWJvbDtcbiAgICB9KTtcbiAgICB0aGlzLnN0YXRlLmxhbmd1YWdlcyA9IFsuLi50aGlzLm9yaWdpbmFsTGFuZ3VhZ2VzXTtcblxuICAgIHRoaXMuaGlkZU1vZGFsID0gdHJ1ZTtcbiAgICB0aGlzLiRsb2FkaW5nRGF0YU1vZGFsLm1vZGFsKCdoaWRlJyk7XG4gICAgdGhpcy4kcmVzZXREZWZhdWx0U2V0dGluZ3NCdXR0b24ucmVtb3ZlQ2xhc3MoJ3NwaW5uZXInKTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoQ3VycmVuY3koY3VycmVuY3lJc29Db2RlKSB7XG4gICAgbGV0IGN1cnJlbmN5RGF0YSA9IG51bGw7XG5cbiAgICBpZiAoY3VycmVuY3lJc29Db2RlKSB7XG4gICAgICBhd2FpdCB0aGlzLnJlZmVyZW5jZUN1cnJlbmN5UmVzb3VyY2UuZ2V0KHtpZDogY3VycmVuY3lJc29Db2RlfSkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY3VycmVuY3lEYXRhID0gcmVzcG9uc2UuYm9keTtcbiAgICAgIH0sIChlcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmIChlcnJvclJlc3BvbnNlLmJvZHkgJiYgZXJyb3JSZXNwb25zZS5ib2R5LmVycm9yKSB7XG4gICAgICAgICAgc2hvd0dyb3dsKCdlcnJvcicsIGVycm9yUmVzcG9uc2UuYm9keS5lcnJvciwgMzAwMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hvd0dyb3dsKCdlcnJvcicsIGBDYW4gbm90IGZpbmQgQ0xEUiBkYXRhIGZvciBjdXJyZW5jeSAke2N1cnJlbmN5SXNvQ29kZX1gLCAzMDAwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbmN5RGF0YSAmJiBjdXJyZW5jeURhdGEudHJhbnNmb3JtYXRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGN1cnJlbmN5RGF0YS50cmFuc2Zvcm1hdGlvbnMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGN1cnJlbmN5RGF0YS5zeW1ib2xzKS5mb3JFYWNoKChsYW5nSWQpID0+IHtcbiAgICAgICAgY3VycmVuY3lEYXRhLnRyYW5zZm9ybWF0aW9uc1tsYW5nSWRdID0gJyc7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVuY3lEYXRhO1xuICB9XG5cbiAgZmlsbEN1cnJlbmN5RGF0YShjdXJyZW5jeURhdGEpIHtcbiAgICBpZiAoIWN1cnJlbmN5RGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKGN1cnJlbmN5RGF0YS5zeW1ib2xzKS5mb3JFYWNoKChsYW5nSWQpID0+IHtcbiAgICAgIGNvbnN0IGxhbmdOYW1lU2VsZWN0b3IgPSB0aGlzLm1hcC5uYW1lc0lucHV0KGxhbmdJZCk7XG4gICAgICAkKGxhbmdOYW1lU2VsZWN0b3IpLnZhbChjdXJyZW5jeURhdGEubmFtZXNbbGFuZ0lkXSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmZpbGxDdXJyZW5jeUN1c3RvbURhdGEoY3VycmVuY3lEYXRhKTtcbiAgICB0aGlzLiRpc29Db2RlSW5wdXQudmFsKGN1cnJlbmN5RGF0YS5pc29Db2RlKTtcbiAgICB0aGlzLiRleGNoYW5nZVJhdGVJbnB1dC52YWwoY3VycmVuY3lEYXRhLmV4Y2hhbmdlUmF0ZSk7XG4gICAgdGhpcy4kcHJlY2lzaW9uSW5wdXQudmFsKGN1cnJlbmN5RGF0YS5wcmVjaXNpb24pO1xuICB9XG5cbiAgZmlsbEN1cnJlbmN5Q3VzdG9tRGF0YShjdXJyZW5jeURhdGEpIHtcbiAgICBPYmplY3Qua2V5cyhjdXJyZW5jeURhdGEuc3ltYm9scykuZm9yRWFjaCgobGFuZ0lkKSA9PiB7XG4gICAgICBjb25zdCBsYW5nU3ltYm9sU2VsZWN0b3IgPSB0aGlzLm1hcC5zeW1ib2xzSW5wdXQobGFuZ0lkKTtcbiAgICAgICQobGFuZ1N5bWJvbFNlbGVjdG9yKS52YWwoY3VycmVuY3lEYXRhLnN5bWJvbHNbbGFuZ0lkXSk7XG4gICAgfSk7XG5cbiAgICBPYmplY3Qua2V5cyhjdXJyZW5jeURhdGEudHJhbnNmb3JtYXRpb25zKS5mb3JFYWNoKChsYW5nSWQpID0+IHtcbiAgICAgIGNvbnN0IGxhbmdUcmFuc2Zvcm1hdGlvblNlbGVjdG9yID0gdGhpcy5tYXAudHJhbnNmb3JtYXRpb25zSW5wdXQobGFuZ0lkKTtcbiAgICAgICQobGFuZ1RyYW5zZm9ybWF0aW9uU2VsZWN0b3IpLnZhbChjdXJyZW5jeURhdGEudHJhbnNmb3JtYXRpb25zW2xhbmdJZF0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q3VycmVuY3lEYXRhRnJvbUZvcm0oKSB7XG4gICAgY29uc3QgY3VycmVuY3lEYXRhID0ge1xuICAgICAgbmFtZXM6IHt9LFxuICAgICAgc3ltYm9sczoge30sXG4gICAgICB0cmFuc2Zvcm1hdGlvbnM6IHt9LFxuICAgICAgaXNvQ29kZTogdGhpcy4kaXNvQ29kZUlucHV0LnZhbCgpLFxuICAgICAgZXhjaGFuZ2VSYXRlOiB0aGlzLiRleGNoYW5nZVJhdGVJbnB1dC52YWwoKSxcbiAgICAgIHByZWNpc2lvbjogdGhpcy4kcHJlY2lzaW9uSW5wdXQudmFsKCksXG4gICAgfTtcblxuICAgIHRoaXMub3JpZ2luYWxMYW5ndWFnZXMuZm9yRWFjaCgobGFuZykgPT4ge1xuICAgICAgY3VycmVuY3lEYXRhLm5hbWVzW2xhbmcuaWRdID0gJCh0aGlzLm1hcC5uYW1lc0lucHV0KGxhbmcuaWQpKS52YWwoKTtcbiAgICAgIGN1cnJlbmN5RGF0YS5zeW1ib2xzW2xhbmcuaWRdID0gJCh0aGlzLm1hcC5zeW1ib2xzSW5wdXQobGFuZy5pZCkpLnZhbCgpO1xuICAgICAgY3VycmVuY3lEYXRhLnRyYW5zZm9ybWF0aW9uc1tsYW5nLmlkXSA9ICQodGhpcy5tYXAudHJhbnNmb3JtYXRpb25zSW5wdXQobGFuZy5pZCkpLnZhbCgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGN1cnJlbmN5RGF0YTtcbiAgfVxufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuaW1wb3J0IFZ1ZSBmcm9tICd2dWUnO1xuXG5sZXQgYmluZGVkID0gW107XG5cbmZ1bmN0aW9uIGhhbmRsZXIoZSkge1xuICBiaW5kZWQuZm9yRWFjaCgoZWwpID0+IHtcbiAgICAvLyBHb2luZyB0aHJvdWdoIHRoZSBwYXRoIGlzIG1vcmUgYWNjdXJhdGUgYmVjYXVzZSB0aGUgaW5pdGlhbCB0YXJnZXQgbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWRcbiAgICAvLyBmcm9tIHRoZSBET00gYnkgdGhlIHRpbWUgdGhpcyBoYW5kbGVyIGlzIHJlYWNoZWQgKGV4OiBjbGljayBvbiB0eXBlYWhlYWQgcmVzZWFyY2ggc3VnZ2VzdGlvbilcbiAgICBpZiAoZS5wYXRoICYmIGUucGF0aC5sZW5ndGgpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZS5wYXRoLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGNvbnN0IGFuY2VzdG9yID0gZS5wYXRoW2ldO1xuXG4gICAgICAgIGlmIChhbmNlc3RvciA9PT0gZWwubm9kZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBObyBhbmNlc3RvcnMgbWF0Y2hlZCBlbCwgc28gdGhlIGNsaWNrIHdhcyBvdXRzaWRlXG4gICAgICBlbC5jYWxsYmFjayhlKTtcbiAgICB9IGVsc2UgaWYgKCFlbC5ub2RlLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgZWwuY2FsbGJhY2soZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkTGlzdGVuZXIobm9kZSwgY2FsbGJhY2spIHtcbiAgaWYgKCFiaW5kZWQubGVuZ3RoKSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVyLCBmYWxzZSk7XG4gIH1cblxuICBiaW5kZWQucHVzaCh7bm9kZSwgY2FsbGJhY2t9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobm9kZSwgY2FsbGJhY2spIHtcbiAgYmluZGVkID0gYmluZGVkLmZpbHRlcigoZWwpID0+IHtcbiAgICBpZiAoZWwubm9kZSAhPT0gbm9kZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBlbC5jYWxsYmFjayAhPT0gY2FsbGJhY2s7XG4gIH0pO1xuICBpZiAoIWJpbmRlZC5sZW5ndGgpIHtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZXIsIGZhbHNlKTtcbiAgfVxufVxuXG5WdWUuZGlyZWN0aXZlKCdjbGljay1vdXRzaWRlJywge1xuICBiaW5kKGVsLCBiaW5kaW5nKSB7XG4gICAgcmVtb3ZlTGlzdGVuZXIoZWwsIGJpbmRpbmcudmFsdWUpO1xuICAgIGlmICh0eXBlb2YgYmluZGluZy52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYWRkTGlzdGVuZXIoZWwsIGJpbmRpbmcudmFsdWUpO1xuICAgIH1cbiAgfSxcbiAgdXBkYXRlKGVsLCBiaW5kaW5nKSB7XG4gICAgaWYgKGJpbmRpbmcudmFsdWUgIT09IGJpbmRpbmcub2xkVmFsdWUpIHtcbiAgICAgIHJlbW92ZUxpc3RlbmVyKGVsLCBiaW5kaW5nLm9sZFZhbHVlKTtcbiAgICAgIGFkZExpc3RlbmVyKGVsLCBiaW5kaW5nLnZhbHVlKTtcbiAgICB9XG4gIH0sXG4gIHVuYmluZChlbCwgYmluZGluZykge1xuICAgIHJlbW92ZUxpc3RlbmVyKGVsLCBiaW5kaW5nLnZhbHVlKTtcbiAgfSxcbn0pO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG4vKipcbiAqIFRoaXMgZm9ybWF0dGVyIGlzIHVzZWQgYnkgVnVlSTE4biwgdGhlIGJhc2ljIGZvcm1hdCBmb3IgdmFyaWFibGVzIGxvb2tzXG4gKiBsaWtlICdIaSB7bmFtZX0nIG9yICdIaSB7MH0nIFNhZGx5IGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIFByZXN0YVNob3AgdXN1YWxcbiAqIHBsYWNlaG9sZGVycyBmb3JtYXQuXG4gKiBTbyB0aGlzIGN1c3RvbSBmb3JtYXR0ZXIgYWxsb3dzIHVzIHRvIHNpbXBsZSByZXBsYWNlIGluIG9yZGVyIHRvIHVzZSBmb3JtYXRzXG4gKiBsaWtlICdIaSAlbmFtZSUnIHRoZSBwYXJhbWV0ZXJzIHRoZW4gc2hvdWxkIGJlIGFuIG9iamVjdCBsaWtlIHsnJW5hbWUlJzogJ0pvaG4nfVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZXBsYWNlRm9ybWF0dGVyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBtZXNzYWdlIHtzdHJpbmd9XG4gICAqIEBwYXJhbSB2YWx1ZXMge29iamVjdH1cbiAgICpcbiAgICogQHJldHVybnMge2FycmF5fVxuICAgKi9cbiAgaW50ZXJwb2xhdGUobWVzc2FnZSwgdmFsdWVzKSB7XG4gICAgaWYgKCF2YWx1ZXMpIHtcbiAgICAgIHJldHVybiBbbWVzc2FnZV07XG4gICAgfVxuXG4gICAgbGV0IG1zZyA9IG1lc3NhZ2U7XG4gICAgT2JqZWN0LmtleXModmFsdWVzKS5mb3JFYWNoKChwYXJhbSkgPT4ge1xuICAgICAgbGV0IHBsYWNlaG9sZGVyID0gcGFyYW07XG5cbiAgICAgIC8vIElmIHRoZSBwYXJhbSBkb2Vzbid0IHVzZSBQcmVzdGFTaG9wIGZvcm1hdHRpbmcgKHdpdGggJSkgbm9yIFN5bWZvbnkgdXN1YWwgb25lICh3aXRoIHt9KVxuICAgICAgLy8gdGhlbiB3ZSBmYWxsYmFjayB0byBWdWVJMThuIHVzdWFsIG9uZSB3aGljaCB1c2VzIGB7cGFyYW19YFxuICAgICAgaWYgKHBsYWNlaG9sZGVyLmluZGV4T2YoJyUnKSA9PT0gLTEgJiYgcGxhY2Vob2xkZXIuaW5kZXhPZigneycpID09PSAtMSkge1xuICAgICAgICBwbGFjZWhvbGRlciA9IGB7JHtwbGFjZWhvbGRlcn19YDtcbiAgICAgIH1cbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKHBsYWNlaG9sZGVyLCB2YWx1ZXNbcGFyYW1dKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBbbXNnXTtcbiAgfVxufVxuIiwiPCEtLSoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqLS0+XG48dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgIDxoND57eyAkdCgnc3RlcC5zeW1ib2wnKSB9fTwvaDQ+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICB2LW1vZGVsPVwiY3VzdG9tU3ltYm9sXCJcbiAgICAgID5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTggYm9yZGVyLWxlZnRcIj5cbiAgICAgIDxoND57eyAkdCgnc3RlcC5mb3JtYXQnKSB9fTwvaDQ+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInBzLXJhZGlvIGNvbC02XCJcbiAgICAgICAgICB2LWZvcj1cIihwYXR0ZXJuLCB0cmFuc2Zvcm1hdGlvbikgaW4gYXZhaWxhYmxlRm9ybWF0c1wiXG4gICAgICAgICAgOmtleT1cInRyYW5zZm9ybWF0aW9uXCJcbiAgICAgICAgICA6aWQ9XCJ0cmFuc2Zvcm1hdGlvblwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICA6Y2hlY2tlZD1cInRyYW5zZm9ybWF0aW9uID09PSBjdXN0b21UcmFuc2Zvcm1hdGlvblwiXG4gICAgICAgICAgICA6dmFsdWU9XCJ0cmFuc2Zvcm1hdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBAY2xpY2sucHJldmVudC5zdG9wPVwiY3VzdG9tVHJhbnNmb3JtYXRpb24gPSB0cmFuc2Zvcm1hdGlvblwiPlxuICAgICAgICAgICAge3sgZGlzcGxheVBhdHRlcm4ocGF0dGVybikgfX1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gIGltcG9ydCB7TnVtYmVyRm9ybWF0dGVyfSBmcm9tICdAYXBwL2NsZHInO1xuXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnQ3VycmVuY3lGb3JtYXRGb3JtJyxcbiAgICBkYXRhOiAoKSA9PiAoe1xuICAgICAgdmFsdWU6IHtcbiAgICAgICAgc3ltYm9sOiAnJyxcbiAgICAgICAgdHJhbnNmb3JtYXRpb246ICcnLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICBwcm9wczoge1xuICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdDogKCkgPT4ge30sXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIGF2YWlsYWJsZUZvcm1hdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhbmd1YWdlLnRyYW5zZm9ybWF0aW9ucztcbiAgICAgIH0sXG4gICAgICBjdXN0b21TeW1ib2w6IHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnN5bWJvbDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHN5bWJvbCkge1xuICAgICAgICAgIHRoaXMudmFsdWUuc3ltYm9sID0gc3ltYm9sO1xuICAgICAgICAgIHRoaXMuJGVtaXQoJ2lucHV0JywgdGhpcy52YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY3VzdG9tVHJhbnNmb3JtYXRpb246IHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlLnRyYW5zZm9ybWF0aW9uO1xuICAgICAgICB9LFxuICAgICAgICBzZXQodHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgICB0aGlzLnZhbHVlLnRyYW5zZm9ybWF0aW9uID0gdHJhbnNmb3JtYXRpb247XG4gICAgICAgICAgdGhpcy4kZW1pdCgnaW5wdXQnLCB0aGlzLnZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICBkaXNwbGF5UGF0dGVybihwYXR0ZXJuKSB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm5zID0gcGF0dGVybi5zcGxpdCgnOycpO1xuICAgICAgICBjb25zdCBwcmljZVNwZWNpZmljYXRpb24gPSB7Li4udGhpcy5sYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb259O1xuICAgICAgICBwcmljZVNwZWNpZmljYXRpb24ucG9zaXRpdmVQYXR0ZXJuID0gcGF0dGVybnNbMF07XG4gICAgICAgIHByaWNlU3BlY2lmaWNhdGlvbi5uZWdhdGl2ZVBhdHRlcm4gPSBwYXR0ZXJucy5sZW5ndGggPiAxID8gcGF0dGVybnNbMV0gOiBgLSR7cGF0dGVybn1gO1xuICAgICAgICBwcmljZVNwZWNpZmljYXRpb24uY3VycmVuY3lTeW1ib2wgPSB0aGlzLmN1c3RvbVN5bWJvbDtcblxuICAgICAgICBjb25zdCBjdXJyZW5jeUZvcm1hdHRlciA9IE51bWJlckZvcm1hdHRlci5idWlsZChwcmljZVNwZWNpZmljYXRpb24pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW5jeUZvcm1hdHRlci5mb3JtYXQoMTQyNTE5OTkuNDIpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG1vdW50ZWQoKSB7XG4gICAgICB0aGlzLmN1c3RvbVN5bWJvbCA9IHRoaXMubGFuZ3VhZ2UucHJpY2VTcGVjaWZpY2F0aW9uLmN1cnJlbmN5U3ltYm9sO1xuICAgICAgY29uc3QgY3VycmVuY3lQYXR0ZXJuID0gdGhpcy5sYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24ucG9zaXRpdmVQYXR0ZXJuO1xuXG4gICAgICAvLyBEZXRlY3Qgd2hpY2ggdHJhbnNmb3JtYXRpb24gbWF0Y2hlcyB0aGUgbGFuZ3VhZ2UgcGF0dGVyblxuICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4LGd1YXJkLWZvci1pbiAqL1xuICAgICAgZm9yIChjb25zdCB0cmFuc2Zvcm1hdGlvbiBpbiB0aGlzLmxhbmd1YWdlLnRyYW5zZm9ybWF0aW9ucykge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1hdGlvblBhdHRlcm5zID0gdGhpcy5sYW5ndWFnZS50cmFuc2Zvcm1hdGlvbnNbdHJhbnNmb3JtYXRpb25dLnNwbGl0KCc7Jyk7XG5cbiAgICAgICAgaWYgKHRyYW5zZm9ybWF0aW9uUGF0dGVybnNbMF0gPT09IGN1cnJlbmN5UGF0dGVybikge1xuICAgICAgICAgIHRoaXMuY3VzdG9tVHJhbnNmb3JtYXRpb24gPSB0cmFuc2Zvcm1hdGlvbjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG48L3NjcmlwdD5cbiIsIjwhLS0qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi0tPlxuPHRlbXBsYXRlPlxuICA8ZGl2XG4gICAgOmlkPVwiaWRcIlxuICAgIGNsYXNzPVwiY2FyZC1ibG9jayByb3dcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbVwiPlxuICAgICAgPGxhbmd1YWdlLWxpc3RcbiAgICAgICAgdi1pZj1cImxhbmd1YWdlc0NvdW50XCJcbiAgICAgICAgOmxhbmd1YWdlcz1cImxhbmd1YWdlc1wiXG4gICAgICAgIEBzZWxlY3RMYW5ndWFnZT1cInNlbGVjdExhbmd1YWdlXCJcbiAgICAgICAgQHJlc2V0TGFuZ3VhZ2U9XCJyZXNldExhbmd1YWdlXCJcbiAgICAgIC8+XG5cbiAgICAgIDxjdXJyZW5jeS1tb2RhbFxuICAgICAgICA6bGFuZ3VhZ2U9XCJzZWxlY3RlZExhbmd1YWdlXCJcbiAgICAgICAgQGNsb3NlPVwiY2xvc2VNb2RhbFwiXG4gICAgICAgIEBhcHBseUN1c3RvbWl6YXRpb249XCJhcHBseUN1c3RvbWl6YXRpb25cIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuICBpbXBvcnQge3Nob3dHcm93bH0gZnJvbSAnQGFwcC91dGlscy9ncm93bCc7XG4gIGltcG9ydCBMYW5ndWFnZUxpc3QgZnJvbSAnLi9MYW5ndWFnZUxpc3QnO1xuICBpbXBvcnQgQ3VycmVuY3lNb2RhbCBmcm9tICcuL0N1cnJlbmN5TW9kYWwnO1xuXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnQ3VycmVuY3lGb3JtYXR0ZXInLFxuICAgIGRhdGE6ICgpID0+ICh7c2VsZWN0ZWRMYW5ndWFnZTogbnVsbH0pLFxuICAgIHByb3BzOiB7XG4gICAgICBpZDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxhbmd1YWdlczoge1xuICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9LFxuICAgICAgY3VycmVuY3lEYXRhOiB7XG4gICAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tcG9uZW50czoge0xhbmd1YWdlTGlzdCwgQ3VycmVuY3lNb2RhbH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIGxhbmd1YWdlc0NvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYW5ndWFnZXMubGVuZ3RoO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG1ldGhvZHM6IHtcbiAgICAgIGNsb3NlTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IG51bGw7XG4gICAgICB9LFxuICAgICAgc2VsZWN0TGFuZ3VhZ2UobGFuZ3VhZ2UpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gbGFuZ3VhZ2U7XG4gICAgICB9LFxuICAgICAgcmVzZXRMYW5ndWFnZShsYW5ndWFnZSkge1xuICAgICAgICBjb25zdCBwYXR0ZXJucyA9IGxhbmd1YWdlLmN1cnJlbmN5UGF0dGVybi5zcGxpdCgnOycpO1xuICAgICAgICBsYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24ucG9zaXRpdmVQYXR0ZXJuID0gcGF0dGVybnNbMF07XG4gICAgICAgIGxhbmd1YWdlLnByaWNlU3BlY2lmaWNhdGlvbi5uZWdhdGl2ZVBhdHRlcm4gPSBwYXR0ZXJucy5sZW5ndGggPiAxID8gcGF0dGVybnNbMV0gOiBgLSR7cGF0dGVybnNbMF19YDtcbiAgICAgICAgbGFuZ3VhZ2UucHJpY2VTcGVjaWZpY2F0aW9uLmN1cnJlbmN5U3ltYm9sID0gbGFuZ3VhZ2UuY3VycmVuY3lTeW1ib2w7XG5cbiAgICAgICAgdGhpcy5jdXJyZW5jeURhdGEudHJhbnNmb3JtYXRpb25zW2xhbmd1YWdlLmlkXSA9ICcnO1xuICAgICAgICB0aGlzLmN1cnJlbmN5RGF0YS5zeW1ib2xzW2xhbmd1YWdlLmlkXSA9IGxhbmd1YWdlLmN1cnJlbmN5U3ltYm9sO1xuXG4gICAgICAgIHNob3dHcm93bCgnc3VjY2VzcycsIHRoaXMuJHQoJ2xpc3QucmVzZXQuc3VjY2VzcycpKTtcbiAgICAgIH0sXG4gICAgICBhcHBseUN1c3RvbWl6YXRpb24oY3VzdG9tRGF0YSkge1xuICAgICAgICBjb25zdCBzZWxlY3RlZFBhdHRlcm4gPSB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UudHJhbnNmb3JtYXRpb25zW1xuICAgICAgICAgIGN1c3RvbURhdGEudHJhbnNmb3JtYXRpb25cbiAgICAgICAgXTtcbiAgICAgICAgY29uc3QgcGF0dGVybnMgPSBzZWxlY3RlZFBhdHRlcm4uc3BsaXQoJzsnKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UucHJpY2VTcGVjaWZpY2F0aW9uLmN1cnJlbmN5U3ltYm9sID0gY3VzdG9tRGF0YS5zeW1ib2w7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZS5wcmljZVNwZWNpZmljYXRpb24ucG9zaXRpdmVQYXR0ZXJuID0gcGF0dGVybnNbMF07XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlLnByaWNlU3BlY2lmaWNhdGlvbi5uZWdhdGl2ZVBhdHRlcm4gPVxuICAgICAgICAgIHBhdHRlcm5zLmxlbmd0aCA+IDEgPyBwYXR0ZXJuc1sxXSA6IGAtJHtwYXR0ZXJuc1swXX1gO1xuXG4gICAgICAgIHRoaXMuY3VycmVuY3lEYXRhLnRyYW5zZm9ybWF0aW9uc1t0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UuaWRdID0gY3VzdG9tRGF0YS50cmFuc2Zvcm1hdGlvbjtcbiAgICAgICAgdGhpcy5jdXJyZW5jeURhdGEuc3ltYm9sc1t0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UuaWRdID0gY3VzdG9tRGF0YS5zeW1ib2w7XG5cbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG48L3NjcmlwdD5cbiIsIjwhLS0qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi0tPlxuPHRlbXBsYXRlPlxuICA8bW9kYWxcbiAgICBjb25maXJtYXRpb25cbiAgICA6bW9kYWwtdGl0bGU9XCJtb2RhbFRpdGxlXCJcbiAgICBAY2xvc2U9XCIkZW1pdCgnY2xvc2UnKVwiXG4gICAgQGNvbmZpcm09XCIkZW1pdCgnYXBwbHlDdXN0b21pemF0aW9uJywgY3VzdG9tRGF0YSlcIlxuICAgIHYtaWY9XCJsYW5ndWFnZSAhPT0gbnVsbFwiXG4gID5cbiAgICA8dGVtcGxhdGUgc2xvdD1cImJvZHlcIj5cbiAgICAgIDxjdXJyZW5jeS1mb3JtYXQtZm9ybVxuICAgICAgICA6bGFuZ3VhZ2U9XCJsYW5ndWFnZVwiXG4gICAgICAgIEBpbnB1dD1cImN1c3RvbURhdGEgPSAkZXZlbnRcIlxuICAgICAgLz5cbiAgICA8L3RlbXBsYXRlPlxuICA8L21vZGFsPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgaW1wb3J0IE1vZGFsIGZyb20gJ0B2dWUvY29tcG9uZW50cy9Nb2RhbCc7XG4gIGltcG9ydCBDdXJyZW5jeUZvcm1hdEZvcm0gZnJvbSAnLi9DdXJyZW5jeUZvcm1hdEZvcm0nO1xuXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnQ3VycmVuY3lNb2RhbCcsXG4gICAgZGF0YTogKCkgPT4gKHtcbiAgICAgIGN1c3RvbURhdGE6IG51bGwsXG4gICAgfSksXG4gICAgY29tcG9uZW50czoge1xuICAgICAgQ3VycmVuY3lGb3JtYXRGb3JtLFxuICAgICAgTW9kYWwsXG4gICAgfSxcbiAgICBwcm9wczoge1xuICAgICAgbGFuZ3VhZ2U6IHtcbiAgICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tcHV0ZWQ6IHtcbiAgICAgIG1vZGFsVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiR0KCdtb2RhbC50aXRsZScpICsgKHRoaXMubGFuZ3VhZ2UgIT09IG51bGwgPyBgICsgJHt0aGlzLmxhbmd1YWdlLm5hbWV9YCA6ICcnKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIiBzY29wZWQ+XG4gIEBpbXBvcnQgJ35Ac2Nzcy9jb25maWcvX3NldHRpbmdzLnNjc3MnO1xuXG4gIC5tb2RhbC1oZWFkZXIgLmNsb3NlIHtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICBjb2xvcjogJGdyYXktbWVkaXVtO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1vZGFsLWNvbnRlbnQge1xuICAgIGJvcmRlci1yYWRpdXM6IDBcbiAgfVxuPC9zdHlsZT5cbiIsIjwhLS0qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi0tPlxuPHRlbXBsYXRlPlxuICA8dGFibGUgY2xhc3M9XCJncmlkLXRhYmxlIGpzLWdyaWQtdGFibGUgdGFibGVcIj5cbiAgICA8dGhlYWQgY2xhc3M9XCJ0aGVhZC1kZWZhdWx0XCI+XG4gICAgICA8dHIgY2xhc3M9XCJjb2x1bW4taGVhZGVyc1wiPlxuICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICB7eyAkdCgnbGlzdC5sYW5ndWFnZScpIH19XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgIHt7ICR0KCdsaXN0LmV4YW1wbGUnKSB9fVxuICAgICAgICA8L3RoPlxuICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxuICAgICAgICAgICAge3sgJHQoJ2xpc3QuZWRpdCcpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkLWFjdGlvbnMtaGVhZGVyLXRleHRcIj5cbiAgICAgICAgICAgIHt7ICR0KCdsaXN0LnJlc2V0JykgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICA8dHJcbiAgICAgICAgdi1mb3I9XCJsYW5ndWFnZSBpbiBsYW5ndWFnZXNcIlxuICAgICAgICA6a2V5PVwibGFuZ3VhZ2UuaWRcIlxuICAgICAgPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAge3sgbGFuZ3VhZ2UubmFtZSB9fVxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAge3sgZGlzcGxheUZvcm1hdChsYW5ndWFnZSkgfX1cbiAgICAgICAgPC90ZD5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAtYWN0aW9uIHRleHQtcmlnaHRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuXCJcbiAgICAgICAgICAgICAgICBAY2xpY2sucHJldmVudC5zdG9wPVwiJGVtaXQoJ3NlbGVjdExhbmd1YWdlJywgbGFuZ3VhZ2UpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIj5lZGl0PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuICAgICAgICA8dGQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cC1hY3Rpb24gdGV4dC1yaWdodFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgICAgIEBjbGljay5wcmV2ZW50LnN0b3A9XCIkZW1pdCgncmVzZXRMYW5ndWFnZScsIGxhbmd1YWdlKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+cmVmcmVzaDwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG4gIGltcG9ydCB7TnVtYmVyRm9ybWF0dGVyfSBmcm9tICdAYXBwL2NsZHInO1xuXG4gIGV4cG9ydCBkZWZhdWx0IHtcbiAgICBuYW1lOiAnTGFuZ3VhZ2VMaXN0JyxcbiAgICBwcm9wczoge1xuICAgICAgbGFuZ3VhZ2VzOiB7XG4gICAgICAgIHR5cGU6IEFycmF5LFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICBkaXNwbGF5Rm9ybWF0KGxhbmd1YWdlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5Rm9ybWF0dGVyID0gTnVtYmVyRm9ybWF0dGVyLmJ1aWxkKGxhbmd1YWdlLnByaWNlU3BlY2lmaWNhdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJHQoJ2xpc3QuZXhhbXBsZS5mb3JtYXQnLCB7XG4gICAgICAgICAgJyVwcmljZSUnOiBjdXJyZW5jeUZvcm1hdHRlci5mb3JtYXQoMTQyNTE5OTkuNDIpLFxuICAgICAgICAgICclZGlzY291bnQlJzogY3VycmVuY3lGb3JtYXR0ZXIuZm9ybWF0KC01NjYuMjY4KSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG48L3NjcmlwdD5cbiIsIjwhLS0qKlxuICogQ29weXJpZ2h0IHNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBQcmVzdGFTaG9wIGlzIGFuIEludGVybmF0aW9uYWwgUmVnaXN0ZXJlZCBUcmFkZW1hcmsgJiBQcm9wZXJ0eSBvZiBQcmVzdGFTaG9wIFNBXG4gKlxuICogTk9USUNFIE9GIExJQ0VOU0VcbiAqXG4gKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqIHRoYXQgaXMgYnVuZGxlZCB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLm1kLlxuICogSXQgaXMgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIgYXQgdGhpcyBVUkw6XG4gKiBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjBcbiAqIElmIHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlIGFuZCBhcmUgdW5hYmxlIHRvXG4gKiBvYnRhaW4gaXQgdGhyb3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGFuIGVtYWlsXG4gKiB0byBsaWNlbnNlQHByZXN0YXNob3AuY29tIHNvIHdlIGNhbiBzZW5kIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuXG4gKlxuICogRElTQ0xBSU1FUlxuICpcbiAqIERvIG5vdCBlZGl0IG9yIGFkZCB0byB0aGlzIGZpbGUgaWYgeW91IHdpc2ggdG8gdXBncmFkZSBQcmVzdGFTaG9wIHRvIG5ld2VyXG4gKiB2ZXJzaW9ucyBpbiB0aGUgZnV0dXJlLiBJZiB5b3Ugd2lzaCB0byBjdXN0b21pemUgUHJlc3RhU2hvcCBmb3IgeW91clxuICogbmVlZHMgcGxlYXNlIHJlZmVyIHRvIGh0dHBzOi8vZGV2ZG9jcy5wcmVzdGFzaG9wLmNvbS8gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKlxuICogQGF1dGhvciAgICBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnMgPGNvbnRhY3RAcHJlc3Rhc2hvcC5jb20+XG4gKiBAY29weXJpZ2h0IFNpbmNlIDIwMDcgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzXG4gKiBAbGljZW5zZSAgIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMCBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKi0tPlxuPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDx0cmFuc2l0aW9uIG5hbWU9XCJmYWRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwgc2hvd1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtZGlhbG9nLWNlbnRlcmVkXCJcbiAgICAgICAgICByb2xlPVwiZG9jdW1lbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jb250ZW50XCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cIm1vZGFsVGl0bGVcIlxuICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cIm1vZGFsRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgdi1jbGljay1vdXRzaWRlPVwiY2xvc2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoZWFkZXJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IG1vZGFsVGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbG9zZVwiXG4gICAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrLnByZXZlbnQuc3RvcD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj7Dlzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9zbG90PlxuICAgICAgICAgICAgPC9oZWFkZXI+XG4gICAgICAgICAgICA8c2VjdGlvblxuICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsLWJvZHlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiYm9keVwiIC8+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxzbG90XG4gICAgICAgICAgICAgICAgbmFtZT1cImZvb3RlclwiXG4gICAgICAgICAgICAgICAgdi1pZj1cIiFjb25maXJtYXRpb25cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrLnByZXZlbnQuc3RvcD1cImNsb3NlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZSBtb2RhbFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY2xvc2VMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L3Nsb3Q+XG5cbiAgICAgICAgICAgICAgPHNsb3RcbiAgICAgICAgICAgICAgICBuYW1lPVwiZm9vdGVyLWNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgICAgdi1pZj1cImNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICBAY2xpY2sucHJldmVudC5zdG9wPVwiY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlIG1vZGFsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjYW5jZWxMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICBAY2xpY2sucHJldmVudC5zdG9wPVwiY29uZmlybVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgY29uZmlybUxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvc2xvdD5cbiAgICAgICAgICAgIDwvZm9vdGVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cIm91dHNpZGVcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC90cmFuc2l0aW9uPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwibW9kYWwtYmFja2Ryb3Agc2hvd1wiXG4gICAgICBAY2xpY2sucHJldmVudC5zdG9wPVwiY2xvc2VcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbiAgaW1wb3J0ICdAdnVlL2RpcmVjdGl2ZXMvY2xpY2stb3V0c2lkZSc7XG5cbiAgZXhwb3J0IGRlZmF1bHQge1xuICAgIG5hbWU6ICdNb2RhbCcsXG4gICAgcHJvcHM6IHtcbiAgICAgIGNvbmZpcm1hdGlvbjoge1xuICAgICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIGNhbmNlbExhYmVsOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0KCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLiR0KCdtb2RhbC5jYW5jZWwnKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb25maXJtTGFiZWw6IHtcbiAgICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuJHQoJ21vZGFsLmFwcGx5Jyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgY2xvc2VMYWJlbDoge1xuICAgICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy4kdCgnbW9kYWwuY2xvc2UnKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBtb2RhbFRpdGxlOiB7XG4gICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0KCkge1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICBjbG9zZSgpIHtcbiAgICAgICAgdGhpcy4kZW1pdCgnY2xvc2UnKTtcbiAgICAgIH0sXG4gICAgICBjb25maXJtKCkge1xuICAgICAgICB0aGlzLiRlbWl0KCdjb25maXJtJyk7XG4gICAgICB9LFxuICAgIH0sXG4gIH07XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJzY3NzXCIgc2NvcGVkPlxuICAubW9kYWwuc2hvdyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1vZGFsLWZhZGUtZW50ZXItYWN0aXZlLCAubW9kYWwtZmFkZS1sZWF2ZS1hY3RpdmUge1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgLjVzO1xuICB9XG4gIC5tb2RhbC1mYWRlLWVudGVyLCAubW9kYWwtZmFkZS1sZWF2ZS10byAvKiAuZmFkZS1sZWF2ZS1hY3RpdmUgYmVsb3cgdmVyc2lvbiAyLjEuOCAqLyB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuPC9zdHlsZT5cbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL2dldC1pdGVyYXRvclwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9pcy1pdGVyYWJsZVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9jcmVhdGVcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2RlZmluZS1wcm9wZXJ0eVwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvZ2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5c1wiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZlwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9wcm9taXNlXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbFwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3JcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9wcm9taXNlID0gcmVxdWlyZShcIi4uL2NvcmUtanMvcHJvbWlzZVwiKTtcblxudmFyIF9wcm9taXNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb21pc2UpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZ2VuID0gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gbmV3IF9wcm9taXNlMi5kZWZhdWx0KGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGZ1bmN0aW9uIHN0ZXAoa2V5LCBhcmcpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgICAgICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gX3Byb21pc2UyLmRlZmF1bHQucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTtcbiAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBzdGVwKFwidGhyb3dcIiwgZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RlcChcIm5leHRcIik7XG4gICAgfSk7XG4gIH07XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7XG4gIGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7XG4gICAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgICAgKDAsIF9kZWZpbmVQcm9wZXJ0eTIuZGVmYXVsdCkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICAgIGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpO1xuICAgIHJldHVybiBDb25zdHJ1Y3RvcjtcbiAgfTtcbn0oKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvYXNzaWduXCIpO1xuXG52YXIgX2Fzc2lnbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3NpZ24pO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBfYXNzaWduMi5kZWZhdWx0IHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9zZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpO1xuXG52YXIgX3NldFByb3RvdHlwZU9mMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NldFByb3RvdHlwZU9mKTtcblxudmFyIF9jcmVhdGUgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvY3JlYXRlXCIpO1xuXG52YXIgX2NyZWF0ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGUpO1xuXG52YXIgX3R5cGVvZjIgPSByZXF1aXJlKFwiLi4vaGVscGVycy90eXBlb2ZcIik7XG5cbnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgKHR5cGVvZiBzdXBlckNsYXNzID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6ICgwLCBfdHlwZW9mMy5kZWZhdWx0KShzdXBlckNsYXNzKSkpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gKDAsIF9jcmVhdGUyLmRlZmF1bHQpKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH1cbiAgfSk7XG4gIGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQgPyAoMCwgX3NldFByb3RvdHlwZU9mMi5kZWZhdWx0KShzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF90eXBlb2YyID0gcmVxdWlyZShcIi4uL2hlbHBlcnMvdHlwZW9mXCIpO1xuXG52YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKHNlbGYsIGNhbGwpIHtcbiAgaWYgKCFzZWxmKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIGNhbGwgJiYgKCh0eXBlb2YgY2FsbCA9PT0gXCJ1bmRlZmluZWRcIiA/IFwidW5kZWZpbmVkXCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2lzSXRlcmFibGUyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvaXMtaXRlcmFibGVcIik7XG5cbnZhciBfaXNJdGVyYWJsZTMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc0l0ZXJhYmxlMik7XG5cbnZhciBfZ2V0SXRlcmF0b3IyID0gcmVxdWlyZShcIi4uL2NvcmUtanMvZ2V0LWl0ZXJhdG9yXCIpO1xuXG52YXIgX2dldEl0ZXJhdG9yMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2dldEl0ZXJhdG9yMik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHtcbiAgICB2YXIgX2FyciA9IFtdO1xuICAgIHZhciBfbiA9IHRydWU7XG4gICAgdmFyIF9kID0gZmFsc2U7XG4gICAgdmFyIF9lID0gdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGZvciAodmFyIF9pID0gKDAsIF9nZXRJdGVyYXRvcjMuZGVmYXVsdCkoYXJyKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHtcbiAgICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgICBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfZCA9IHRydWU7XG4gICAgICBfZSA9IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIF9hcnI7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkge1xuICAgICAgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7XG4gICAgfVxuICB9O1xufSgpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2Zyb20gPSByZXF1aXJlKFwiLi4vY29yZS1qcy9hcnJheS9mcm9tXCIpO1xuXG52YXIgX2Zyb20yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZnJvbSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFycjJbaV0gPSBhcnJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFycjI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuICgwLCBfZnJvbTIuZGVmYXVsdCkoYXJyKTtcbiAgfVxufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9pdGVyYXRvciA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvclwiKTtcblxudmFyIF9pdGVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pdGVyYXRvcik7XG5cbnZhciBfc3ltYm9sID0gcmVxdWlyZShcIi4uL2NvcmUtanMvc3ltYm9sXCIpO1xuXG52YXIgX3N5bWJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1ib2wpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIF9pdGVyYXRvcjIuZGVmYXVsdCA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH0gOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLmRlZmF1bHQgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gXCJzeW1ib2xcIiA/IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufSA6IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmogPT09IFwidW5kZWZpbmVkXCIgPyBcInVuZGVmaW5lZFwiIDogX3R5cGVvZihvYmopO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWdlbmVyYXRvci1ydW50aW1lXCIpO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5hcnJheS5mcm9tJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5BcnJheS5mcm9tO1xuIiwicmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9jb3JlLmdldC1pdGVyYXRvcicpO1xuIiwicmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3InKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9jb3JlLmlzLWl0ZXJhYmxlJyk7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QuYXNzaWduO1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmNyZWF0ZScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gJE9iamVjdC5jcmVhdGUoUCwgRCk7XG59O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xudmFyICRPYmplY3QgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpO1xufTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmtleXM7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3Quc2V0LXByb3RvdHlwZS1vZicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LnNldFByb3RvdHlwZU9mO1xuIiwicmVxdWlyZSgnLi4vbW9kdWxlcy9lczYub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXM3LnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lczcucHJvbWlzZS50cnknKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vbW9kdWxlcy9fY29yZScpLlByb21pc2U7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5zeW1ib2wnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczcuc3ltYm9sLm9ic2VydmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlN5bWJvbDtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX3drcy1leHQnKS5mKCdpdGVyYXRvcicpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgQ29uc3RydWN0b3IsIG5hbWUsIGZvcmJpZGRlbkZpZWxkKSB7XG4gIGlmICghKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGFuIG9iamVjdCEnKTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi9fdG8tYWJzb2x1dGUtaW5kZXgnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSB7XG4gICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuIiwiLy8gZ2V0dGluZyB0YWcgZnJvbSAxOS4xLjMuNiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKClcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCBULCBCO1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAoVCA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVEFHKSkgPT0gJ3N0cmluZycgPyBUXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBBUkcgPyBjb2YoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAoQiA9IGNvZihPKSkgPT0gJ09iamVjdCcgJiYgdHlwZW9mIE8uY2FsbGVlID09ICdmdW5jdGlvbicgPyAnQXJndW1lbnRzJyA6IEI7XG59O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNi4xMScgfTtcbmlmICh0eXBlb2YgX19lID09ICdudW1iZXInKSBfX2UgPSBjb3JlOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHtcbiAgaWYgKGluZGV4IGluIG9iamVjdCkgJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07XG4iLCIvLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIvLyA3LjIuMSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIi8vIElFIDgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gKFxuICAnY29uc3RydWN0b3IsaGFzT3duUHJvcGVydHksaXNQcm90b3R5cGVPZixwcm9wZXJ0eUlzRW51bWVyYWJsZSx0b0xvY2FsZVN0cmluZyx0b1N0cmluZyx2YWx1ZU9mJ1xuKS5zcGxpdCgnLCcpO1xuIiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgcmVzdWx0ID0gZ2V0S2V5cyhpdCk7XG4gIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZiAoZ2V0U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gZ2V0U3ltYm9scyhpdCk7XG4gICAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChzeW1ib2xzLmxlbmd0aCA+IGkpIGlmIChpc0VudW0uY2FsbChpdCwga2V5ID0gc3ltYm9sc1tpKytdKSkgcmVzdWx0LnB1c2goa2V5KTtcbiAgfSByZXR1cm4gcmVzdWx0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwidmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBCUkVBSyA9IHt9O1xudmFyIFJFVFVSTiA9IHt9O1xudmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgZW50cmllcywgZm4sIHRoYXQsIElURVJBVE9SKSB7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXJhYmxlOyB9IDogZ2V0SXRlckZuKGl0ZXJhYmxlKTtcbiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHN0ZXAsIGl0ZXJhdG9yLCByZXN1bHQ7XG4gIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpO1xuICAvLyBmYXN0IGNhc2UgZm9yIGFycmF5cyB3aXRoIGRlZmF1bHQgaXRlcmF0b3JcbiAgaWYgKGlzQXJyYXlJdGVyKGl0ZXJGbikpIGZvciAobGVuZ3RoID0gdG9MZW5ndGgoaXRlcmFibGUubGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH0gZWxzZSBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoaXRlcmFibGUpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7KSB7XG4gICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7XG4gICAgaWYgKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5leHBvcnRzLkJSRUFLID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuIiwibW9kdWxlLmV4cG9ydHMgPSAhcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdkaXYnKSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsIi8vIGZhc3QgYXBwbHksIGh0dHA6Ly9qc3BlcmYubG5raXQuY29tL2Zhc3QtYXBwbHkvNVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIGFyZ3MsIHRoYXQpIHtcbiAgdmFyIHVuID0gdGhhdCA9PT0gdW5kZWZpbmVkO1xuICBzd2l0Y2ggKGFyZ3MubGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3MpO1xufTtcbiIsIi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApID8gT2JqZWN0IDogZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07XG4iLCIvLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTtcbiIsIi8vIDcuMi4yIElzQXJyYXkoYXJndW1lbnQpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkge1xuICByZXR1cm4geyB2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZSB9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHRydWU7XG4iLCJ2YXIgTUVUQSA9IHJlcXVpcmUoJy4vX3VpZCcpKCdtZXRhJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBzZXREZXNjID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBpZCA9IDA7XG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0cnVlO1xufTtcbnZhciBGUkVFWkUgPSAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7XG4gIHNldERlc2MoaXQsIE1FVEEsIHsgdmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9IH0pO1xufTtcbnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJyA/IGl0IDogKHR5cGVvZiBpdCA9PSAnc3RyaW5nJyA/ICdTJyA6ICdQJykgKyBpdDtcbiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7XG4gICAgLy8gY2FuJ3Qgc2V0IG1ldGFkYXRhIHRvIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RcbiAgICBpZiAoIWlzRXh0ZW5zaWJsZShpdCkpIHJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuICdFJztcbiAgICAvLyBhZGQgbWlzc2luZyBtZXRhZGF0YVxuICAgIHNldE1ldGEoaXQpO1xuICAvLyByZXR1cm4gb2JqZWN0IElEXG4gIH0gcmV0dXJuIGl0W01FVEFdLmk7XG59O1xudmFyIGdldFdlYWsgPSBmdW5jdGlvbiAoaXQsIGNyZWF0ZSkge1xuICBpZiAoIWhhcyhpdCwgTUVUQSkpIHtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmICghaXNFeHRlbnNpYmxlKGl0KSkgcmV0dXJuIHRydWU7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkZCBtaXNzaW5nIG1ldGFkYXRhXG4gICAgc2V0TWV0YShpdCk7XG4gIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzXG4gIH0gcmV0dXJuIGl0W01FVEFdLnc7XG59O1xuLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nXG52YXIgb25GcmVlemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKEZSRUVaRSAmJiBtZXRhLk5FRUQgJiYgaXNFeHRlbnNpYmxlKGl0KSAmJiAhaGFzKGl0LCBNRVRBKSkgc2V0TWV0YShpdCk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgbWV0YSA9IG1vZHVsZS5leHBvcnRzID0ge1xuICBLRVk6IE1FVEEsXG4gIE5FRUQ6IGZhbHNlLFxuICBmYXN0S2V5OiBmYXN0S2V5LFxuICBnZXRXZWFrOiBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBPYnNlcnZlciA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBQcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG52YXIgaXNOb2RlID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhlYWQsIGxhc3QsIG5vdGlmeTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKGlzTm9kZSAmJiAocGFyZW50ID0gcHJvY2Vzcy5kb21haW4pKSBwYXJlbnQuZXhpdCgpO1xuICAgIHdoaWxlIChoZWFkKSB7XG4gICAgICBmbiA9IGhlYWQuZm47XG4gICAgICBoZWFkID0gaGVhZC5uZXh0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm4oKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIE5vZGUuanNcbiAgaWYgKGlzTm9kZSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyBTYWZhcmkgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIH0gZWxzZSBpZiAoT2JzZXJ2ZXIgJiYgIShnbG9iYWwubmF2aWdhdG9yICYmIGdsb2JhbC5uYXZpZ2F0b3Iuc3RhbmRhbG9uZSkpIHtcbiAgICB2YXIgdG9nZ2xlID0gdHJ1ZTtcbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwgeyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIG5vZGUuZGF0YSA9IHRvZ2dsZSA9ICF0b2dnbGU7XG4gICAgfTtcbiAgLy8gZW52aXJvbm1lbnRzIHdpdGggbWF5YmUgbm9uLWNvbXBsZXRlbHkgY29ycmVjdCwgYnV0IGV4aXN0ZW50IFByb21pc2VcbiAgfSBlbHNlIGlmIChQcm9taXNlICYmIFByb21pc2UucmVzb2x2ZSkge1xuICAgIC8vIFByb21pc2UucmVzb2x2ZSB3aXRob3V0IGFuIGFyZ3VtZW50IHRocm93cyBhbiBlcnJvciBpbiBMRyBXZWJPUyAyXG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9taXNlLnRoZW4oZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChmbikge1xuICAgIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICAgIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmICghaGVhZCkge1xuICAgICAgaGVhZCA9IHRhc2s7XG4gICAgICBub3RpZnkoKTtcbiAgICB9IGxhc3QgPSB0YXNrO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDI1LjQuMS41IE5ld1Byb21pc2VDYXBhYmlsaXR5KEMpXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xuXG5mdW5jdGlvbiBQcm9taXNlQ2FwYWJpbGl0eShDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmYgPSBmdW5jdGlvbiAoQykge1xuICByZXR1cm4gbmV3IFByb21pc2VDYXBhYmlsaXR5KEMpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG52YXIgZ09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgcElFID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxuLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG5tb2R1bGUuZXhwb3J0cyA9ICEkYXNzaWduIHx8IHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICB2YXIgQSA9IHt9O1xuICB2YXIgQiA9IHt9O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgdmFyIFMgPSBTeW1ib2woKTtcbiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAoaykgeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCA9IHRvT2JqZWN0KHRhcmdldCk7XG4gIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMTtcbiAgdmFyIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHZhciBpc0VudW0gPSBwSUUuZjtcbiAgd2hpbGUgKGFMZW4gPiBpbmRleCkge1xuICAgIHZhciBTID0gSU9iamVjdChhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTtcbiAgICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gICAgdmFyIGogPSAwO1xuICAgIHZhciBrZXk7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGopIHtcbiAgICAgIGtleSA9IGtleXNbaisrXTtcbiAgICAgIGlmICghREVTQ1JJUFRPUlMgfHwgaXNFbnVtLmNhbGwoUywga2V5KSkgVFtrZXldID0gU1trZXldO1xuICAgIH1cbiAgfSByZXR1cm4gVDtcbn0gOiAkYXNzaWduO1xuIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgY3JlYXRlRGVzYyA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSU9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlRGVzYyghcElFLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBnT1BOID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mO1xudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzXG4gID8gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMod2luZG93KSA6IFtdO1xuXG52YXIgZ2V0V2luZG93TmFtZXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ09QTihpdCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHtcbiAgcmV0dXJuIHdpbmRvd05hbWVzICYmIHRvU3RyaW5nLmNhbGwoaXQpID09ICdbb2JqZWN0IFdpbmRvd10nID8gZ2V0V2luZG93TmFtZXMoaXQpIDogZ09QTih0b0lPYmplY3QoaXQpKTtcbn07XG4iLCIvLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiZXhwb3J0cy5mID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChLRVksIGV4ZWMpIHtcbiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldO1xuICB2YXIgZXhwID0ge307XG4gIGV4cFtLRVldID0gZXhlYyhmbik7XG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlOiBmYWxzZSwgdjogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4geyBlOiB0cnVlLCB2OiBlIH07XG4gIH1cbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDLCB4KSB7XG4gIGFuT2JqZWN0KEMpO1xuICBpZiAoaXNPYmplY3QoeCkgJiYgeC5jb25zdHJ1Y3RvciA9PT0gQykgcmV0dXJuIHg7XG4gIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5LmYoQyk7XG4gIHZhciByZXNvbHZlID0gcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgcmVzb2x2ZSh4KTtcbiAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LnByb21pc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChzYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pO1xuICB9IHJldHVybiB0YXJnZXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCIvLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBpZiAoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCkgdGhyb3cgVHlwZUVycm9yKHByb3RvICsgXCI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhXCIpO1xufTtcbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgZnVuY3Rpb24gKHRlc3QsIGJ1Z2d5LCBzZXQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfVxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgICAgICBlbHNlIHNldChPLCBwcm90byk7XG4gICAgICAgIHJldHVybiBPO1xuICAgICAgfTtcbiAgICB9KHt9LCBmYWxzZSkgOiB1bmRlZmluZWQpLFxuICBjaGVjazogY2hlY2tcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBTUEVDSUVTID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZKSB7XG4gIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07XG4gIGlmIChERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKSBkUC5mKEMsIFNQRUNJRVMsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTtcbiIsInZhciBkZWYgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFRBRyA9IHJlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgdGFnLCBzdGF0KSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gc3RhdCA/IGl0IDogaXQucHJvdG90eXBlLCBUQUcpKSBkZWYoaXQsIFRBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWcgfSk7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IChnbG9iYWxbU0hBUkVEXSA9IHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246IGNvcmUudmVyc2lvbixcbiAgbW9kZTogcmVxdWlyZSgnLi9fbGlicmFyeScpID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsIi8vIDcuMy4yMCBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKVxudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xudmFyIFNQRUNJRVMgPSByZXF1aXJlKCcuL193a3MnKSgnc3BlY2llcycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywgRCkge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBEIDogYUZ1bmN0aW9uKFMpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbi8vIHRydWUgIC0+IFN0cmluZyNhdFxuLy8gZmFsc2UgLT4gU3RyaW5nI2NvZGVQb2ludEF0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh0aGF0LCBwb3MpIHtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKTtcbiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBsID0gcy5sZW5ndGg7XG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGEgPSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgcmV0dXJuIGEgPCAweGQ4MDAgfHwgYSA+IDB4ZGJmZiB8fCBpICsgMSA9PT0gbCB8fCAoYiA9IHMuY2hhckNvZGVBdChpICsgMSkpIDwgMHhkYzAwIHx8IGIgPiAweGRmZmZcbiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhXG4gICAgICA6IFRPX1NUUklORyA/IHMuc2xpY2UoaSwgaSArIDIpIDogKGEgLSAweGQ4MDAgPDwgMTApICsgKGIgLSAweGRjMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG4iLCJ2YXIgY3R4ID0gcmVxdWlyZSgnLi9fY3R4Jyk7XG52YXIgaW52b2tlID0gcmVxdWlyZSgnLi9faW52b2tlJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4vX2h0bWwnKTtcbnZhciBjZWwgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHNldFRhc2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlO1xudmFyIGNsZWFyVGFzayA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBNZXNzYWdlQ2hhbm5lbCA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbDtcbnZhciBEaXNwYXRjaCA9IGdsb2JhbC5EaXNwYXRjaDtcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyIGRlZmVyLCBjaGFubmVsLCBwb3J0O1xudmFyIHJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgaWYgKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSkge1xuICAgIHZhciBmbiA9IHF1ZXVlW2lkXTtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICAgIGZuKCk7XG4gIH1cbn07XG52YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXRUYXNrIHx8ICFjbGVhclRhc2spIHtcbiAgc2V0VGFzayA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJykge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGN0eChydW4sIGlkLCAxKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCkge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gY3R4KHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQsIDEpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJiB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJiAhZ2xvYmFsLmltcG9ydFNjcmlwdHMpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsICcqJyk7XG4gICAgfTtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGh0bWwucmVtb3ZlQ2hpbGQodGhpcyk7XG4gICAgICAgIHJ1bi5jYWxsKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChjdHgocnVuLCBpZCwgMSksIDApO1xuICAgIH07XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldFRhc2ssXG4gIGNsZWFyOiBjbGVhclRhc2tcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuIiwiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWwubmF2aWdhdG9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdmlnYXRvciAmJiBuYXZpZ2F0b3IudXNlckFnZW50IHx8ICcnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciB3a3NFeHQgPSByZXF1aXJlKCcuL193a3MtZXh0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZiAobmFtZS5jaGFyQXQoMCkgIT0gJ18nICYmICEobmFtZSBpbiAkU3ltYm9sKSkgZGVmaW5lUHJvcGVydHkoJFN5bWJvbCwgbmFtZSwgeyB2YWx1ZTogd2tzRXh0LmYobmFtZSkgfSk7XG59O1xuIiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGdldCA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvciA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXRlckZuID0gZ2V0KGl0KTtcbiAgaWYgKHR5cGVvZiBpdGVyRm4gIT0gJ2Z1bmN0aW9uJykgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIHJldHVybiBhbk9iamVjdChpdGVyRm4uY2FsbChpdCkpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyIElURVJBVE9SID0gcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPID0gT2JqZWN0KGl0KTtcbiAgcmV0dXJuIE9bSVRFUkFUT1JdICE9PSB1bmRlZmluZWRcbiAgICB8fCAnQEBpdGVyYXRvcicgaW4gT1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICB8fCBJdGVyYXRvcnMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihPKSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuL19pdGVyLWNhbGwnKTtcbnZhciBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG52YXIgZ2V0SXRlckZuID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbiAoaXRlcikgeyBBcnJheS5mcm9tKGl0ZXIpOyB9KSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjIuMSBBcnJheS5mcm9tKGFycmF5TGlrZSwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KGFycmF5TGlrZSk7XG4gICAgdmFyIEMgPSB0eXBlb2YgdGhpcyA9PSAnZnVuY3Rpb24nID8gdGhpcyA6IEFycmF5O1xuICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgbWFwZm4gPSBhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgaXRlckZuID0gZ2V0SXRlckZuKE8pO1xuICAgIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7XG4gICAgLy8gaWYgb2JqZWN0IGlzbid0IGl0ZXJhYmxlIG9yIGl0J3MgYXJyYXkgd2l0aCBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIHNpbXBsZSBjYXNlXG4gICAgaWYgKGl0ZXJGbiAhPSB1bmRlZmluZWQgJiYgIShDID09IEFycmF5ICYmIGlzQXJyYXlJdGVyKGl0ZXJGbikpKSB7XG4gICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgICBjcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBtYXBwaW5nID8gY2FsbChpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICAgIGZvciAocmVzdWx0ID0gbmV3IEMobGVuZ3RoKTsgbGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgc3RlcCA9IHJlcXVpcmUoJy4vX2l0ZXItc3RlcCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgdGhpcy5fdCA9IHRvSU9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgLy8ga2luZFxuLy8gMjIuMS41LjIuMSAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGtpbmQgPSB0aGlzLl9rO1xuICB2YXIgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmICghTyB8fCBpbmRleCA+PSBPLmxlbmd0aCkge1xuICAgIHRoaXMuX3QgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHN0ZXAoMSk7XG4gIH1cbiAgaWYgKGtpbmQgPT0gJ2tleXMnKSByZXR1cm4gc3RlcCgwLCBpbmRleCk7XG4gIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7XG4gIHJldHVybiBzdGVwKDAsIFtpbmRleCwgT1tpbmRleF1dKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlICg5LjQuNC42LCA5LjQuNC43KVxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4yIC8gMTUuMi4zLjUgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpIH0pO1xuIiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZiB9KTtcbiIsIi8vIDE5LjEuMi45IE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2dldFByb3RvdHlwZU9mJywgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoaXQpIHtcbiAgICByZXR1cm4gJGdldFByb3RvdHlwZU9mKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKVxudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0Jyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2tleXMnLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBrZXlzKGl0KSB7XG4gICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH07XG59KTtcbiIsIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IHNldFByb3RvdHlwZU9mOiByZXF1aXJlKCcuL19zZXQtcHJvdG8nKS5zZXQgfSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKTtcbnZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuL19taWNyb3Rhc2snKSgpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi9fbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuL19wZXJmb3JtJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi9fdXNlci1hZ2VudCcpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi9fcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4IHx8ICcnO1xudmFyICRQcm9taXNlID0gZ2xvYmFsW1BST01JU0VdO1xudmFyIGlzTm9kZSA9IGNsYXNzb2YocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xudmFyIGVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIEludGVybmFsLCBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHksIE93blByb21pc2VDYXBhYmlsaXR5LCBXcmFwcGVyO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICAvLyBjb3JyZWN0IHN1YmNsYXNzaW5nIHdpdGggQEBzcGVjaWVzIHN1cHBvcnRcbiAgICB2YXIgcHJvbWlzZSA9ICRQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgdmFyIEZha2VQcm9taXNlID0gKHByb21pc2UuY29uc3RydWN0b3IgPSB7fSlbcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKV0gPSBmdW5jdGlvbiAoZXhlYykge1xuICAgICAgZXhlYyhlbXB0eSwgZW1wdHkpO1xuICAgIH07XG4gICAgLy8gdW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICAgIHJldHVybiAoaXNOb2RlIHx8IHR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQgPT0gJ2Z1bmN0aW9uJylcbiAgICAgICYmIHByb21pc2UudGhlbihlbXB0eSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZVxuICAgICAgLy8gdjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgICAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gICAgICAvLyB3ZSBjYW4ndCBkZXRlY3QgaXQgc3luY2hyb25vdXNseSwgc28ganVzdCBjaGVjayB2ZXJzaW9uc1xuICAgICAgJiYgdjguaW5kZXhPZignNi42JykgIT09IDBcbiAgICAgICYmIHVzZXJBZ2VudC5pbmRleE9mKCdDaHJvbWUvNjYnKSA9PT0gLTE7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxufSgpO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcbnZhciBub3RpZnkgPSBmdW5jdGlvbiAocHJvbWlzZSwgaXNSZWplY3QpIHtcbiAgaWYgKHByb21pc2UuX24pIHJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgb2sgPSBwcm9taXNlLl9zID09IDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbiAocmVhY3Rpb24pIHtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHByb21pc2UuX2ggPT0gMikgb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGhhbmRsZXIgPT09IHRydWUpIHJlc3VsdCA9IHZhbHVlO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGRvbWFpbikgZG9tYWluLmVudGVyKCk7XG4gICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVyKHZhbHVlKTsgLy8gbWF5IHRocm93XG4gICAgICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgICAgIGRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgICAgIGV4aXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IHJlYWN0aW9uLnByb21pc2UpIHtcbiAgICAgICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aGVuLmNhbGwocmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0gZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdoaWxlIChjaGFpbi5sZW5ndGggPiBpKSBydW4oY2hhaW5baSsrXSk7IC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgcHJvbWlzZS5fYyA9IFtdO1xuICAgIHByb21pc2UuX24gPSBmYWxzZTtcbiAgICBpZiAoaXNSZWplY3QgJiYgIXByb21pc2UuX2gpIG9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICB0YXNrLmNhbGwoZ2xvYmFsLCBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZhbHVlID0gcHJvbWlzZS5fdjtcbiAgICB2YXIgdW5oYW5kbGVkID0gaXNVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgdmFyIHJlc3VsdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZiAodW5oYW5kbGVkKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGlzTm9kZSkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdCgndW5oYW5kbGVkUmVqZWN0aW9uJywgdmFsdWUsIHByb21pc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhbmRsZXIgPSBnbG9iYWwub251bmhhbmRsZWRyZWplY3Rpb24pIHtcbiAgICAgICAgICBoYW5kbGVyKHsgcHJvbWlzZTogcHJvbWlzZSwgcmVhc29uOiB2YWx1ZSB9KTtcbiAgICAgICAgfSBlbHNlIGlmICgoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIEJyb3dzZXJzIHNob3VsZCBub3QgdHJpZ2dlciBgcmVqZWN0aW9uSGFuZGxlZGAgZXZlbnQgaWYgaXQgd2FzIGhhbmRsZWQgaGVyZSwgTm9kZUpTIC0gc2hvdWxkXG4gICAgICBwcm9taXNlLl9oID0gaXNOb2RlIHx8IGlzVW5oYW5kbGVkKHByb21pc2UpID8gMiA6IDE7XG4gICAgfSBwcm9taXNlLl9hID0gdW5kZWZpbmVkO1xuICAgIGlmICh1bmhhbmRsZWQgJiYgcmVzdWx0LmUpIHRocm93IHJlc3VsdC52O1xuICB9KTtcbn07XG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICByZXR1cm4gcHJvbWlzZS5faCAhPT0gMSAmJiAocHJvbWlzZS5fYSB8fCBwcm9taXNlLl9jKS5sZW5ndGggPT09IDA7XG59O1xudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYW5kbGVyO1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgIHByb2Nlc3MuZW1pdCgncmVqZWN0aW9uSGFuZGxlZCcsIHByb21pc2UpO1xuICAgIH0gZWxzZSBpZiAoaGFuZGxlciA9IGdsb2JhbC5vbnJlamVjdGlvbmhhbmRsZWQpIHtcbiAgICAgIGhhbmRsZXIoeyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHByb21pc2UuX3YgfSk7XG4gICAgfVxuICB9KTtcbn07XG52YXIgJHJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICB2YXIgcHJvbWlzZSA9IHRoaXM7XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYgKCFwcm9taXNlLl9hKSBwcm9taXNlLl9hID0gcHJvbWlzZS5fYy5zbGljZSgpO1xuICBub3RpZnkocHJvbWlzZSwgdHJ1ZSk7XG59O1xudmFyICRyZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgdmFyIHRoZW47XG4gIGlmIChwcm9taXNlLl9kKSByZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgdHJ5IHtcbiAgICBpZiAocHJvbWlzZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmICh0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSkpIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBfdzogcHJvbWlzZSwgX2Q6IGZhbHNlIH07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAkcmVqZWN0LmNhbGwod3JhcHBlciwgZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9taXNlLl92ID0gdmFsdWU7XG4gICAgICBwcm9taXNlLl9zID0gMTtcbiAgICAgIG5vdGlmeShwcm9taXNlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgJHJlamVjdC5jYWxsKHsgX3c6IHByb21pc2UsIF9kOiBmYWxzZSB9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gICRQcm9taXNlID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICRyZWplY3QuY2FsbCh0aGlzLCBlcnIpO1xuICAgIH1cbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHRoaXMuX2MgPSBbXTsgICAgICAgICAgICAgLy8gPC0gYXdhaXRpbmcgcmVhY3Rpb25zXG4gICAgdGhpcy5fYSA9IHVuZGVmaW5lZDsgICAgICAvLyA8LSBjaGVja2VkIGluIGlzVW5oYW5kbGVkIHJlYWN0aW9uc1xuICAgIHRoaXMuX3MgPSAwOyAgICAgICAgICAgICAgLy8gPC0gc3RhdGVcbiAgICB0aGlzLl9kID0gZmFsc2U7ICAgICAgICAgIC8vIDwtIGRvbmVcbiAgICB0aGlzLl92ID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIHZhbHVlXG4gICAgdGhpcy5faCA9IDA7ICAgICAgICAgICAgICAvLyA8LSByZWplY3Rpb24gc3RhdGUsIDAgLSBkZWZhdWx0LCAxIC0gaGFuZGxlZCwgMiAtIHVuaGFuZGxlZFxuICAgIHRoaXMuX24gPSBmYWxzZTsgICAgICAgICAgLy8gPC0gbm90aWZ5XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpKCRQcm9taXNlLnByb3RvdHlwZSwge1xuICAgIC8vIDI1LjQuNS4zIFByb21pc2UucHJvdG90eXBlLnRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRQcm9taXNlKSk7XG4gICAgICByZWFjdGlvbi5vayA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiB0cnVlO1xuICAgICAgcmVhY3Rpb24uZmFpbCA9IHR5cGVvZiBvblJlamVjdGVkID09ICdmdW5jdGlvbicgJiYgb25SZWplY3RlZDtcbiAgICAgIHJlYWN0aW9uLmRvbWFpbiA9IGlzTm9kZSA/IHByb2Nlc3MuZG9tYWluIDogdW5kZWZpbmVkO1xuICAgICAgdGhpcy5fYy5wdXNoKHJlYWN0aW9uKTtcbiAgICAgIGlmICh0aGlzLl9hKSB0aGlzLl9hLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHRoaXMuX3MpIG5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnRoZW4odW5kZWZpbmVkLCBvblJlamVjdGVkKTtcbiAgICB9XG4gIH0pO1xuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gY3R4KCRyZXNvbHZlLCBwcm9taXNlLCAxKTtcbiAgICB0aGlzLnJlamVjdCA9IGN0eCgkcmVqZWN0LCBwcm9taXNlLCAxKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gJFByb21pc2UgfHwgQyA9PT0gV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7IFByb21pc2U6ICRQcm9taXNlIH0pO1xucmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKSgkUHJvbWlzZSwgUFJPTUlTRSk7XG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKFBST01JU0UpO1xuV3JhcHBlciA9IHJlcXVpcmUoJy4vX2NvcmUnKVtQUk9NSVNFXTtcblxuLy8gc3RhdGljc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNSBQcm9taXNlLnJlamVjdChyKVxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICB2YXIgJCRyZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICAkJHJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKExJQlJBUlkgfHwgIVVTRV9OQVRJVkUpLCBQUk9NSVNFLCB7XG4gIC8vIDI1LjQuNC42IFByb21pc2UucmVzb2x2ZSh4KVxuICByZXNvbHZlOiBmdW5jdGlvbiByZXNvbHZlKHgpIHtcbiAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoTElCUkFSWSAmJiB0aGlzID09PSBXcmFwcGVyID8gJFByb21pc2UgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICEoVVNFX05BVElWRSAmJiByZXF1aXJlKCcuL19pdGVyLWRldGVjdCcpKGZ1bmN0aW9uIChpdGVyKSB7XG4gICRQcm9taXNlLmFsbChpdGVyKVsnY2F0Y2gnXShlbXB0eSk7XG59KSksIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjEgUHJvbWlzZS5hbGwoaXRlcmFibGUpXG4gIGFsbDogZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyICRpbmRleCA9IGluZGV4Kys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lKSByZWplY3QocmVzdWx0LnYpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICBmb3JPZihpdGVyYWJsZSwgZmFsc2UsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZSkgcmVqZWN0KHJlc3VsdC52KTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuLy8gMjEuMS4zLjI3IFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbiAoaXRlcmF0ZWQpIHtcbiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuLy8gMjEuMS41LjIuMSAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKVxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgTyA9IHRoaXMuX3Q7XG4gIHZhciBpbmRleCA9IHRoaXMuX2k7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IE8ubGVuZ3RoKSByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7IHZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2UgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gRUNNQVNjcmlwdCA2IHN5bWJvbHMgc2hpbVxudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xudmFyIE1FVEEgPSByZXF1aXJlKCcuL19tZXRhJykuS0VZO1xudmFyICRmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi9fc2hhcmVkJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xudmFyIHdrcyA9IHJlcXVpcmUoJy4vX3drcycpO1xudmFyIHdrc0V4dCA9IHJlcXVpcmUoJy4vX3drcy1leHQnKTtcbnZhciB3a3NEZWZpbmUgPSByZXF1aXJlKCcuL193a3MtZGVmaW5lJyk7XG52YXIgZW51bUtleXMgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xudmFyIF9jcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZ09QTkV4dCA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpO1xudmFyICRHT1BEID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKTtcbnZhciAkR09QUyA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJyk7XG52YXIgJERQID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpO1xudmFyIGdPUEQgPSAkR09QRC5mO1xudmFyIGRQID0gJERQLmY7XG52YXIgZ09QTiA9IGdPUE5FeHQuZjtcbnZhciAkU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciAkSlNPTiA9IGdsb2JhbC5KU09OO1xudmFyIF9zdHJpbmdpZnkgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7XG52YXIgVE9fUFJJTUlUSVZFID0gd2tzKCd0b1ByaW1pdGl2ZScpO1xudmFyIGlzRW51bSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTtcbnZhciBBbGxTeW1ib2xzID0gc2hhcmVkKCdzeW1ib2xzJyk7XG52YXIgT1BTeW1ib2xzID0gc2hhcmVkKCdvcC1zeW1ib2xzJyk7XG52YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTtcbnZhciBVU0VfTkFUSVZFID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJyAmJiAhISRHT1BTLmY7XG52YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0O1xuLy8gRG9uJ3QgdXNlIHNldHRlcnMgaW4gUXQgU2NyaXB0LCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTczXG52YXIgc2V0dGVyID0gIVFPYmplY3QgfHwgIVFPYmplY3RbUFJPVE9UWVBFXSB8fCAhUU9iamVjdFtQUk9UT1RZUEVdLmZpbmRDaGlsZDtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGRQKHRoaXMsICdhJywgeyB2YWx1ZTogNyB9KS5hOyB9XG4gIH0pKS5hICE9IDc7XG59KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZiAocHJvdG9EZXNjKSBkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgZFAoaXQsIGtleSwgRCk7XG4gIGlmIChwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKSBkUChPYmplY3RQcm90bywga2V5LCBwcm90b0Rlc2MpO1xufSA6IGRQO1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uICh0YWcpIHtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09ICdzeW1ib2wnO1xufSA6IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgaW5zdGFuY2VvZiAkU3ltYm9sO1xufTtcblxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KGl0LCBrZXksIEQpIHtcbiAgaWYgKGl0ID09PSBPYmplY3RQcm90bykgJGRlZmluZVByb3BlcnR5KE9QU3ltYm9scywga2V5LCBEKTtcbiAgYW5PYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBhbk9iamVjdChEKTtcbiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7XG4gICAgaWYgKCFELmVudW1lcmFibGUpIHtcbiAgICAgIGlmICghaGFzKGl0LCBISURERU4pKSBkUChpdCwgSElEREVOLCBjcmVhdGVEZXNjKDEsIHt9KSk7XG4gICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkgaXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIGRQKGl0LCBrZXksIEQpO1xufTtcbnZhciAkZGVmaW5lUHJvcGVydGllcyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoaXQsIFApIHtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0ga2V5cy5sZW5ndGg7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsID4gaSkgJGRlZmluZVByb3BlcnR5KGl0LCBrZXkgPSBrZXlzW2krK10sIFBba2V5XSk7XG4gIHJldHVybiBpdDtcbn07XG52YXIgJGNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShpdCwgUCkge1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSkge1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpO1xuICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHtcbiAgaXQgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47XG4gIHZhciBEID0gZ09QRChpdCwga2V5KTtcbiAgaWYgKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSkgRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCkge1xuICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBpID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHtcbiAgICBpZiAoIWhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiBrZXkgIT0gSElEREVOICYmIGtleSAhPSBNRVRBKSByZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvO1xuICB2YXIgbmFtZXMgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGkgPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkge1xuICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIDE5LjQuMS4xIFN5bWJvbChbZGVzY3JpcHRpb25dKVxuaWYgKCFVU0VfTkFUSVZFKSB7XG4gICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7XG4gICAgaWYgKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKSB0aHJvdyBUeXBlRXJyb3IoJ1N5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEnKTtcbiAgICB2YXIgdGFnID0gdWlkKGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTtcbiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgaWYgKHRoaXMgPT09IE9iamVjdFByb3RvKSAkc2V0LmNhbGwoT1BTeW1ib2xzLCB2YWx1ZSk7XG4gICAgICBpZiAoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSkgdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfTtcbiAgICBpZiAoREVTQ1JJUFRPUlMgJiYgc2V0dGVyKSBzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCBzZXQ6ICRzZXQgfSk7XG4gICAgcmV0dXJuIHdyYXAodGFnKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbFtQUk9UT1RZUEVdLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mID0gJGRlZmluZVByb3BlcnR5O1xuICByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lcztcbiAgcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmYgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gICRHT1BTLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiAhcmVxdWlyZSgnLi9fbGlicmFyeScpKSB7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuIHdyYXAod2tzKG5hbWUpKTtcbiAgfTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7XG5cbmZvciAodmFyIGVzNlN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaiA9IDA7IGVzNlN5bWJvbHMubGVuZ3RoID4gajspd2tzKGVzNlN5bWJvbHNbaisrXSk7XG5cbmZvciAodmFyIHdlbGxLbm93blN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBrID0gMDsgd2VsbEtub3duU3ltYm9scy5sZW5ndGggPiBrOykgd2tzRGVmaW5lKHdlbGxLbm93blN5bWJvbHNbaysrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJylcbiAgICAgID8gU3ltYm9sUmVnaXN0cnlba2V5XVxuICAgICAgOiBTeW1ib2xSZWdpc3RyeVtrZXldID0gJFN5bWJvbChrZXkpO1xuICB9LFxuICAvLyAxOS40LjIuNSBTeW1ib2wua2V5Rm9yKHN5bSlcbiAga2V5Rm9yOiBmdW5jdGlvbiBrZXlGb3Ioc3ltKSB7XG4gICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7XG4gICAgZm9yICh2YXIga2V5IGluIFN5bWJvbFJlZ2lzdHJ5KSBpZiAoU3ltYm9sUmVnaXN0cnlba2V5XSA9PT0gc3ltKSByZXR1cm4ga2V5O1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSxcbiAgdXNlU2ltcGxlOiBmdW5jdGlvbiAoKSB7IHNldHRlciA9IGZhbHNlOyB9XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgJ09iamVjdCcsIHtcbiAgLy8gMTkuMS4yLjIgT2JqZWN0LmNyZWF0ZShPIFssIFByb3BlcnRpZXNdKVxuICBjcmVhdGU6ICRjcmVhdGUsXG4gIC8vIDE5LjEuMi40IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKVxuICBkZWZpbmVQcm9wZXJ0eTogJGRlZmluZVByb3BlcnR5LFxuICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKVxuICBkZWZpbmVQcm9wZXJ0aWVzOiAkZGVmaW5lUHJvcGVydGllcyxcbiAgLy8gMTkuMS4yLjYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKVxuICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIC8vIDE5LjEuMi43IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG4gIGdldE93blByb3BlcnR5TmFtZXM6ICRnZXRPd25Qcm9wZXJ0eU5hbWVzLFxuICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pXG4gIGdldE93blByb3BlcnR5U3ltYm9sczogJGdldE93blByb3BlcnR5U3ltYm9sc1xufSk7XG5cbi8vIENocm9tZSAzOCBhbmQgMzkgYE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHNgIGZhaWxzIG9uIHByaW1pdGl2ZXNcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTM0NDNcbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gJGZhaWxzKGZ1bmN0aW9uICgpIHsgJEdPUFMuZigxKTsgfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogRkFJTFNfT05fUFJJTUlUSVZFUywgJ09iamVjdCcsIHtcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpIHtcbiAgICByZXR1cm4gJEdPUFMuZih0b09iamVjdChpdCkpO1xuICB9XG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgUyA9ICRTeW1ib2woKTtcbiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge31cbiAgLy8gV2ViS2l0IGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyBudWxsXG4gIC8vIFY4IHRocm93cyBvbiBib3hlZCBzeW1ib2xzXG4gIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pKSwgJ0pTT04nLCB7XG4gIHN0cmluZ2lmeTogZnVuY3Rpb24gc3RyaW5naWZ5KGl0KSB7XG4gICAgdmFyIGFyZ3MgPSBbaXRdO1xuICAgIHZhciBpID0gMTtcbiAgICB2YXIgcmVwbGFjZXIsICRyZXBsYWNlcjtcbiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgJHJlcGxhY2VyID0gcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmICghaXNPYmplY3QocmVwbGFjZXIpICYmIGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKSByZXR1cm47IC8vIElFOCByZXR1cm5zIHN0cmluZyBvbiB1bmRlZmluZWRcbiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAgICBpZiAodHlwZW9mICRyZXBsYWNlciA9PSAnZnVuY3Rpb24nKSB2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYgKCFpc1N5bWJvbCh2YWx1ZSkpIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIGFyZ3NbMV0gPSByZXBsYWNlcjtcbiAgICByZXR1cm4gX3N0cmluZ2lmeS5hcHBseSgkSlNPTiwgYXJncyk7XG4gIH1cbn0pO1xuXG4vLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpXG4kU3ltYm9sW1BST1RPVFlQRV1bVE9fUFJJTUlUSVZFXSB8fCByZXF1aXJlKCcuL19oaWRlJykoJFN5bWJvbFtQUk9UT1RZUEVdLCBUT19QUklNSVRJVkUsICRTeW1ib2xbUFJPVE9UWVBFXS52YWx1ZU9mKTtcbi8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKCRTeW1ib2wsICdTeW1ib2wnKTtcbi8vIDIwLjIuMS45IE1hdGhbQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7XG4vLyAyNC4zLjMgSlNPTltAQHRvU3RyaW5nVGFnXVxuc2V0VG9TdHJpbmdUYWcoZ2xvYmFsLkpTT04sICdKU09OJywgdHJ1ZSk7XG4iLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLWZpbmFsbHlcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuL19wcm9taXNlLXJlc29sdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdQcm9taXNlJywgeyAnZmluYWxseSc6IGZ1bmN0aW9uIChvbkZpbmFsbHkpIHtcbiAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKTtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgfSA6IG9uRmluYWxseSxcbiAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgIH0gOiBvbkZpbmFsbHlcbiAgKTtcbn0gfSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1wcm9taXNlLXRyeVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4vX25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi9fcGVyZm9ybScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1Byb21pc2UnLCB7ICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbikge1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKHRoaXMpO1xuICB2YXIgcmVzdWx0ID0gcGVyZm9ybShjYWxsYmFja2ZuKTtcbiAgKHJlc3VsdC5lID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnYpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn0gfSk7XG4iLCJyZXF1aXJlKCcuL193a3MtZGVmaW5lJykoJ2FzeW5jSXRlcmF0b3InKTtcbiIsInJlcXVpcmUoJy4vX3drcy1kZWZpbmUnKSgnb2JzZXJ2YWJsZScpO1xuIiwicmVxdWlyZSgnLi9lczYuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyIFRPX1NUUklOR19UQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxudmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICtcbiAgJ0RPTVRva2VuTGlzdCxEYXRhVHJhbnNmZXJJdGVtTGlzdCxGaWxlTGlzdCxIVE1MQWxsQ29sbGVjdGlvbixIVE1MQ29sbGVjdGlvbixIVE1MRm9ybUVsZW1lbnQsSFRNTFNlbGVjdEVsZW1lbnQsJyArXG4gICdNZWRpYUxpc3QsTWltZVR5cGVBcnJheSxOYW1lZE5vZGVNYXAsTm9kZUxpc3QsUGFpbnRSZXF1ZXN0TGlzdCxQbHVnaW4sUGx1Z2luQXJyYXksU1ZHTGVuZ3RoTGlzdCxTVkdOdW1iZXJMaXN0LCcgK1xuICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArXG4gICdUZXh0VHJhY2tMaXN0LFRvdWNoTGlzdCcpLnNwbGl0KCcsJyk7XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7XG4gIHZhciBOQU1FID0gRE9NSXRlcmFibGVzW2ldO1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtOQU1FXTtcbiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgaWYgKHByb3RvICYmICFwcm90b1tUT19TVFJJTkdfVEFHXSkgaGlkZShwcm90bywgVE9fU1RSSU5HX1RBRywgTkFNRSk7XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IEl0ZXJhdG9ycy5BcnJheTtcbn1cbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLm1vZGFsLWhlYWRlciAuY2xvc2VbZGF0YS12LTAxZDY4MTQzXXtmb250LXNpemU6MS4ycmVtO2NvbG9yOiM2Yzg2OGU7b3BhY2l0eToxfS5tb2RhbC1jb250ZW50W2RhdGEtdi0wMWQ2ODE0M117Ym9yZGVyLXJhZGl1czowfVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2pzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeU1vZGFsLnZ1ZVwiLFwid2VicGFjazovLy4vbm9kZV9tb2R1bGVzL3ByZXN0YWtpdC9zY3NzL192YXJpYWJsZXMuc2Nzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUF3RUEsc0NBQ0UsZ0JBQWlCLENBQ2pCLGFDL0RnQixDRGdFaEIsU0FBVSxDQUNYLGdDQUVDLGVBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuQGltcG9ydCAnfkBzY3NzL2NvbmZpZy9fc2V0dGluZ3Muc2Nzcyc7XFxuXFxuLm1vZGFsLWhlYWRlciAuY2xvc2Uge1xcbiAgZm9udC1zaXplOiAxLjJyZW07XFxuICBjb2xvcjogJGdyYXktbWVkaXVtO1xcbiAgb3BhY2l0eTogMTtcXG59XFxuLm1vZGFsLWNvbnRlbnQge1xcbiAgYm9yZGVyLXJhZGl1czogMFxcbn1cXG5cIixcIi8qIHN0eWxlbGludC1kaXNhYmxlICovXFxuXFxuLy8gQ29sb3Igc3lzdGVtXFxuJHdoaXRlOiAjZmZmO1xcbiRncmF5LWRpc2FibGVkOiAjZWFlYmVjO1xcbiRncmF5LTEwMDogI2ZhZmJmYztcXG4kZ3JheS0yMDA6ICNmYWZiZmM7XFxuJGdyYXktMjUwOiAjZmFmYmZjO1xcbiRncmF5LTMwMDogI2JiY2RkMjtcXG4kZ3JheS00MDA6ICNiYmNkZDI7XFxuJGdyYXktNDUwOiAjYjNjN2NkO1xcbiRncmF5LTUwMDogIzZjODY4ZTtcXG4kZ3JheS01NTA6ICM3MDgwOTA7XFxuJGdyYXktNjAwOiAjNmM4NjhlO1xcbiRncmF5LTcwMDogIzM2M2E0MTtcXG4kZ3JheS03NTA6ICMzNjNhNDE7XFxuJGdyYXktODAwOiAjMzYzYTQxO1xcbiRncmF5LTkwMDogIzI4MmIzMDtcXG4kYmxhY2s6ICMwMDA7XFxuXFxuLy8gUFMgVmFyc1xcbiRleHRyYS1saWdodC1ncmF5OiAkZ3JheS0xMDA7XFxuJGxpZ2h0LWdyYXk6ICRncmF5LTMwMDtcXG4kbWVkaXVtLWdyYXk6ICRncmF5LTUwMDtcXG4kZGFyay1ncmF5OiAkZ3JheS03MDA7XFxuJGV4dHJhLWRhcmstZ3JheTogJGdyYXktOTAwO1xcbiRncmF5LWxpZ2h0OiAkbGlnaHQtZ3JheTtcXG4kZ3JheS1tZWRpdW06ICRtZWRpdW0tZ3JheTtcXG4kZ3JheS1kYXJrOiAkZGFyay1ncmF5O1xcbiRncmF5LXNvZnQ6ICRncmF5LTIwMDtcXG4kYmFja2dyb3VuZC1jb2xvcjogI2VmZjFmMjtcXG4kcHJpbWFyeS1saWdodGVuOiAjZjRmY2ZkO1xcbiRsb2NhbC1mb250OiBmYWxzZSAhZGVmYXVsdDtcXG5cXG4kYmx1ZTogIzI1YjlkNztcXG4kaW5kaWdvOiAjNjYxMGYyICFkZWZhdWx0O1xcbiRwdXJwbGU6ICM2ZjQyYzEgIWRlZmF1bHQ7XFxuJHBpbms6ICNlODNlOGMgIWRlZmF1bHQ7XFxuJHJlZDogI2Y1NGMzZTtcXG4kb3JhbmdlOiAjZmQ3ZTE0ICFkZWZhdWx0O1xcbiR5ZWxsb3c6ICNmYWIwMDA7XFxuJGdyZWVuOiAjNzBiNTgwO1xcbiRvcmFuZ2U6ICNmZDdlMTQgIWRlZmF1bHQ7XFxuJHRlYWw6ICMyMGM5OTcgIWRlZmF1bHQ7XFxuJGN5YW46ICRibHVlO1xcbiRsaWdodC1ibHVlOiAjZjRmY2ZkO1xcblxcbi8vIG1haW4gYnV0dG9uIGJhY2tncm91bmQgY29sb3JzXFxuJHByaW1hcnktaG92ZXI6ICM3Y2Q1ZTc7XFxuJHByaW1hcnktYWN0aXZlOiAjMjFhNmMxO1xcbiRwcmltYXJ5LWRpc2FibGVkOiAjZDNmMWY3O1xcbiRzZWNvbmRhcnktaG92ZXI6ICNiN2NlZDM7XFxuJHNlY29uZGFyeS1hY3RpdmU6ICM4ODlkYTI7XFxuJGRhbmdlci1ob3ZlcjogI2ZkZTFlMTtcXG4kbm90aWNlOiAjZGZmNWY5O1xcblxcbiRwcmltYXJ5OiAkYmx1ZSAhZGVmYXVsdDtcXG4kc2Vjb25kYXJ5OiAkbWVkaXVtLWdyYXk7XFxuJHN1Y2Nlc3M6ICRncmVlbiAhZGVmYXVsdDtcXG4kaW5mbzogJGN5YW4gIWRlZmF1bHQ7XFxuJHdhcm5pbmc6ICR5ZWxsb3cgIWRlZmF1bHQ7XFxuJGRhbmdlcjogJHJlZCAhZGVmYXVsdDtcXG4kbGlnaHQ6ICRncmF5LTEwMCAhZGVmYXVsdDtcXG4kZGFyazogJGdyYXktODAwICFkZWZhdWx0O1xcblxcbiR0b2FzdC1zdWNjZXNzOiAjNTNkNTcyICFkZWZhdWx0O1xcbiR0b2FzdC13YXJuaW5nOiAjZmFiMDAwICFkZWZhdWx0O1xcblxcbiRicmFuZC1wcmltYXJ5OiAkcHJpbWFyeSAhZGVmYXVsdDtcXG4kYnJhbmQtc2Vjb25kYXJ5OiAkc2Vjb25kYXJ5ICFkZWZhdWx0O1xcbiRicmFuZC1pbmZvOiAjNWJjMGRlICFkZWZhdWx0O1xcbiRicmFuZC13YXJuaW5nOiAjZjBhZDRlICFkZWZhdWx0O1xcbiRicmFuZC1zdWNjZXNzOiAkc3VjY2VzcyAhZGVmYXVsdDtcXG4kYnJhbmQtZGFuZ2VyOiAkZGFuZ2VyICFkZWZhdWx0O1xcblxcbiRidG4tcHJpbWFyeS1iZzogJHByaW1hcnktaG92ZXI7XFxuJGJ0bi1zZWNvbmRhcnktYm9yZGVyOiAjMDAwO1xcbiRidG4taW5mby1iZzogJGJyYW5kLWluZm8gIWRlZmF1bHQ7XFxuJGJ0bi1zdWNjZXNzLWJnOiAkYnJhbmQtc3VjY2VzcyAhZGVmYXVsdDtcXG4kYnRuLXdhcm5pbmctYmc6ICRicmFuZC13YXJuaW5nICFkZWZhdWx0O1xcbiRidG4tZGFuZ2VyLWJnOiAkYnJhbmQtZGFuZ2VyICFkZWZhdWx0O1xcblxcbiR0aGVtZS1jb2xvcnM6IChcXG4gIFxcXCJwcmltYXJ5XFxcIjogJHByaW1hcnksXFxuICBcXFwic2Vjb25kYXJ5XFxcIjogJHNlY29uZGFyeSxcXG4gIFxcXCJzdWNjZXNzXFxcIjogJHN1Y2Nlc3MsXFxuICBcXFwiaW5mb1xcXCI6ICRpbmZvLFxcbiAgXFxcIndhcm5pbmdcXFwiOiAkd2FybmluZyxcXG4gIFxcXCJkYW5nZXJcXFwiOiAkZGFuZ2VyLFxcbiAgXFxcImxpZ2h0XFxcIjogJGxpZ2h0LFxcbiAgXFxcImRhcmtcXFwiOiAkZGFya1xcbik7XFxuXFxuJGFsZXJ0cy1iYWNrZ3JvdW5kLWNvbG9yczogKFxcbiAgXFxcInN1Y2Nlc3NcXFwiOiAjY2JmMmQ0LFxcbiAgXFxcImluZm9cXFwiOiAjYmVlYWYzLFxcbiAgXFxcIndhcm5pbmdcXFwiOiAjZmZmYmQzLFxcbiAgXFxcImRhbmdlclxcXCI6ICNmYmM2YzNcXG4pO1xcblxcbiRhbGVydHMtc2Vjb25kLWNvbG9yczogKFxcbiAgXFxcInN1Y2Nlc3NcXFwiOiAjNTNkNTcyLFxcbiAgXFxcImluZm9cXFwiOiAjMjViOWQ3LFxcbiAgXFxcIndhcm5pbmdcXFwiOiAjZmFiMDAwLFxcbiAgXFxcImRhbmdlclxcXCI6ICNmNDQzMzZcXG4pO1xcblxcbiR0aGVtZS1hbGVydHMtaWNvbnM6IChcXG4gIHN1Y2Nlc3M6IFxcXCJcXFxcRTVDQVxcXCIsXFxuICBpbmZvOiBcXFwiXFxcXGU4OGVcXFwiLFxcbiAgd2FybmluZzogXFxcIlxcXFxFMDAyXFxcIixcXG4gIGRhbmdlcjogXFxcIlxcXFxlMDAwXFxcIlxcbik7XFxuXFxuJHRoZW1lLWNvbG9ycy1pY29uczogKFxcbiAgXFxcInByaW1hcnlcXFwiOiAkcHJpbWFyeSxcXG4gIFxcXCJzZWNvbmRhcnlcXFwiOiAkc2Vjb25kYXJ5LFxcbiAgXFxcInN1Y2Nlc3NcXFwiOiAkc3VjY2VzcyxcXG4gIFxcXCJpbmZvXFxcIjogJGluZm8sXFxuICBcXFwid2FybmluZ1xcXCI6ICNmYWIwMDAsXFxuICBcXFwiZGFuZ2VyXFxcIjogJGRhbmdlcixcXG4gIFxcXCJsaWdodFxcXCI6ICRsaWdodFxcbik7XFxuXFxuJHRoZW1lLWNvbG9ycy1ob3ZlcjogKFxcbiAgcHJpbWFyeTogJHByaW1hcnktaG92ZXIsXFxuICBzZWNvbmRhcnk6ICRzZWNvbmRhcnktaG92ZXIsXFxuICBzdWNjZXNzOiAjOWJjYmE2LFxcbiAgaW5mbzogJHByaW1hcnktaG92ZXIsXFxuICB3YXJuaW5nOiAjZTZiMDQ1LFxcbiAgZGFuZ2VyOiAjZTc2ZDdhLFxcbiAgbGlnaHQ6ICRncmF5LTgwMCxcXG4gIGRhcms6ICRncmF5LTEwMCxcXG4gIGRlZmF1bHQ6ICRsaWdodC1ibHVlXFxuKTtcXG5cXG4kdGhlbWUtY29sb3JzLWFjdGl2ZTogKFxcbiAgcHJpbWFyeTogJHByaW1hcnktYWN0aXZlLFxcbiAgc2Vjb25kYXJ5OiAkc2Vjb25kYXJ5LWFjdGl2ZSxcXG4gIHN1Y2Nlc3M6ICM1YTkxNjYsXFxuICBpbmZvOiBkYXJrZW4obWFwLWdldCgkdGhlbWUtY29sb3JzLCBcXFwiaW5mb1xcXCIpLCAxMCUpLFxcbiAgd2FybmluZzogZGFya2VuKG1hcC1nZXQoJHRoZW1lLWNvbG9ycywgXFxcIndhcm5pbmdcXFwiKSwgMTAlKSxcXG4gIGRhbmdlcjogI2MzMzYyYixcXG4gIGxpZ2h0OiBkYXJrZW4obWFwLWdldCgkdGhlbWUtY29sb3JzLCBcXFwibGlnaHRcXFwiKSwgMTAlKSxcXG4gIGRhcms6IGRhcmtlbihtYXAtZ2V0KCR0aGVtZS1jb2xvcnMsIFxcXCJkYXJrXFxcIiksIDEwJSksXFxuICBkZWZhdWx0OiAkcHJpbWFyeVxcbik7XFxuXFxuJHRoZW1lLWNvbG9ycy1iYWNrZ3JvdW5kOiAoXFxuICBwcmltYXJ5OiAjZGZmNWY5LFxcbiAgc2Vjb25kYXJ5OiAkYmxhY2ssXFxuICBzdWNjZXNzOiAjZDZmMGQ4LFxcbiAgaW5mbzogI2RmZjVmOSxcXG4gIHdhcm5pbmc6ICNmZmZiZDMsXFxuICBkYW5nZXI6ICNmZGUxZTEsXFxuICBsaWdodDogJGdyYXktMjAwLFxcbiAgZGFyazogJGdyYXktNzAwXFxuKTtcXG5cXG4kdGhlbWUtY29sb3JzLXNoYWRvdzogKFxcbiAgcHJpbWFyeTogdGhlbWUtY29sb3IoXFxcInByaW1hcnlcXFwiKSxcXG4gIHNlY29uZGFyeTogJGJsYWNrLFxcbiAgc3VjY2VzczogdGhlbWUtY29sb3IoXFxcInN1Y2Nlc3NcXFwiKSxcXG4gIGluZm86IHRoZW1lLWNvbG9yKFxcXCJpbmZvXFxcIiksXFxuICB3YXJuaW5nOiB0aGVtZS1jb2xvcihcXFwid2FybmluZ1xcXCIpLFxcbiAgZGFuZ2VyOiB0aGVtZS1jb2xvcihcXFwiZGFuZ2VyXFxcIiksXFxuICBsaWdodDogdGhlbWUtY29sb3IoXFxcImxpZ2h0XFxcIiksXFxuICBkYXJrOiB0aGVtZS1jb2xvcihcXFwiZGFya1xcXCIpXFxuKTtcXG5cXG4vLyBPcHRpb25zXFxuJGVuYWJsZS1jYXJldDogdHJ1ZSAhZGVmYXVsdDtcXG4kZW5hYmxlLXJvdW5kZWQ6IHRydWU7XFxuJGVuYWJsZS1zaGFkb3dzOiB0cnVlO1xcbiRlbmFibGUtZ3JhZGllbnRzOiBmYWxzZSAhZGVmYXVsdDtcXG4kZW5hYmxlLXRyYW5zaXRpb25zOiB0cnVlICFkZWZhdWx0O1xcbiRlbmFibGUtZ3JpZC1jbGFzc2VzOiB0cnVlICFkZWZhdWx0O1xcbiRlbmFibGUtcHJpbnQtc3R5bGVzOiB0cnVlICFkZWZhdWx0O1xcblxcbi8vIFNwYWNpbmdcXG4kc3BhY2VyOiAxLjg3NXJlbTtcXG5cXG4kc3BhY2VyczogKFxcbiAgMDogMCxcXG4gIDE6IChcXG4gICAgJHNwYWNlciAvIDZcXG4gICksXFxuICAyOiAoXFxuICAgICRzcGFjZXIgLyAzXFxuICApLFxcbiAgMzogKFxcbiAgICAkc3BhY2VyIC8gMlxcbiAgKSxcXG4gIDQ6ICRzcGFjZXIsXFxuICA1OiAoXFxuICAgICRzcGFjZXIgKiAyXFxuICApXFxuKTtcXG5cXG4vLyBCb2R5XFxuJGJvZHktYmc6ICR3aGl0ZSAhZGVmYXVsdDtcXG4kYm9keS1jb2xvcjogJGRhcmstZ3JheTtcXG5cXG4vLyBMaW5rc1xcbiRsaW5rLWhvdmVyLWNvbG9yOiB0aGVtZS1jb2xvcihcXFwicHJpbWFyeVxcXCIpICFkZWZhdWx0O1xcbiRsaW5rLWhvdmVyLWRlY29yYXRpb246IHVuZGVybGluZTtcXG5cXG4vLyBQYXJhZ3JhcGhzXFxuJHBhcmFncmFwaC1tYXJnaW4tYm90dG9tOiAxcmVtO1xcblxcbi8vIEdyaWQgYnJlYWtwb2ludHNcXG4kZ3JpZC1icmVha3BvaW50czogKFxcbiAgeHM6IDAsXFxuICBzbTogNTQ0cHgsXFxuICBtZDogNzY4cHgsXFxuICBsZzogMTAyNHB4LFxcbiAgeGw6IDEzMDBweCxcXG4gIHh4bDogMTYwMHB4IC8vIFBTIGN1c3RvbVxcbik7XFxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGdyaWQtYnJlYWtwb2ludHMsIFxcXCIkZ3JpZC1icmVha3BvaW50c1xcXCIpO1xcbkBpbmNsdWRlIF9hc3NlcnQtc3RhcnRzLWF0LXplcm8oJGdyaWQtYnJlYWtwb2ludHMpO1xcblxcbi8vIEdyaWQgY29udGFpbmVyc1xcbiRjb250YWluZXItbWF4LXdpZHRoczogKFxcbiAgc206IDU3NnB4LFxcbiAgbWQ6IDcyMHB4LFxcbiAgbGc6IDk3MnB4LFxcbiAgeGw6IDEyNDBweFxcbik7XFxuQGluY2x1ZGUgX2Fzc2VydC1hc2NlbmRpbmcoJGNvbnRhaW5lci1tYXgtd2lkdGhzLCBcXFwiJGNvbnRhaW5lci1tYXgtd2lkdGhzXFxcIik7XFxuXFxuLy8gR3JpZCBjb2x1bW5zXFxuLy8kZ3JpZC1jb2x1bW5zOiAgICAgICAgICAgICAgICAxMiAhZGVmYXVsdDtcXG4kZ3JpZC1ndXR0ZXItd2lkdGg6IDEuODc1cmVtICFkZWZhdWx0O1xcblxcbi8vIENvbXBvbmVudHNcXG4vLyRsaW5lLWhlaWdodC1sZzogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcXG4vLyRsaW5lLWhlaWdodC1zbTogICAgICAgICAgICAgIDEuNSAhZGVmYXVsdDtcXG5cXG4vLyRib3JkZXItd2lkdGg6ICAgICAgICAgICAgICAgIDFweCAhZGVmYXVsdDtcXG4vLyRib3JkZXItY29sb3I6ICAgICAgICAgICAgICAgICRncmF5LTMwMCAhZGVmYXVsdDtcXG5cXG4kYm9yZGVyLXJhZGl1czogNHB4ICFkZWZhdWx0O1xcbi8vJGJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAgICAgLjNyZW0gIWRlZmF1bHQ7XFxuLy8kYm9yZGVyLXJhZGl1cy1zbTogICAgICAgICAgICAuMnJlbSAhZGVmYXVsdDtcXG5cXG4vLyRjb21wb25lbnQtYWN0aXZlLWNvbG9yOiAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4vLyRjb21wb25lbnQtYWN0aXZlLWJnOiAgICAgICAgIHRoZW1lLWNvbG9yKFxcXCJwcmltYXJ5XFxcIikgIWRlZmF1bHQ7XFxuXFxuJGNhcmV0LXdpZHRoOiAuMjVyZW07XFxuXFxuLy8kdHJhbnNpdGlvbi1iYXNlOiAgICAgICAgICAgICBhbGwgLjJzIGVhc2UtaW4tb3V0ICFkZWZhdWx0O1xcbi8vJHRyYW5zaXRpb24tZmFkZTogICAgICAgICAgICAgb3BhY2l0eSAuMTVzIGxpbmVhciAhZGVmYXVsdDtcXG4vLyR0cmFuc2l0aW9uLWNvbGxhcHNlOiAgICAgICAgIGhlaWdodCAuMzVzIGVhc2UgIWRlZmF1bHQ7XFxuXFxuLy8gRm9udHNcXG4kZm9udC1mYW1pbHktc2Fucy1zZXJpZjogXFxcIk9wZW4gU2Fuc1xcXCIsIGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWY7XFxuLy8kZm9udC1mYW1pbHktbW9ub3NwYWNlOiAgICAgICBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFxcXCJMaWJlcmF0aW9uIE1vbm9cXFwiLCBcXFwiQ291cmllciBOZXdcXFwiLCBtb25vc3BhY2UgIWRlZmF1bHQ7XFxuLy8kZm9udC1mYW1pbHktYmFzZTogICAgICAgICAgICAkZm9udC1mYW1pbHktc2Fucy1zZXJpZiAhZGVmYXVsdDtcXG5cXG4kZm9udC1zaXplLWJhc2U6IC44NzVyZW07XFxuJGZvbnQtc2l6ZS1sZzogMXJlbTtcXG4kZm9udC1zaXplLXNtOiAuNzVyZW07XFxuJGZvbnQtc2l6ZS14czogLjYyNXJlbTsgLy8gUFMgY3VzdG9tXFxuXFxuLy8kZm9udC13ZWlnaHQtbGlnaHQ6ICAgICAgICAgICAzMDA7XFxuLy8kZm9udC13ZWlnaHQtbm9ybWFsOiAgICAgICAgICA0MDA7XFxuJGZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XFxuJGZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcXG5cXG4kaDEtZm9udC1zaXplOiAxLjVyZW07XFxuJGgyLWZvbnQtc2l6ZTogMS4yNXJlbTtcXG4kaDMtZm9udC1zaXplOiAxcmVtO1xcbiRoNC1mb250LXNpemU6IC44NzVyZW07XFxuJGg1LWZvbnQtc2l6ZTogLjc1cmVtO1xcbiRoNi1mb250LXNpemU6IC42MjVyZW07XFxuXFxuLy8kaGVhZGluZ3MtbWFyZ2luLWJvdHRvbTogICAgICAoJHNwYWNlciAvIDIpICFkZWZhdWx0O1xcbiRoZWFkaW5ncy1mb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNhbnMtc2VyaWY7XFxuJGhlYWRpbmdzLWZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtYm9sZDtcXG4kaGVhZGluZ3MtY29sb3I6ICRib2R5LWNvbG9yO1xcblxcbi8vJGRpc3BsYXkxLXNpemU6ICAgICAgICAgICAgICAgNnJlbSAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5Mi1zaXplOiAgICAgICAgICAgICAgIDUuNXJlbSAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5My1zaXplOiAgICAgICAgICAgICAgIDQuNXJlbSAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5NC1zaXplOiAgICAgICAgICAgICAgIDMuNXJlbSAhZGVmYXVsdDtcXG5cXG4vLyRkaXNwbGF5MS13ZWlnaHQ6ICAgICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5Mi13ZWlnaHQ6ICAgICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5My13ZWlnaHQ6ICAgICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5NC13ZWlnaHQ6ICAgICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG4vLyRkaXNwbGF5LWxpbmUtaGVpZ2h0OiAgICAgICAgICRoZWFkaW5ncy1saW5lLWhlaWdodCAhZGVmYXVsdDtcXG5cXG4vLyRsZWFkLWZvbnQtc2l6ZTogICAgICAgICAgICAgICgkZm9udC1zaXplLWJhc2UgKiAxLjI1KSAhZGVmYXVsdDtcXG4vLyRsZWFkLWZvbnQtd2VpZ2h0OiAgICAgICAgICAgIDMwMCAhZGVmYXVsdDtcXG5cXG4vLyRzbWFsbC1mb250LXNpemU6ICAgICAgICAgICAgIDgwJSAhZGVmYXVsdDtcXG5cXG4kdGV4dC1tdXRlZDogJG1lZGl1bS1ncmF5O1xcblxcbi8vJGJsb2NrcXVvdGUtc21hbGwtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcbi8vJGJsb2NrcXVvdGUtZm9udC1zaXplOiAgICAgICAgKCRmb250LXNpemUtYmFzZSAqIDEuMjUpICFkZWZhdWx0O1xcblxcbiRoci1ib3JkZXItY29sb3I6ICRsaWdodC1ncmF5O1xcbi8vJGhyLWJvcmRlci13aWR0aDogICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG5cXG4vLyRtYXJrLXBhZGRpbmc6ICAgICAgICAgICAgICAgIC4yZW0gIWRlZmF1bHQ7XFxuXFxuLy8kZHQtZm9udC13ZWlnaHQ6ICAgICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcXG5cXG4vLyRrYmQtYm94LXNoYWRvdzogICAgICAgICAgICAgIGluc2V0IDAgLS4xcmVtIDAgcmdiYSgkYmxhY2ssIC4yNSkgIWRlZmF1bHQ7XFxuLy8kbmVzdGVkLWtiZC1mb250LXdlaWdodDogICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcXG5cXG4vLyRsaXN0LWlubGluZS1wYWRkaW5nOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcblxcbi8vJG1hcmstYmc6ICAgICAgICAgICAgICAgICAgICAgI2ZjZjhlMyAhZGVmYXVsdDtcXG5cXG4vLyRoci1tYXJnaW4teTogICAgICAgICAgICAgICAgICRzcGFjZXIgIWRlZmF1bHQ7XFxuXFxuLy8gVGFibGVzXFxuJHRhYmxlLWNlbGwtcGFkZGluZzogLjRyZW07XFxuJHRhYmxlLWNlbGwtcGFkZGluZy1zbTogLjI1cmVtO1xcblxcbi8vJHRhYmxlLWJnOiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgIWRlZmF1bHQ7XFxuJHRhYmxlLWFjY2VudC1iZzogJGJhY2tncm91bmQtY29sb3I7XFxuJHRhYmxlLWhvdmVyLWJnOiB0aGVtZS1jb2xvci1ob3ZlcihcXFwicHJpbWFyeVxcXCIpO1xcbiR0YWJsZS1hY3RpdmUtYmc6IHRoZW1lLWNvbG9yLWhvdmVyKFxcXCJwcmltYXJ5XFxcIik7XFxuXFxuLy8kdGFibGUtYm9yZGVyLXdpZHRoOiAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbi8vJHRhYmxlLWJvcmRlci1jb2xvcjogICAgICAgICAgJGdyYXktMzAwICFkZWZhdWx0O1xcblxcbiR0YWJsZS1oZWFkLWJnOiAkYmFja2dyb3VuZC1jb2xvcjtcXG4kdGFibGUtaGVhZC1jb2xvcjogJGJvZHktY29sb3I7XFxuXFxuJHRhYmxlLWRhcmstYmc6ICRib2R5LWNvbG9yO1xcbiR0YWJsZS1kYXJrLWFjY2VudC1iZzogJGV4dHJhLWRhcmstZ3JheTtcXG4kdGFibGUtZGFyay1ob3Zlci1iZzogdGhlbWUtY29sb3ItaG92ZXIoXFxcInByaW1hcnlcXFwiKTtcXG4kdGFibGUtZGFyay1ib3JkZXItY29sb3I6ICRtZWRpdW0tZ3JheTtcXG4vLyR0YWJsZS1kYXJrLWNvbG9yOiAgICAgICAgICAgICRib2R5LWJnICFkZWZhdWx0O1xcblxcbi8vIEJ1dHRvbnNcXG4kaW5wdXQtYnRuLXBhZGRpbmcteTogLjM3NXJlbTtcXG4kaW5wdXQtYnRuLXBhZGRpbmcteDogLjgzOHJlbTtcXG4vLyRpbnB1dC1idG4tbGluZS1oZWlnaHQ6ICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LWJ0bi1mb2N1cy13aWR0aDogICAgICAgLjJyZW0gIWRlZmF1bHQ7XFxuLy8kaW5wdXQtYnRuLWZvY3VzLWNvbG9yOiAgICAgICByZ2JhKCRjb21wb25lbnQtYWN0aXZlLWJnLCAuMjUpICFkZWZhdWx0O1xcbi8vJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93OiAgMCAwIDAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAkaW5wdXQtYnRuLWZvY3VzLWNvbG9yICFkZWZhdWx0O1xcblxcbiRpbnB1dC1idG4tcGFkZGluZy15LXNtOiAuMzEzcmVtO1xcbiRpbnB1dC1idG4tcGFkZGluZy14LXNtOiAuNjI1cmVtO1xcbi8vJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbTogICAgJGxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xcblxcbiRpbnB1dC1idG4tcGFkZGluZy15LWxnOiAuNDM4cmVtO1xcbiRpbnB1dC1idG4tcGFkZGluZy14LWxnOiAuODM4cmVtO1xcbi8vJGlucHV0LWJ0bi1saW5lLWhlaWdodC1sZzogICAgJGxpbmUtaGVpZ2h0LWxnICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LWJ0bi1ib3JkZXItd2lkdGg6ICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG5cXG4vLyBCdXR0b25zXFxuJGJ0bi1wYWRkaW5nLXk6IC41cmVtICFkZWZhdWx0O1xcbiRidG4tcGFkZGluZy14OiAxcmVtICFkZWZhdWx0O1xcbi8vJGJ0bi1saW5lLWhlaWdodDogICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodCAhZGVmYXVsdDtcXG5cXG4vLyRidG4tcGFkZGluZy15LXNtOiAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LXNtICFkZWZhdWx0O1xcbi8vJGJ0bi1wYWRkaW5nLXgtc206ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXgtc20gIWRlZmF1bHQ7XFxuLy8kYnRuLWxpbmUtaGVpZ2h0LXNtOiAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xcblxcbi8vJGJ0bi1wYWRkaW5nLXktbGc6ICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXktbGcgIWRlZmF1bHQ7XFxuLy8kYnRuLXBhZGRpbmcteC1sZzogICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1sZyAhZGVmYXVsdDtcXG4vLyRidG4tbGluZS1oZWlnaHQtbGc6ICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XFxuXFxuLy8kYnRuLWJvcmRlci13aWR0aDogICAgICAgICAgICAkaW5wdXQtYnRuLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG5cXG4kYnRuLWZvbnQtd2VpZ2h0OiAkZm9udC13ZWlnaHQtc2VtaWJvbGQ7XFxuJGJ0bi1ib3gtc2hhZG93OiBub25lO1xcbi8vJGJ0bi1mb2N1cy13aWR0aDogICAgICAgICAgICAgJGlucHV0LWJ0bi1mb2N1cy13aWR0aCAhZGVmYXVsdDtcXG4kYnRuLWZvY3VzLWJveC1zaGFkb3c6IG5vbmU7XFxuLy8kYnRuLWRpc2FibGVkLW9wYWNpdHk6ICAgICAgICAuNjUgIWRlZmF1bHQ7XFxuJGJ0bi1hY3RpdmUtYm94LXNoYWRvdzogbm9uZTtcXG5cXG4vLyRidG4tbGluay1kaXNhYmxlZC1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4vLyRidG4tYmxvY2stc3BhY2luZy15OiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcblxcbiRidG4tYm9yZGVyLXJhZGl1czogNHB4O1xcbi8vJGJ0bi1ib3JkZXItcmFkaXVzLWxnOiAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XFxuLy8kYnRuLWJvcmRlci1yYWRpdXMtc206ICAgICAgICAkYm9yZGVyLXJhZGl1cy1zbSAhZGVmYXVsdDtcXG5cXG4vLyRidG4tdHJhbnNpdGlvbjogICAgICAgICAgICAgIGNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgLjE1cyBlYXNlLWluLW91dCAhZGVmYXVsdDtcXG5cXG4vLyBGb3Jtc1xcbiRpbnB1dC1wYWRkaW5nLXk6IC4zNzVyZW07XFxuJGlucHV0LXBhZGRpbmcteDogLjQzNzVyZW07XFxuLy8kaW5wdXQtbGluZS1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJ0bi1saW5lLWhlaWdodCAhZGVmYXVsdDtcXG5cXG4vLyRpbnB1dC1wYWRkaW5nLXktc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteS1zbSAhZGVmYXVsdDtcXG4vLyRpbnB1dC1wYWRkaW5nLXgtc206ICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLXBhZGRpbmcteC1zbSAhZGVmYXVsdDtcXG4vLyRpbnB1dC1saW5lLWhlaWdodC1zbTogICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LXNtICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LXBhZGRpbmcteS1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15LWxnICFkZWZhdWx0O1xcbi8vJGlucHV0LXBhZGRpbmcteC1sZzogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy14LWxnICFkZWZhdWx0O1xcbi8vJGlucHV0LWxpbmUtaGVpZ2h0LWxnOiAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQtbGcgIWRlZmF1bHQ7XFxuXFxuLy8kaW5wdXQtYmc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRpbnB1dC1kaXNhYmxlZC1iZzogI2VjZWVlZjtcXG5cXG4kaW5wdXQtY29sb3I6ICRib2R5LWNvbG9yO1xcbiRpbnB1dC1ib3JkZXItY29sb3I6ICRsaWdodC1ncmF5O1xcbi8vJGlucHV0LWJvcmRlci13aWR0aDogICAgICAgICAgICAgICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRpbnB1dC1ib3gtc2hhZG93OiBub25lO1xcblxcbi8vJGlucHV0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbi8vJGlucHV0LWJvcmRlci1yYWRpdXMtbGc6ICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzLWxnICFkZWZhdWx0O1xcbi8vJGlucHV0LWJvcmRlci1yYWRpdXMtc206ICAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzLXNtICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LWZvY3VzLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1iZyAhZGVmYXVsdDtcXG4kaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yOiB0aGVtZS1jb2xvci1ob3ZlcihcXFwicHJpbWFyeVxcXCIpO1xcbi8vJGlucHV0LWZvY3VzLWNvbG9yOiAgICAgICAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcXG4vLyRpbnB1dC1mb2N1cy13aWR0aDogICAgICAgICAgICAgICAgICAgICAkaW5wdXQtYnRuLWZvY3VzLXdpZHRoICFkZWZhdWx0O1xcbiRpbnB1dC1mb2N1cy1ib3gtc2hhZG93OiBub25lO1xcblxcbiRpbnB1dC1wbGFjZWhvbGRlci1jb2xvcjogJG1lZGl1bS1ncmF5O1xcblxcbi8vJGlucHV0LWhlaWdodC1ib3JkZXI6ICAgICAgICAgICAgICAgICAgICRpbnB1dC1ib3JkZXItd2lkdGggKiAyICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LWhlaWdodC1pbm5lcjogICAgICAgICAgICAgICAgICAgICgkZm9udC1zaXplLWJhc2UgKiAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0KSArICgkaW5wdXQtYnRuLXBhZGRpbmcteSAqIDIpICFkZWZhdWx0O1xcbiRpbnB1dC1oZWlnaHQ6IDIuMTg4cmVtO1xcblxcbi8vJGlucHV0LWhlaWdodC1pbm5lci1zbTogICAgICAgICAgICAgICAgICgkZm9udC1zaXplLXNtICogJGlucHV0LWJ0bi1saW5lLWhlaWdodC1zbSkgKyAoJGlucHV0LWJ0bi1wYWRkaW5nLXktc20gKiAyKSAhZGVmYXVsdDtcXG4vLyRpbnB1dC1oZWlnaHQtc206ICAgICAgICAgICAgICAgICAgICAgICBjYWxjKCN7JGlucHV0LWhlaWdodC1pbm5lci1zbX0gKyAjeyRpbnB1dC1oZWlnaHQtYm9yZGVyfSkgIWRlZmF1bHQ7XFxuXFxuLy8kaW5wdXQtaGVpZ2h0LWlubmVyLWxnOiAgICAgICAgICAgICAgICAgKCRmb250LXNpemUtbGcgKiAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0LWxnKSArICgkaW5wdXQtYnRuLXBhZGRpbmcteS1sZyAqIDIpICFkZWZhdWx0O1xcbiRpbnB1dC1oZWlnaHQtbGc6IDIuMTg4cmVtO1xcblxcbi8vJGlucHV0LXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci1jb2xvciAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IC4xNXMgZWFzZS1pbi1vdXQgIWRlZmF1bHQ7XFxuXFxuLy8kZm9ybS10ZXh0LW1hcmdpbi10b3A6ICAgICAgICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xcblxcbi8vJGZvcm0tY2hlY2staW5wdXQtZ3V0dGVyOiAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XFxuLy8kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teTogICAgICAgICAgICAgLjNyZW0gIWRlZmF1bHQ7XFxuLy8kZm9ybS1jaGVjay1pbnB1dC1tYXJnaW4teDogICAgICAgICAgICAgLjI1cmVtICFkZWZhdWx0O1xcblxcbi8vJGZvcm0tY2hlY2staW5saW5lLW1hcmdpbi14OiAgICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcXG4vLyRmb3JtLWNoZWNrLWlubGluZS1pbnB1dC1tYXJnaW4teDogICAgICAuMzEyNXJlbSAhZGVmYXVsdDtcXG5cXG4vLyRmb3JtLWdyb3VwLW1hcmdpbi1ib3R0b206ICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcblxcbi8vJGlucHV0LWdyb3VwLWFkZG9uLWNvbG9yOiAgICAgICAgICAgICAgICRpbnB1dC1jb2xvciAhZGVmYXVsdDtcXG4kaW5wdXQtZ3JvdXAtYWRkb24tYmc6ICRleHRyYS1saWdodC1ncmF5O1xcbi8vJGlucHV0LWdyb3VwLWFkZG9uLWJvcmRlci1jb2xvcjogICAgICAgICRpbnB1dC1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuXFxuLy8kY3VzdG9tLWNvbnRyb2wtZ3V0dGVyOiAgICAgICAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1jb250cm9sLXNwYWNlci14OiAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuXFxuLy8kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLXNpemU6ICAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYmc6ICAgICAgICAgICAkZ3JheS0zMDAgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWJnLXNpemU6ICAgICAgNTAlIDUwJSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYm94LXNoYWRvdzogICBpbnNldCAwIC4yNXJlbSAuMjVyZW0gcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItZGlzYWJsZWQtYmc6ICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY29udHJvbC1sYWJlbC1kaXNhYmxlZC1jb2xvcjogICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1jb2xvcjogICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWJnOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtYmcgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtZGlzYWJsZWQtYmc6ICByZ2JhKHRoZW1lLWNvbG9yKFxcXCJwcmltYXJ5XFxcIiksIC41KSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItY2hlY2tlZC1ib3gtc2hhZG93OiAgIG5vbmUgIWRlZmF1bHQ7XFxuXFxuLy8kY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWZvY3VzLWJveC1zaGFkb3c6ICAgICAwIDAgMCAxcHggJGJvZHktYmcsICRpbnB1dC1idG4tZm9jdXMtYm94LXNoYWRvdyAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWNvbG9yOiAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWNvbG9yICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgICAgICAgbGlnaHRlbigkY29tcG9uZW50LWFjdGl2ZS1iZywgMzUlKSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY29udHJvbC1pbmRpY2F0b3ItYWN0aXZlLWJveC1zaGFkb3c6ICAgIG5vbmUgIWRlZmF1bHQ7XFxuXFxuLy8kY3VzdG9tLWNoZWNrYm94LWluZGljYXRvci1ib3JkZXItcmFkaXVzOiAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWljb24tY2hlY2tlZDogICAgICAgIHN0ci1yZXBsYWNlKHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PScwIDAgOCA4JyUzRSUzQ3BhdGggZmlsbD0nI3skY3VzdG9tLWNvbnRyb2wtaW5kaWNhdG9yLWNoZWNrZWQtY29sb3J9JyBkPSdNNi41NjQuNzVsLTMuNTkgMy42MTItMS41MzgtMS41NUwwIDQuMjYgMi45NzQgNy4yNSA4IDIuMTkzeicvJTNFJTNDL3N2ZyUzRVxcXCIpLCBcXFwiI1xcXCIsIFxcXCIlMjNcXFwiKSAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYmc6ICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcjogJGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaWNvbi1pbmRldGVybWluYXRlOiAgc3RyLXJlcGxhY2UodXJsKFxcXCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGY4LCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDQnJTNFJTNDcGF0aCBzdHJva2U9JyN7JGN1c3RvbS1jaGVja2JveC1pbmRpY2F0b3ItaW5kZXRlcm1pbmF0ZS1jb2xvcn0nIGQ9J00wIDJoNCcvJTNFJTNDL3N2ZyUzRVxcXCIpLCBcXFwiI1xcXCIsIFxcXCIlMjNcXFwiKSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tY2hlY2tib3gtaW5kaWNhdG9yLWluZGV0ZXJtaW5hdGUtYm94LXNoYWRvdzogbm9uZSAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDUwJSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tcmFkaW8taW5kaWNhdG9yLWljb24tY2hlY2tlZDogICAgICAgICAgIHN0ci1yZXBsYWNlKHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB2aWV3Qm94PSctNCAtNCA4IDgnJTNFJTNDY2lyY2xlIHI9JzMnIGZpbGw9JyN7JGN1c3RvbS1jb250cm9sLWluZGljYXRvci1jaGVja2VkLWNvbG9yfScvJTNFJTNDL3N2ZyUzRVxcXCIpLCBcXFwiI1xcXCIsIFxcXCIlMjNcXFwiKSAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tc2VsZWN0LXBhZGRpbmcteTogICAgICAgICAgIC4zNzVyZW0gIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLXNlbGVjdC1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tc2VsZWN0LWhlaWdodDogICAgICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3ItcGFkZGluZzogICAxcmVtICFkZWZhdWx0OyAvLyBFeHRyYSBwYWRkaW5nIHRvIGFjY291bnQgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgYmFja2dyb3VuZC1pbWFnZSBiYXNlZCBpbmRpY2F0b3JcXG4vLyRjdXN0b20tc2VsZWN0LWxpbmUtaGVpZ2h0OiAgICAgICAgICRpbnB1dC1idG4tbGluZS1oZWlnaHQgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLXNlbGVjdC1jb2xvcjogICAgICAgICAgICAgICAkaW5wdXQtY29sb3IgIWRlZmF1bHQ7XFxuJGN1c3RvbS1zZWxlY3QtZGlzYWJsZWQtY29sb3I6ICRtZWRpdW0tZ3JheTtcXG4vLyRjdXN0b20tc2VsZWN0LWJnOiAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kY3VzdG9tLXNlbGVjdC1kaXNhYmxlZC1iZzogJGlucHV0LWRpc2FibGVkLWJnO1xcbiRjdXN0b20tc2VsZWN0LWJnLXNpemU6IDhweCAxMHB4ICFkZWZhdWx0OyAvLyBJbiBwaXhlbHMgYmVjYXVzZSBpbWFnZSBkaW1lbnNpb25zXFxuJGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yOiAkaW5wdXQtY29sb3I7XFxuLy8kY3VzdG9tLXNlbGVjdC1pbmRpY2F0b3I6ICAgICAgICAgICBzdHItcmVwbGFjZSh1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgdmlld0JveD0nMCAwIDQgNSclM0UlM0NwYXRoIGZpbGw9JyN7JGN1c3RvbS1zZWxlY3QtaW5kaWNhdG9yLWNvbG9yfScgZD0nTTIgMEwwIDJoNHptMCA1TDAgM2g0eicvJTNFJTNDL3N2ZyUzRVxcXCIpLCBcXFwiI1xcXCIsIFxcXCIlMjNcXFwiKSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tc2VsZWN0LWJvcmRlci13aWR0aDogICAgICAgICRpbnB1dC1idG4tYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1zZWxlY3QtYm9yZGVyLWNvbG9yOiAgICAgICAgJGlucHV0LWJvcmRlci1jb2xvciAhZGVmYXVsdDtcXG4vLyRjdXN0b20tc2VsZWN0LWJvcmRlci1yYWRpdXM6ICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcblxcbiRjdXN0b20tc2VsZWN0LWZvY3VzLWJvcmRlci1jb2xvcjogJGlucHV0LWZvY3VzLWJvcmRlci1jb2xvcjtcXG4kY3VzdG9tLXNlbGVjdC1mb2N1cy1ib3gtc2hhZG93OiAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdztcXG5cXG4vLyRjdXN0b20tc2VsZWN0LWZvbnQtc2l6ZS1zbTogICAgICAgIDc1JSAhZGVmYXVsdDtcXG4vLyRjdXN0b20tc2VsZWN0LWhlaWdodC1zbTogICAgICAgICAgICRpbnB1dC1oZWlnaHQtc20gIWRlZmF1bHQ7XFxuXFxuLy8kY3VzdG9tLXNlbGVjdC1mb250LXNpemUtbGc6ICAgICAgICAxMjUlICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1zZWxlY3QtaGVpZ2h0LWxnOiAgICAgICAgICAgJGlucHV0LWhlaWdodC1sZyAhZGVmYXVsdDtcXG5cXG4vLyRjdXN0b20tZmlsZS1oZWlnaHQ6ICAgICAgICAgICAgICAgICRpbnB1dC1oZWlnaHQgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWZpbGUtZm9jdXMtYm9yZGVyLWNvbG9yOiAgICAkaW5wdXQtZm9jdXMtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xcbiRjdXN0b20tZmlsZS1mb2N1cy1ib3gtc2hhZG93OiAkaW5wdXQtZm9jdXMtYm94LXNoYWRvdztcXG5cXG4vLyRjdXN0b20tZmlsZS1wYWRkaW5nLXk6ICAgICAgICAgICAgICRpbnB1dC1idG4tcGFkZGluZy15ICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1maWxlLXBhZGRpbmcteDogICAgICAgICAgICAgJGlucHV0LWJ0bi1wYWRkaW5nLXggIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWZpbGUtbGluZS1oZWlnaHQ6ICAgICAgICAgICAkaW5wdXQtYnRuLWxpbmUtaGVpZ2h0ICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1maWxlLWNvbG9yOiAgICAgICAgICAgICAgICAgJGlucHV0LWNvbG9yICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1maWxlLWJnOiAgICAgICAgICAgICAgICAgICAgJGlucHV0LWJnICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1maWxlLWJvcmRlci13aWR0aDogICAgICAgICAgJGlucHV0LWJ0bi1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWZpbGUtYm9yZGVyLWNvbG9yOiAgICAgICAgICAkaW5wdXQtYm9yZGVyLWNvbG9yICFkZWZhdWx0O1xcbi8vJGN1c3RvbS1maWxlLWJvcmRlci1yYWRpdXM6ICAgICAgICAgJGlucHV0LWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuLy8kY3VzdG9tLWZpbGUtYm94LXNoYWRvdzogICAgICAgICAgICAkaW5wdXQtYm94LXNoYWRvdyAhZGVmYXVsdDtcXG4vLyRjdXN0b20tZmlsZS1idXR0b24tY29sb3I6ICAgICAgICAgICRjdXN0b20tZmlsZS1jb2xvciAhZGVmYXVsdDtcXG4vLyRjdXN0b20tZmlsZS1idXR0b24tYmc6ICAgICAgICAgICAgICRpbnB1dC1ncm91cC1hZGRvbi1iZyAhZGVmYXVsdDtcXG4vLyRjdXN0b20tZmlsZS10ZXh0OiAoXFxuLy8gICAgICAgIGVuOiBcXFwiQnJvd3NlXFxcIlxcbi8vKSAhZGVmYXVsdDtcXG5cXG4kY3Vyc29yLWRpc2FibGVkOiBub3QtYWxsb3dlZDsgLy8gUFMgY3VzdG9tXFxuXFxuLy8gRm9ybSB2YWxpZGF0aW9uXFxuLy8kZm9ybS1mZWVkYmFjay1tYXJnaW4tdG9wOiAgICAgICAgICAkZm9ybS10ZXh0LW1hcmdpbi10b3AgIWRlZmF1bHQ7XFxuLy8kZm9ybS1mZWVkYmFjay1mb250LXNpemU6ICAgICAgICAgICAkc21hbGwtZm9udC1zaXplICFkZWZhdWx0O1xcbiRmb3JtLWZlZWRiYWNrLXZhbGlkLWNvbG9yOiB0aGVtZS1jb2xvcihcXFwic3VjY2Vzc1xcXCIpO1xcbiRmb3JtLWZlZWRiYWNrLWludmFsaWQtY29sb3I6IHRoZW1lLWNvbG9yKFxcXCJkYW5nZXJcXFwiKTtcXG4kZm9ybS1mZWVkYmFjay13YXJuaW5nLWNvbG9yOiB0aGVtZS1jb2xvcihcXFwid2FybmluZ1xcXCIpOyAvLyBQUyBjdXN0b21cXG5cXG4vLyBEcm9wZG93bnNcXG4vLyRkcm9wZG93bi1taW4td2lkdGg6ICAgICAgICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xcbiRkcm9wZG93bi1wYWRkaW5nLXk6IDA7XFxuLy8kZHJvcGRvd24tcGFkZGluZy15OiAgICAgICAgICAgICAgICAuNXJlbSAhZGVmYXVsdDtcXG4vLyRkcm9wZG93bi1zcGFjZXI6ICAgICAgICAgICAgICAgICAgIC4xMjVyZW0gIWRlZmF1bHQ7XFxuLy8kZHJvcGRvd24tYmc6ICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWJvcmRlci1jb2xvcjogJGxpZ2h0LWdyYXk7XFxuLy8kZHJvcGRvd24tYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4vLyRkcm9wZG93bi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJGRyb3Bkb3duLWRpdmlkZXItYmc6ICRsaWdodC1ncmF5O1xcbi8vJGRyb3Bkb3duLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgMCAuNXJlbSAxcmVtIHJnYmEoJGJsYWNrLCAuMTc1KSAhZGVmYXVsdDtcXG5cXG4kZHJvcGRvd24tbGluay1jb2xvcjogJG1lZGl1bS1ncmF5O1xcbiRkcm9wZG93bi1saW5rLWhvdmVyLWNvbG9yOiB0aGVtZS1jb2xvcihcXFwicHJpbWFyeVxcXCIpO1xcbiRkcm9wZG93bi1saW5rLWhvdmVyLWJnOiAkd2hpdGU7XFxuXFxuLy8kZHJvcGRvd24tbGluay1hY3RpdmUtY29sb3I6ICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1jb2xvciAhZGVmYXVsdDtcXG4vLyRkcm9wZG93bi1saW5rLWFjdGl2ZS1iZzogICAgICAgICAgICRjb21wb25lbnQtYWN0aXZlLWJnICFkZWZhdWx0O1xcblxcbi8vJGRyb3Bkb3duLWxpbmstZGlzYWJsZWQtY29sb3I6ICAgICAgJGdyYXktNjAwICFkZWZhdWx0O1xcblxcbiRkcm9wZG93bi1pdGVtLXBhZGRpbmcteDogLjMxMjVyZW07XFxuJGRyb3Bkb3duLWl0ZW0tcGFkZGluZy15OiAuMzEyNXJlbTtcXG5cXG4vLyRkcm9wZG93bi1oZWFkZXItY29sb3I6ICAgICAgICAgICAgICRncmF5LTYwMCAhZGVmYXVsdDtcXG5cXG4vLyBOYXZzXFxuJG5hdi1saW5rLXBhZGRpbmcteTogLjkzNzVyZW07XFxuJG5hdi1saW5rLXBhZGRpbmcteDogMS4yNXJlbTtcXG4kbmF2LWxpbmstZGlzYWJsZWQtY29sb3I6ICRsaWdodC1ncmF5O1xcblxcbiRuYXYtdGFicy1ib3JkZXItY29sb3I6ICR3aGl0ZTtcXG4vLyRuYXYtdGFicy1ib3JkZXItd2lkdGg6ICAgICAgICAgICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuLy8kbmF2LXRhYnMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICAkYm9yZGVyLXJhZGl1cyAhZGVmYXVsdDtcXG4kbmF2LXRhYnMtbGluay1ob3Zlci1ib3JkZXItY29sb3I6IHRoZW1lLWNvbG9yKFxcXCJwcmltYXJ5XFxcIik7XFxuJG5hdi10YWJzLWxpbmstYWN0aXZlLWNvbG9yOiAkYm9keS1jb2xvcjtcXG4kbmF2LXRhYnMtbGluay1hY3RpdmUtYmc6ICRib2R5LWJnO1xcbiRuYXYtdGFicy1saW5rLWFjdGl2ZS1ib3JkZXItY29sb3I6IHRoZW1lLWNvbG9yKFxcXCJwcmltYXJ5XFxcIik7XFxuXFxuJG5hdi1waWxscy1saW5rLWhvdmVyLWJvcmRlci1jb2xvcjogJG5hdi10YWJzLWxpbmstaG92ZXItYm9yZGVyLWNvbG9yO1xcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtY29sb3I6ICRuYXYtdGFicy1saW5rLWFjdGl2ZS1jb2xvcjtcXG4kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnOiAjZjRmOWZiO1xcbiRuYXYtcGlsbHMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yOiAkbmF2LXRhYnMtbGluay1hY3RpdmUtYm9yZGVyLWNvbG9yOyAvLyBQUyBjdXN0b21cXG5cXG4vLyRuYXYtcGlsbHMtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbi8vJG5hdi1waWxscy1saW5rLWFjdGl2ZS1jb2xvcjogICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuLy8kbmF2LXBpbGxzLWxpbmstYWN0aXZlLWJnOiAgICAgICAgICAkY29tcG9uZW50LWFjdGl2ZS1iZyAhZGVmYXVsdDtcXG5cXG4vLyBOYXZiYXJcXG4vLyRuYXZiYXItcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICgkc3BhY2VyIC8gMikgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLXBhZGRpbmcteDogICAgICAgICAgICAgICAgICAkc3BhY2VyICFkZWZhdWx0O1xcblxcbi8vJG5hdmJhci1uYXYtbGluay1wYWRkaW5nLXg6ICAgICAgICAgLjVyZW0gIWRlZmF1bHQ7XFxuXFxuLy8kbmF2YmFyLWJyYW5kLWZvbnQtc2l6ZTogICAgICAgICAgICAkZm9udC1zaXplLWxnICFkZWZhdWx0O1xcblxcbi8vJG5hdi1saW5rLWhlaWdodDogICAgICAgICAgICAgICAgICAgKCRmb250LXNpemUtYmFzZSAqICRsaW5lLWhlaWdodC1iYXNlICsgJG5hdi1saW5rLXBhZGRpbmcteSAqIDIpICFkZWZhdWx0O1xcbi8vJG5hdmJhci1icmFuZC1oZWlnaHQ6ICAgICAgICAgICAgICAgJG5hdmJhci1icmFuZC1mb250LXNpemUgKiAkbGluZS1oZWlnaHQtYmFzZSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItYnJhbmQtcGFkZGluZy15OiAgICAgICAgICAgICgkbmF2LWxpbmstaGVpZ2h0IC0gJG5hdmJhci1icmFuZC1oZWlnaHQpIC8gMiAhZGVmYXVsdDtcXG5cXG4vLyRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXk6ICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItdG9nZ2xlci1wYWRkaW5nLXg6ICAgICAgICAgIC43NXJlbSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItdG9nZ2xlci1mb250LXNpemU6ICAgICAgICAgICRmb250LXNpemUtbGcgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLXRvZ2dsZXItYm9yZGVyLXJhZGl1czogICAgICAkYnRuLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuXFxuLy8kbmF2YmFyLWRhcmstY29sb3I6ICAgICAgICAgICAgICAgICByZ2JhKCR3aGl0ZSwgLjUpICFkZWZhdWx0O1xcbi8vJG5hdmJhci1kYXJrLWhvdmVyLWNvbG9yOiAgICAgICAgICAgcmdiYSgkd2hpdGUsIC43NSkgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLWRhcmstYWN0aXZlLWNvbG9yOiAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLWRhcmstZGlzYWJsZWQtY29sb3I6ICAgICAgICByZ2JhKCR3aGl0ZSwgLjI1KSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItZGFyay10b2dnbGVyLWljb24tYmc6ICAgICAgIHN0ci1yZXBsYWNlKHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9JyN7JG5hdmJhci1kYXJrLWNvbG9yfScgc3Ryb2tlLXdpZHRoPScyJyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgZD0nTTQgN2gyMk00IDE1aDIyTTQgMjNoMjInLyUzRSUzQy9zdmclM0VcXFwiKSwgXFxcIiNcXFwiLCBcXFwiJTIzXFxcIikgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLWRhcmstdG9nZ2xlci1ib3JkZXItY29sb3I6ICByZ2JhKCR3aGl0ZSwgLjEpICFkZWZhdWx0O1xcblxcbi8vJG5hdmJhci1saWdodC1jb2xvcjogICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC41KSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItbGlnaHQtaG92ZXItY29sb3I6ICAgICAgICAgIHJnYmEoJGJsYWNrLCAuNykgIWRlZmF1bHQ7XFxuLy8kbmF2YmFyLWxpZ2h0LWFjdGl2ZS1jb2xvcjogICAgICAgICByZ2JhKCRibGFjaywgLjkpICFkZWZhdWx0O1xcbi8vJG5hdmJhci1saWdodC1kaXNhYmxlZC1jb2xvcjogICAgICAgcmdiYSgkYmxhY2ssIC4zKSAhZGVmYXVsdDtcXG4vLyRuYXZiYXItbGlnaHQtdG9nZ2xlci1pY29uLWJnOiAgICAgIHN0ci1yZXBsYWNlKHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0Nzdmcgdmlld0JveD0nMCAwIDMwIDMwJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDcGF0aCBzdHJva2U9JyN7JG5hdmJhci1saWdodC1jb2xvcn0nIHN0cm9rZS13aWR0aD0nMicgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbWl0ZXJsaW1pdD0nMTAnIGQ9J000IDdoMjJNNCAxNWgyMk00IDIzaDIyJy8lM0UlM0Mvc3ZnJTNFXFxcIiksIFxcXCIjXFxcIiwgXFxcIiUyM1xcXCIpICFkZWZhdWx0O1xcbi8vJG5hdmJhci1saWdodC10b2dnbGVyLWJvcmRlci1jb2xvcjogcmdiYSgkYmxhY2ssIC4xKSAhZGVmYXVsdDtcXG5cXG4vLyBQYWdpbmF0aW9uXFxuJHBhZ2luYXRpb24tcGFkZGluZy15OiAuNjVyZW07XFxuJHBhZ2luYXRpb24tcGFkZGluZy14OiAuNXJlbTtcXG4vLyRwYWdpbmF0aW9uLXBhZGRpbmcteS1zbTogICAgICAgICAgIC4yNXJlbSAhZGVmYXVsdDtcXG4vLyRwYWdpbmF0aW9uLXBhZGRpbmcteC1zbTogICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbi8vJHBhZ2luYXRpb24tcGFkZGluZy15LWxnOiAgICAgICAgICAgLjc1cmVtICFkZWZhdWx0O1xcbi8vJHBhZ2luYXRpb24tcGFkZGluZy14LWxnOiAgICAgICAgICAgMS41cmVtICFkZWZhdWx0O1xcbi8vJHBhZ2luYXRpb24tbGluZS1oZWlnaHQ6ICAgICAgICAgICAgMS4yNSAhZGVmYXVsdDtcXG5cXG4kcGFnaW5hdGlvbi1jb2xvcjogJG1lZGl1bS1ncmF5O1xcbiRwYWdpbmF0aW9uLWJnOiAkd2hpdGU7XFxuLy8kcGFnaW5hdGlvbi1ib3JkZXItd2lkdGg6ICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiRwYWdpbmF0aW9uLWJvcmRlci1jb2xvcjogJHdoaXRlO1xcblxcbi8vJHBhZ2luYXRpb24tZm9jdXMtYm94LXNoYWRvdzogICAgICAgJGlucHV0LWJ0bi1mb2N1cy1ib3gtc2hhZG93ICFkZWZhdWx0O1xcblxcbiRwYWdpbmF0aW9uLWhvdmVyLWNvbG9yOiAkcGFnaW5hdGlvbi1jb2xvcjtcXG4kcGFnaW5hdGlvbi1ob3Zlci1iZzogJHBhZ2luYXRpb24tYmc7XFxuJHBhZ2luYXRpb24taG92ZXItYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1ib3JkZXItY29sb3I7XFxuXFxuJHBhZ2luYXRpb24tYWN0aXZlLWNvbG9yOiB0aGVtZS1jb2xvcihcXFwicHJpbWFyeVxcXCIpO1xcbiRwYWdpbmF0aW9uLWFjdGl2ZS1iZzogJHBhZ2luYXRpb24tYmc7XFxuJHBhZ2luYXRpb24tYWN0aXZlLWJvcmRlci1jb2xvcjogJHBhZ2luYXRpb24tYm9yZGVyLWNvbG9yO1xcblxcbiRwYWdpbmF0aW9uLWRpc2FibGVkLWNvbG9yOiAkbGlnaHQtZ3JheTtcXG4kcGFnaW5hdGlvbi1kaXNhYmxlZC1iZzogJHBhZ2luYXRpb24tYmc7XFxuJHBhZ2luYXRpb24tZGlzYWJsZWQtYm9yZGVyLWNvbG9yOiAkcGFnaW5hdGlvbi1ib3JkZXItY29sb3I7XFxuXFxuLy8gSnVtYm90cm9uXFxuJGp1bWJvdHJvbi1wYWRkaW5nOiAycmVtICFkZWZhdWx0O1xcbiRqdW1ib3Ryb24tYmc6ICRleHRyYS1saWdodC1ncmF5O1xcblxcbi8vIENhcmRzXFxuJGNhcmQtc3BhY2VyLXg6IC42MjVyZW0gIWRlZmF1bHQ7XFxuJGNhcmQtc3BhY2VyLXk6IC42MjVyZW0gIWRlZmF1bHQ7XFxuJGNhcmQtYm9yZGVyLXdpZHRoOiAxcHggIWRlZmF1bHQ7XFxuJGNhcmQtYm9yZGVyLXJhZGl1czogNXB4ICFkZWZhdWx0O1xcbiRjYXJkLWJvcmRlci1yYWRpdXMtaW5uZXI6ICRjYXJkLWJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuJGNhcmQtY2FwLWJnOiAkZ3JheS0yMDAgIWRlZmF1bHQ7XFxuJGNhcmQtYmc6ICNmZmYgIWRlZmF1bHQ7XFxuJGNhcmQtbGluay1ob3Zlci1jb2xvcjogI2ZmZiAhZGVmYXVsdDtcXG4kY2FyZC1ib3JkZXItY29sb3I6ICNkYmU2ZTkgIWRlZmF1bHQ7XFxuLy8kY2FyZC1pbm5lci1ib3JkZXItcmFkaXVzOiAgICAgICAgICBjYWxjKCN7JGNhcmQtYm9yZGVyLXJhZGl1c30gLSAjeyRjYXJkLWJvcmRlci13aWR0aH0pICFkZWZhdWx0O1xcbi8vJGNhcmQtY2FwLWJnOiAgICAgICAgICAgICAgICAgICAgICAgcmdiYSgkYmxhY2ssIC4wMykgIWRlZmF1bHQ7XFxuLy8kY2FyZC1iZzogICAgICAgICAgICAgICAgICAgICAgICAgICAkd2hpdGUgIWRlZmF1bHQ7XFxuXFxuLy8kY2FyZC1pbWctb3ZlcmxheS1wYWRkaW5nOiAgICAgICAgICAxLjI1cmVtICFkZWZhdWx0O1xcblxcbi8vJGNhcmQtZ3JvdXAtbWFyZ2luOiAgICAgICAgICAgICAgICAgKCRncmlkLWd1dHRlci13aWR0aCAvIDIpICFkZWZhdWx0O1xcbi8vJGNhcmQtZGVjay1tYXJnaW46ICAgICAgICAgICAgICAgICAgJGNhcmQtZ3JvdXAtbWFyZ2luICFkZWZhdWx0O1xcblxcbi8vJGNhcmQtY29sdW1ucy1jb3VudDogICAgICAgICAgICAgICAgMyAhZGVmYXVsdDtcXG4vLyRjYXJkLWNvbHVtbnMtZ2FwOiAgICAgICAgICAgICAgICAgIDEuMjVyZW0gIWRlZmF1bHQ7XFxuLy8kY2FyZC1jb2x1bW5zLW1hcmdpbjogICAgICAgICAgICAgICAkY2FyZC1zcGFjZXIteSAhZGVmYXVsdDtcXG5cXG4vLyBUb29sdGlwc1xcbi8vJHRvb2x0aXAtZm9udC1zaXplOiAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcXG4vLyR0b29sdGlwLW1heC13aWR0aDogICAgICAgICAgIDIwMHB4ICFkZWZhdWx0O1xcbi8vJHRvb2x0aXAtY29sb3I6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiR0b29sdGlwLWJnOiAkbWVkaXVtLWdyYXk7XFxuLy8kdG9vbHRpcC1ib3JkZXItcmFkaXVzOiAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuLy8kdG9vbHRpcC1vcGFjaXR5OiAgICAgICAgICAgICAuOSAhZGVmYXVsdDtcXG4kdG9vbHRpcC1wYWRkaW5nLXk6IC42MjVyZW07XFxuJHRvb2x0aXAtcGFkZGluZy14OiAxLjI1cmVtO1xcbi8vJHRvb2x0aXAtbWFyZ2luOiAgICAgICAgICAgICAgMCAhZGVmYXVsdDtcXG5cXG4vLyR0b29sdGlwLWFycm93LXdpZHRoOiAgICAgICAgIC44cmVtICFkZWZhdWx0O1xcbi8vJHRvb2x0aXAtYXJyb3ctaGVpZ2h0OiAgICAgICAgLjRyZW0gIWRlZmF1bHQ7XFxuLy8kdG9vbHRpcC1hcnJvdy1jb2xvcjogICAgICAgICAkdG9vbHRpcC1iZyAhZGVmYXVsdDtcXG5cXG4vLyBQb3BvdmVyc1xcbi8vJHBvcG92ZXItZm9udC1zaXplOiAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZS1zbSAhZGVmYXVsdDtcXG4vLyRwb3BvdmVyLWJnOiAgICAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4vLyRwb3BvdmVyLW1heC13aWR0aDogICAgICAgICAgICAgICAgIDI3NnB4ICFkZWZhdWx0O1xcbi8vJHBvcG92ZXItYm9yZGVyLXdpZHRoOiAgICAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kcG9wb3Zlci1ib3JkZXItY29sb3I6ICRsaWdodC1ncmF5O1xcbi8vJHBvcG92ZXItYm9yZGVyLXJhZGl1czogICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMtbGcgIWRlZmF1bHQ7XFxuJHBvcG92ZXItYm94LXNoYWRvdzogbm9uZTtcXG5cXG4kcG9wb3Zlci1oZWFkZXItYmc6ICRleHRyYS1saWdodC1ncmF5O1xcbi8vJHBvcG92ZXItaGVhZGVyLWNvbG9yOiAgICAgICAgICAgICAgJGhlYWRpbmdzLWNvbG9yICFkZWZhdWx0O1xcbiRwb3BvdmVyLWhlYWRlci1wYWRkaW5nLXk6IC42MjVyZW07XFxuJHBvcG92ZXItaGVhZGVyLXBhZGRpbmcteDogMS4yNXJlbTtcXG5cXG4vLyRwb3BvdmVyLWJvZHktY29sb3I6ICAgICAgICAgICAgICAgICRib2R5LWNvbG9yICFkZWZhdWx0O1xcbiRwb3BvdmVyLWJvZHktcGFkZGluZy15OiAuNjI1cmVtO1xcbiRwb3BvdmVyLWJvZHktcGFkZGluZy14OiAxLjI1cmVtO1xcblxcbi8vJHBvcG92ZXItYXJyb3ctd2lkdGg6ICAgICAgICAgICAgICAgMXJlbSAhZGVmYXVsdDtcXG4vLyRwb3BvdmVyLWFycm93LWhlaWdodDogICAgICAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbi8vJHBvcG92ZXItYXJyb3ctY29sb3I6ICAgICAgICAgICAgICAgJHBvcG92ZXItYmcgIWRlZmF1bHQ7XFxuXFxuLy8kcG9wb3Zlci1hcnJvdy1vdXRlci1jb2xvcjogICAgICAgICBmYWRlLWluKCRwb3BvdmVyLWJvcmRlci1jb2xvciwgLjA1KSAhZGVmYXVsdDtcXG5cXG4vLyBCYWRnZXNcXG4kYmFkZ2UtZm9udC1zaXplOiAuNjI1cmVtICFkZWZhdWx0O1xcbiRiYWRnZS1mb250LXdlaWdodDogNTAwICFkZWZhdWx0O1xcbiRiYWRnZS1wYWRkaW5nLXk6IC4yNXJlbTtcXG4kYmFkZ2UtcGFkZGluZy14OiAuNXJlbTtcXG4vLyRiYWRnZS1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcblxcbi8vJGJhZGdlLXBpbGwtcGFkZGluZy14OiAgICAgICAgICAgICAgLjZlbSAhZGVmYXVsdDtcXG4vLyRiYWRnZS1waWxsLWJvcmRlci1yYWRpdXM6ICAgICAgICAgIDEwcmVtICFkZWZhdWx0O1xcblxcbi8vIE1vZGFsc1xcbiRtb2RhbC1pbm5lci1wYWRkaW5nOiAxLjg3NXJlbTtcXG5cXG4vLyRtb2RhbC1kaWFsb2ctbWFyZ2luOiAgICAgICAgIC41cmVtICFkZWZhdWx0O1xcbi8vJG1vZGFsLWRpYWxvZy1tYXJnaW4teS1zbS11cDogMS43NXJlbSAhZGVmYXVsdDtcXG5cXG4vLyRtb2RhbC10aXRsZS1saW5lLWhlaWdodDogICAgICAgICAgICRsaW5lLWhlaWdodC1iYXNlICFkZWZhdWx0O1xcblxcbi8vJG1vZGFsLWNvbnRlbnQtYmc6ICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbiRtb2RhbC1jb250ZW50LWJvcmRlci1jb2xvcjogbm9uZTtcXG4vLyRtb2RhbC1jb250ZW50LWJvcmRlci13aWR0aDogICAgICRib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuJG1vZGFsLWNvbnRlbnQtYm94LXNoYWRvdy14czogMCA4cHggMTZweCAwIHJnYmEoMCwgMCwgMCwgLjEpO1xcbiRtb2RhbC1jb250ZW50LWJveC1zaGFkb3ctc20tdXA6IDAgOHB4IDE2cHggMCByZ2JhKDAsIDAsIDAsIC4xKTtcXG5cXG4vLyRtb2RhbC1iYWNrZHJvcC1iZzogICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcXG4vLyRtb2RhbC1iYWNrZHJvcC1vcGFjaXR5OiAgICAgIC41ICFkZWZhdWx0O1xcbiRtb2RhbC1oZWFkZXItYm9yZGVyLWNvbG9yOiBub25lO1xcbi8vJG1vZGFsLWZvb3Rlci1ib3JkZXItY29sb3I6ICAgJG1vZGFsLWhlYWRlci1ib3JkZXItY29sb3IgIWRlZmF1bHQ7XFxuLy8kbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aDogICAkbW9kYWwtY29udGVudC1ib3JkZXItd2lkdGggIWRlZmF1bHQ7XFxuLy8kbW9kYWwtZm9vdGVyLWJvcmRlci13aWR0aDogICAkbW9kYWwtaGVhZGVyLWJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4kbW9kYWwtaGVhZGVyLXBhZGRpbmc6ICRtb2RhbC1pbm5lci1wYWRkaW5nO1xcblxcbiRtb2RhbC1sZzogOTAwcHg7XFxuJG1vZGFsLW1kOiA2ODBweDtcXG4kbW9kYWwtc206IDQwMHB4O1xcblxcbi8vJG1vZGFsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtIC4zcyBlYXNlLW91dCAhZGVmYXVsdDtcXG5cXG4vLyBBbGVydHNcXG4kYWxlcnQtcGFkZGluZy15OiAxcmVtICFkZWZhdWx0O1xcbiRhbGVydC1wYWRkaW5nLXg6IDFyZW07XFxuLy8kYWxlcnQtbWFyZ2luLWJvdHRvbTogICAgICAgICAgICAgICAxcmVtICFkZWZhdWx0O1xcbi8vJGFsZXJ0LWJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgJGJvcmRlci1yYWRpdXMgIWRlZmF1bHQ7XFxuLy8kYWxlcnQtbGluay1mb250LXdlaWdodDogICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcXG4kYWxlcnQtYm9yZGVyLXdpZHRoOiAuMTI1cmVtO1xcblxcbi8vJGFsZXJ0LWJnLWxldmVsOiAgICAgICAgICAgICAgICAgICAgLTEwICFkZWZhdWx0O1xcbi8vJGFsZXJ0LWJvcmRlci1sZXZlbDogICAgICAgICAgICAgICAgLTkgIWRlZmF1bHQ7XFxuLy8kYWxlcnQtY29sb3ItbGV2ZWw6ICAgICAgICAgICAgICAgICA2ICFkZWZhdWx0O1xcblxcbi8vIFByb2dyZXNzIGJhcnNcXG4vLyRwcm9ncmVzcy1oZWlnaHQ6ICAgICAgICAgICAgICAgICAgIDFyZW0gIWRlZmF1bHQ7XFxuLy8kcHJvZ3Jlc3MtZm9udC1zaXplOiAgICAgICAgICAgICAgICAoJGZvbnQtc2l6ZS1iYXNlICogLjc1KSAhZGVmYXVsdDtcXG4vLyRwcm9ncmVzcy1iZzogICAgICAgICAgICAgICAgICAgICAgICRncmF5LTIwMCAhZGVmYXVsdDtcXG4vLyRwcm9ncmVzcy1ib3JkZXItcmFkaXVzOiAgICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbi8vJHByb2dyZXNzLWJveC1zaGFkb3c6ICAgICAgICAgICAgICAgaW5zZXQgMCAuMXJlbSAuMXJlbSByZ2JhKCRibGFjaywgLjEpICFkZWZhdWx0O1xcbi8vJHByb2dyZXNzLWJhci1jb2xvcjogICAgICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbi8vJHByb2dyZXNzLWJhci1iZzogICAgICAgICAgICAgICAgICAgdGhlbWUtY29sb3IoXFxcInByaW1hcnlcXFwiKSAhZGVmYXVsdDtcXG4vLyRwcm9ncmVzcy1iYXItYW5pbWF0aW9uLXRpbWluZzogICAgIDFzIGxpbmVhciBpbmZpbml0ZSAhZGVmYXVsdDtcXG4vLyRwcm9ncmVzcy1iYXItdHJhbnNpdGlvbjogICAgICAgICAgIHdpZHRoIC42cyBlYXNlICFkZWZhdWx0O1xcblxcbi8vIExpc3QgZ3JvdXBcXG4vLyRsaXN0LWdyb3VwLWJnOiAgICAgICAgICAgICAgICAgICAgICR3aGl0ZSAhZGVmYXVsdDtcXG4kbGlzdC1ncm91cC1ib3JkZXItY29sb3I6ICRsaWdodC1ncmF5O1xcbi8vJGxpc3QtZ3JvdXAtYm9yZGVyLXdpZHRoOiAgICAgICAgICAgJGJvcmRlci13aWR0aCAhZGVmYXVsdDtcXG4vLyRsaXN0LWdyb3VwLWJvcmRlci1yYWRpdXM6ICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcblxcbiRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy15OiAkaW5wdXQtcGFkZGluZy15O1xcbiRsaXN0LWdyb3VwLWl0ZW0tcGFkZGluZy14OiAkaW5wdXQtcGFkZGluZy14O1xcblxcbiRsaXN0LWdyb3VwLWhvdmVyLWJnOiB0aGVtZS1jb2xvci1ob3ZlcihcXFwicHJpbWFyeVxcXCIpO1xcbi8vJGxpc3QtZ3JvdXAtYWN0aXZlLWNvbG9yOiAgICAgICAgICAgJGNvbXBvbmVudC1hY3RpdmUtY29sb3IgIWRlZmF1bHQ7XFxuJGxpc3QtZ3JvdXAtYWN0aXZlLWJnOiB0aGVtZS1jb2xvci1ob3ZlcihcXFwicHJpbWFyeVxcXCIpO1xcbi8vJGxpc3QtZ3JvdXAtYWN0aXZlLWJvcmRlci1jb2xvcjogICAgJGxpc3QtZ3JvdXAtYWN0aXZlLWJnICFkZWZhdWx0O1xcblxcbiRsaXN0LWdyb3VwLWRpc2FibGVkLWNvbG9yOiAkbGlnaHQtZ3JheTtcXG4vLyRsaXN0LWdyb3VwLWRpc2FibGVkLWJnOiAgICAgICAgICAgICRsaXN0LWdyb3VwLWJnICFkZWZhdWx0O1xcblxcbi8vJGxpc3QtZ3JvdXAtYWN0aW9uLWNvbG9yOiAgICAgICAgICAgJGdyYXktNzAwICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWFjdGlvbi1ob3Zlci1jb2xvcjogJHdoaXRlO1xcblxcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtY29sb3I6ICRib2R5LWNvbG9yICFkZWZhdWx0O1xcbiRsaXN0LWdyb3VwLWFjdGlvbi1hY3RpdmUtYmc6ICRncmF5LTIwMCAhZGVmYXVsdDtcXG5cXG4vLyBJbWFnZSB0aHVtYm5haWxzXFxuJHRodW1ibmFpbC1wYWRkaW5nOiAwO1xcbi8vJHRodW1ibmFpbC1iZzogICAgICAgICAgICAgICAgICAgICAgJGJvZHktYmcgIWRlZmF1bHQ7XFxuLy8kdGh1bWJuYWlsLWJvcmRlci13aWR0aDogICAgICAgICAgICAkYm9yZGVyLXdpZHRoICFkZWZhdWx0O1xcbiR0aHVtYm5haWwtYm9yZGVyLWNvbG9yOiAkbGlnaHQtZ3JheTtcXG4vLyR0aHVtYm5haWwtYm9yZGVyLXJhZGl1czogICAgICAgICAgICRib3JkZXItcmFkaXVzICFkZWZhdWx0O1xcbiR0aHVtYm5haWwtYm94LXNoYWRvdzogbm9uZTtcXG5cXG4vLyBGaWd1cmVzXFxuLy8kZmlndXJlLWNhcHRpb24tZm9udC1zaXplOiAgICAgICAgICA5MCUgIWRlZmF1bHQ7XFxuJGZpZ3VyZS1jYXB0aW9uLWNvbG9yOiAkbWVkaXVtLWdyYXk7XFxuXFxuLy8gQnJlYWRjcnVtYnNcXG4kYnJlYWRjcnVtYi1wYWRkaW5nLXk6IC4zMTI1cmVtO1xcbiRicmVhZGNydW1iLXBhZGRpbmcteDogLjMxMjVyZW07XFxuJGJyZWFkY3J1bWItaXRlbS1wYWRkaW5nOiAuM3JlbTtcXG5cXG4kYnJlYWRjcnVtYi1tYXJnaW4tYm90dG9tOiAwO1xcblxcbiRicmVhZGNydW1iLWJnOiBub25lO1xcbiRicmVhZGNydW1iLWRpdmlkZXItY29sb3I6ICRkYXJrLWdyYXk7XFxuJGJyZWFkY3J1bWItYWN0aXZlLWNvbG9yOiAkZXh0cmEtZGFyay1ncmF5O1xcbiRicmVhZGNydW1iLWRpdmlkZXI6IFxcXCIvXFxcIjtcXG5cXG4vLyBDYXJvdXNlbFxcbi8vJGNhcm91c2VsLWNvbnRyb2wtY29sb3I6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWNvbnRyb2wtd2lkdGg6ICAgICAgICAgICAgMTUlICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWNvbnRyb2wtb3BhY2l0eTogICAgICAgICAgLjUgIWRlZmF1bHQ7XFxuXFxuLy8kY2Fyb3VzZWwtaW5kaWNhdG9yLXdpZHRoOiAgICAgICAgICAzMHB4ICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWluZGljYXRvci1oZWlnaHQ6ICAgICAgICAgM3B4ICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWluZGljYXRvci1zcGFjZXI6ICAgICAgICAgM3B4ICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWluZGljYXRvci1hY3RpdmUtYmc6ICAgICAgJHdoaXRlICFkZWZhdWx0O1xcblxcbi8vJGNhcm91c2VsLWNhcHRpb24td2lkdGg6ICAgICAgICAgICAgNzAlICFkZWZhdWx0O1xcbi8vJGNhcm91c2VsLWNhcHRpb24tY29sb3I6ICAgICAgICAgICAgJHdoaXRlICFkZWZhdWx0O1xcblxcbi8vJGNhcm91c2VsLWNvbnRyb2wtaWNvbi13aWR0aDogICAgICAgMjBweCAhZGVmYXVsdDtcXG5cXG4vLyRjYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbi1iZzogICAgIHN0ci1yZXBsYWNlKHVybChcXFwiZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9dXRmOCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBmaWxsPScjeyRjYXJvdXNlbC1jb250cm9sLWNvbG9yfScgdmlld0JveD0nMCAwIDggOCclM0UlM0NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNS0yLjUtMi41IDIuNS0yLjUtMS41LTEuNXonLyUzRSUzQy9zdmclM0VcXFwiKSwgXFxcIiNcXFwiLCBcXFwiJTIzXFxcIikgIWRlZmF1bHQ7XFxuLy8kY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24tYmc6ICAgICBzdHItcmVwbGFjZSh1cmwoXFxcImRhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0ZjgsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgZmlsbD0nI3skY2Fyb3VzZWwtY29udHJvbC1jb2xvcn0nIHZpZXdCb3g9JzAgMCA4IDgnJTNFJTNDcGF0aCBkPSdNMi43NSAwbC0xLjUgMS41IDIuNSAyLjUtMi41IDIuNSAxLjUgMS41IDQtNC00LTR6Jy8lM0UlM0Mvc3ZnJTNFXFxcIiksIFxcXCIjXFxcIiwgXFxcIiUyM1xcXCIpICFkZWZhdWx0O1xcblxcbi8vJGNhcm91c2VsLXRyYW5zaXRpb246ICAgICAgICAgICAgICAgdHJhbnNmb3JtIC42cyBlYXNlICFkZWZhdWx0O1xcblxcbi8vIENsb3NlXFxuLy8kY2xvc2UtZm9udC1zaXplOiAgICAgICAgICAgICAkZm9udC1zaXplLWJhc2UgKiAxLjUgIWRlZmF1bHQ7XFxuLy8kY2xvc2UtZm9udC13ZWlnaHQ6ICAgICAgICAgICAkZm9udC13ZWlnaHQtYm9sZCAhZGVmYXVsdDtcXG4vLyRjbG9zZS1jb2xvcjogICAgICAgICAgICAgICAgICRibGFjayAhZGVmYXVsdDtcXG4vLyRjbG9zZS10ZXh0LXNoYWRvdzogICAgICAgICAgIDAgMXB4IDAgJHdoaXRlICFkZWZhdWx0O1xcblxcbi8vIENvZGVcXG4vLyRjb2RlLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgIDg3LjUlICFkZWZhdWx0O1xcbiRjb2RlLWNvbG9yOiAkYm9keS1jb2xvcjtcXG5cXG4vLyRrYmQtcGFkZGluZy15OiAgICAgICAgICAgICAgICAgICAgIC4ycmVtICFkZWZhdWx0O1xcbi8vJGtiZC1wYWRkaW5nLXg6ICAgICAgICAgICAgICAgICAgICAgLjRyZW0gIWRlZmF1bHQ7XFxuLy8ka2JkLWZvbnQtc2l6ZTogICAgICAgICAgICAgICAgICAgICAkY29kZS1mb250LXNpemUgIWRlZmF1bHQ7XFxuJGtiZC1jb2xvcjogJHdoaXRlO1xcbiRrYmQtYmc6ICRleHRyYS1kYXJrLWdyYXk7XFxuXFxuJHByZS1jb2xvcjogJGJvZHktY29sb3I7XFxuLy8kcHJlLXNjcm9sbGFibGUtbWF4LWhlaWdodDogICAgICAgICAzNDBweCAhZGVmYXVsdDtcXG5cXG4vLyBQcmludGluZ1xcbi8vJHByaW50LXBhZ2Utc2l6ZTogICAgICAgICAgICAgICAgICAgYTMgIWRlZmF1bHQ7XFxuLy8kcHJpbnQtYm9keS1taW4td2lkdGg6ICAgICAgICAgICAgICBtYXAtZ2V0KCRncmlkLWJyZWFrcG9pbnRzLCBcXFwibGdcXFwiKSAhZGVmYXVsdDtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgXCIubW9kYWwuc2hvd1tkYXRhLXYtNGY2NzQwMjVde2Rpc3BsYXk6YmxvY2t9Lm1vZGFsLWZhZGUtZW50ZXItYWN0aXZlW2RhdGEtdi00ZjY3NDAyNV0sLm1vZGFsLWZhZGUtbGVhdmUtYWN0aXZlW2RhdGEtdi00ZjY3NDAyNV17dHJhbnNpdGlvbjpvcGFjaXR5IC41c30ubW9kYWwtZmFkZS1lbnRlcltkYXRhLXYtNGY2NzQwMjVdLC5tb2RhbC1mYWRlLWxlYXZlLXRvW2RhdGEtdi00ZjY3NDAyNV17b3BhY2l0eTowfVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2pzL3Z1ZS9jb21wb25lbnRzL01vZGFsLnZ1ZVwiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFrS0EsNkJBQ0UsYUFBYyxDQUNmLG9GQUVDLHNCQUF1QixDQUN4Qix5RUFFQyxTQUFVXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIlxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcblxcbi5tb2RhbC5zaG93IHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4ubW9kYWwtZmFkZS1lbnRlci1hY3RpdmUsIC5tb2RhbC1mYWRlLWxlYXZlLWFjdGl2ZSB7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC41cztcXG59XFxuLm1vZGFsLWZhZGUtZW50ZXIsIC5tb2RhbC1mYWRlLWxlYXZlLXRvIC8qIC5mYWRlLWxlYXZlLWFjdGl2ZSBiZWxvdyB2ZXJzaW9uIDIuMS44ICovIHtcXG4gIG9wYWNpdHk6IDA7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZnVuYy1uYW1lc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdOyAvLyByZXR1cm4gdGhlIGxpc3Qgb2YgbW9kdWxlcyBhcyBjc3Mgc3RyaW5nXG5cbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbihcIlwiKTtcbiAgfTsgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcblxuXG4gIGxpc3QuaSA9IGZ1bmN0aW9uIChtb2R1bGVzLCBtZWRpYVF1ZXJ5LCBkZWR1cGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgbW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nLFxuICAgIHJlSGFzUmVnRXhwQ2hhciA9IFJlZ0V4cChyZVJlZ0V4cENoYXIuc291cmNlKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sID8gU3ltYm9sLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcbiAgICBzeW1ib2xUb1N0cmluZyA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udG9TdHJpbmcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udG9TdHJpbmdgIHdoaWNoIGRvZXNuJ3QgY29udmVydCBudWxsaXNoXG4gKiB2YWx1ZXMgdG8gZW1wdHkgc3RyaW5ncy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRvU3RyaW5nKHZhbHVlKSB7XG4gIC8vIEV4aXQgZWFybHkgZm9yIHN0cmluZ3MgdG8gYXZvaWQgYSBwZXJmb3JtYW5jZSBoaXQgaW4gc29tZSBlbnZpcm9ubWVudHMuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgb2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9TdHJpbmcobnVsbCk7XG4gKiAvLyA9PiAnJ1xuICpcbiAqIF8udG9TdHJpbmcoLTApO1xuICogLy8gPT4gJy0wJ1xuICpcbiAqIF8udG9TdHJpbmcoWzEsIDIsIDNdKTtcbiAqIC8vID0+ICcxLDIsMydcbiAqL1xuZnVuY3Rpb24gdG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgPyAnJyA6IGJhc2VUb1N0cmluZyh2YWx1ZSk7XG59XG5cbi8qKlxuICogRXNjYXBlcyB0aGUgYFJlZ0V4cGAgc3BlY2lhbCBjaGFyYWN0ZXJzIFwiXlwiLCBcIiRcIiwgXCJcXFwiLCBcIi5cIiwgXCIqXCIsIFwiK1wiLFxuICogXCI/XCIsIFwiKFwiLCBcIilcIiwgXCJbXCIsIFwiXVwiLCBcIntcIiwgXCJ9XCIsIGFuZCBcInxcIiBpbiBgc3RyaW5nYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5lc2NhcGVSZWdFeHAoJ1tsb2Rhc2hdKGh0dHBzOi8vbG9kYXNoLmNvbS8pJyk7XG4gKiAvLyA9PiAnXFxbbG9kYXNoXFxdXFwoaHR0cHM6Ly9sb2Rhc2hcXC5jb20vXFwpJ1xuICovXG5mdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyaW5nKSB7XG4gIHN0cmluZyA9IHRvU3RyaW5nKHN0cmluZyk7XG4gIHJldHVybiAoc3RyaW5nICYmIHJlSGFzUmVnRXhwQ2hhci50ZXN0KHN0cmluZykpXG4gICAgPyBzdHJpbmcucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVzY2FwZVJlZ0V4cDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuLy8gVGhpcyBtZXRob2Qgb2Ygb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0IG5lZWRzIHRvIGJlXG4vLyBrZXB0IGlkZW50aWNhbCB0byB0aGUgd2F5IGl0IGlzIG9idGFpbmVkIGluIHJ1bnRpbWUuanNcbnZhciBnID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcblxuLy8gVXNlIGBnZXRPd25Qcm9wZXJ0eU5hbWVzYCBiZWNhdXNlIG5vdCBhbGwgYnJvd3NlcnMgc3VwcG9ydCBjYWxsaW5nXG4vLyBgaGFzT3duUHJvcGVydHlgIG9uIHRoZSBnbG9iYWwgYHNlbGZgIG9iamVjdCBpbiBhIHdvcmtlci4gU2VlICMxODMuXG52YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmXG4gIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGcpLmluZGV4T2YoXCJyZWdlbmVyYXRvclJ1bnRpbWVcIikgPj0gMDtcblxuLy8gU2F2ZSB0aGUgb2xkIHJlZ2VuZXJhdG9yUnVudGltZSBpbiBjYXNlIGl0IG5lZWRzIHRvIGJlIHJlc3RvcmVkIGxhdGVyLlxudmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lO1xuXG4vLyBGb3JjZSByZWV2YWx1dGF0aW9uIG9mIHJ1bnRpbWUuanMuXG5nLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiLi9ydW50aW1lXCIpO1xuXG5pZiAoaGFkUnVudGltZSkge1xuICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLlxuICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IG9sZFJ1bnRpbWU7XG59IGVsc2Uge1xuICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLlxuICB0cnkge1xuICAgIGRlbGV0ZSBnLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgfSBjYXRjaChlKSB7XG4gICAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuIShmdW5jdGlvbihnbG9iYWwpIHtcbiAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTtcbiAgdmFyIGhhc093biA9IE9wLmhhc093blByb3BlcnR5O1xuICB2YXIgdW5kZWZpbmVkOyAvLyBNb3JlIGNvbXByZXNzaWJsZSB0aGFuIHZvaWQgMC5cbiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgPyBTeW1ib2wgOiB7fTtcbiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCBcIkBAaXRlcmF0b3JcIjtcbiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgXCJAQGFzeW5jSXRlcmF0b3JcIjtcbiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCBcIkBAdG9TdHJpbmdUYWdcIjtcblxuICB2YXIgaW5Nb2R1bGUgPSB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiO1xuICB2YXIgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWU7XG4gIGlmIChydW50aW1lKSB7XG4gICAgaWYgKGluTW9kdWxlKSB7XG4gICAgICAvLyBJZiByZWdlbmVyYXRvclJ1bnRpbWUgaXMgZGVmaW5lZCBnbG9iYWxseSBhbmQgd2UncmUgaW4gYSBtb2R1bGUsXG4gICAgICAvLyBtYWtlIHRoZSBleHBvcnRzIG9iamVjdCBpZGVudGljYWwgdG8gcmVnZW5lcmF0b3JSdW50aW1lLlxuICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lO1xuICAgIH1cbiAgICAvLyBEb24ndCBib3RoZXIgZXZhbHVhdGluZyB0aGUgcmVzdCBvZiB0aGlzIGZpbGUgaWYgdGhlIHJ1bnRpbWUgd2FzXG4gICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LlxuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIERlZmluZSB0aGUgcnVudGltZSBnbG9iYWxseSAoYXMgZXhwZWN0ZWQgYnkgZ2VuZXJhdGVkIGNvZGUpIGFzIGVpdGhlclxuICAvLyBtb2R1bGUuZXhwb3J0cyAoaWYgd2UncmUgaW4gYSBtb2R1bGUpIG9yIGEgbmV3LCBlbXB0eSBvYmplY3QuXG4gIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9O1xuXG4gIGZ1bmN0aW9uIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci5cbiAgICB2YXIgcHJvdG9HZW5lcmF0b3IgPSBvdXRlckZuICYmIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gb3V0ZXJGbiA6IEdlbmVyYXRvcjtcbiAgICB2YXIgZ2VuZXJhdG9yID0gT2JqZWN0LmNyZWF0ZShwcm90b0dlbmVyYXRvci5wcm90b3R5cGUpO1xuICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pO1xuXG4gICAgLy8gVGhlIC5faW52b2tlIG1ldGhvZCB1bmlmaWVzIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy5cbiAgICBnZW5lcmF0b3IuX2ludm9rZSA9IG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZ2VuZXJhdG9yO1xuICB9XG4gIHJ1bnRpbWUud3JhcCA9IHdyYXA7XG5cbiAgLy8gVHJ5L2NhdGNoIGhlbHBlciB0byBtaW5pbWl6ZSBkZW9wdGltaXphdGlvbnMuIFJldHVybnMgYSBjb21wbGV0aW9uXG4gIC8vIHJlY29yZCBsaWtlIGNvbnRleHQudHJ5RW50cmllc1tpXS5jb21wbGV0aW9uLiBUaGlzIGludGVyZmFjZSBjb3VsZFxuICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmVcbiAgLy8gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50cywgYnV0IGluIGFsbCB0aGUgY2FzZXMgd2UgY2FyZSBhYm91dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYW4gZXhpc3RpbmcgbWV0aG9kIHdlIHdhbnQgdG8gY2FsbCwgc28gdGhlcmUncyBubyBuZWVkXG4gIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmdcbiAgLy8gdGhlIG1ldGhvZCB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCwgc2luY2UgdGhhdCBoYXBwZW5zIHRvIGJlIHRydWVcbiAgLy8gaW4gZXZlcnkgY2FzZSwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgYXJndW1lbnRzIG9iamVjdC4gVGhlXG4gIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2hcbiAgLy8gaGFzIGEgc3RhYmxlIHNoYXBlIGFuZCBzbyBob3BlZnVsbHkgc2hvdWxkIGJlIGNoZWFwIHRvIGFsbG9jYXRlLlxuICBmdW5jdGlvbiB0cnlDYXRjaChmbiwgb2JqLCBhcmcpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJub3JtYWxcIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9O1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHsgdHlwZTogXCJ0aHJvd1wiLCBhcmc6IGVyciB9O1xuICAgIH1cbiAgfVxuXG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0ID0gXCJzdXNwZW5kZWRTdGFydFwiO1xuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRZaWVsZCA9IFwic3VzcGVuZGVkWWllbGRcIjtcbiAgdmFyIEdlblN0YXRlRXhlY3V0aW5nID0gXCJleGVjdXRpbmdcIjtcbiAgdmFyIEdlblN0YXRlQ29tcGxldGVkID0gXCJjb21wbGV0ZWRcIjtcblxuICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzXG4gIC8vIGJyZWFraW5nIG91dCBvZiB0aGUgZGlzcGF0Y2ggc3dpdGNoIHN0YXRlbWVudC5cbiAgdmFyIENvbnRpbnVlU2VudGluZWwgPSB7fTtcblxuICAvLyBEdW1teSBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgdGhhdCB3ZSB1c2UgYXMgdGhlIC5jb25zdHJ1Y3RvciBhbmRcbiAgLy8gLmNvbnN0cnVjdG9yLnByb3RvdHlwZSBwcm9wZXJ0aWVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gR2VuZXJhdG9yXG4gIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyXG4gIC8vIG1pbmlmaWVyIG5vdCB0byBtYW5nbGUgdGhlIG5hbWVzIG9mIHRoZXNlIHR3byBmdW5jdGlvbnMuXG4gIGZ1bmN0aW9uIEdlbmVyYXRvcigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUoKSB7fVxuXG4gIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXRcbiAgLy8gZG9uJ3QgbmF0aXZlbHkgc3VwcG9ydCBpdC5cbiAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG4gIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdwLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNvbnN0cnVjdG9yID0gR2VuZXJhdG9yRnVuY3Rpb247XG4gIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9XG4gICAgR2VuZXJhdG9yRnVuY3Rpb24uZGlzcGxheU5hbWUgPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG5cbiAgLy8gSGVscGVyIGZvciBkZWZpbmluZyB0aGUgLm5leHQsIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcyBvZiB0aGVcbiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC5cbiAgZnVuY3Rpb24gZGVmaW5lSXRlcmF0b3JNZXRob2RzKHByb3RvdHlwZSkge1xuICAgIFtcIm5leHRcIiwgXCJ0aHJvd1wiLCBcInJldHVyblwiXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ludm9rZShtZXRob2QsIGFyZyk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgcnVudGltZS5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBpZiAoISh0b1N0cmluZ1RhZ1N5bWJvbCBpbiBnZW5GdW4pKSB7XG4gICAgICAgIGdlbkZ1blt0b1N0cmluZ1RhZ1N5bWJvbF0gPSBcIkdlbmVyYXRvckZ1bmN0aW9uXCI7XG4gICAgICB9XG4gICAgfVxuICAgIGdlbkZ1bi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEdwKTtcbiAgICByZXR1cm4gZ2VuRnVuO1xuICB9O1xuXG4gIC8vIFdpdGhpbiB0aGUgYm9keSBvZiBhbnkgYXN5bmMgZnVuY3Rpb24sIGBhd2FpdCB4YCBpcyB0cmFuc2Zvcm1lZCB0b1xuICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdFxuICAvLyBgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzXG4gIC8vIG1lYW50IHRvIGJlIGF3YWl0ZWQuXG4gIHJ1bnRpbWUuYXdyYXAgPSBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZS5fX2F3YWl0KS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJuZXh0XCIsIHZhbHVlLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgaW52b2tlKFwidGhyb3dcIiwgZXJyLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbih1bndyYXBwZWQpIHtcbiAgICAgICAgICAvLyBXaGVuIGEgeWllbGRlZCBQcm9taXNlIGlzIHJlc29sdmVkLCBpdHMgZmluYWwgdmFsdWUgYmVjb21lc1xuICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZVxuICAgICAgICAgIC8vIGN1cnJlbnQgaXRlcmF0aW9uLiBJZiB0aGUgUHJvbWlzZSBpcyByZWplY3RlZCwgaG93ZXZlciwgdGhlXG4gICAgICAgICAgLy8gcmVzdWx0IGZvciB0aGlzIGl0ZXJhdGlvbiB3aWxsIGJlIHJlamVjdGVkIHdpdGggdGhlIHNhbWVcbiAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdFxuICAgICAgICAgIC8vIHRocm93biBiYWNrIGludG8gdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgYXMgaXMgdGhlIGNhc2VcbiAgICAgICAgICAvLyB3aGVuIGFuIGF3YWl0ZWQgUHJvbWlzZSBpcyByZWplY3RlZC4gVGhpcyBkaWZmZXJlbmNlIGluXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0XG4gICAgICAgICAgLy8gYWxsb3dzIHRoZSBjb25zdW1lciB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRoIHRoZSB5aWVsZGVkXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIChzd2FsbG93IGl0IGFuZCBjb250aW51ZSwgbWFudWFsbHkgLnRocm93IGl0IGJhY2tcbiAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGhcbiAgICAgICAgICAvLyBhd2FpdCwgYnkgY29udHJhc3QsIHRoZXJlIGlzIG5vIG9wcG9ydHVuaXR5IHRvIGV4YW1pbmUgdGhlXG4gICAgICAgICAgLy8gcmVqZWN0aW9uIHJlYXNvbiBvdXRzaWRlIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIHNvIHRoZVxuICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZFxuICAgICAgICAgIC8vIGxldCB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhbmRsZSB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJlc3VsdC52YWx1ZSA9IHVud3JhcHBlZDtcbiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHByZXZpb3VzUHJvbWlzZTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWUobWV0aG9kLCBhcmcpIHtcbiAgICAgIGZ1bmN0aW9uIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByZXZpb3VzUHJvbWlzZSA9XG4gICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWxcbiAgICAgICAgLy8gYWxsIHByZXZpb3VzIFByb21pc2VzIGhhdmUgYmVlbiByZXNvbHZlZCBiZWZvcmUgY2FsbGluZyBpbnZva2UsXG4gICAgICAgIC8vIHNvIHRoYXQgcmVzdWx0cyBhcmUgYWx3YXlzIGRlbGl2ZXJlZCBpbiB0aGUgY29ycmVjdCBvcmRlci4gSWZcbiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG9cbiAgICAgICAgLy8gY2FsbCBpbnZva2UgaW1tZWRpYXRlbHksIHdpdGhvdXQgd2FpdGluZyBvbiBhIGNhbGxiYWNrIHRvIGZpcmUsXG4gICAgICAgIC8vIHNvIHRoYXQgdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBoYXMgdGhlIG9wcG9ydHVuaXR5IHRvIGRvXG4gICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHlcbiAgICAgICAgLy8gaXMgd2h5IHRoZSBQcm9taXNlIGNvbnN0cnVjdG9yIHN5bmNocm9ub3VzbHkgaW52b2tlcyBpdHNcbiAgICAgICAgLy8gZXhlY3V0b3IgY2FsbGJhY2ssIGFuZCB3aHkgYXN5bmMgZnVuY3Rpb25zIHN5bmNocm9ub3VzbHlcbiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGVcbiAgICAgICAgLy8gYXN5bmMgZnVuY3Rpb25zIGluIHRlcm1zIG9mIGFzeW5jIGdlbmVyYXRvcnMsIGl0IGlzIGVzcGVjaWFsbHlcbiAgICAgICAgLy8gaW1wb3J0YW50IHRvIGdldCB0aGlzIHJpZ2h0LCBldmVuIHRob3VnaCBpdCByZXF1aXJlcyBjYXJlLlxuICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbihcbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyxcbiAgICAgICAgICAvLyBBdm9pZCBwcm9wYWdhdGluZyBmYWlsdXJlcyB0byBQcm9taXNlcyByZXR1cm5lZCBieSBsYXRlclxuICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci5cbiAgICAgICAgICBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZ1xuICAgICAgICApIDogY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgdGhlIHVuaWZpZWQgaGVscGVyIG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gaW1wbGVtZW50IC5uZXh0LFxuICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLlxuICAgIHRoaXMuX2ludm9rZSA9IGVucXVldWU7XG4gIH1cblxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoQXN5bmNJdGVyYXRvci5wcm90b3R5cGUpO1xuICBBc3luY0l0ZXJhdG9yLnByb3RvdHlwZVthc3luY0l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgcnVudGltZS5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgcnVudGltZS5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgdmFyIGl0ZXIgPSBuZXcgQXN5bmNJdGVyYXRvcihcbiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpXG4gICAgKTtcblxuICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgR3BbdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JcIjtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBydW50aW1lLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgcnVudGltZS52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcbn0pKFxuICAvLyBJbiBzbG9wcHkgbW9kZSwgdW5ib3VuZCBgdGhpc2AgcmVmZXJzIHRvIHRoZSBnbG9iYWwgb2JqZWN0LCBmYWxsYmFjayB0b1xuICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpZiB3ZSdyZSBpbiBnbG9iYWwgc3RyaWN0IG1vZGUuIFRoYXQgaXMgc2FkbHkgYSBmb3JtXG4gIC8vIG9mIGluZGlyZWN0IGV2YWwgd2hpY2ggdmlvbGF0ZXMgQ29udGVudCBTZWN1cml0eSBQb2xpY3kuXG4gIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfSkoKSB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKClcbik7XG4iLCIvKiFcbiAqIHZ1ZS1pMThuIHY4LjE3LjQgXG4gKiAoYykgMjAyMCBrYXp1eWEga2F3YWd1Y2hpXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cbi8qICAqL1xuXG4vKipcbiAqIGNvbnN0YW50c1xuICovXG5cbnZhciBudW1iZXJGb3JtYXRLZXlzID0gW1xuICAnc3R5bGUnLFxuICAnY3VycmVuY3knLFxuICAnY3VycmVuY3lEaXNwbGF5JyxcbiAgJ3VzZUdyb3VwaW5nJyxcbiAgJ21pbmltdW1JbnRlZ2VyRGlnaXRzJyxcbiAgJ21pbmltdW1GcmFjdGlvbkRpZ2l0cycsXG4gICdtYXhpbXVtRnJhY3Rpb25EaWdpdHMnLFxuICAnbWluaW11bVNpZ25pZmljYW50RGlnaXRzJyxcbiAgJ21heGltdW1TaWduaWZpY2FudERpZ2l0cycsXG4gICdsb2NhbGVNYXRjaGVyJyxcbiAgJ2Zvcm1hdE1hdGNoZXInLFxuICAndW5pdCdcbl07XG5cbi8qKlxuICogdXRpbGl0aWVzXG4gKi9cblxuZnVuY3Rpb24gd2FybiAobXNnLCBlcnIpIHtcbiAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnNvbGUud2FybignW3Z1ZS1pMThuXSAnICsgbXNnKTtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLndhcm4oZXJyLnN0YWNrKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZXJyb3IgKG1zZywgZXJyKSB7XG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLmVycm9yKCdbdnVlLWkxOG5dICcgKyBtc2cpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmIChlcnIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLnN0YWNrKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNPYmplY3QgKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXG59XG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgT0JKRUNUX1NUUklORyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCAob2JqKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IE9CSkVDVF9TVFJJTkdcbn1cblxuZnVuY3Rpb24gaXNOdWxsICh2YWwpIHtcbiAgcmV0dXJuIHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MgKCkge1xuICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB3aGlsZSAoIGxlbi0tICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiBdO1xuXG4gIHZhciBsb2NhbGUgPSBudWxsO1xuICB2YXIgcGFyYW1zID0gbnVsbDtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKGlzT2JqZWN0KGFyZ3NbMF0pIHx8IEFycmF5LmlzQXJyYXkoYXJnc1swXSkpIHtcbiAgICAgIHBhcmFtcyA9IGFyZ3NbMF07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxvY2FsZSA9IGFyZ3NbMF07XG4gICAgfVxuICB9IGVsc2UgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgICAgbG9jYWxlID0gYXJnc1swXTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGlzT2JqZWN0KGFyZ3NbMV0pIHx8IEFycmF5LmlzQXJyYXkoYXJnc1sxXSkpIHtcbiAgICAgIHBhcmFtcyA9IGFyZ3NbMV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgbG9jYWxlOiBsb2NhbGUsIHBhcmFtczogcGFyYW1zIH1cbn1cblxuZnVuY3Rpb24gbG9vc2VDbG9uZSAob2JqKSB7XG4gIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpXG59XG5cbmZ1bmN0aW9uIHJlbW92ZSAoYXJyLCBpdGVtKSB7XG4gIGlmIChhcnIubGVuZ3RoKSB7XG4gICAgdmFyIGluZGV4ID0gYXJyLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHJldHVybiBhcnIuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyAoYXJyLCBpdGVtKSB7XG4gIHJldHVybiAhIX5hcnIuaW5kZXhPZihpdGVtKVxufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gaGFzT3duIChvYmosIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSlcbn1cblxuZnVuY3Rpb24gbWVyZ2UgKHRhcmdldCkge1xuICB2YXIgYXJndW1lbnRzJDEgPSBhcmd1bWVudHM7XG5cbiAgdmFyIG91dHB1dCA9IE9iamVjdCh0YXJnZXQpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHMkMVtpXTtcbiAgICBpZiAoc291cmNlICE9PSB1bmRlZmluZWQgJiYgc291cmNlICE9PSBudWxsKSB7XG4gICAgICB2YXIga2V5ID0gKHZvaWQgMCk7XG4gICAgICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKGhhc093bihzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICBpZiAoaXNPYmplY3Qoc291cmNlW2tleV0pKSB7XG4gICAgICAgICAgICBvdXRwdXRba2V5XSA9IG1lcmdlKG91dHB1dFtrZXldLCBzb3VyY2Vba2V5XSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXRcbn1cblxuZnVuY3Rpb24gbG9vc2VFcXVhbCAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgeyByZXR1cm4gdHJ1ZSB9XG4gIHZhciBpc09iamVjdEEgPSBpc09iamVjdChhKTtcbiAgdmFyIGlzT2JqZWN0QiA9IGlzT2JqZWN0KGIpO1xuICBpZiAoaXNPYmplY3RBICYmIGlzT2JqZWN0Qikge1xuICAgIHRyeSB7XG4gICAgICB2YXIgaXNBcnJheUEgPSBBcnJheS5pc0FycmF5KGEpO1xuICAgICAgdmFyIGlzQXJyYXlCID0gQXJyYXkuaXNBcnJheShiKTtcbiAgICAgIGlmIChpc0FycmF5QSAmJiBpc0FycmF5Qikge1xuICAgICAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoZnVuY3Rpb24gKGUsIGkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChlLCBiW2ldKVxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIGlmICghaXNBcnJheUEgJiYgIWlzQXJyYXlCKSB7XG4gICAgICAgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuICAgICAgICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhiKTtcbiAgICAgICAgcmV0dXJuIGtleXNBLmxlbmd0aCA9PT0ga2V5c0IubGVuZ3RoICYmIGtleXNBLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICByZXR1cm4gbG9vc2VFcXVhbChhW2tleV0sIGJba2V5XSlcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH0gZWxzZSBpZiAoIWlzT2JqZWN0QSAmJiAhaXNPYmplY3RCKSB7XG4gICAgcmV0dXJuIFN0cmluZyhhKSA9PT0gU3RyaW5nKGIpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuLyogICovXG5cbmZ1bmN0aW9uIGV4dGVuZCAoVnVlKSB7XG4gIGlmICghVnVlLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnJGkxOG4nKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoVnVlLnByb3RvdHlwZSwgJyRpMThuJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQgKCkgeyByZXR1cm4gdGhpcy5faTE4biB9XG4gICAgfSk7XG4gIH1cblxuICBWdWUucHJvdG90eXBlLiR0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgICB2YXIgaTE4biA9IHRoaXMuJGkxOG47XG4gICAgcmV0dXJuIGkxOG4uX3QuYXBwbHkoaTE4biwgWyBrZXksIGkxOG4ubG9jYWxlLCBpMThuLl9nZXRNZXNzYWdlcygpLCB0aGlzIF0uY29uY2F0KCB2YWx1ZXMgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiR0YyA9IGZ1bmN0aW9uIChrZXksIGNob2ljZSkge1xuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAyIF07XG5cbiAgICB2YXIgaTE4biA9IHRoaXMuJGkxOG47XG4gICAgcmV0dXJuIGkxOG4uX3RjLmFwcGx5KGkxOG4sIFsga2V5LCBpMThuLmxvY2FsZSwgaTE4bi5fZ2V0TWVzc2FnZXMoKSwgdGhpcywgY2hvaWNlIF0uY29uY2F0KCB2YWx1ZXMgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiR0ZSA9IGZ1bmN0aW9uIChrZXksIGxvY2FsZSkge1xuICAgIHZhciBpMThuID0gdGhpcy4kaTE4bjtcbiAgICByZXR1cm4gaTE4bi5fdGUoa2V5LCBpMThuLmxvY2FsZSwgaTE4bi5fZ2V0TWVzc2FnZXMoKSwgbG9jYWxlKVxuICB9O1xuXG4gIFZ1ZS5wcm90b3R5cGUuJGQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuICAgIHJldHVybiAocmVmID0gdGhpcy4kaTE4bikuZC5hcHBseShyZWYsIFsgdmFsdWUgXS5jb25jYXQoIGFyZ3MgKSlcbiAgfTtcblxuICBWdWUucHJvdG90eXBlLiRuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDEgXTtcbiAgICByZXR1cm4gKHJlZiA9IHRoaXMuJGkxOG4pLm4uYXBwbHkocmVmLCBbIHZhbHVlIF0uY29uY2F0KCBhcmdzICkpXG4gIH07XG59XG5cbi8qICAqL1xuXG52YXIgbWl4aW4gPSB7XG4gIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gYmVmb3JlQ3JlYXRlICgpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMuJG9wdGlvbnM7XG4gICAgb3B0aW9ucy5pMThuID0gb3B0aW9ucy5pMThuIHx8IChvcHRpb25zLl9faTE4biA/IHt9IDogbnVsbCk7XG5cbiAgICBpZiAob3B0aW9ucy5pMThuKSB7XG4gICAgICBpZiAob3B0aW9ucy5pMThuIGluc3RhbmNlb2YgVnVlSTE4bikge1xuICAgICAgICAvLyBpbml0IGxvY2FsZSBtZXNzYWdlcyB2aWEgY3VzdG9tIGJsb2Nrc1xuICAgICAgICBpZiAob3B0aW9ucy5fX2kxOG4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIGxvY2FsZU1lc3NhZ2VzID0ge307XG4gICAgICAgICAgICBvcHRpb25zLl9faTE4bi5mb3JFYWNoKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICAgICAgICBsb2NhbGVNZXNzYWdlcyA9IG1lcmdlKGxvY2FsZU1lc3NhZ2VzLCBKU09OLnBhcnNlKHJlc291cmNlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGxvY2FsZU1lc3NhZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgICAgICAgICAgICAgb3B0aW9ucy5pMThuLm1lcmdlTG9jYWxlTWVzc2FnZShsb2NhbGUsIGxvY2FsZU1lc3NhZ2VzW2xvY2FsZV0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgZXJyb3IoXCJDYW5ub3QgcGFyc2UgbG9jYWxlIG1lc3NhZ2VzIHZpYSBjdXN0b20gYmxvY2tzLlwiLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faTE4biA9IG9wdGlvbnMuaTE4bjtcbiAgICAgICAgdGhpcy5faTE4bldhdGNoZXIgPSB0aGlzLl9pMThuLndhdGNoSTE4bkRhdGEoKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdChvcHRpb25zLmkxOG4pKSB7XG4gICAgICAgIC8vIGNvbXBvbmVudCBsb2NhbCBpMThuXG4gICAgICAgIGlmICh0aGlzLiRyb290ICYmIHRoaXMuJHJvb3QuJGkxOG4gJiYgdGhpcy4kcm9vdC4kaTE4biBpbnN0YW5jZW9mIFZ1ZUkxOG4pIHtcbiAgICAgICAgICBvcHRpb25zLmkxOG4ucm9vdCA9IHRoaXMuJHJvb3Q7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLmZvcm1hdHRlciA9IHRoaXMuJHJvb3QuJGkxOG4uZm9ybWF0dGVyO1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5mYWxsYmFja0xvY2FsZSA9IHRoaXMuJHJvb3QuJGkxOG4uZmFsbGJhY2tMb2NhbGU7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXMgPSB0aGlzLiRyb290LiRpMThuLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXM7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLnNpbGVudFRyYW5zbGF0aW9uV2FybiA9IHRoaXMuJHJvb3QuJGkxOG4uc2lsZW50VHJhbnNsYXRpb25XYXJuO1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5zaWxlbnRGYWxsYmFja1dhcm4gPSB0aGlzLiRyb290LiRpMThuLnNpbGVudEZhbGxiYWNrV2FybjtcbiAgICAgICAgICBvcHRpb25zLmkxOG4ucGx1cmFsaXphdGlvblJ1bGVzID0gdGhpcy4kcm9vdC4kaTE4bi5wbHVyYWxpemF0aW9uUnVsZXM7XG4gICAgICAgICAgb3B0aW9ucy5pMThuLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCA9IHRoaXMuJHJvb3QuJGkxOG4ucHJlc2VydmVEaXJlY3RpdmVDb250ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW5pdCBsb2NhbGUgbWVzc2FnZXMgdmlhIGN1c3RvbSBibG9ja3NcbiAgICAgICAgaWYgKG9wdGlvbnMuX19pMThuKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBsb2NhbGVNZXNzYWdlcyQxID0ge307XG4gICAgICAgICAgICBvcHRpb25zLl9faTE4bi5mb3JFYWNoKGZ1bmN0aW9uIChyZXNvdXJjZSkge1xuICAgICAgICAgICAgICBsb2NhbGVNZXNzYWdlcyQxID0gbWVyZ2UobG9jYWxlTWVzc2FnZXMkMSwgSlNPTi5wYXJzZShyZXNvdXJjZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvcHRpb25zLmkxOG4ubWVzc2FnZXMgPSBsb2NhbGVNZXNzYWdlcyQxO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIHdhcm4oXCJDYW5ub3QgcGFyc2UgbG9jYWxlIG1lc3NhZ2VzIHZpYSBjdXN0b20gYmxvY2tzLlwiLCBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgcmVmID0gb3B0aW9ucy5pMThuO1xuICAgICAgICB2YXIgc2hhcmVkTWVzc2FnZXMgPSByZWYuc2hhcmVkTWVzc2FnZXM7XG4gICAgICAgIGlmIChzaGFyZWRNZXNzYWdlcyAmJiBpc1BsYWluT2JqZWN0KHNoYXJlZE1lc3NhZ2VzKSkge1xuICAgICAgICAgIG9wdGlvbnMuaTE4bi5tZXNzYWdlcyA9IG1lcmdlKG9wdGlvbnMuaTE4bi5tZXNzYWdlcywgc2hhcmVkTWVzc2FnZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faTE4biA9IG5ldyBWdWVJMThuKG9wdGlvbnMuaTE4bik7XG4gICAgICAgIHRoaXMuX2kxOG5XYXRjaGVyID0gdGhpcy5faTE4bi53YXRjaEkxOG5EYXRhKCk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuaTE4bi5zeW5jID09PSB1bmRlZmluZWQgfHwgISFvcHRpb25zLmkxOG4uc3luYykge1xuICAgICAgICAgIHRoaXMuX2xvY2FsZVdhdGNoZXIgPSB0aGlzLiRpMThuLndhdGNoTG9jYWxlKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybihcIkNhbm5vdCBiZSBpbnRlcnByZXRlZCAnaTE4bicgb3B0aW9uLlwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy4kcm9vdCAmJiB0aGlzLiRyb290LiRpMThuICYmIHRoaXMuJHJvb3QuJGkxOG4gaW5zdGFuY2VvZiBWdWVJMThuKSB7XG4gICAgICAvLyByb290IGkxOG5cbiAgICAgIHRoaXMuX2kxOG4gPSB0aGlzLiRyb290LiRpMThuO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5wYXJlbnQgJiYgb3B0aW9ucy5wYXJlbnQuJGkxOG4gJiYgb3B0aW9ucy5wYXJlbnQuJGkxOG4gaW5zdGFuY2VvZiBWdWVJMThuKSB7XG4gICAgICAvLyBwYXJlbnQgaTE4blxuICAgICAgdGhpcy5faTE4biA9IG9wdGlvbnMucGFyZW50LiRpMThuO1xuICAgIH1cbiAgfSxcblxuICBiZWZvcmVNb3VudDogZnVuY3Rpb24gYmVmb3JlTW91bnQgKCkge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy4kb3B0aW9ucztcbiAgICBvcHRpb25zLmkxOG4gPSBvcHRpb25zLmkxOG4gfHwgKG9wdGlvbnMuX19pMThuID8ge30gOiBudWxsKTtcblxuICAgIGlmIChvcHRpb25zLmkxOG4pIHtcbiAgICAgIGlmIChvcHRpb25zLmkxOG4gaW5zdGFuY2VvZiBWdWVJMThuKSB7XG4gICAgICAgIC8vIGluaXQgbG9jYWxlIG1lc3NhZ2VzIHZpYSBjdXN0b20gYmxvY2tzXG4gICAgICAgIHRoaXMuX2kxOG4uc3Vic2NyaWJlRGF0YUNoYW5naW5nKHRoaXMpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmluZyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGlzUGxhaW5PYmplY3Qob3B0aW9ucy5pMThuKSkge1xuICAgICAgICB0aGlzLl9pMThuLnN1YnNjcmliZURhdGFDaGFuZ2luZyh0aGlzKTtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJpbmcgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKFwiQ2Fubm90IGJlIGludGVycHJldGVkICdpMThuJyBvcHRpb24uXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLiRyb290ICYmIHRoaXMuJHJvb3QuJGkxOG4gJiYgdGhpcy4kcm9vdC4kaTE4biBpbnN0YW5jZW9mIFZ1ZUkxOG4pIHtcbiAgICAgIHRoaXMuX2kxOG4uc3Vic2NyaWJlRGF0YUNoYW5naW5nKHRoaXMpO1xuICAgICAgdGhpcy5fc3Vic2NyaWJpbmcgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5wYXJlbnQgJiYgb3B0aW9ucy5wYXJlbnQuJGkxOG4gJiYgb3B0aW9ucy5wYXJlbnQuJGkxOG4gaW5zdGFuY2VvZiBWdWVJMThuKSB7XG4gICAgICB0aGlzLl9pMThuLnN1YnNjcmliZURhdGFDaGFuZ2luZyh0aGlzKTtcbiAgICAgIHRoaXMuX3N1YnNjcmliaW5nID0gdHJ1ZTtcbiAgICB9XG4gIH0sXG5cbiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSAoKSB7XG4gICAgaWYgKCF0aGlzLl9pMThuKSB7IHJldHVybiB9XG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHNlbGYuX3N1YnNjcmliaW5nKSB7XG4gICAgICAgIHNlbGYuX2kxOG4udW5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcoc2VsZik7XG4gICAgICAgIGRlbGV0ZSBzZWxmLl9zdWJzY3JpYmluZztcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYuX2kxOG5XYXRjaGVyKSB7XG4gICAgICAgIHNlbGYuX2kxOG5XYXRjaGVyKCk7XG4gICAgICAgIHNlbGYuX2kxOG4uZGVzdHJveVZNKCk7XG4gICAgICAgIGRlbGV0ZSBzZWxmLl9pMThuV2F0Y2hlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGYuX2xvY2FsZVdhdGNoZXIpIHtcbiAgICAgICAgc2VsZi5fbG9jYWxlV2F0Y2hlcigpO1xuICAgICAgICBkZWxldGUgc2VsZi5fbG9jYWxlV2F0Y2hlcjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5faTE4biA9IG51bGw7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8qICAqL1xuXG52YXIgaW50ZXJwb2xhdGlvbkNvbXBvbmVudCA9IHtcbiAgbmFtZTogJ2kxOG4nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICBwYXRoOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgbG9jYWxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIHBsYWNlczoge1xuICAgICAgdHlwZTogW0FycmF5LCBPYmplY3RdXG4gICAgfVxuICB9LFxuICByZW5kZXI6IGZ1bmN0aW9uIHJlbmRlciAoaCwgcmVmKSB7XG4gICAgdmFyIGRhdGEgPSByZWYuZGF0YTtcbiAgICB2YXIgcGFyZW50ID0gcmVmLnBhcmVudDtcbiAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgdmFyIHNsb3RzID0gcmVmLnNsb3RzO1xuXG4gICAgdmFyICRpMThuID0gcGFyZW50LiRpMThuO1xuICAgIGlmICghJGkxOG4pIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm4oJ0Nhbm5vdCBmaW5kIFZ1ZUkxOG4gaW5zdGFuY2UhJyk7XG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgcGF0aCA9IHByb3BzLnBhdGg7XG4gICAgdmFyIGxvY2FsZSA9IHByb3BzLmxvY2FsZTtcbiAgICB2YXIgcGxhY2VzID0gcHJvcHMucGxhY2VzO1xuICAgIHZhciBwYXJhbXMgPSBzbG90cygpO1xuICAgIHZhciBjaGlsZHJlbiA9ICRpMThuLmkoXG4gICAgICBwYXRoLFxuICAgICAgbG9jYWxlLFxuICAgICAgb25seUhhc0RlZmF1bHRQbGFjZShwYXJhbXMpIHx8IHBsYWNlc1xuICAgICAgICA/IHVzZUxlZ2FjeVBsYWNlcyhwYXJhbXMuZGVmYXVsdCwgcGxhY2VzKVxuICAgICAgICA6IHBhcmFtc1xuICAgICk7XG5cbiAgICB2YXIgdGFnID0gcHJvcHMudGFnIHx8ICdzcGFuJztcbiAgICByZXR1cm4gdGFnID8gaCh0YWcsIGRhdGEsIGNoaWxkcmVuKSA6IGNoaWxkcmVuXG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9ubHlIYXNEZWZhdWx0UGxhY2UgKHBhcmFtcykge1xuICB2YXIgcHJvcDtcbiAgZm9yIChwcm9wIGluIHBhcmFtcykge1xuICAgIGlmIChwcm9wICE9PSAnZGVmYXVsdCcpIHsgcmV0dXJuIGZhbHNlIH1cbiAgfVxuICByZXR1cm4gQm9vbGVhbihwcm9wKVxufVxuXG5mdW5jdGlvbiB1c2VMZWdhY3lQbGFjZXMgKGNoaWxkcmVuLCBwbGFjZXMpIHtcbiAgdmFyIHBhcmFtcyA9IHBsYWNlcyA/IGNyZWF0ZVBhcmFtc0Zyb21QbGFjZXMocGxhY2VzKSA6IHt9O1xuXG4gIGlmICghY2hpbGRyZW4pIHsgcmV0dXJuIHBhcmFtcyB9XG5cbiAgLy8gRmlsdGVyIGVtcHR5IHRleHQgbm9kZXNcbiAgY2hpbGRyZW4gPSBjaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLnRhZyB8fCBjaGlsZC50ZXh0LnRyaW0oKSAhPT0gJydcbiAgfSk7XG5cbiAgdmFyIGV2ZXJ5UGxhY2UgPSBjaGlsZHJlbi5ldmVyeSh2bm9kZUhhc1BsYWNlQXR0cmlidXRlKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZXZlcnlQbGFjZSkge1xuICAgIHdhcm4oJ2BwbGFjZWAgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQgaW4gbmV4dCBtYWpvciB2ZXJzaW9uLiBQbGVhc2Ugc3dpdGNoIHRvIFZ1ZSBzbG90cy4nKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZHJlbi5yZWR1Y2UoXG4gICAgZXZlcnlQbGFjZSA/IGFzc2lnbkNoaWxkUGxhY2UgOiBhc3NpZ25DaGlsZEluZGV4LFxuICAgIHBhcmFtc1xuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBhcmFtc0Zyb21QbGFjZXMgKHBsYWNlcykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHdhcm4oJ2BwbGFjZXNgIHByb3AgaXMgZGVwcmVjYXRlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24uIFBsZWFzZSBzd2l0Y2ggdG8gVnVlIHNsb3RzLicpO1xuICB9XG5cbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGxhY2VzKVxuICAgID8gcGxhY2VzLnJlZHVjZShhc3NpZ25DaGlsZEluZGV4LCB7fSlcbiAgICA6IE9iamVjdC5hc3NpZ24oe30sIHBsYWNlcylcbn1cblxuZnVuY3Rpb24gYXNzaWduQ2hpbGRQbGFjZSAocGFyYW1zLCBjaGlsZCkge1xuICBpZiAoY2hpbGQuZGF0YSAmJiBjaGlsZC5kYXRhLmF0dHJzICYmIGNoaWxkLmRhdGEuYXR0cnMucGxhY2UpIHtcbiAgICBwYXJhbXNbY2hpbGQuZGF0YS5hdHRycy5wbGFjZV0gPSBjaGlsZDtcbiAgfVxuICByZXR1cm4gcGFyYW1zXG59XG5cbmZ1bmN0aW9uIGFzc2lnbkNoaWxkSW5kZXggKHBhcmFtcywgY2hpbGQsIGluZGV4KSB7XG4gIHBhcmFtc1tpbmRleF0gPSBjaGlsZDtcbiAgcmV0dXJuIHBhcmFtc1xufVxuXG5mdW5jdGlvbiB2bm9kZUhhc1BsYWNlQXR0cmlidXRlICh2bm9kZSkge1xuICByZXR1cm4gQm9vbGVhbih2bm9kZS5kYXRhICYmIHZub2RlLmRhdGEuYXR0cnMgJiYgdm5vZGUuZGF0YS5hdHRycy5wbGFjZSlcbn1cblxuLyogICovXG5cbnZhciBudW1iZXJDb21wb25lbnQgPSB7XG4gIG5hbWU6ICdpMThuLW4nLFxuICBmdW5jdGlvbmFsOiB0cnVlLFxuICBwcm9wczoge1xuICAgIHRhZzoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogJ3NwYW4nXG4gICAgfSxcbiAgICB2YWx1ZToge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB9LFxuICAgIGZvcm1hdDoge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxuICAgIH0sXG4gICAgbG9jYWxlOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9XG4gIH0sXG4gIHJlbmRlcjogZnVuY3Rpb24gcmVuZGVyIChoLCByZWYpIHtcbiAgICB2YXIgcHJvcHMgPSByZWYucHJvcHM7XG4gICAgdmFyIHBhcmVudCA9IHJlZi5wYXJlbnQ7XG4gICAgdmFyIGRhdGEgPSByZWYuZGF0YTtcblxuICAgIHZhciBpMThuID0gcGFyZW50LiRpMThuO1xuXG4gICAgaWYgKCFpMThuKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuKCdDYW5ub3QgZmluZCBWdWVJMThuIGluc3RhbmNlIScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIga2V5ID0gbnVsbDtcbiAgICB2YXIgb3B0aW9ucyA9IG51bGw7XG5cbiAgICBpZiAodHlwZW9mIHByb3BzLmZvcm1hdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGtleSA9IHByb3BzLmZvcm1hdDtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHByb3BzLmZvcm1hdCkpIHtcbiAgICAgIGlmIChwcm9wcy5mb3JtYXQua2V5KSB7XG4gICAgICAgIGtleSA9IHByb3BzLmZvcm1hdC5rZXk7XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbHRlciBvdXQgbnVtYmVyIGZvcm1hdCBvcHRpb25zIG9ubHlcbiAgICAgIG9wdGlvbnMgPSBPYmplY3Qua2V5cyhwcm9wcy5mb3JtYXQpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwcm9wKSB7XG4gICAgICAgIHZhciBvYmo7XG5cbiAgICAgICAgaWYgKGluY2x1ZGVzKG51bWJlckZvcm1hdEtleXMsIHByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGFjYywgKCBvYmogPSB7fSwgb2JqW3Byb3BdID0gcHJvcHMuZm9ybWF0W3Byb3BdLCBvYmogKSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjXG4gICAgICB9LCBudWxsKTtcbiAgICB9XG5cbiAgICB2YXIgbG9jYWxlID0gcHJvcHMubG9jYWxlIHx8IGkxOG4ubG9jYWxlO1xuICAgIHZhciBwYXJ0cyA9IGkxOG4uX250cChwcm9wcy52YWx1ZSwgbG9jYWxlLCBrZXksIG9wdGlvbnMpO1xuXG4gICAgdmFyIHZhbHVlcyA9IHBhcnRzLm1hcChmdW5jdGlvbiAocGFydCwgaW5kZXgpIHtcbiAgICAgIHZhciBvYmo7XG5cbiAgICAgIHZhciBzbG90ID0gZGF0YS5zY29wZWRTbG90cyAmJiBkYXRhLnNjb3BlZFNsb3RzW3BhcnQudHlwZV07XG4gICAgICByZXR1cm4gc2xvdCA/IHNsb3QoKCBvYmogPSB7fSwgb2JqW3BhcnQudHlwZV0gPSBwYXJ0LnZhbHVlLCBvYmouaW5kZXggPSBpbmRleCwgb2JqLnBhcnRzID0gcGFydHMsIG9iaiApKSA6IHBhcnQudmFsdWVcbiAgICB9KTtcblxuICAgIHJldHVybiBoKHByb3BzLnRhZywge1xuICAgICAgYXR0cnM6IGRhdGEuYXR0cnMsXG4gICAgICAnY2xhc3MnOiBkYXRhWydjbGFzcyddLFxuICAgICAgc3RhdGljQ2xhc3M6IGRhdGEuc3RhdGljQ2xhc3NcbiAgICB9LCB2YWx1ZXMpXG4gIH1cbn07XG5cbi8qICAqL1xuXG5mdW5jdGlvbiBiaW5kIChlbCwgYmluZGluZywgdm5vZGUpIHtcbiAgaWYgKCFhc3NlcnQoZWwsIHZub2RlKSkgeyByZXR1cm4gfVxuXG4gIHQoZWwsIGJpbmRpbmcsIHZub2RlKTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlIChlbCwgYmluZGluZywgdm5vZGUsIG9sZFZOb2RlKSB7XG4gIGlmICghYXNzZXJ0KGVsLCB2bm9kZSkpIHsgcmV0dXJuIH1cblxuICB2YXIgaTE4biA9IHZub2RlLmNvbnRleHQuJGkxOG47XG4gIGlmIChsb2NhbGVFcXVhbChlbCwgdm5vZGUpICYmXG4gICAgKGxvb3NlRXF1YWwoYmluZGluZy52YWx1ZSwgYmluZGluZy5vbGRWYWx1ZSkgJiZcbiAgICAgbG9vc2VFcXVhbChlbC5fbG9jYWxlTWVzc2FnZSwgaTE4bi5nZXRMb2NhbGVNZXNzYWdlKGkxOG4ubG9jYWxlKSkpKSB7IHJldHVybiB9XG5cbiAgdChlbCwgYmluZGluZywgdm5vZGUpO1xufVxuXG5mdW5jdGlvbiB1bmJpbmQgKGVsLCBiaW5kaW5nLCB2bm9kZSwgb2xkVk5vZGUpIHtcbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgaWYgKCF2bSkge1xuICAgIHdhcm4oJ1Z1ZSBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdHMgaW4gVk5vZGUgY29udGV4dCcpO1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIGkxOG4gPSB2bm9kZS5jb250ZXh0LiRpMThuIHx8IHt9O1xuICBpZiAoIWJpbmRpbmcubW9kaWZpZXJzLnByZXNlcnZlICYmICFpMThuLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCkge1xuICAgIGVsLnRleHRDb250ZW50ID0gJyc7XG4gIH1cbiAgZWwuX3Z0ID0gdW5kZWZpbmVkO1xuICBkZWxldGUgZWxbJ192dCddO1xuICBlbC5fbG9jYWxlID0gdW5kZWZpbmVkO1xuICBkZWxldGUgZWxbJ19sb2NhbGUnXTtcbiAgZWwuX2xvY2FsZU1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gIGRlbGV0ZSBlbFsnX2xvY2FsZU1lc3NhZ2UnXTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0IChlbCwgdm5vZGUpIHtcbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgaWYgKCF2bSkge1xuICAgIHdhcm4oJ1Z1ZSBpbnN0YW5jZSBkb2VzIG5vdCBleGlzdHMgaW4gVk5vZGUgY29udGV4dCcpO1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKCF2bS4kaTE4bikge1xuICAgIHdhcm4oJ1Z1ZUkxOG4gaW5zdGFuY2UgZG9lcyBub3QgZXhpc3RzIGluIFZ1ZSBpbnN0YW5jZScpO1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gbG9jYWxlRXF1YWwgKGVsLCB2bm9kZSkge1xuICB2YXIgdm0gPSB2bm9kZS5jb250ZXh0O1xuICByZXR1cm4gZWwuX2xvY2FsZSA9PT0gdm0uJGkxOG4ubG9jYWxlXG59XG5cbmZ1bmN0aW9uIHQgKGVsLCBiaW5kaW5nLCB2bm9kZSkge1xuICB2YXIgcmVmJDEsIHJlZiQyO1xuXG4gIHZhciB2YWx1ZSA9IGJpbmRpbmcudmFsdWU7XG5cbiAgdmFyIHJlZiA9IHBhcnNlVmFsdWUodmFsdWUpO1xuICB2YXIgcGF0aCA9IHJlZi5wYXRoO1xuICB2YXIgbG9jYWxlID0gcmVmLmxvY2FsZTtcbiAgdmFyIGFyZ3MgPSByZWYuYXJncztcbiAgdmFyIGNob2ljZSA9IHJlZi5jaG9pY2U7XG4gIGlmICghcGF0aCAmJiAhbG9jYWxlICYmICFhcmdzKSB7XG4gICAgd2FybigndmFsdWUgdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoIXBhdGgpIHtcbiAgICB3YXJuKCdgcGF0aGAgaXMgcmVxdWlyZWQgaW4gdi10IGRpcmVjdGl2ZScpO1xuICAgIHJldHVyblxuICB9XG5cbiAgdmFyIHZtID0gdm5vZGUuY29udGV4dDtcbiAgaWYgKGNob2ljZSkge1xuICAgIGVsLl92dCA9IGVsLnRleHRDb250ZW50ID0gKHJlZiQxID0gdm0uJGkxOG4pLnRjLmFwcGx5KHJlZiQxLCBbIHBhdGgsIGNob2ljZSBdLmNvbmNhdCggbWFrZVBhcmFtcyhsb2NhbGUsIGFyZ3MpICkpO1xuICB9IGVsc2Uge1xuICAgIGVsLl92dCA9IGVsLnRleHRDb250ZW50ID0gKHJlZiQyID0gdm0uJGkxOG4pLnQuYXBwbHkocmVmJDIsIFsgcGF0aCBdLmNvbmNhdCggbWFrZVBhcmFtcyhsb2NhbGUsIGFyZ3MpICkpO1xuICB9XG4gIGVsLl9sb2NhbGUgPSB2bS4kaTE4bi5sb2NhbGU7XG4gIGVsLl9sb2NhbGVNZXNzYWdlID0gdm0uJGkxOG4uZ2V0TG9jYWxlTWVzc2FnZSh2bS4kaTE4bi5sb2NhbGUpO1xufVxuXG5mdW5jdGlvbiBwYXJzZVZhbHVlICh2YWx1ZSkge1xuICB2YXIgcGF0aDtcbiAgdmFyIGxvY2FsZTtcbiAgdmFyIGFyZ3M7XG4gIHZhciBjaG9pY2U7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBwYXRoID0gdmFsdWU7XG4gIH0gZWxzZSBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkpIHtcbiAgICBwYXRoID0gdmFsdWUucGF0aDtcbiAgICBsb2NhbGUgPSB2YWx1ZS5sb2NhbGU7XG4gICAgYXJncyA9IHZhbHVlLmFyZ3M7XG4gICAgY2hvaWNlID0gdmFsdWUuY2hvaWNlO1xuICB9XG5cbiAgcmV0dXJuIHsgcGF0aDogcGF0aCwgbG9jYWxlOiBsb2NhbGUsIGFyZ3M6IGFyZ3MsIGNob2ljZTogY2hvaWNlIH1cbn1cblxuZnVuY3Rpb24gbWFrZVBhcmFtcyAobG9jYWxlLCBhcmdzKSB7XG4gIHZhciBwYXJhbXMgPSBbXTtcblxuICBsb2NhbGUgJiYgcGFyYW1zLnB1c2gobG9jYWxlKTtcbiAgaWYgKGFyZ3MgJiYgKEFycmF5LmlzQXJyYXkoYXJncykgfHwgaXNQbGFpbk9iamVjdChhcmdzKSkpIHtcbiAgICBwYXJhbXMucHVzaChhcmdzKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXNcbn1cblxudmFyIFZ1ZTtcblxuZnVuY3Rpb24gaW5zdGFsbCAoX1Z1ZSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaW5zdGFsbC5pbnN0YWxsZWQgJiYgX1Z1ZSA9PT0gVnVlKSB7XG4gICAgd2FybignYWxyZWFkeSBpbnN0YWxsZWQuJyk7XG4gICAgcmV0dXJuXG4gIH1cbiAgaW5zdGFsbC5pbnN0YWxsZWQgPSB0cnVlO1xuXG4gIFZ1ZSA9IF9WdWU7XG5cbiAgdmFyIHZlcnNpb24gPSAoVnVlLnZlcnNpb24gJiYgTnVtYmVyKFZ1ZS52ZXJzaW9uLnNwbGl0KCcuJylbMF0pKSB8fCAtMTtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHZlcnNpb24gPCAyKSB7XG4gICAgd2FybigoXCJ2dWUtaTE4biAoXCIgKyAoaW5zdGFsbC52ZXJzaW9uKSArIFwiKSBuZWVkIHRvIHVzZSBWdWUgMi4wIG9yIGxhdGVyIChWdWU6IFwiICsgKFZ1ZS52ZXJzaW9uKSArIFwiKS5cIikpO1xuICAgIHJldHVyblxuICB9XG5cbiAgZXh0ZW5kKFZ1ZSk7XG4gIFZ1ZS5taXhpbihtaXhpbik7XG4gIFZ1ZS5kaXJlY3RpdmUoJ3QnLCB7IGJpbmQ6IGJpbmQsIHVwZGF0ZTogdXBkYXRlLCB1bmJpbmQ6IHVuYmluZCB9KTtcbiAgVnVlLmNvbXBvbmVudChpbnRlcnBvbGF0aW9uQ29tcG9uZW50Lm5hbWUsIGludGVycG9sYXRpb25Db21wb25lbnQpO1xuICBWdWUuY29tcG9uZW50KG51bWJlckNvbXBvbmVudC5uYW1lLCBudW1iZXJDb21wb25lbnQpO1xuXG4gIC8vIHVzZSBzaW1wbGUgbWVyZ2VTdHJhdGVnaWVzIHRvIHByZXZlbnQgaTE4biBpbnN0YW5jZSBsb3NlICdfX3Byb3RvX18nXG4gIHZhciBzdHJhdHMgPSBWdWUuY29uZmlnLm9wdGlvbk1lcmdlU3RyYXRlZ2llcztcbiAgc3RyYXRzLmkxOG4gPSBmdW5jdGlvbiAocGFyZW50VmFsLCBjaGlsZFZhbCkge1xuICAgIHJldHVybiBjaGlsZFZhbCA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHBhcmVudFZhbFxuICAgICAgOiBjaGlsZFZhbFxuICB9O1xufVxuXG4vKiAgKi9cblxudmFyIEJhc2VGb3JtYXR0ZXIgPSBmdW5jdGlvbiBCYXNlRm9ybWF0dGVyICgpIHtcbiAgdGhpcy5fY2FjaGVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbn07XG5cbkJhc2VGb3JtYXR0ZXIucHJvdG90eXBlLmludGVycG9sYXRlID0gZnVuY3Rpb24gaW50ZXJwb2xhdGUgKG1lc3NhZ2UsIHZhbHVlcykge1xuICBpZiAoIXZhbHVlcykge1xuICAgIHJldHVybiBbbWVzc2FnZV1cbiAgfVxuICB2YXIgdG9rZW5zID0gdGhpcy5fY2FjaGVzW21lc3NhZ2VdO1xuICBpZiAoIXRva2Vucykge1xuICAgIHRva2VucyA9IHBhcnNlKG1lc3NhZ2UpO1xuICAgIHRoaXMuX2NhY2hlc1ttZXNzYWdlXSA9IHRva2VucztcbiAgfVxuICByZXR1cm4gY29tcGlsZSh0b2tlbnMsIHZhbHVlcylcbn07XG5cblxuXG52YXIgUkVfVE9LRU5fTElTVF9WQUxVRSA9IC9eKD86XFxkKSsvO1xudmFyIFJFX1RPS0VOX05BTUVEX1ZBTFVFID0gL14oPzpcXHcpKy87XG5cbmZ1bmN0aW9uIHBhcnNlIChmb3JtYXQpIHtcbiAgdmFyIHRva2VucyA9IFtdO1xuICB2YXIgcG9zaXRpb24gPSAwO1xuXG4gIHZhciB0ZXh0ID0gJyc7XG4gIHdoaWxlIChwb3NpdGlvbiA8IGZvcm1hdC5sZW5ndGgpIHtcbiAgICB2YXIgY2hhciA9IGZvcm1hdFtwb3NpdGlvbisrXTtcbiAgICBpZiAoY2hhciA9PT0gJ3snKSB7XG4gICAgICBpZiAodGV4dCkge1xuICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWU6IHRleHQgfSk7XG4gICAgICB9XG5cbiAgICAgIHRleHQgPSAnJztcbiAgICAgIHZhciBzdWIgPSAnJztcbiAgICAgIGNoYXIgPSBmb3JtYXRbcG9zaXRpb24rK107XG4gICAgICB3aGlsZSAoY2hhciAhPT0gdW5kZWZpbmVkICYmIGNoYXIgIT09ICd9Jykge1xuICAgICAgICBzdWIgKz0gY2hhcjtcbiAgICAgICAgY2hhciA9IGZvcm1hdFtwb3NpdGlvbisrXTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0Nsb3NlZCA9IGNoYXIgPT09ICd9JztcblxuICAgICAgdmFyIHR5cGUgPSBSRV9UT0tFTl9MSVNUX1ZBTFVFLnRlc3Qoc3ViKVxuICAgICAgICA/ICdsaXN0J1xuICAgICAgICA6IGlzQ2xvc2VkICYmIFJFX1RPS0VOX05BTUVEX1ZBTFVFLnRlc3Qoc3ViKVxuICAgICAgICAgID8gJ25hbWVkJ1xuICAgICAgICAgIDogJ3Vua25vd24nO1xuICAgICAgdG9rZW5zLnB1c2goeyB2YWx1ZTogc3ViLCB0eXBlOiB0eXBlIH0pO1xuICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJyUnKSB7XG4gICAgICAvLyB3aGVuIGZvdW5kIHJhaWxzIGkxOG4gc3ludGF4LCBza2lwIHRleHQgY2FwdHVyZVxuICAgICAgaWYgKGZvcm1hdFsocG9zaXRpb24pXSAhPT0gJ3snKSB7XG4gICAgICAgIHRleHQgKz0gY2hhcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGV4dCArPSBjaGFyO1xuICAgIH1cbiAgfVxuXG4gIHRleHQgJiYgdG9rZW5zLnB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlOiB0ZXh0IH0pO1xuXG4gIHJldHVybiB0b2tlbnNcbn1cblxuZnVuY3Rpb24gY29tcGlsZSAodG9rZW5zLCB2YWx1ZXMpIHtcbiAgdmFyIGNvbXBpbGVkID0gW107XG4gIHZhciBpbmRleCA9IDA7XG5cbiAgdmFyIG1vZGUgPSBBcnJheS5pc0FycmF5KHZhbHVlcylcbiAgICA/ICdsaXN0J1xuICAgIDogaXNPYmplY3QodmFsdWVzKVxuICAgICAgPyAnbmFtZWQnXG4gICAgICA6ICd1bmtub3duJztcbiAgaWYgKG1vZGUgPT09ICd1bmtub3duJykgeyByZXR1cm4gY29tcGlsZWQgfVxuXG4gIHdoaWxlIChpbmRleCA8IHRva2Vucy5sZW5ndGgpIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaW5kZXhdO1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIGNvbXBpbGVkLnB1c2godG9rZW4udmFsdWUpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnbGlzdCc6XG4gICAgICAgIGNvbXBpbGVkLnB1c2godmFsdWVzW3BhcnNlSW50KHRva2VuLnZhbHVlLCAxMCldKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ25hbWVkJzpcbiAgICAgICAgaWYgKG1vZGUgPT09ICduYW1lZCcpIHtcbiAgICAgICAgICBjb21waWxlZC5wdXNoKCh2YWx1ZXMpW3Rva2VuLnZhbHVlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHdhcm4oKFwiVHlwZSBvZiB0b2tlbiAnXCIgKyAodG9rZW4udHlwZSkgKyBcIicgYW5kIGZvcm1hdCBvZiB2YWx1ZSAnXCIgKyBtb2RlICsgXCInIGRvbid0IG1hdGNoIVwiKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlICd1bmtub3duJzpcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuKFwiRGV0ZWN0ICd1bmtub3duJyB0eXBlIG9mIHRva2VuIVwiKTtcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICBpbmRleCsrO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBpbGVkXG59XG5cbi8qICAqL1xuXG4vKipcbiAqICBQYXRoIHBhcnNlclxuICogIC0gSW5zcGlyZWQ6XG4gKiAgICBWdWUuanMgUGF0aCBwYXJzZXJcbiAqL1xuXG4vLyBhY3Rpb25zXG52YXIgQVBQRU5EID0gMDtcbnZhciBQVVNIID0gMTtcbnZhciBJTkNfU1VCX1BBVEhfREVQVEggPSAyO1xudmFyIFBVU0hfU1VCX1BBVEggPSAzO1xuXG4vLyBzdGF0ZXNcbnZhciBCRUZPUkVfUEFUSCA9IDA7XG52YXIgSU5fUEFUSCA9IDE7XG52YXIgQkVGT1JFX0lERU5UID0gMjtcbnZhciBJTl9JREVOVCA9IDM7XG52YXIgSU5fU1VCX1BBVEggPSA0O1xudmFyIElOX1NJTkdMRV9RVU9URSA9IDU7XG52YXIgSU5fRE9VQkxFX1FVT1RFID0gNjtcbnZhciBBRlRFUl9QQVRIID0gNztcbnZhciBFUlJPUiA9IDg7XG5cbnZhciBwYXRoU3RhdGVNYWNoaW5lID0gW107XG5cbnBhdGhTdGF0ZU1hY2hpbmVbQkVGT1JFX1BBVEhdID0ge1xuICAnd3MnOiBbQkVGT1JFX1BBVEhdLFxuICAnaWRlbnQnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICdbJzogW0lOX1NVQl9QQVRIXSxcbiAgJ2VvZic6IFtBRlRFUl9QQVRIXVxufTtcblxucGF0aFN0YXRlTWFjaGluZVtJTl9QQVRIXSA9IHtcbiAgJ3dzJzogW0lOX1BBVEhdLFxuICAnLic6IFtCRUZPUkVfSURFTlRdLFxuICAnWyc6IFtJTl9TVUJfUEFUSF0sXG4gICdlb2YnOiBbQUZURVJfUEFUSF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbQkVGT1JFX0lERU5UXSA9IHtcbiAgJ3dzJzogW0JFRk9SRV9JREVOVF0sXG4gICdpZGVudCc6IFtJTl9JREVOVCwgQVBQRU5EXSxcbiAgJzAnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICdudW1iZXInOiBbSU5fSURFTlQsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fSURFTlRdID0ge1xuICAnaWRlbnQnOiBbSU5fSURFTlQsIEFQUEVORF0sXG4gICcwJzogW0lOX0lERU5ULCBBUFBFTkRdLFxuICAnbnVtYmVyJzogW0lOX0lERU5ULCBBUFBFTkRdLFxuICAnd3MnOiBbSU5fUEFUSCwgUFVTSF0sXG4gICcuJzogW0JFRk9SRV9JREVOVCwgUFVTSF0sXG4gICdbJzogW0lOX1NVQl9QQVRILCBQVVNIXSxcbiAgJ2VvZic6IFtBRlRFUl9QQVRILCBQVVNIXVxufTtcblxucGF0aFN0YXRlTWFjaGluZVtJTl9TVUJfUEFUSF0gPSB7XG4gIFwiJ1wiOiBbSU5fU0lOR0xFX1FVT1RFLCBBUFBFTkRdLFxuICAnXCInOiBbSU5fRE9VQkxFX1FVT1RFLCBBUFBFTkRdLFxuICAnWyc6IFtJTl9TVUJfUEFUSCwgSU5DX1NVQl9QQVRIX0RFUFRIXSxcbiAgJ10nOiBbSU5fUEFUSCwgUFVTSF9TVUJfUEFUSF0sXG4gICdlb2YnOiBFUlJPUixcbiAgJ2Vsc2UnOiBbSU5fU1VCX1BBVEgsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fU0lOR0xFX1FVT1RFXSA9IHtcbiAgXCInXCI6IFtJTl9TVUJfUEFUSCwgQVBQRU5EXSxcbiAgJ2VvZic6IEVSUk9SLFxuICAnZWxzZSc6IFtJTl9TSU5HTEVfUVVPVEUsIEFQUEVORF1cbn07XG5cbnBhdGhTdGF0ZU1hY2hpbmVbSU5fRE9VQkxFX1FVT1RFXSA9IHtcbiAgJ1wiJzogW0lOX1NVQl9QQVRILCBBUFBFTkRdLFxuICAnZW9mJzogRVJST1IsXG4gICdlbHNlJzogW0lOX0RPVUJMRV9RVU9URSwgQVBQRU5EXVxufTtcblxuLyoqXG4gKiBDaGVjayBpZiBhbiBleHByZXNzaW9uIGlzIGEgbGl0ZXJhbCB2YWx1ZS5cbiAqL1xuXG52YXIgbGl0ZXJhbFZhbHVlUkUgPSAvXlxccz8oPzp0cnVlfGZhbHNlfC0/W1xcZC5dK3wnW14nXSonfFwiW15cIl0qXCIpXFxzPyQvO1xuZnVuY3Rpb24gaXNMaXRlcmFsIChleHApIHtcbiAgcmV0dXJuIGxpdGVyYWxWYWx1ZVJFLnRlc3QoZXhwKVxufVxuXG4vKipcbiAqIFN0cmlwIHF1b3RlcyBmcm9tIGEgc3RyaW5nXG4gKi9cblxuZnVuY3Rpb24gc3RyaXBRdW90ZXMgKHN0cikge1xuICB2YXIgYSA9IHN0ci5jaGFyQ29kZUF0KDApO1xuICB2YXIgYiA9IHN0ci5jaGFyQ29kZUF0KHN0ci5sZW5ndGggLSAxKTtcbiAgcmV0dXJuIGEgPT09IGIgJiYgKGEgPT09IDB4MjIgfHwgYSA9PT0gMHgyNylcbiAgICA/IHN0ci5zbGljZSgxLCAtMSlcbiAgICA6IHN0clxufVxuXG4vKipcbiAqIERldGVybWluZSB0aGUgdHlwZSBvZiBhIGNoYXJhY3RlciBpbiBhIGtleXBhdGguXG4gKi9cblxuZnVuY3Rpb24gZ2V0UGF0aENoYXJUeXBlIChjaCkge1xuICBpZiAoY2ggPT09IHVuZGVmaW5lZCB8fCBjaCA9PT0gbnVsbCkgeyByZXR1cm4gJ2VvZicgfVxuXG4gIHZhciBjb2RlID0gY2guY2hhckNvZGVBdCgwKTtcblxuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDB4NUI6IC8vIFtcbiAgICBjYXNlIDB4NUQ6IC8vIF1cbiAgICBjYXNlIDB4MkU6IC8vIC5cbiAgICBjYXNlIDB4MjI6IC8vIFwiXG4gICAgY2FzZSAweDI3OiAvLyAnXG4gICAgICByZXR1cm4gY2hcblxuICAgIGNhc2UgMHg1RjogLy8gX1xuICAgIGNhc2UgMHgyNDogLy8gJFxuICAgIGNhc2UgMHgyRDogLy8gLVxuICAgICAgcmV0dXJuICdpZGVudCdcblxuICAgIGNhc2UgMHgwOTogLy8gVGFiXG4gICAgY2FzZSAweDBBOiAvLyBOZXdsaW5lXG4gICAgY2FzZSAweDBEOiAvLyBSZXR1cm5cbiAgICBjYXNlIDB4QTA6ICAvLyBOby1icmVhayBzcGFjZVxuICAgIGNhc2UgMHhGRUZGOiAgLy8gQnl0ZSBPcmRlciBNYXJrXG4gICAgY2FzZSAweDIwMjg6ICAvLyBMaW5lIFNlcGFyYXRvclxuICAgIGNhc2UgMHgyMDI5OiAgLy8gUGFyYWdyYXBoIFNlcGFyYXRvclxuICAgICAgcmV0dXJuICd3cydcbiAgfVxuXG4gIHJldHVybiAnaWRlbnQnXG59XG5cbi8qKlxuICogRm9ybWF0IGEgc3ViUGF0aCwgcmV0dXJuIGl0cyBwbGFpbiBmb3JtIGlmIGl0IGlzXG4gKiBhIGxpdGVyYWwgc3RyaW5nIG9yIG51bWJlci4gT3RoZXJ3aXNlIHByZXBlbmQgdGhlXG4gKiBkeW5hbWljIGluZGljYXRvciAoKikuXG4gKi9cblxuZnVuY3Rpb24gZm9ybWF0U3ViUGF0aCAocGF0aCkge1xuICB2YXIgdHJpbW1lZCA9IHBhdGgudHJpbSgpO1xuICAvLyBpbnZhbGlkIGxlYWRpbmcgMFxuICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcwJyAmJiBpc05hTihwYXRoKSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIHJldHVybiBpc0xpdGVyYWwodHJpbW1lZCkgPyBzdHJpcFF1b3Rlcyh0cmltbWVkKSA6ICcqJyArIHRyaW1tZWRcbn1cblxuLyoqXG4gKiBQYXJzZSBhIHN0cmluZyBwYXRoIGludG8gYW4gYXJyYXkgb2Ygc2VnbWVudHNcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZSQxIChwYXRoKSB7XG4gIHZhciBrZXlzID0gW107XG4gIHZhciBpbmRleCA9IC0xO1xuICB2YXIgbW9kZSA9IEJFRk9SRV9QQVRIO1xuICB2YXIgc3ViUGF0aERlcHRoID0gMDtcbiAgdmFyIGM7XG4gIHZhciBrZXk7XG4gIHZhciBuZXdDaGFyO1xuICB2YXIgdHlwZTtcbiAgdmFyIHRyYW5zaXRpb247XG4gIHZhciBhY3Rpb247XG4gIHZhciB0eXBlTWFwO1xuICB2YXIgYWN0aW9ucyA9IFtdO1xuXG4gIGFjdGlvbnNbUFVTSF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgIGtleSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgYWN0aW9uc1tBUFBFTkRdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChrZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAga2V5ID0gbmV3Q2hhcjtcbiAgICB9IGVsc2Uge1xuICAgICAga2V5ICs9IG5ld0NoYXI7XG4gICAgfVxuICB9O1xuXG4gIGFjdGlvbnNbSU5DX1NVQl9QQVRIX0RFUFRIXSA9IGZ1bmN0aW9uICgpIHtcbiAgICBhY3Rpb25zW0FQUEVORF0oKTtcbiAgICBzdWJQYXRoRGVwdGgrKztcbiAgfTtcblxuICBhY3Rpb25zW1BVU0hfU1VCX1BBVEhdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzdWJQYXRoRGVwdGggPiAwKSB7XG4gICAgICBzdWJQYXRoRGVwdGgtLTtcbiAgICAgIG1vZGUgPSBJTl9TVUJfUEFUSDtcbiAgICAgIGFjdGlvbnNbQVBQRU5EXSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdWJQYXRoRGVwdGggPSAwO1xuICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBmYWxzZSB9XG4gICAgICBrZXkgPSBmb3JtYXRTdWJQYXRoKGtleSk7XG4gICAgICBpZiAoa2V5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdGlvbnNbUFVTSF0oKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gbWF5YmVVbmVzY2FwZVF1b3RlICgpIHtcbiAgICB2YXIgbmV4dENoYXIgPSBwYXRoW2luZGV4ICsgMV07XG4gICAgaWYgKChtb2RlID09PSBJTl9TSU5HTEVfUVVPVEUgJiYgbmV4dENoYXIgPT09IFwiJ1wiKSB8fFxuICAgICAgKG1vZGUgPT09IElOX0RPVUJMRV9RVU9URSAmJiBuZXh0Q2hhciA9PT0gJ1wiJykpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgICBuZXdDaGFyID0gJ1xcXFwnICsgbmV4dENoYXI7XG4gICAgICBhY3Rpb25zW0FQUEVORF0oKTtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKG1vZGUgIT09IG51bGwpIHtcbiAgICBpbmRleCsrO1xuICAgIGMgPSBwYXRoW2luZGV4XTtcblxuICAgIGlmIChjID09PSAnXFxcXCcgJiYgbWF5YmVVbmVzY2FwZVF1b3RlKCkpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgdHlwZSA9IGdldFBhdGhDaGFyVHlwZShjKTtcbiAgICB0eXBlTWFwID0gcGF0aFN0YXRlTWFjaGluZVttb2RlXTtcbiAgICB0cmFuc2l0aW9uID0gdHlwZU1hcFt0eXBlXSB8fCB0eXBlTWFwWydlbHNlJ10gfHwgRVJST1I7XG5cbiAgICBpZiAodHJhbnNpdGlvbiA9PT0gRVJST1IpIHtcbiAgICAgIHJldHVybiAvLyBwYXJzZSBlcnJvclxuICAgIH1cblxuICAgIG1vZGUgPSB0cmFuc2l0aW9uWzBdO1xuICAgIGFjdGlvbiA9IGFjdGlvbnNbdHJhbnNpdGlvblsxXV07XG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgbmV3Q2hhciA9IHRyYW5zaXRpb25bMl07XG4gICAgICBuZXdDaGFyID0gbmV3Q2hhciA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gY1xuICAgICAgICA6IG5ld0NoYXI7XG4gICAgICBpZiAoYWN0aW9uKCkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2RlID09PSBBRlRFUl9QQVRIKSB7XG4gICAgICByZXR1cm4ga2V5c1xuICAgIH1cbiAgfVxufVxuXG5cblxuXG5cbnZhciBJMThuUGF0aCA9IGZ1bmN0aW9uIEkxOG5QYXRoICgpIHtcbiAgdGhpcy5fY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xufTtcblxuLyoqXG4gKiBFeHRlcm5hbCBwYXJzZSB0aGF0IGNoZWNrIGZvciBhIGNhY2hlIGhpdCBmaXJzdFxuICovXG5JMThuUGF0aC5wcm90b3R5cGUucGFyc2VQYXRoID0gZnVuY3Rpb24gcGFyc2VQYXRoIChwYXRoKSB7XG4gIHZhciBoaXQgPSB0aGlzLl9jYWNoZVtwYXRoXTtcbiAgaWYgKCFoaXQpIHtcbiAgICBoaXQgPSBwYXJzZSQxKHBhdGgpO1xuICAgIGlmIChoaXQpIHtcbiAgICAgIHRoaXMuX2NhY2hlW3BhdGhdID0gaGl0O1xuICAgIH1cbiAgfVxuICByZXR1cm4gaGl0IHx8IFtdXG59O1xuXG4vKipcbiAqIEdldCBwYXRoIHZhbHVlIGZyb20gcGF0aCBzdHJpbmdcbiAqL1xuSTE4blBhdGgucHJvdG90eXBlLmdldFBhdGhWYWx1ZSA9IGZ1bmN0aW9uIGdldFBhdGhWYWx1ZSAob2JqLCBwYXRoKSB7XG4gIGlmICghaXNPYmplY3Qob2JqKSkgeyByZXR1cm4gbnVsbCB9XG5cbiAgdmFyIHBhdGhzID0gdGhpcy5wYXJzZVBhdGgocGF0aCk7XG4gIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2Uge1xuICAgIHZhciBsZW5ndGggPSBwYXRocy5sZW5ndGg7XG4gICAgdmFyIGxhc3QgPSBvYmo7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgdmFsdWUgPSBsYXN0W3BhdGhzW2ldXTtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgICBsYXN0ID0gdmFsdWU7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxhc3RcbiAgfVxufTtcblxuLyogICovXG5cblxuXG52YXIgaHRtbFRhZ01hdGNoZXIgPSAvPFxcLz9bXFx3XFxzPVwiLy4nOjsjLVxcL10rPi87XG52YXIgbGlua0tleU1hdGNoZXIgPSAvKD86QCg/OlxcLlthLXpdKyk/Oig/OltcXHdcXC1ffC5dK3xcXChbXFx3XFwtX3wuXStcXCkpKS9nO1xudmFyIGxpbmtLZXlQcmVmaXhNYXRjaGVyID0gL15AKD86XFwuKFthLXpdKykpPzovO1xudmFyIGJyYWNrZXRzTWF0Y2hlciA9IC9bKCldL2c7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IHtcbiAgJ3VwcGVyJzogZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnRvTG9jYWxlVXBwZXJDYXNlKCk7IH0sXG4gICdsb3dlcic6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0ci50b0xvY2FsZUxvd2VyQ2FzZSgpOyB9LFxuICAnY2FwaXRhbGl6ZSc6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIChcIlwiICsgKHN0ci5jaGFyQXQoMCkudG9Mb2NhbGVVcHBlckNhc2UoKSkgKyAoc3RyLnN1YnN0cigxKSkpOyB9XG59O1xuXG52YXIgZGVmYXVsdEZvcm1hdHRlciA9IG5ldyBCYXNlRm9ybWF0dGVyKCk7XG5cbnZhciBWdWVJMThuID0gZnVuY3Rpb24gVnVlSTE4biAob3B0aW9ucykge1xuICB2YXIgdGhpcyQxID0gdGhpcztcbiAgaWYgKCBvcHRpb25zID09PSB2b2lkIDAgKSBvcHRpb25zID0ge307XG5cbiAgLy8gQXV0byBpbnN0YWxsIGlmIGl0IGlzIG5vdCBkb25lIHlldCBhbmQgYHdpbmRvd2AgaGFzIGBWdWVgLlxuICAvLyBUbyBhbGxvdyB1c2VycyB0byBhdm9pZCBhdXRvLWluc3RhbGxhdGlvbiBpbiBzb21lIGNhc2VzLFxuICAvLyB0aGlzIGNvZGUgc2hvdWxkIGJlIHBsYWNlZCBoZXJlLiBTZWUgIzI5MFxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFWdWUgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZ1ZSkge1xuICAgIGluc3RhbGwod2luZG93LlZ1ZSk7XG4gIH1cblxuICB2YXIgbG9jYWxlID0gb3B0aW9ucy5sb2NhbGUgfHwgJ2VuLVVTJztcbiAgdmFyIGZhbGxiYWNrTG9jYWxlID0gb3B0aW9ucy5mYWxsYmFja0xvY2FsZSA9PT0gZmFsc2VcbiAgICA/IGZhbHNlXG4gICAgOiBvcHRpb25zLmZhbGxiYWNrTG9jYWxlIHx8ICdlbi1VUyc7XG4gIHZhciBtZXNzYWdlcyA9IG9wdGlvbnMubWVzc2FnZXMgfHwge307XG4gIHZhciBkYXRlVGltZUZvcm1hdHMgPSBvcHRpb25zLmRhdGVUaW1lRm9ybWF0cyB8fCB7fTtcbiAgdmFyIG51bWJlckZvcm1hdHMgPSBvcHRpb25zLm51bWJlckZvcm1hdHMgfHwge307XG5cbiAgdGhpcy5fdm0gPSBudWxsO1xuICB0aGlzLl9mb3JtYXR0ZXIgPSBvcHRpb25zLmZvcm1hdHRlciB8fCBkZWZhdWx0Rm9ybWF0dGVyO1xuICB0aGlzLl9tb2RpZmllcnMgPSBvcHRpb25zLm1vZGlmaWVycyB8fCB7fTtcbiAgdGhpcy5fbWlzc2luZyA9IG9wdGlvbnMubWlzc2luZyB8fCBudWxsO1xuICB0aGlzLl9yb290ID0gb3B0aW9ucy5yb290IHx8IG51bGw7XG4gIHRoaXMuX3N5bmMgPSBvcHRpb25zLnN5bmMgPT09IHVuZGVmaW5lZCA/IHRydWUgOiAhIW9wdGlvbnMuc3luYztcbiAgdGhpcy5fZmFsbGJhY2tSb290ID0gb3B0aW9ucy5mYWxsYmFja1Jvb3QgPT09IHVuZGVmaW5lZFxuICAgID8gdHJ1ZVxuICAgIDogISFvcHRpb25zLmZhbGxiYWNrUm9vdDtcbiAgdGhpcy5fZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyA9IG9wdGlvbnMuZm9ybWF0RmFsbGJhY2tNZXNzYWdlcyA9PT0gdW5kZWZpbmVkXG4gICAgPyBmYWxzZVxuICAgIDogISFvcHRpb25zLmZvcm1hdEZhbGxiYWNrTWVzc2FnZXM7XG4gIHRoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2FybiA9IG9wdGlvbnMuc2lsZW50VHJhbnNsYXRpb25XYXJuID09PSB1bmRlZmluZWRcbiAgICA/IGZhbHNlXG4gICAgOiBvcHRpb25zLnNpbGVudFRyYW5zbGF0aW9uV2FybjtcbiAgdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuID0gb3B0aW9ucy5zaWxlbnRGYWxsYmFja1dhcm4gPT09IHVuZGVmaW5lZFxuICAgID8gZmFsc2VcbiAgICA6ICEhb3B0aW9ucy5zaWxlbnRGYWxsYmFja1dhcm47XG4gIHRoaXMuX2RhdGVUaW1lRm9ybWF0dGVycyA9IHt9O1xuICB0aGlzLl9udW1iZXJGb3JtYXR0ZXJzID0ge307XG4gIHRoaXMuX3BhdGggPSBuZXcgSTE4blBhdGgoKTtcbiAgdGhpcy5fZGF0YUxpc3RlbmVycyA9IFtdO1xuICB0aGlzLl9wcmVzZXJ2ZURpcmVjdGl2ZUNvbnRlbnQgPSBvcHRpb25zLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudCA9PT0gdW5kZWZpbmVkXG4gICAgPyBmYWxzZVxuICAgIDogISFvcHRpb25zLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudDtcbiAgdGhpcy5wbHVyYWxpemF0aW9uUnVsZXMgPSBvcHRpb25zLnBsdXJhbGl6YXRpb25SdWxlcyB8fCB7fTtcbiAgdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UgPSBvcHRpb25zLndhcm5IdG1sSW5NZXNzYWdlIHx8ICdvZmYnO1xuICB0aGlzLl9wb3N0VHJhbnNsYXRpb24gPSBvcHRpb25zLnBvc3RUcmFuc2xhdGlvbiB8fCBudWxsO1xuXG4gIHRoaXMuX2V4aXN0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIGtleSkge1xuICAgIGlmICghbWVzc2FnZSB8fCAha2V5KSB7IHJldHVybiBmYWxzZSB9XG4gICAgaWYgKCFpc051bGwodGhpcyQxLl9wYXRoLmdldFBhdGhWYWx1ZShtZXNzYWdlLCBrZXkpKSkgeyByZXR1cm4gdHJ1ZSB9XG4gICAgLy8gZmFsbGJhY2sgZm9yIGZsYXQga2V5XG4gICAgaWYgKG1lc3NhZ2Vba2V5XSkgeyByZXR1cm4gdHJ1ZSB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH07XG5cbiAgaWYgKHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID09PSAnd2FybicgfHwgdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UgPT09ICdlcnJvcicpIHtcbiAgICBPYmplY3Qua2V5cyhtZXNzYWdlcykuZm9yRWFjaChmdW5jdGlvbiAobG9jYWxlKSB7XG4gICAgICB0aGlzJDEuX2NoZWNrTG9jYWxlTWVzc2FnZShsb2NhbGUsIHRoaXMkMS5fd2Fybkh0bWxJbk1lc3NhZ2UsIG1lc3NhZ2VzW2xvY2FsZV0pO1xuICAgIH0pO1xuICB9XG5cbiAgdGhpcy5faW5pdFZNKHtcbiAgICBsb2NhbGU6IGxvY2FsZSxcbiAgICBmYWxsYmFja0xvY2FsZTogZmFsbGJhY2tMb2NhbGUsXG4gICAgbWVzc2FnZXM6IG1lc3NhZ2VzLFxuICAgIGRhdGVUaW1lRm9ybWF0czogZGF0ZVRpbWVGb3JtYXRzLFxuICAgIG51bWJlckZvcm1hdHM6IG51bWJlckZvcm1hdHNcbiAgfSk7XG59O1xuXG52YXIgcHJvdG90eXBlQWNjZXNzb3JzID0geyB2bTogeyBjb25maWd1cmFibGU6IHRydWUgfSxtZXNzYWdlczogeyBjb25maWd1cmFibGU6IHRydWUgfSxkYXRlVGltZUZvcm1hdHM6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sbnVtYmVyRm9ybWF0czogeyBjb25maWd1cmFibGU6IHRydWUgfSxhdmFpbGFibGVMb2NhbGVzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LGxvY2FsZTogeyBjb25maWd1cmFibGU6IHRydWUgfSxmYWxsYmFja0xvY2FsZTogeyBjb25maWd1cmFibGU6IHRydWUgfSxmb3JtYXRGYWxsYmFja01lc3NhZ2VzOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LG1pc3Npbmc6IHsgY29uZmlndXJhYmxlOiB0cnVlIH0sZm9ybWF0dGVyOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHNpbGVudFRyYW5zbGF0aW9uV2FybjogeyBjb25maWd1cmFibGU6IHRydWUgfSxzaWxlbnRGYWxsYmFja1dhcm46IHsgY29uZmlndXJhYmxlOiB0cnVlIH0scHJlc2VydmVEaXJlY3RpdmVDb250ZW50OiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHdhcm5IdG1sSW5NZXNzYWdlOiB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LHBvc3RUcmFuc2xhdGlvbjogeyBjb25maWd1cmFibGU6IHRydWUgfSB9O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fY2hlY2tMb2NhbGVNZXNzYWdlID0gZnVuY3Rpb24gX2NoZWNrTG9jYWxlTWVzc2FnZSAobG9jYWxlLCBsZXZlbCwgbWVzc2FnZSkge1xuICB2YXIgcGF0aHMgPSBbXTtcblxuICB2YXIgZm4gPSBmdW5jdGlvbiAobGV2ZWwsIGxvY2FsZSwgbWVzc2FnZSwgcGF0aHMpIHtcbiAgICBpZiAoaXNQbGFpbk9iamVjdChtZXNzYWdlKSkge1xuICAgICAgT2JqZWN0LmtleXMobWVzc2FnZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWwgPSBtZXNzYWdlW2tleV07XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbCkpIHtcbiAgICAgICAgICBwYXRocy5wdXNoKGtleSk7XG4gICAgICAgICAgcGF0aHMucHVzaCgnLicpO1xuICAgICAgICAgIGZuKGxldmVsLCBsb2NhbGUsIHZhbCwgcGF0aHMpO1xuICAgICAgICAgIHBhdGhzLnBvcCgpO1xuICAgICAgICAgIHBhdGhzLnBvcCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhdGhzLnB1c2goa2V5KTtcbiAgICAgICAgICBmbihsZXZlbCwgbG9jYWxlLCB2YWwsIHBhdGhzKTtcbiAgICAgICAgICBwYXRocy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSB7XG4gICAgICBtZXNzYWdlLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KGl0ZW0pKSB7XG4gICAgICAgICAgcGF0aHMucHVzaCgoXCJbXCIgKyBpbmRleCArIFwiXVwiKSk7XG4gICAgICAgICAgcGF0aHMucHVzaCgnLicpO1xuICAgICAgICAgIGZuKGxldmVsLCBsb2NhbGUsIGl0ZW0sIHBhdGhzKTtcbiAgICAgICAgICBwYXRocy5wb3AoKTtcbiAgICAgICAgICBwYXRocy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXRocy5wdXNoKChcIltcIiArIGluZGV4ICsgXCJdXCIpKTtcbiAgICAgICAgICBmbihsZXZlbCwgbG9jYWxlLCBpdGVtLCBwYXRocyk7XG4gICAgICAgICAgcGF0aHMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcmV0ID0gaHRtbFRhZ01hdGNoZXIudGVzdChtZXNzYWdlKTtcbiAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgdmFyIG1zZyA9IFwiRGV0ZWN0ZWQgSFRNTCBpbiBtZXNzYWdlICdcIiArIG1lc3NhZ2UgKyBcIicgb2Yga2V5cGF0aCAnXCIgKyAocGF0aHMuam9pbignJykpICsgXCInIGF0ICdcIiArIGxvY2FsZSArIFwiJy4gQ29uc2lkZXIgY29tcG9uZW50IGludGVycG9sYXRpb24gd2l0aCAnPGkxOG4+JyB0byBhdm9pZCBYU1MuIFNlZSBodHRwczovL2JpdC5seS8yWnFKemtwXCI7XG4gICAgICAgIGlmIChsZXZlbCA9PT0gJ3dhcm4nKSB7XG4gICAgICAgICAgd2Fybihtc2cpO1xuICAgICAgICB9IGVsc2UgaWYgKGxldmVsID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgZXJyb3IobXNnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBmbihsZXZlbCwgbG9jYWxlLCBtZXNzYWdlLCBwYXRocyk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faW5pdFZNID0gZnVuY3Rpb24gX2luaXRWTSAoZGF0YSkge1xuICB2YXIgc2lsZW50ID0gVnVlLmNvbmZpZy5zaWxlbnQ7XG4gIFZ1ZS5jb25maWcuc2lsZW50ID0gdHJ1ZTtcbiAgdGhpcy5fdm0gPSBuZXcgVnVlKHsgZGF0YTogZGF0YSB9KTtcbiAgVnVlLmNvbmZpZy5zaWxlbnQgPSBzaWxlbnQ7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5kZXN0cm95Vk0gPSBmdW5jdGlvbiBkZXN0cm95Vk0gKCkge1xuICB0aGlzLl92bS4kZGVzdHJveSgpO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuc3Vic2NyaWJlRGF0YUNoYW5naW5nID0gZnVuY3Rpb24gc3Vic2NyaWJlRGF0YUNoYW5naW5nICh2bSkge1xuICB0aGlzLl9kYXRhTGlzdGVuZXJzLnB1c2godm0pO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUudW5zdWJzY3JpYmVEYXRhQ2hhbmdpbmcgPSBmdW5jdGlvbiB1bnN1YnNjcmliZURhdGFDaGFuZ2luZyAodm0pIHtcbiAgcmVtb3ZlKHRoaXMuX2RhdGFMaXN0ZW5lcnMsIHZtKTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLndhdGNoSTE4bkRhdGEgPSBmdW5jdGlvbiB3YXRjaEkxOG5EYXRhICgpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gdGhpcy5fdm0uJHdhdGNoKCckZGF0YScsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaSA9IHNlbGYuX2RhdGFMaXN0ZW5lcnMubGVuZ3RoO1xuICAgIHdoaWxlIChpLS0pIHtcbiAgICAgIFZ1ZS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuX2RhdGFMaXN0ZW5lcnNbaV0gJiYgc2VsZi5fZGF0YUxpc3RlbmVyc1tpXS4kZm9yY2VVcGRhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgeyBkZWVwOiB0cnVlIH0pXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS53YXRjaExvY2FsZSA9IGZ1bmN0aW9uIHdhdGNoTG9jYWxlICgpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmICghdGhpcy5fc3luYyB8fCAhdGhpcy5fcm9vdCkgeyByZXR1cm4gbnVsbCB9XG4gIHZhciB0YXJnZXQgPSB0aGlzLl92bTtcbiAgcmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4udm0uJHdhdGNoKCdsb2NhbGUnLCBmdW5jdGlvbiAodmFsKSB7XG4gICAgdGFyZ2V0LiRzZXQodGFyZ2V0LCAnbG9jYWxlJywgdmFsKTtcbiAgICB0YXJnZXQuJGZvcmNlVXBkYXRlKCk7XG4gIH0sIHsgaW1tZWRpYXRlOiB0cnVlIH0pXG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMudm0uZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0gfTtcblxucHJvdG90eXBlQWNjZXNzb3JzLm1lc3NhZ2VzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fZ2V0TWVzc2FnZXMoKSkgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5kYXRlVGltZUZvcm1hdHMuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbG9vc2VDbG9uZSh0aGlzLl9nZXREYXRlVGltZUZvcm1hdHMoKSkgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5udW1iZXJGb3JtYXRzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpKSB9O1xucHJvdG90eXBlQWNjZXNzb3JzLmF2YWlsYWJsZUxvY2FsZXMuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gT2JqZWN0LmtleXModGhpcy5tZXNzYWdlcykuc29ydCgpIH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5sb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0ubG9jYWxlIH07XG5wcm90b3R5cGVBY2Nlc3NvcnMubG9jYWxlLnNldCA9IGZ1bmN0aW9uIChsb2NhbGUpIHtcbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bSwgJ2xvY2FsZScsIGxvY2FsZSk7XG59O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuZmFsbGJhY2tMb2NhbGUuZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fdm0uZmFsbGJhY2tMb2NhbGUgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5mYWxsYmFja0xvY2FsZS5zZXQgPSBmdW5jdGlvbiAobG9jYWxlKSB7XG4gIHRoaXMuX2xvY2FsZUNoYWluQ2FjaGUgPSB7fTtcbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bSwgJ2ZhbGxiYWNrTG9jYWxlJywgbG9jYWxlKTtcbn07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2Zvcm1hdEZhbGxiYWNrTWVzc2FnZXMgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5mb3JtYXRGYWxsYmFja01lc3NhZ2VzLnNldCA9IGZ1bmN0aW9uIChmYWxsYmFjaykgeyB0aGlzLl9mb3JtYXRGYWxsYmFja01lc3NhZ2VzID0gZmFsbGJhY2s7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5taXNzaW5nLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21pc3NpbmcgfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5taXNzaW5nLnNldCA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7IHRoaXMuX21pc3NpbmcgPSBoYW5kbGVyOyB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMuZm9ybWF0dGVyLmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlciB9O1xucHJvdG90eXBlQWNjZXNzb3JzLmZvcm1hdHRlci5zZXQgPSBmdW5jdGlvbiAoZm9ybWF0dGVyKSB7IHRoaXMuX2Zvcm1hdHRlciA9IGZvcm1hdHRlcjsgfTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnNpbGVudFRyYW5zbGF0aW9uV2Fybi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm4gfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5zaWxlbnRUcmFuc2xhdGlvbldhcm4uc2V0ID0gZnVuY3Rpb24gKHNpbGVudCkgeyB0aGlzLl9zaWxlbnRUcmFuc2xhdGlvbldhcm4gPSBzaWxlbnQ7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy5zaWxlbnRGYWxsYmFja1dhcm4uZ2V0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuIH07XG5wcm90b3R5cGVBY2Nlc3NvcnMuc2lsZW50RmFsbGJhY2tXYXJuLnNldCA9IGZ1bmN0aW9uIChzaWxlbnQpIHsgdGhpcy5fc2lsZW50RmFsbGJhY2tXYXJuID0gc2lsZW50OyB9O1xuXG5wcm90b3R5cGVBY2Nlc3NvcnMucHJlc2VydmVEaXJlY3RpdmVDb250ZW50LmdldCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX3ByZXNlcnZlRGlyZWN0aXZlQ29udGVudCB9O1xucHJvdG90eXBlQWNjZXNzb3JzLnByZXNlcnZlRGlyZWN0aXZlQ29udGVudC5zZXQgPSBmdW5jdGlvbiAocHJlc2VydmUpIHsgdGhpcy5fcHJlc2VydmVEaXJlY3RpdmVDb250ZW50ID0gcHJlc2VydmU7IH07XG5cbnByb3RvdHlwZUFjY2Vzc29ycy53YXJuSHRtbEluTWVzc2FnZS5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSB9O1xucHJvdG90eXBlQWNjZXNzb3JzLndhcm5IdG1sSW5NZXNzYWdlLnNldCA9IGZ1bmN0aW9uIChsZXZlbCkge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG4gIHZhciBvcmdMZXZlbCA9IHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlO1xuICB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9IGxldmVsO1xuICBpZiAob3JnTGV2ZWwgIT09IGxldmVsICYmIChsZXZlbCA9PT0gJ3dhcm4nIHx8IGxldmVsID09PSAnZXJyb3InKSkge1xuICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX2dldE1lc3NhZ2VzKCk7XG4gICAgT2JqZWN0LmtleXMobWVzc2FnZXMpLmZvckVhY2goZnVuY3Rpb24gKGxvY2FsZSkge1xuICAgICAgdGhpcyQxLl9jaGVja0xvY2FsZU1lc3NhZ2UobG9jYWxlLCB0aGlzJDEuX3dhcm5IdG1sSW5NZXNzYWdlLCBtZXNzYWdlc1tsb2NhbGVdKTtcbiAgICB9KTtcbiAgfVxufTtcblxucHJvdG90eXBlQWNjZXNzb3JzLnBvc3RUcmFuc2xhdGlvbi5nZXQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLl9wb3N0VHJhbnNsYXRpb24gfTtcbnByb3RvdHlwZUFjY2Vzc29ycy5wb3N0VHJhbnNsYXRpb24uc2V0ID0gZnVuY3Rpb24gKGhhbmRsZXIpIHsgdGhpcy5fcG9zdFRyYW5zbGF0aW9uID0gaGFuZGxlcjsgfTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2dldE1lc3NhZ2VzID0gZnVuY3Rpb24gX2dldE1lc3NhZ2VzICgpIHsgcmV0dXJuIHRoaXMuX3ZtLm1lc3NhZ2VzIH07XG5WdWVJMThuLnByb3RvdHlwZS5fZ2V0RGF0ZVRpbWVGb3JtYXRzID0gZnVuY3Rpb24gX2dldERhdGVUaW1lRm9ybWF0cyAoKSB7IHJldHVybiB0aGlzLl92bS5kYXRlVGltZUZvcm1hdHMgfTtcblZ1ZUkxOG4ucHJvdG90eXBlLl9nZXROdW1iZXJGb3JtYXRzID0gZnVuY3Rpb24gX2dldE51bWJlckZvcm1hdHMgKCkgeyByZXR1cm4gdGhpcy5fdm0ubnVtYmVyRm9ybWF0cyB9O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fd2FybkRlZmF1bHQgPSBmdW5jdGlvbiBfd2FybkRlZmF1bHQgKGxvY2FsZSwga2V5LCByZXN1bHQsIHZtLCB2YWx1ZXMsIGludGVycG9sYXRlTW9kZSkge1xuICBpZiAoIWlzTnVsbChyZXN1bHQpKSB7IHJldHVybiByZXN1bHQgfVxuICBpZiAodGhpcy5fbWlzc2luZykge1xuICAgIHZhciBtaXNzaW5nUmV0ID0gdGhpcy5fbWlzc2luZy5hcHBseShudWxsLCBbbG9jYWxlLCBrZXksIHZtLCB2YWx1ZXNdKTtcbiAgICBpZiAodHlwZW9mIG1pc3NpbmdSZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWlzc2luZ1JldFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSkge1xuICAgICAgd2FybihcbiAgICAgICAgXCJDYW5ub3QgdHJhbnNsYXRlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoICdcIiArIGtleSArIFwiJy4gXCIgK1xuICAgICAgICAnVXNlIHRoZSB2YWx1ZSBvZiBrZXlwYXRoIGFzIGRlZmF1bHQuJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5fZm9ybWF0RmFsbGJhY2tNZXNzYWdlcykge1xuICAgIHZhciBwYXJzZWRBcmdzID0gcGFyc2VBcmdzLmFwcGx5KHZvaWQgMCwgdmFsdWVzKTtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyKGtleSwgaW50ZXJwb2xhdGVNb2RlLCBwYXJzZWRBcmdzLnBhcmFtcywga2V5KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBrZXlcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2lzRmFsbGJhY2tSb290ID0gZnVuY3Rpb24gX2lzRmFsbGJhY2tSb290ICh2YWwpIHtcbiAgcmV0dXJuICF2YWwgJiYgIWlzTnVsbCh0aGlzLl9yb290KSAmJiB0aGlzLl9mYWxsYmFja1Jvb3Rcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9pc1NpbGVudEZhbGxiYWNrV2FybiA9IGZ1bmN0aW9uIF9pc1NpbGVudEZhbGxiYWNrV2FybiAoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9zaWxlbnRGYWxsYmFja1dhcm4gaW5zdGFuY2VvZiBSZWdFeHBcbiAgICA/IHRoaXMuX3NpbGVudEZhbGxiYWNrV2Fybi50ZXN0KGtleSlcbiAgICA6IHRoaXMuX3NpbGVudEZhbGxiYWNrV2FyblxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2lzU2lsZW50RmFsbGJhY2sgPSBmdW5jdGlvbiBfaXNTaWxlbnRGYWxsYmFjayAobG9jYWxlLCBrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX2lzU2lsZW50RmFsbGJhY2tXYXJuKGtleSkgJiYgKHRoaXMuX2lzRmFsbGJhY2tSb290KCkgfHwgbG9jYWxlICE9PSB0aGlzLmZhbGxiYWNrTG9jYWxlKVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuID0gZnVuY3Rpb24gX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3NpbGVudFRyYW5zbGF0aW9uV2FybiBpbnN0YW5jZW9mIFJlZ0V4cFxuICAgID8gdGhpcy5fc2lsZW50VHJhbnNsYXRpb25XYXJuLnRlc3Qoa2V5KVxuICAgIDogdGhpcy5fc2lsZW50VHJhbnNsYXRpb25XYXJuXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5faW50ZXJwb2xhdGUgPSBmdW5jdGlvbiBfaW50ZXJwb2xhdGUgKFxuICBsb2NhbGUsXG4gIG1lc3NhZ2UsXG4gIGtleSxcbiAgaG9zdCxcbiAgaW50ZXJwb2xhdGVNb2RlLFxuICB2YWx1ZXMsXG4gIHZpc2l0ZWRMaW5rU3RhY2tcbikge1xuICBpZiAoIW1lc3NhZ2UpIHsgcmV0dXJuIG51bGwgfVxuXG4gIHZhciBwYXRoUmV0ID0gdGhpcy5fcGF0aC5nZXRQYXRoVmFsdWUobWVzc2FnZSwga2V5KTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocGF0aFJldCkgfHwgaXNQbGFpbk9iamVjdChwYXRoUmV0KSkgeyByZXR1cm4gcGF0aFJldCB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKGlzTnVsbChwYXRoUmV0KSkge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGlzUGxhaW5PYmplY3QobWVzc2FnZSkpIHtcbiAgICAgIHJldCA9IG1lc3NhZ2Vba2V5XTtcbiAgICAgIGlmICh0eXBlb2YgcmV0ICE9PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFjayhsb2NhbGUsIGtleSkpIHtcbiAgICAgICAgICB3YXJuKChcIlZhbHVlIG9mIGtleSAnXCIgKyBrZXkgKyBcIicgaXMgbm90IGEgc3RyaW5nIVwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodHlwZW9mIHBhdGhSZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXQgPSBwYXRoUmV0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFjayhsb2NhbGUsIGtleSkpIHtcbiAgICAgICAgd2FybigoXCJWYWx1ZSBvZiBrZXkgJ1wiICsga2V5ICsgXCInIGlzIG5vdCBhIHN0cmluZyFcIikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBsaW5rcyB3aXRoaW4gdGhlIHRyYW5zbGF0ZWQgc3RyaW5nXG4gIGlmIChyZXQuaW5kZXhPZignQDonKSA+PSAwIHx8IHJldC5pbmRleE9mKCdALicpID49IDApIHtcbiAgICByZXQgPSB0aGlzLl9saW5rKGxvY2FsZSwgbWVzc2FnZSwgcmV0LCBob3N0LCAncmF3JywgdmFsdWVzLCB2aXNpdGVkTGlua1N0YWNrKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9yZW5kZXIocmV0LCBpbnRlcnBvbGF0ZU1vZGUsIHZhbHVlcywga2V5KVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2xpbmsgPSBmdW5jdGlvbiBfbGluayAoXG4gIGxvY2FsZSxcbiAgbWVzc2FnZSxcbiAgc3RyLFxuICBob3N0LFxuICBpbnRlcnBvbGF0ZU1vZGUsXG4gIHZhbHVlcyxcbiAgdmlzaXRlZExpbmtTdGFja1xuKSB7XG4gIHZhciByZXQgPSBzdHI7XG5cbiAgLy8gTWF0Y2ggYWxsIHRoZSBsaW5rcyB3aXRoaW4gdGhlIGxvY2FsXG4gIC8vIFdlIGFyZSBnb2luZyB0byByZXBsYWNlIGVhY2ggb2ZcbiAgLy8gdGhlbSB3aXRoIGl0cyB0cmFuc2xhdGlvblxuICB2YXIgbWF0Y2hlcyA9IHJldC5tYXRjaChsaW5rS2V5TWF0Y2hlcik7XG4gIGZvciAodmFyIGlkeCBpbiBtYXRjaGVzKSB7XG4gICAgLy8gaWUgY29tcGF0aWJsZTogZmlsdGVyIGN1c3RvbSBhcnJheVxuICAgIC8vIHByb3RvdHlwZSBtZXRob2RcbiAgICBpZiAoIW1hdGNoZXMuaGFzT3duUHJvcGVydHkoaWR4KSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgdmFyIGxpbmsgPSBtYXRjaGVzW2lkeF07XG4gICAgdmFyIGxpbmtLZXlQcmVmaXhNYXRjaGVzID0gbGluay5tYXRjaChsaW5rS2V5UHJlZml4TWF0Y2hlcik7XG4gICAgdmFyIGxpbmtQcmVmaXggPSBsaW5rS2V5UHJlZml4TWF0Y2hlc1swXTtcbiAgICAgIHZhciBmb3JtYXR0ZXJOYW1lID0gbGlua0tleVByZWZpeE1hdGNoZXNbMV07XG5cbiAgICAvLyBSZW1vdmUgdGhlIGxlYWRpbmcgQDosIEAuY2FzZTogYW5kIHRoZSBicmFja2V0c1xuICAgIHZhciBsaW5rUGxhY2Vob2xkZXIgPSBsaW5rLnJlcGxhY2UobGlua1ByZWZpeCwgJycpLnJlcGxhY2UoYnJhY2tldHNNYXRjaGVyLCAnJyk7XG5cbiAgICBpZiAoaW5jbHVkZXModmlzaXRlZExpbmtTdGFjaywgbGlua1BsYWNlaG9sZGVyKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgd2FybigoXCJDaXJjdWxhciByZWZlcmVuY2UgZm91bmQuIFxcXCJcIiArIGxpbmsgKyBcIlxcXCIgaXMgYWxyZWFkeSB2aXNpdGVkIGluIHRoZSBjaGFpbiBvZiBcIiArICh2aXNpdGVkTGlua1N0YWNrLnJldmVyc2UoKS5qb2luKCcgPC0gJykpKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0XG4gICAgfVxuICAgIHZpc2l0ZWRMaW5rU3RhY2sucHVzaChsaW5rUGxhY2Vob2xkZXIpO1xuXG4gICAgLy8gVHJhbnNsYXRlIHRoZSBsaW5rXG4gICAgdmFyIHRyYW5zbGF0ZWQgPSB0aGlzLl9pbnRlcnBvbGF0ZShcbiAgICAgIGxvY2FsZSwgbWVzc2FnZSwgbGlua1BsYWNlaG9sZGVyLCBob3N0LFxuICAgICAgaW50ZXJwb2xhdGVNb2RlID09PSAncmF3JyA/ICdzdHJpbmcnIDogaW50ZXJwb2xhdGVNb2RlLFxuICAgICAgaW50ZXJwb2xhdGVNb2RlID09PSAncmF3JyA/IHVuZGVmaW5lZCA6IHZhbHVlcyxcbiAgICAgIHZpc2l0ZWRMaW5rU3RhY2tcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuX2lzRmFsbGJhY2tSb290KHRyYW5zbGF0ZWQpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4obGlua1BsYWNlaG9sZGVyKSkge1xuICAgICAgICB3YXJuKChcIkZhbGwgYmFjayB0byB0cmFuc2xhdGUgdGhlIGxpbmsgcGxhY2Vob2xkZXIgJ1wiICsgbGlua1BsYWNlaG9sZGVyICsgXCInIHdpdGggcm9vdCBsb2NhbGUuXCIpKTtcbiAgICAgIH1cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgICAgaWYgKCF0aGlzLl9yb290KSB7IHRocm93IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yJykgfVxuICAgICAgdmFyIHJvb3QgPSB0aGlzLl9yb290LiRpMThuO1xuICAgICAgdHJhbnNsYXRlZCA9IHJvb3QuX3RyYW5zbGF0ZShcbiAgICAgICAgcm9vdC5fZ2V0TWVzc2FnZXMoKSwgcm9vdC5sb2NhbGUsIHJvb3QuZmFsbGJhY2tMb2NhbGUsXG4gICAgICAgIGxpbmtQbGFjZWhvbGRlciwgaG9zdCwgaW50ZXJwb2xhdGVNb2RlLCB2YWx1ZXNcbiAgICAgICk7XG4gICAgfVxuICAgIHRyYW5zbGF0ZWQgPSB0aGlzLl93YXJuRGVmYXVsdChcbiAgICAgIGxvY2FsZSwgbGlua1BsYWNlaG9sZGVyLCB0cmFuc2xhdGVkLCBob3N0LFxuICAgICAgQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gdmFsdWVzIDogW3ZhbHVlc10sXG4gICAgICBpbnRlcnBvbGF0ZU1vZGVcbiAgICApO1xuXG4gICAgaWYgKHRoaXMuX21vZGlmaWVycy5oYXNPd25Qcm9wZXJ0eShmb3JtYXR0ZXJOYW1lKSkge1xuICAgICAgdHJhbnNsYXRlZCA9IHRoaXMuX21vZGlmaWVyc1tmb3JtYXR0ZXJOYW1lXSh0cmFuc2xhdGVkKTtcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRNb2RpZmllcnMuaGFzT3duUHJvcGVydHkoZm9ybWF0dGVyTmFtZSkpIHtcbiAgICAgIHRyYW5zbGF0ZWQgPSBkZWZhdWx0TW9kaWZpZXJzW2Zvcm1hdHRlck5hbWVdKHRyYW5zbGF0ZWQpO1xuICAgIH1cblxuICAgIHZpc2l0ZWRMaW5rU3RhY2sucG9wKCk7XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBsaW5rIHdpdGggdGhlIHRyYW5zbGF0ZWRcbiAgICByZXQgPSAhdHJhbnNsYXRlZCA/IHJldCA6IHJldC5yZXBsYWNlKGxpbmssIHRyYW5zbGF0ZWQpO1xuICB9XG5cbiAgcmV0dXJuIHJldFxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX3JlbmRlciA9IGZ1bmN0aW9uIF9yZW5kZXIgKG1lc3NhZ2UsIGludGVycG9sYXRlTW9kZSwgdmFsdWVzLCBwYXRoKSB7XG4gIHZhciByZXQgPSB0aGlzLl9mb3JtYXR0ZXIuaW50ZXJwb2xhdGUobWVzc2FnZSwgdmFsdWVzLCBwYXRoKTtcblxuICAvLyBJZiB0aGUgY3VzdG9tIGZvcm1hdHRlciByZWZ1c2VzIHRvIHdvcmsgLSBhcHBseSB0aGUgZGVmYXVsdCBvbmVcbiAgaWYgKCFyZXQpIHtcbiAgICByZXQgPSBkZWZhdWx0Rm9ybWF0dGVyLmludGVycG9sYXRlKG1lc3NhZ2UsIHZhbHVlcywgcGF0aCk7XG4gIH1cblxuICAvLyBpZiBpbnRlcnBvbGF0ZU1vZGUgaXMgKipub3QqKiAnc3RyaW5nJyAoJ3JvdycpLFxuICAvLyByZXR1cm4gdGhlIGNvbXBpbGVkIGRhdGEgKGUuZy4gWydmb28nLCBWTm9kZSwgJ2JhciddKSB3aXRoIGZvcm1hdHRlclxuICByZXR1cm4gaW50ZXJwb2xhdGVNb2RlID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgcmV0ICE9PSAnc3RyaW5nJyA/IHJldC5qb2luKCcnKSA6IHJldFxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZEl0ZW1Ub0NoYWluID0gZnVuY3Rpb24gX2FwcGVuZEl0ZW1Ub0NoYWluIChjaGFpbiwgaXRlbSwgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3cgPSBmYWxzZTtcbiAgaWYgKCFpbmNsdWRlcyhjaGFpbiwgaXRlbSkpIHtcbiAgICBmb2xsb3cgPSB0cnVlO1xuICAgIGlmIChpdGVtKSB7XG4gICAgICBmb2xsb3cgPSBpdGVtW2l0ZW0ubGVuZ3RoIC0gMV0gIT09ICchJztcbiAgICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoLyEvZywgJycpO1xuICAgICAgY2hhaW4ucHVzaChpdGVtKTtcbiAgICAgIGlmIChibG9ja3MgJiYgYmxvY2tzW2l0ZW1dKSB7XG4gICAgICAgIGZvbGxvdyA9IGJsb2Nrc1tpdGVtXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvbGxvd1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZExvY2FsZVRvQ2hhaW4gPSBmdW5jdGlvbiBfYXBwZW5kTG9jYWxlVG9DaGFpbiAoY2hhaW4sIGxvY2FsZSwgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3c7XG4gIHZhciB0b2tlbnMgPSBsb2NhbGUuc3BsaXQoJy0nKTtcbiAgZG8ge1xuICAgIHZhciBpdGVtID0gdG9rZW5zLmpvaW4oJy0nKTtcbiAgICBmb2xsb3cgPSB0aGlzLl9hcHBlbmRJdGVtVG9DaGFpbihjaGFpbiwgaXRlbSwgYmxvY2tzKTtcbiAgICB0b2tlbnMuc3BsaWNlKC0xLCAxKTtcbiAgfSB3aGlsZSAodG9rZW5zLmxlbmd0aCAmJiAoZm9sbG93ID09PSB0cnVlKSlcbiAgcmV0dXJuIGZvbGxvd1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2FwcGVuZEJsb2NrVG9DaGFpbiA9IGZ1bmN0aW9uIF9hcHBlbmRCbG9ja1RvQ2hhaW4gKGNoYWluLCBibG9jaywgYmxvY2tzKSB7XG4gIHZhciBmb2xsb3cgPSB0cnVlO1xuICBmb3IgKHZhciBpID0gMDsgKGkgPCBibG9jay5sZW5ndGgpICYmICh0eXBlb2YgZm9sbG93ID09PSAnYm9vbGVhbicpOyBpKyspIHtcbiAgICB2YXIgbG9jYWxlID0gYmxvY2tbaV07XG4gICAgZm9sbG93ID0gdGhpcy5fYXBwZW5kTG9jYWxlVG9DaGFpbihjaGFpbiwgbG9jYWxlLCBibG9ja3MpO1xuICB9XG4gIHJldHVybiBmb2xsb3dcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9nZXRMb2NhbGVDaGFpbiA9IGZ1bmN0aW9uIF9nZXRMb2NhbGVDaGFpbiAoc3RhcnQsIGZhbGxiYWNrTG9jYWxlKSB7XG4gIGlmIChzdGFydCA9PT0gJycpIHsgcmV0dXJuIFtdIH1cblxuICBpZiAoIXRoaXMuX2xvY2FsZUNoYWluQ2FjaGUpIHtcbiAgICB0aGlzLl9sb2NhbGVDaGFpbkNhY2hlID0ge307XG4gIH1cblxuICB2YXIgY2hhaW4gPSB0aGlzLl9sb2NhbGVDaGFpbkNhY2hlW3N0YXJ0XTtcbiAgaWYgKCFjaGFpbikge1xuICAgIGlmICghZmFsbGJhY2tMb2NhbGUpIHtcbiAgICAgIGZhbGxiYWNrTG9jYWxlID0gdGhpcy5mYWxsYmFja0xvY2FsZTtcbiAgICB9XG4gICAgY2hhaW4gPSBbXTtcblxuICAgIC8vIGZpcnN0IGJsb2NrIGRlZmluZWQgYnkgc3RhcnRcbiAgICB2YXIgYmxvY2sgPSBbc3RhcnRdO1xuXG4gICAgLy8gd2hpbGUgYW55IGludGVydmVuaW5nIGJsb2NrIGZvdW5kXG4gICAgd2hpbGUgKEFycmF5LmlzQXJyYXkoYmxvY2spKSB7XG4gICAgICBibG9jayA9IHRoaXMuX2FwcGVuZEJsb2NrVG9DaGFpbihcbiAgICAgICAgY2hhaW4sXG4gICAgICAgIGJsb2NrLFxuICAgICAgICBmYWxsYmFja0xvY2FsZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBsYXN0IGJsb2NrIGRlZmluZWQgYnkgZGVmYXVsdFxuICAgIHZhciBkZWZhdWx0cztcbiAgICBpZiAoQXJyYXkuaXNBcnJheShmYWxsYmFja0xvY2FsZSkpIHtcbiAgICAgIGRlZmF1bHRzID0gZmFsbGJhY2tMb2NhbGU7XG4gICAgfSBlbHNlIGlmIChmYWxsYmFja0xvY2FsZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgaWYgKGZhbGxiYWNrTG9jYWxlWydkZWZhdWx0J10pIHtcbiAgICAgICAgZGVmYXVsdHMgPSBmYWxsYmFja0xvY2FsZVsnZGVmYXVsdCddO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdHMgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWZhdWx0cyA9IGZhbGxiYWNrTG9jYWxlO1xuICAgIH1cblxuICAgIC8vIGNvbnZlcnQgZGVmYXVsdHMgdG8gYXJyYXlcbiAgICBpZiAodHlwZW9mIGRlZmF1bHRzID09PSAnc3RyaW5nJykge1xuICAgICAgYmxvY2sgPSBbZGVmYXVsdHNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBibG9jayA9IGRlZmF1bHRzO1xuICAgIH1cbiAgICBpZiAoYmxvY2spIHtcbiAgICAgIHRoaXMuX2FwcGVuZEJsb2NrVG9DaGFpbihcbiAgICAgICAgY2hhaW4sXG4gICAgICAgIGJsb2NrLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLl9sb2NhbGVDaGFpbkNhY2hlW3N0YXJ0XSA9IGNoYWluO1xuICB9XG4gIHJldHVybiBjaGFpblxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX3RyYW5zbGF0ZSA9IGZ1bmN0aW9uIF90cmFuc2xhdGUgKFxuICBtZXNzYWdlcyxcbiAgbG9jYWxlLFxuICBmYWxsYmFjayxcbiAga2V5LFxuICBob3N0LFxuICBpbnRlcnBvbGF0ZU1vZGUsXG4gIGFyZ3Ncbikge1xuICB2YXIgY2hhaW4gPSB0aGlzLl9nZXRMb2NhbGVDaGFpbihsb2NhbGUsIGZhbGxiYWNrKTtcbiAgdmFyIHJlcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzdGVwID0gY2hhaW5baV07XG4gICAgcmVzID1cbiAgICAgIHRoaXMuX2ludGVycG9sYXRlKHN0ZXAsIG1lc3NhZ2VzW3N0ZXBdLCBrZXksIGhvc3QsIGludGVycG9sYXRlTW9kZSwgYXJncywgW2tleV0pO1xuICAgIGlmICghaXNOdWxsKHJlcykpIHtcbiAgICAgIGlmIChzdGVwICE9PSBsb2NhbGUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSkge1xuICAgICAgICB3YXJuKChcIkZhbGwgYmFjayB0byB0cmFuc2xhdGUgdGhlIGtleXBhdGggJ1wiICsga2V5ICsgXCInIHdpdGggJ1wiICsgc3RlcCArIFwiJyBsb2NhbGUuXCIpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl90ID0gZnVuY3Rpb24gX3QgKGtleSwgX2xvY2FsZSwgbWVzc2FnZXMsIGhvc3QpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIHZhbHVlcyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gNDtcbiAgICB3aGlsZSAoIGxlbi0tID4gMCApIHZhbHVlc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDQgXTtcbiAgaWYgKCFrZXkpIHsgcmV0dXJuICcnIH1cblxuICB2YXIgcGFyc2VkQXJncyA9IHBhcnNlQXJncy5hcHBseSh2b2lkIDAsIHZhbHVlcyk7XG4gIHZhciBsb2NhbGUgPSBwYXJzZWRBcmdzLmxvY2FsZSB8fCBfbG9jYWxlO1xuXG4gIHZhciByZXQgPSB0aGlzLl90cmFuc2xhdGUoXG4gICAgbWVzc2FnZXMsIGxvY2FsZSwgdGhpcy5mYWxsYmFja0xvY2FsZSwga2V5LFxuICAgIGhvc3QsICdzdHJpbmcnLCBwYXJzZWRBcmdzLnBhcmFtc1xuICApO1xuICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QocmV0KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpICYmICF0aGlzLl9pc1NpbGVudEZhbGxiYWNrV2FybihrZXkpKSB7XG4gICAgICB3YXJuKChcIkZhbGwgYmFjayB0byB0cmFuc2xhdGUgdGhlIGtleXBhdGggJ1wiICsga2V5ICsgXCInIHdpdGggcm9vdCBsb2NhbGUuXCIpKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLl9yb290KSB7IHRocm93IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yJykgfVxuICAgIHJldHVybiAocmVmID0gdGhpcy5fcm9vdCkuJHQuYXBwbHkocmVmLCBbIGtleSBdLmNvbmNhdCggdmFsdWVzICkpXG4gIH0gZWxzZSB7XG4gICAgcmV0ID0gdGhpcy5fd2FybkRlZmF1bHQobG9jYWxlLCBrZXksIHJldCwgaG9zdCwgdmFsdWVzLCAnc3RyaW5nJyk7XG4gICAgaWYgKHRoaXMuX3Bvc3RUcmFuc2xhdGlvbiAmJiByZXQgIT09IG51bGwgJiYgcmV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldCA9IHRoaXMuX3Bvc3RUcmFuc2xhdGlvbihyZXQsIGtleSk7XG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUudCA9IGZ1bmN0aW9uIHQgKGtleSkge1xuICAgIHZhciByZWY7XG5cbiAgICB2YXIgdmFsdWVzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgdmFsdWVzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuICByZXR1cm4gKHJlZiA9IHRoaXMpLl90LmFwcGx5KHJlZiwgWyBrZXksIHRoaXMubG9jYWxlLCB0aGlzLl9nZXRNZXNzYWdlcygpLCBudWxsIF0uY29uY2F0KCB2YWx1ZXMgKSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9pID0gZnVuY3Rpb24gX2kgKGtleSwgbG9jYWxlLCBtZXNzYWdlcywgaG9zdCwgdmFsdWVzKSB7XG4gIHZhciByZXQgPVxuICAgIHRoaXMuX3RyYW5zbGF0ZShtZXNzYWdlcywgbG9jYWxlLCB0aGlzLmZhbGxiYWNrTG9jYWxlLCBrZXksIGhvc3QsICdyYXcnLCB2YWx1ZXMpO1xuICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QocmV0KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpKSB7XG4gICAgICB3YXJuKChcIkZhbGwgYmFjayB0byBpbnRlcnBvbGF0ZSB0aGUga2V5cGF0aCAnXCIgKyBrZXkgKyBcIicgd2l0aCByb290IGxvY2FsZS5cIikpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX3Jvb3QpIHsgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3InKSB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4uaShrZXksIGxvY2FsZSwgdmFsdWVzKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB0aGlzLl93YXJuRGVmYXVsdChsb2NhbGUsIGtleSwgcmV0LCBob3N0LCBbdmFsdWVzXSwgJ3JhdycpXG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLmkgPSBmdW5jdGlvbiBpIChrZXksIGxvY2FsZSwgdmFsdWVzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIWtleSkgeyByZXR1cm4gJycgfVxuXG4gIGlmICh0eXBlb2YgbG9jYWxlICE9PSAnc3RyaW5nJykge1xuICAgIGxvY2FsZSA9IHRoaXMubG9jYWxlO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2koa2V5LCBsb2NhbGUsIHRoaXMuX2dldE1lc3NhZ2VzKCksIG51bGwsIHZhbHVlcylcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl90YyA9IGZ1bmN0aW9uIF90YyAoXG4gIGtleSxcbiAgX2xvY2FsZSxcbiAgbWVzc2FnZXMsXG4gIGhvc3QsXG4gIGNob2ljZVxuKSB7XG4gICAgdmFyIHJlZjtcblxuICAgIHZhciB2YWx1ZXMgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDU7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSB2YWx1ZXNbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyA1IF07XG4gIGlmICgha2V5KSB7IHJldHVybiAnJyB9XG4gIGlmIChjaG9pY2UgPT09IHVuZGVmaW5lZCkge1xuICAgIGNob2ljZSA9IDE7XG4gIH1cblxuICB2YXIgcHJlZGVmaW5lZCA9IHsgJ2NvdW50JzogY2hvaWNlLCAnbic6IGNob2ljZSB9O1xuICB2YXIgcGFyc2VkQXJncyA9IHBhcnNlQXJncy5hcHBseSh2b2lkIDAsIHZhbHVlcyk7XG4gIHBhcnNlZEFyZ3MucGFyYW1zID0gT2JqZWN0LmFzc2lnbihwcmVkZWZpbmVkLCBwYXJzZWRBcmdzLnBhcmFtcyk7XG4gIHZhbHVlcyA9IHBhcnNlZEFyZ3MubG9jYWxlID09PSBudWxsID8gW3BhcnNlZEFyZ3MucGFyYW1zXSA6IFtwYXJzZWRBcmdzLmxvY2FsZSwgcGFyc2VkQXJncy5wYXJhbXNdO1xuICByZXR1cm4gdGhpcy5mZXRjaENob2ljZSgocmVmID0gdGhpcykuX3QuYXBwbHkocmVmLCBbIGtleSwgX2xvY2FsZSwgbWVzc2FnZXMsIGhvc3QgXS5jb25jYXQoIHZhbHVlcyApKSwgY2hvaWNlKVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuZmV0Y2hDaG9pY2UgPSBmdW5jdGlvbiBmZXRjaENob2ljZSAobWVzc2FnZSwgY2hvaWNlKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIW1lc3NhZ2UgJiYgdHlwZW9mIG1lc3NhZ2UgIT09ICdzdHJpbmcnKSB7IHJldHVybiBudWxsIH1cbiAgdmFyIGNob2ljZXMgPSBtZXNzYWdlLnNwbGl0KCd8Jyk7XG5cbiAgY2hvaWNlID0gdGhpcy5nZXRDaG9pY2VJbmRleChjaG9pY2UsIGNob2ljZXMubGVuZ3RoKTtcbiAgaWYgKCFjaG9pY2VzW2Nob2ljZV0pIHsgcmV0dXJuIG1lc3NhZ2UgfVxuICByZXR1cm4gY2hvaWNlc1tjaG9pY2VdLnRyaW0oKVxufTtcblxuLyoqXG4gKiBAcGFyYW0gY2hvaWNlIHtudW1iZXJ9IGEgY2hvaWNlIGluZGV4IGdpdmVuIGJ5IHRoZSBpbnB1dCB0byAkdGM6IGAkdGMoJ3BhdGgudG8ucnVsZScsIGNob2ljZUluZGV4KWBcbiAqIEBwYXJhbSBjaG9pY2VzTGVuZ3RoIHtudW1iZXJ9IGFuIG92ZXJhbGwgYW1vdW50IG9mIGF2YWlsYWJsZSBjaG9pY2VzXG4gKiBAcmV0dXJucyBhIGZpbmFsIGNob2ljZSBpbmRleFxuKi9cblZ1ZUkxOG4ucHJvdG90eXBlLmdldENob2ljZUluZGV4ID0gZnVuY3Rpb24gZ2V0Q2hvaWNlSW5kZXggKGNob2ljZSwgY2hvaWNlc0xlbmd0aCkge1xuICAvLyBEZWZhdWx0IChvbGQpIGdldENob2ljZUluZGV4IGltcGxlbWVudGF0aW9uIC0gZW5nbGlzaC1jb21wYXRpYmxlXG4gIHZhciBkZWZhdWx0SW1wbCA9IGZ1bmN0aW9uIChfY2hvaWNlLCBfY2hvaWNlc0xlbmd0aCkge1xuICAgIF9jaG9pY2UgPSBNYXRoLmFicyhfY2hvaWNlKTtcblxuICAgIGlmIChfY2hvaWNlc0xlbmd0aCA9PT0gMikge1xuICAgICAgcmV0dXJuIF9jaG9pY2VcbiAgICAgICAgPyBfY2hvaWNlID4gMVxuICAgICAgICAgID8gMVxuICAgICAgICAgIDogMFxuICAgICAgICA6IDFcbiAgICB9XG5cbiAgICByZXR1cm4gX2Nob2ljZSA/IE1hdGgubWluKF9jaG9pY2UsIDIpIDogMFxuICB9O1xuXG4gIGlmICh0aGlzLmxvY2FsZSBpbiB0aGlzLnBsdXJhbGl6YXRpb25SdWxlcykge1xuICAgIHJldHVybiB0aGlzLnBsdXJhbGl6YXRpb25SdWxlc1t0aGlzLmxvY2FsZV0uYXBwbHkodGhpcywgW2Nob2ljZSwgY2hvaWNlc0xlbmd0aF0pXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGRlZmF1bHRJbXBsKGNob2ljZSwgY2hvaWNlc0xlbmd0aClcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUudGMgPSBmdW5jdGlvbiB0YyAoa2V5LCBjaG9pY2UpIHtcbiAgICB2YXIgcmVmO1xuXG4gICAgdmFyIHZhbHVlcyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgICB3aGlsZSAoIGxlbi0tID4gMCApIHZhbHVlc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDIgXTtcbiAgcmV0dXJuIChyZWYgPSB0aGlzKS5fdGMuYXBwbHkocmVmLCBbIGtleSwgdGhpcy5sb2NhbGUsIHRoaXMuX2dldE1lc3NhZ2VzKCksIG51bGwsIGNob2ljZSBdLmNvbmNhdCggdmFsdWVzICkpXG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fdGUgPSBmdW5jdGlvbiBfdGUgKGtleSwgbG9jYWxlLCBtZXNzYWdlcykge1xuICAgIHZhciBhcmdzID0gW10sIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGggLSAzO1xuICAgIHdoaWxlICggbGVuLS0gPiAwICkgYXJnc1sgbGVuIF0gPSBhcmd1bWVudHNbIGxlbiArIDMgXTtcblxuICB2YXIgX2xvY2FsZSA9IHBhcnNlQXJncy5hcHBseSh2b2lkIDAsIGFyZ3MpLmxvY2FsZSB8fCBsb2NhbGU7XG4gIHJldHVybiB0aGlzLl9leGlzdChtZXNzYWdlc1tfbG9jYWxlXSwga2V5KVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUudGUgPSBmdW5jdGlvbiB0ZSAoa2V5LCBsb2NhbGUpIHtcbiAgcmV0dXJuIHRoaXMuX3RlKGtleSwgdGhpcy5sb2NhbGUsIHRoaXMuX2dldE1lc3NhZ2VzKCksIGxvY2FsZSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLmdldExvY2FsZU1lc3NhZ2UgPSBmdW5jdGlvbiBnZXRMb2NhbGVNZXNzYWdlIChsb2NhbGUpIHtcbiAgcmV0dXJuIGxvb3NlQ2xvbmUodGhpcy5fdm0ubWVzc2FnZXNbbG9jYWxlXSB8fCB7fSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnNldExvY2FsZU1lc3NhZ2UgPSBmdW5jdGlvbiBzZXRMb2NhbGVNZXNzYWdlIChsb2NhbGUsIG1lc3NhZ2UpIHtcbiAgaWYgKHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID09PSAnd2FybicgfHwgdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UgPT09ICdlcnJvcicpIHtcbiAgICB0aGlzLl9jaGVja0xvY2FsZU1lc3NhZ2UobG9jYWxlLCB0aGlzLl93YXJuSHRtbEluTWVzc2FnZSwgbWVzc2FnZSk7XG4gIH1cbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bS5tZXNzYWdlcywgbG9jYWxlLCBtZXNzYWdlKTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLm1lcmdlTG9jYWxlTWVzc2FnZSA9IGZ1bmN0aW9uIG1lcmdlTG9jYWxlTWVzc2FnZSAobG9jYWxlLCBtZXNzYWdlKSB7XG4gIGlmICh0aGlzLl93YXJuSHRtbEluTWVzc2FnZSA9PT0gJ3dhcm4nIHx8IHRoaXMuX3dhcm5IdG1sSW5NZXNzYWdlID09PSAnZXJyb3InKSB7XG4gICAgdGhpcy5fY2hlY2tMb2NhbGVNZXNzYWdlKGxvY2FsZSwgdGhpcy5fd2Fybkh0bWxJbk1lc3NhZ2UsIG1lc3NhZ2UpO1xuICB9XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubWVzc2FnZXMsIGxvY2FsZSwgbWVyZ2Uoe30sIHRoaXMuX3ZtLm1lc3NhZ2VzW2xvY2FsZV0gfHwge30sIG1lc3NhZ2UpKTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLmdldERhdGVUaW1lRm9ybWF0ID0gZnVuY3Rpb24gZ2V0RGF0ZVRpbWVGb3JtYXQgKGxvY2FsZSkge1xuICByZXR1cm4gbG9vc2VDbG9uZSh0aGlzLl92bS5kYXRlVGltZUZvcm1hdHNbbG9jYWxlXSB8fCB7fSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnNldERhdGVUaW1lRm9ybWF0ID0gZnVuY3Rpb24gc2V0RGF0ZVRpbWVGb3JtYXQgKGxvY2FsZSwgZm9ybWF0KSB7XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0uZGF0ZVRpbWVGb3JtYXRzLCBsb2NhbGUsIGZvcm1hdCk7XG4gIHRoaXMuX2NsZWFyRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXQpO1xufTtcblxuVnVlSTE4bi5wcm90b3R5cGUubWVyZ2VEYXRlVGltZUZvcm1hdCA9IGZ1bmN0aW9uIG1lcmdlRGF0ZVRpbWVGb3JtYXQgKGxvY2FsZSwgZm9ybWF0KSB7XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0uZGF0ZVRpbWVGb3JtYXRzLCBsb2NhbGUsIG1lcmdlKHRoaXMuX3ZtLmRhdGVUaW1lRm9ybWF0c1tsb2NhbGVdIHx8IHt9LCBmb3JtYXQpKTtcbiAgdGhpcy5fY2xlYXJEYXRlVGltZUZvcm1hdChsb2NhbGUsIGZvcm1hdCk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fY2xlYXJEYXRlVGltZUZvcm1hdCA9IGZ1bmN0aW9uIF9jbGVhckRhdGVUaW1lRm9ybWF0IChsb2NhbGUsIGZvcm1hdCkge1xuICBmb3IgKHZhciBrZXkgaW4gZm9ybWF0KSB7XG4gICAgdmFyIGlkID0gbG9jYWxlICsgXCJfX1wiICsga2V5O1xuXG4gICAgaWYgKCF0aGlzLl9kYXRlVGltZUZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGRlbGV0ZSB0aGlzLl9kYXRlVGltZUZvcm1hdHRlcnNbaWRdO1xuICB9XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fbG9jYWxpemVEYXRlVGltZSA9IGZ1bmN0aW9uIF9sb2NhbGl6ZURhdGVUaW1lIChcbiAgdmFsdWUsXG4gIGxvY2FsZSxcbiAgZmFsbGJhY2ssXG4gIGRhdGVUaW1lRm9ybWF0cyxcbiAga2V5XG4pIHtcbiAgdmFyIF9sb2NhbGUgPSBsb2NhbGU7XG4gIHZhciBmb3JtYXRzID0gZGF0ZVRpbWVGb3JtYXRzW19sb2NhbGVdO1xuXG4gIHZhciBjaGFpbiA9IHRoaXMuX2dldExvY2FsZUNoYWluKGxvY2FsZSwgZmFsbGJhY2spO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYWluLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGN1cnJlbnQgPSBfbG9jYWxlO1xuICAgIHZhciBzdGVwID0gY2hhaW5baV07XG4gICAgZm9ybWF0cyA9IGRhdGVUaW1lRm9ybWF0c1tzdGVwXTtcbiAgICBfbG9jYWxlID0gc3RlcDtcbiAgICAvLyBmYWxsYmFjayBsb2NhbGVcbiAgICBpZiAoaXNOdWxsKGZvcm1hdHMpIHx8IGlzTnVsbChmb3JtYXRzW2tleV0pKSB7XG4gICAgICBpZiAoc3RlcCAhPT0gbG9jYWxlICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIXRoaXMuX2lzU2lsZW50VHJhbnNsYXRpb25XYXJuKGtleSkgJiYgIXRoaXMuX2lzU2lsZW50RmFsbGJhY2tXYXJuKGtleSkpIHtcbiAgICAgICAgd2FybigoXCJGYWxsIGJhY2sgdG8gJ1wiICsgc3RlcCArIFwiJyBkYXRldGltZSBmb3JtYXRzIGZyb20gJ1wiICsgY3VycmVudCArIFwiJyBkYXRldGltZSBmb3JtYXRzLlwiKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKGlzTnVsbChmb3JtYXRzKSB8fCBpc051bGwoZm9ybWF0c1trZXldKSkge1xuICAgIHJldHVybiBudWxsXG4gIH0gZWxzZSB7XG4gICAgdmFyIGZvcm1hdCA9IGZvcm1hdHNba2V5XTtcbiAgICB2YXIgaWQgPSBfbG9jYWxlICsgXCJfX1wiICsga2V5O1xuICAgIHZhciBmb3JtYXR0ZXIgPSB0aGlzLl9kYXRlVGltZUZvcm1hdHRlcnNbaWRdO1xuICAgIGlmICghZm9ybWF0dGVyKSB7XG4gICAgICBmb3JtYXR0ZXIgPSB0aGlzLl9kYXRlVGltZUZvcm1hdHRlcnNbaWRdID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoX2xvY2FsZSwgZm9ybWF0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpXG4gIH1cbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLl9kID0gZnVuY3Rpb24gX2QgKHZhbHVlLCBsb2NhbGUsIGtleSkge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgIVZ1ZUkxOG4uYXZhaWxhYmlsaXRpZXMuZGF0ZVRpbWVGb3JtYXQpIHtcbiAgICB3YXJuKCdDYW5ub3QgZm9ybWF0IGEgRGF0ZSB2YWx1ZSBkdWUgdG8gbm90IHN1cHBvcnRlZCBJbnRsLkRhdGVUaW1lRm9ybWF0LicpO1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFrZXkpIHtcbiAgICByZXR1cm4gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlKS5mb3JtYXQodmFsdWUpXG4gIH1cblxuICB2YXIgcmV0ID1cbiAgICB0aGlzLl9sb2NhbGl6ZURhdGVUaW1lKHZhbHVlLCBsb2NhbGUsIHRoaXMuZmFsbGJhY2tMb2NhbGUsIHRoaXMuX2dldERhdGVUaW1lRm9ybWF0cygpLCBrZXkpO1xuICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QocmV0KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpICYmICF0aGlzLl9pc1NpbGVudEZhbGxiYWNrV2FybihrZXkpKSB7XG4gICAgICB3YXJuKChcIkZhbGwgYmFjayB0byBkYXRldGltZSBsb2NhbGl6YXRpb24gb2Ygcm9vdDoga2V5ICdcIiArIGtleSArIFwiJy5cIikpO1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAoIXRoaXMuX3Jvb3QpIHsgdGhyb3cgRXJyb3IoJ3VuZXhwZWN0ZWQgZXJyb3InKSB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3QuJGkxOG4uZCh2YWx1ZSwga2V5LCBsb2NhbGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJldCB8fCAnJ1xuICB9XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5kID0gZnVuY3Rpb24gZCAodmFsdWUpIHtcbiAgICB2YXIgYXJncyA9IFtdLCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoIGxlbi0tID4gMCApIGFyZ3NbIGxlbiBdID0gYXJndW1lbnRzWyBsZW4gKyAxIF07XG5cbiAgdmFyIGxvY2FsZSA9IHRoaXMubG9jYWxlO1xuICB2YXIga2V5ID0gbnVsbDtcblxuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBrZXkgPSBhcmdzWzBdO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYXJnc1swXSkpIHtcbiAgICAgIGlmIChhcmdzWzBdLmxvY2FsZSkge1xuICAgICAgICBsb2NhbGUgPSBhcmdzWzBdLmxvY2FsZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzWzBdLmtleSkge1xuICAgICAgICBrZXkgPSBhcmdzWzBdLmtleTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBrZXkgPSBhcmdzWzBdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGFyZ3NbMV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBsb2NhbGUgPSBhcmdzWzFdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzLl9kKHZhbHVlLCBsb2NhbGUsIGtleSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLmdldE51bWJlckZvcm1hdCA9IGZ1bmN0aW9uIGdldE51bWJlckZvcm1hdCAobG9jYWxlKSB7XG4gIHJldHVybiBsb29zZUNsb25lKHRoaXMuX3ZtLm51bWJlckZvcm1hdHNbbG9jYWxlXSB8fCB7fSlcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLnNldE51bWJlckZvcm1hdCA9IGZ1bmN0aW9uIHNldE51bWJlckZvcm1hdCAobG9jYWxlLCBmb3JtYXQpIHtcbiAgdGhpcy5fdm0uJHNldCh0aGlzLl92bS5udW1iZXJGb3JtYXRzLCBsb2NhbGUsIGZvcm1hdCk7XG4gIHRoaXMuX2NsZWFyTnVtYmVyRm9ybWF0KGxvY2FsZSwgZm9ybWF0KTtcbn07XG5cblZ1ZUkxOG4ucHJvdG90eXBlLm1lcmdlTnVtYmVyRm9ybWF0ID0gZnVuY3Rpb24gbWVyZ2VOdW1iZXJGb3JtYXQgKGxvY2FsZSwgZm9ybWF0KSB7XG4gIHRoaXMuX3ZtLiRzZXQodGhpcy5fdm0ubnVtYmVyRm9ybWF0cywgbG9jYWxlLCBtZXJnZSh0aGlzLl92bS5udW1iZXJGb3JtYXRzW2xvY2FsZV0gfHwge30sIGZvcm1hdCkpO1xuICB0aGlzLl9jbGVhck51bWJlckZvcm1hdChsb2NhbGUsIGZvcm1hdCk7XG59O1xuXG5WdWVJMThuLnByb3RvdHlwZS5fY2xlYXJOdW1iZXJGb3JtYXQgPSBmdW5jdGlvbiBfY2xlYXJOdW1iZXJGb3JtYXQgKGxvY2FsZSwgZm9ybWF0KSB7XG4gIGZvciAodmFyIGtleSBpbiBmb3JtYXQpIHtcbiAgICB2YXIgaWQgPSBsb2NhbGUgKyBcIl9fXCIgKyBrZXk7XG5cbiAgICBpZiAoIXRoaXMuX251bWJlckZvcm1hdHRlcnMuaGFzT3duUHJvcGVydHkoaWQpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGRlbGV0ZSB0aGlzLl9udW1iZXJGb3JtYXR0ZXJzW2lkXTtcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX2dldE51bWJlckZvcm1hdHRlciA9IGZ1bmN0aW9uIF9nZXROdW1iZXJGb3JtYXR0ZXIgKFxuICB2YWx1ZSxcbiAgbG9jYWxlLFxuICBmYWxsYmFjayxcbiAgbnVtYmVyRm9ybWF0cyxcbiAga2V5LFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIF9sb2NhbGUgPSBsb2NhbGU7XG4gIHZhciBmb3JtYXRzID0gbnVtYmVyRm9ybWF0c1tfbG9jYWxlXTtcblxuICB2YXIgY2hhaW4gPSB0aGlzLl9nZXRMb2NhbGVDaGFpbihsb2NhbGUsIGZhbGxiYWNrKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjdXJyZW50ID0gX2xvY2FsZTtcbiAgICB2YXIgc3RlcCA9IGNoYWluW2ldO1xuICAgIGZvcm1hdHMgPSBudW1iZXJGb3JtYXRzW3N0ZXBdO1xuICAgIF9sb2NhbGUgPSBzdGVwO1xuICAgIC8vIGZhbGxiYWNrIGxvY2FsZVxuICAgIGlmIChpc051bGwoZm9ybWF0cykgfHwgaXNOdWxsKGZvcm1hdHNba2V5XSkpIHtcbiAgICAgIGlmIChzdGVwICE9PSBsb2NhbGUgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhdGhpcy5faXNTaWxlbnRUcmFuc2xhdGlvbldhcm4oa2V5KSAmJiAhdGhpcy5faXNTaWxlbnRGYWxsYmFja1dhcm4oa2V5KSkge1xuICAgICAgICB3YXJuKChcIkZhbGwgYmFjayB0byAnXCIgKyBzdGVwICsgXCInIG51bWJlciBmb3JtYXRzIGZyb20gJ1wiICsgY3VycmVudCArIFwiJyBudW1iZXIgZm9ybWF0cy5cIikpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmIChpc051bGwoZm9ybWF0cykgfHwgaXNOdWxsKGZvcm1hdHNba2V5XSkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9IGVsc2Uge1xuICAgIHZhciBmb3JtYXQgPSBmb3JtYXRzW2tleV07XG5cbiAgICB2YXIgZm9ybWF0dGVyO1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAvLyBJZiBvcHRpb25zIHNwZWNpZmllZCAtIGNyZWF0ZSBvbmUgdGltZSBudW1iZXIgZm9ybWF0dGVyXG4gICAgICBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoX2xvY2FsZSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybWF0LCBvcHRpb25zKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBpZCA9IF9sb2NhbGUgKyBcIl9fXCIgKyBrZXk7XG4gICAgICBmb3JtYXR0ZXIgPSB0aGlzLl9udW1iZXJGb3JtYXR0ZXJzW2lkXTtcbiAgICAgIGlmICghZm9ybWF0dGVyKSB7XG4gICAgICAgIGZvcm1hdHRlciA9IHRoaXMuX251bWJlckZvcm1hdHRlcnNbaWRdID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KF9sb2NhbGUsIGZvcm1hdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXR0ZXJcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX24gPSBmdW5jdGlvbiBfbiAodmFsdWUsIGxvY2FsZSwga2V5LCBvcHRpb25zKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoIVZ1ZUkxOG4uYXZhaWxhYmlsaXRpZXMubnVtYmVyRm9ybWF0KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm4oJ0Nhbm5vdCBmb3JtYXQgYSBOdW1iZXIgdmFsdWUgZHVlIHRvIG5vdCBzdXBwb3J0ZWQgSW50bC5OdW1iZXJGb3JtYXQuJyk7XG4gICAgfVxuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFrZXkpIHtcbiAgICB2YXIgbmYgPSAhb3B0aW9ucyA/IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUpIDogbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG5mLmZvcm1hdCh2YWx1ZSlcbiAgfVxuXG4gIHZhciBmb3JtYXR0ZXIgPSB0aGlzLl9nZXROdW1iZXJGb3JtYXR0ZXIodmFsdWUsIGxvY2FsZSwgdGhpcy5mYWxsYmFja0xvY2FsZSwgdGhpcy5fZ2V0TnVtYmVyRm9ybWF0cygpLCBrZXksIG9wdGlvbnMpO1xuICB2YXIgcmV0ID0gZm9ybWF0dGVyICYmIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xuICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QocmV0KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpICYmICF0aGlzLl9pc1NpbGVudEZhbGxiYWNrV2FybihrZXkpKSB7XG4gICAgICB3YXJuKChcIkZhbGwgYmFjayB0byBudW1iZXIgbG9jYWxpemF0aW9uIG9mIHJvb3Q6IGtleSAnXCIgKyBrZXkgKyBcIicuXCIpKTtcbiAgICB9XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKCF0aGlzLl9yb290KSB7IHRocm93IEVycm9yKCd1bmV4cGVjdGVkIGVycm9yJykgfVxuICAgIHJldHVybiB0aGlzLl9yb290LiRpMThuLm4odmFsdWUsIE9iamVjdC5hc3NpZ24oe30sIHsga2V5OiBrZXksIGxvY2FsZTogbG9jYWxlIH0sIG9wdGlvbnMpKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXQgfHwgJydcbiAgfVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUubiA9IGZ1bmN0aW9uIG4gKHZhbHVlKSB7XG4gICAgdmFyIGFyZ3MgPSBbXSwgbGVuID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKCBsZW4tLSA+IDAgKSBhcmdzWyBsZW4gXSA9IGFyZ3VtZW50c1sgbGVuICsgMSBdO1xuXG4gIHZhciBsb2NhbGUgPSB0aGlzLmxvY2FsZTtcbiAgdmFyIGtleSA9IG51bGw7XG4gIHZhciBvcHRpb25zID0gbnVsbDtcblxuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBrZXkgPSBhcmdzWzBdO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYXJnc1swXSkpIHtcbiAgICAgIGlmIChhcmdzWzBdLmxvY2FsZSkge1xuICAgICAgICBsb2NhbGUgPSBhcmdzWzBdLmxvY2FsZTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzWzBdLmtleSkge1xuICAgICAgICBrZXkgPSBhcmdzWzBdLmtleTtcbiAgICAgIH1cblxuICAgICAgLy8gRmlsdGVyIG91dCBudW1iZXIgZm9ybWF0IG9wdGlvbnMgb25seVxuICAgICAgb3B0aW9ucyA9IE9iamVjdC5rZXlzKGFyZ3NbMF0pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBrZXkpIHtcbiAgICAgICAgICB2YXIgb2JqO1xuXG4gICAgICAgIGlmIChpbmNsdWRlcyhudW1iZXJGb3JtYXRLZXlzLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGFjYywgKCBvYmogPSB7fSwgb2JqW2tleV0gPSBhcmdzWzBdW2tleV0sIG9iaiApKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2NcbiAgICAgIH0sIG51bGwpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGtleSA9IGFyZ3NbMF07XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYXJnc1sxXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxvY2FsZSA9IGFyZ3NbMV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXMuX24odmFsdWUsIGxvY2FsZSwga2V5LCBvcHRpb25zKVxufTtcblxuVnVlSTE4bi5wcm90b3R5cGUuX250cCA9IGZ1bmN0aW9uIF9udHAgKHZhbHVlLCBsb2NhbGUsIGtleSwgb3B0aW9ucykge1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKCFWdWVJMThuLmF2YWlsYWJpbGl0aWVzLm51bWJlckZvcm1hdCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB3YXJuKCdDYW5ub3QgZm9ybWF0IHRvIHBhcnRzIGEgTnVtYmVyIHZhbHVlIGR1ZSB0byBub3Qgc3VwcG9ydGVkIEludGwuTnVtYmVyRm9ybWF0LicpO1xuICAgIH1cbiAgICByZXR1cm4gW11cbiAgfVxuXG4gIGlmICgha2V5KSB7XG4gICAgdmFyIG5mID0gIW9wdGlvbnMgPyBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlKSA6IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBuZi5mb3JtYXRUb1BhcnRzKHZhbHVlKVxuICB9XG5cbiAgdmFyIGZvcm1hdHRlciA9IHRoaXMuX2dldE51bWJlckZvcm1hdHRlcih2YWx1ZSwgbG9jYWxlLCB0aGlzLmZhbGxiYWNrTG9jYWxlLCB0aGlzLl9nZXROdW1iZXJGb3JtYXRzKCksIGtleSwgb3B0aW9ucyk7XG4gIHZhciByZXQgPSBmb3JtYXR0ZXIgJiYgZm9ybWF0dGVyLmZvcm1hdFRvUGFydHModmFsdWUpO1xuICBpZiAodGhpcy5faXNGYWxsYmFja1Jvb3QocmV0KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICF0aGlzLl9pc1NpbGVudFRyYW5zbGF0aW9uV2FybihrZXkpKSB7XG4gICAgICB3YXJuKChcIkZhbGwgYmFjayB0byBmb3JtYXQgbnVtYmVyIHRvIHBhcnRzIG9mIHJvb3Q6IGtleSAnXCIgKyBrZXkgKyBcIicgLlwiKSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICghdGhpcy5fcm9vdCkgeyB0aHJvdyBFcnJvcigndW5leHBlY3RlZCBlcnJvcicpIH1cbiAgICByZXR1cm4gdGhpcy5fcm9vdC4kaTE4bi5fbnRwKHZhbHVlLCBsb2NhbGUsIGtleSwgb3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmV0IHx8IFtdXG4gIH1cbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKCBWdWVJMThuLnByb3RvdHlwZSwgcHJvdG90eXBlQWNjZXNzb3JzICk7XG5cbnZhciBhdmFpbGFiaWxpdGllcztcbi8vICRGbG93Rml4TWVcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShWdWVJMThuLCAnYXZhaWxhYmlsaXRpZXMnLCB7XG4gIGdldDogZnVuY3Rpb24gZ2V0ICgpIHtcbiAgICBpZiAoIWF2YWlsYWJpbGl0aWVzKSB7XG4gICAgICB2YXIgaW50bERlZmluZWQgPSB0eXBlb2YgSW50bCAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICBhdmFpbGFiaWxpdGllcyA9IHtcbiAgICAgICAgZGF0ZVRpbWVGb3JtYXQ6IGludGxEZWZpbmVkICYmIHR5cGVvZiBJbnRsLkRhdGVUaW1lRm9ybWF0ICE9PSAndW5kZWZpbmVkJyxcbiAgICAgICAgbnVtYmVyRm9ybWF0OiBpbnRsRGVmaW5lZCAmJiB0eXBlb2YgSW50bC5OdW1iZXJGb3JtYXQgIT09ICd1bmRlZmluZWQnXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBhdmFpbGFiaWxpdGllc1xuICB9XG59KTtcblxuVnVlSTE4bi5pbnN0YWxsID0gaW5zdGFsbDtcblZ1ZUkxOG4udmVyc2lvbiA9ICc4LjE3LjQnO1xuXG5leHBvcnQgZGVmYXVsdCBWdWVJMThuO1xuIiwidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInJvd1wiIH0sIFtcbiAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImNvbC00XCIgfSwgW1xuICAgICAgX2MoXCJoNFwiLCBbX3ZtLl92KF92bS5fcyhfdm0uJHQoXCJzdGVwLnN5bWJvbFwiKSkpXSksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgIHZhbHVlOiBfdm0uY3VzdG9tU3ltYm9sLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJjdXN0b21TeW1ib2xcIlxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJ0ZXh0XCIgfSxcbiAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5jdXN0b21TeW1ib2wgfSxcbiAgICAgICAgb246IHtcbiAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfdm0uY3VzdG9tU3ltYm9sID0gJGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICBdKSxcbiAgICBfdm0uX3YoXCIgXCIpLFxuICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiY29sLTggYm9yZGVyLWxlZnRcIiB9LCBbXG4gICAgICBfYyhcImg0XCIsIFtfdm0uX3YoX3ZtLl9zKF92bS4kdChcInN0ZXAuZm9ybWF0XCIpKSldKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAgeyBzdGF0aWNDbGFzczogXCJyb3dcIiB9LFxuICAgICAgICBfdm0uX2woX3ZtLmF2YWlsYWJsZUZvcm1hdHMsIGZ1bmN0aW9uKHBhdHRlcm4sIHRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAga2V5OiB0cmFuc2Zvcm1hdGlvbixcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicHMtcmFkaW8gY29sLTZcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHsgaWQ6IHRyYW5zZm9ybWF0aW9uIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwicmFkaW9cIiB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiB0cmFuc2Zvcm1hdGlvbiA9PT0gX3ZtLmN1c3RvbVRyYW5zZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJsYWJlbFwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgIF92bS5jdXN0b21UcmFuc2Zvcm1hdGlvbiA9IHRyYW5zZm9ybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uZGlzcGxheVBhdHRlcm4ocGF0dGVybikpICtcbiAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIH0pLFxuICAgICAgICAwXG4gICAgICApXG4gICAgXSlcbiAgXSlcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTFbMF0ucnVsZXNbMF0udXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ3VycmVuY3lGb3JtYXRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC0xWzBdLnJ1bGVzWzBdLnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0N1cnJlbmN5Rm9ybWF0Rm9ybS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0N1cnJlbmN5Rm9ybWF0Rm9ybS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWUwN2MyOTYmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ3VycmVuY3lGb3JtYXRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vQ3VycmVuY3lGb3JtYXRGb3JtLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3RtcC9wcmVzdGFzaG9wL2FkbWluLWRldi90aGVtZXMvbmV3LXRoZW1lL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzFlMDdjMjk2JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzFlMDdjMjk2JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzFlMDdjMjk2JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DdXJyZW5jeUZvcm1hdEZvcm0udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFlMDdjMjk2JlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzFlMDdjMjk2Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJqcy9wYWdlcy9jdXJyZW5jeS9mb3JtL2NvbXBvbmVudHMvQ3VycmVuY3lGb3JtYXRGb3JtLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJjYXJkLWJsb2NrIHJvd1wiLCBhdHRyczogeyBpZDogX3ZtLmlkIH0gfSwgW1xuICAgIF9jKFxuICAgICAgXCJkaXZcIixcbiAgICAgIHsgc3RhdGljQ2xhc3M6IFwiY29sLXNtXCIgfSxcbiAgICAgIFtcbiAgICAgICAgX3ZtLmxhbmd1YWdlc0NvdW50XG4gICAgICAgICAgPyBfYyhcImxhbmd1YWdlLWxpc3RcIiwge1xuICAgICAgICAgICAgICBhdHRyczogeyBsYW5ndWFnZXM6IF92bS5sYW5ndWFnZXMgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzZWxlY3RMYW5ndWFnZTogX3ZtLnNlbGVjdExhbmd1YWdlLFxuICAgICAgICAgICAgICAgIHJlc2V0TGFuZ3VhZ2U6IF92bS5yZXNldExhbmd1YWdlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJjdXJyZW5jeS1tb2RhbFwiLCB7XG4gICAgICAgICAgYXR0cnM6IHsgbGFuZ3VhZ2U6IF92bS5zZWxlY3RlZExhbmd1YWdlIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIGNsb3NlOiBfdm0uY2xvc2VNb2RhbCxcbiAgICAgICAgICAgIGFwcGx5Q3VzdG9taXphdGlvbjogX3ZtLmFwcGx5Q3VzdG9taXphdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIF0sXG4gICAgICAxXG4gICAgKVxuICBdKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcblxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtMVswXS5ydWxlc1swXS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DdXJyZW5jeUZvcm1hdHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtMVswXS5ydWxlc1swXS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DdXJyZW5jeUZvcm1hdHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL0N1cnJlbmN5Rm9ybWF0dGVyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD00OWRkMWM0MCZcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9DdXJyZW5jeUZvcm1hdHRlci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0N1cnJlbmN5Rm9ybWF0dGVyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiL3RtcC9wcmVzdGFzaG9wL2FkbWluLWRldi90aGVtZXMvbmV3LXRoZW1lL25vZGVfbW9kdWxlcy92dWUtaG90LXJlbG9hZC1hcGkvZGlzdC9pbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzQ5ZGQxYzQwJykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzQ5ZGQxYzQwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzQ5ZGQxYzQwJywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9DdXJyZW5jeUZvcm1hdHRlci52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NDlkZDFjNDAmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignNDlkZDFjNDAnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImpzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeUZvcm1hdHRlci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF92bS5sYW5ndWFnZSAhPT0gbnVsbFxuICAgID8gX2MoXG4gICAgICAgIFwibW9kYWxcIixcbiAgICAgICAge1xuICAgICAgICAgIGF0dHJzOiB7IGNvbmZpcm1hdGlvbjogXCJcIiwgXCJtb2RhbC10aXRsZVwiOiBfdm0ubW9kYWxUaXRsZSB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdm0uJGVtaXQoXCJjbG9zZVwiKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbmZpcm06IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRlbWl0KFwiYXBwbHlDdXN0b21pemF0aW9uXCIsIF92bS5jdXN0b21EYXRhKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgICAgeyBzbG90OiBcImJvZHlcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcImN1cnJlbmN5LWZvcm1hdC1mb3JtXCIsIHtcbiAgICAgICAgICAgICAgICBhdHRyczogeyBsYW5ndWFnZTogX3ZtLmxhbmd1YWdlIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLmN1c3RvbURhdGEgPSAkZXZlbnRcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKVxuICAgIDogX3ZtLl9lKClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTFbMF0ucnVsZXNbMF0udXNlWzBdIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtMVswXS5ydWxlc1swXS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DdXJyZW5jeU1vZGFsLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDFkNjgxNDMmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0N1cnJlbmN5TW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5pbXBvcnQgc3R5bGUwIGZyb20gXCIuL0N1cnJlbmN5TW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9MDFkNjgxNDMmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCIwMWQ2ODE0M1wiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi90bXAvcHJlc3Rhc2hvcC9hZG1pbi1kZXYvdGhlbWVzL25ldy10aGVtZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcwMWQ2ODE0MycpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcwMWQ2ODE0MycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcwMWQ2ODE0MycsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MDFkNjgxNDMmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFwaS5yZXJlbmRlcignMDFkNjgxNDMnLCB7XG4gICAgICAgIHJlbmRlcjogcmVuZGVyLFxuICAgICAgICBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZuc1xuICAgICAgfSlcbiAgICB9KVxuICB9XG59XG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcImpzL3BhZ2VzL2N1cnJlbmN5L2Zvcm0vY29tcG9uZW50cy9DdXJyZW5jeU1vZGFsLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXCJ0YWJsZVwiLCB7IHN0YXRpY0NsYXNzOiBcImdyaWQtdGFibGUganMtZ3JpZC10YWJsZSB0YWJsZVwiIH0sIFtcbiAgICBfYyhcInRoZWFkXCIsIHsgc3RhdGljQ2xhc3M6IFwidGhlYWQtZGVmYXVsdFwiIH0sIFtcbiAgICAgIF9jKFwidHJcIiwgeyBzdGF0aWNDbGFzczogXCJjb2x1bW4taGVhZGVyc1wiIH0sIFtcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHNjb3BlOiBcImNvbFwiIH0gfSwgW1xuICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgXCIgKyBfdm0uX3MoX3ZtLiR0KFwibGlzdC5sYW5ndWFnZVwiKSkgKyBcIlxcbiAgICAgIFwiKVxuICAgICAgICBdKSxcbiAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgX2MoXCJ0aFwiLCB7IGF0dHJzOiB7IHNjb3BlOiBcImNvbFwiIH0gfSwgW1xuICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgXCIgKyBfdm0uX3MoX3ZtLiR0KFwibGlzdC5leGFtcGxlXCIpKSArIFwiXFxuICAgICAgXCIpXG4gICAgICAgIF0pLFxuICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICBfYyhcInRoXCIsIHsgYXR0cnM6IHsgc2NvcGU6IFwiY29sXCIgfSB9LCBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ0ZXh0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KFwiXFxuICAgICAgICAgIFwiICsgX3ZtLl9zKF92bS4kdChcImxpc3QuZWRpdFwiKSkgKyBcIlxcbiAgICAgICAgXCIpXG4gICAgICAgICAgXSlcbiAgICAgICAgXSksXG4gICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgIF9jKFwidGhcIiwgeyBhdHRyczogeyBzY29wZTogXCJjb2xcIiB9IH0sIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImdyaWQtYWN0aW9ucy1oZWFkZXItdGV4dFwiIH0sIFtcbiAgICAgICAgICAgIF92bS5fdihcIlxcbiAgICAgICAgICBcIiArIF92bS5fcyhfdm0uJHQoXCJsaXN0LnJlc2V0XCIpKSArIFwiXFxuICAgICAgICBcIilcbiAgICAgICAgICBdKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdKSxcbiAgICBfdm0uX3YoXCIgXCIpLFxuICAgIF9jKFxuICAgICAgXCJ0Ym9keVwiLFxuICAgICAgX3ZtLl9sKF92bS5sYW5ndWFnZXMsIGZ1bmN0aW9uKGxhbmd1YWdlKSB7XG4gICAgICAgIHJldHVybiBfYyhcInRyXCIsIHsga2V5OiBsYW5ndWFnZS5pZCB9LCBbXG4gICAgICAgICAgX2MoXCJ0ZFwiLCBbX3ZtLl92KFwiXFxuICAgICAgICBcIiArIF92bS5fcyhsYW5ndWFnZS5uYW1lKSArIFwiXFxuICAgICAgXCIpXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgXCJcXG4gICAgICAgIFwiICsgX3ZtLl9zKF92bS5kaXNwbGF5Rm9ybWF0KGxhbmd1YWdlKSkgKyBcIlxcbiAgICAgIFwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcInRkXCIsIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYnRuLWdyb3VwLWFjdGlvbiB0ZXh0LXJpZ2h0XCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImJ0bi1ncm91cFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ0blwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS4kZW1pdChcInNlbGVjdExhbmd1YWdlXCIsIGxhbmd1YWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIFtfYyhcImlcIiwgeyBzdGF0aWNDbGFzczogXCJtYXRlcmlhbC1pY29uc1wiIH0sIFtfdm0uX3YoXCJlZGl0XCIpXSldXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwidGRcIiwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJidG4tZ3JvdXAtYWN0aW9uIHRleHQtcmlnaHRcIiB9LCBbXG4gICAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiYnRuLWdyb3VwXCIgfSwgW1xuICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnRuXCIsXG4gICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLiRlbWl0KFwicmVzZXRMYW5ndWFnZVwiLCBsYW5ndWFnZSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIF9jKFwiaVwiLCB7IHN0YXRpY0NsYXNzOiBcIm1hdGVyaWFsLWljb25zXCIgfSwgW1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcInJlZnJlc2hcIilcbiAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgICB9KSxcbiAgICAgIDBcbiAgICApXG4gIF0pXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuXG5leHBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/Y2xvbmVkUnVsZVNldC0xWzBdLnJ1bGVzWzBdLnVzZVswXSEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0xhbmd1YWdlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanM/P2Nsb25lZFJ1bGVTZXQtMVswXS5ydWxlc1swXS51c2VbMF0hLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9MYW5ndWFnZUxpc3QudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9MYW5ndWFnZUxpc3QudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWM1MGZkMzgyJlwiXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0xhbmd1YWdlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0xhbmd1YWdlTGlzdC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi90bXAvcHJlc3Rhc2hvcC9hZG1pbi1kZXYvdGhlbWVzL25ldy10aGVtZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCdjNTBmZDM4MicpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCdjNTBmZDM4MicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCdjNTBmZDM4MicsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTGFuZ3VhZ2VMaXN0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1jNTBmZDM4MiZcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgYXBpLnJlcmVuZGVyKCdjNTBmZDM4MicsIHtcbiAgICAgICAgcmVuZGVyOiByZW5kZXIsXG4gICAgICAgIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwianMvcGFnZXMvY3VycmVuY3kvZm9ybS9jb21wb25lbnRzL0xhbmd1YWdlTGlzdC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAgW1xuICAgICAgX2MoXCJ0cmFuc2l0aW9uXCIsIHsgYXR0cnM6IHsgbmFtZTogXCJmYWRlXCIgfSB9LCBbXG4gICAgICAgIF9jKFxuICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtb2RhbCBzaG93XCIgfSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyByb2xlOiBcImRvY3VtZW50XCIgfVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJjbGljay1vdXRzaWRlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtY2xpY2stb3V0c2lkZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5jbG9zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwiY2xvc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibW9kYWwtY29udGVudFwiLFxuICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IFwibW9kYWxUaXRsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1kZXNjcmliZWRieVwiOiBcIm1vZGFsRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImhlYWRlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibW9kYWwtaGVhZGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3QoXCJoZWFkZXJcIiwgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcImg1XCIsIHsgc3RhdGljQ2xhc3M6IFwibW9kYWwtdGl0bGVcIiB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLm1vZGFsVGl0bGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjbG9zZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkYXRhLWRpc21pc3NcIjogXCJtb2RhbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImFyaWEtbGFiZWxcIjogXCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpY2s6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF92bS5jbG9zZSgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFwic3BhblwiLCB7IGF0dHJzOiB7IFwiYXJpYS1oaWRkZW5cIjogXCJ0cnVlXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcIsOXXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgXCJzZWN0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtb2RhbC1ib2R5XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl90KFwiYm9keVwiKV0sXG4gICAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICBcImZvb3RlclwiLFxuICAgICAgICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwibW9kYWwtZm9vdGVyXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAhX3ZtLmNvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IF92bS5fdChcImZvb3RlclwiLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYXJpYS1sYWJlbFwiOiBcIkNsb3NlIG1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3ZtLmNsb3NlKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgICBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fcyhfdm0uY2xvc2VMYWJlbCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF92bS5jb25maXJtYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdm0uX3QoXCJmb290ZXItY29uZmlybWF0aW9uXCIsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJhcmlhLWxhYmVsXCI6IFwiQ2xvc2UgbW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uY2xvc2UoJGV2ZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92bS5fdihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXFxuICAgICAgICAgICAgICAgIFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl9zKF92bS5jYW5jZWxMYWJlbCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYnV0dG9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJidG4gYnRuLXByaW1hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImJ1dHRvblwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0uY29uZmlybSgkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcXG4gICAgICAgICAgICAgICAgXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uX3MoX3ZtLmNvbmZpcm1MYWJlbCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX3ZtLl90KFwib3V0c2lkZVwiKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgMlxuICAgICAgICApXG4gICAgICBdKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgIHN0YXRpY0NsYXNzOiBcIm1vZGFsLWJhY2tkcm9wIHNob3dcIixcbiAgICAgICAgb246IHtcbiAgICAgICAgICBjbGljazogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICByZXR1cm4gX3ZtLmNsb3NlKCRldmVudClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG5cbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTFbMF0ucnVsZXNbMF0udXNlWzBdIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzPz9jbG9uZWRSdWxlU2V0LTFbMF0ucnVsZXNbMF0udXNlWzBdIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIiwiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSBmcm9tIFwiLi9Nb2RhbC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NGY2NzQwMjUmc2NvcGVkPXRydWUmXCJcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9Nb2RhbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmltcG9ydCBzdHlsZTAgZnJvbSBcIi4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGY2NzQwMjUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCI0ZjY3NDAyNVwiLFxuICBudWxsXG4gIFxuKVxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkge1xuICB2YXIgYXBpID0gcmVxdWlyZShcIi90bXAvcHJlc3Rhc2hvcC9hZG1pbi1kZXYvdGhlbWVzL25ldy10aGVtZS9ub2RlX21vZHVsZXMvdnVlLWhvdC1yZWxvYWQtYXBpL2Rpc3QvaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCc0ZjY3NDAyNScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCc0ZjY3NDAyNScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCc0ZjY3NDAyNScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTRmNjc0MDI1JnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzRmNjc0MDI1Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJqcy92dWUvY29tcG9uZW50cy9Nb2RhbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoXG4gIHNjcmlwdEV4cG9ydHMsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmdW5jdGlvbmFsVGVtcGxhdGUsXG4gIGluamVjdFN0eWxlcyxcbiAgc2NvcGVJZCxcbiAgbW9kdWxlSWRlbnRpZmllciwgLyogc2VydmVyIG9ubHkgKi9cbiAgc2hhZG93TW9kZSAvKiB2dWUtY2xpIG9ubHkgKi9cbikge1xuICAvLyBWdWUuZXh0ZW5kIGNvbnN0cnVjdG9yIGV4cG9ydCBpbnRlcm9wXG4gIHZhciBvcHRpb25zID0gdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbidcbiAgICA/IHNjcmlwdEV4cG9ydHMub3B0aW9uc1xuICAgIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7IC8vIHNlcnZlciBidWlsZFxuICAgIGhvb2sgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgICAgLy8gMi4zIGluamVjdGlvblxuICAgICAgY29udGV4dCA9XG4gICAgICAgIGNvbnRleHQgfHwgLy8gY2FjaGVkIGNhbGxcbiAgICAgICAgKHRoaXMuJHZub2RlICYmIHRoaXMuJHZub2RlLnNzckNvbnRleHQpIHx8IC8vIHN0YXRlZnVsXG4gICAgICAgICh0aGlzLnBhcmVudCAmJiB0aGlzLnBhcmVudC4kdm5vZGUgJiYgdGhpcy5wYXJlbnQuJHZub2RlLnNzckNvbnRleHQpIC8vIGZ1bmN0aW9uYWxcbiAgICAgIC8vIDIuMiB3aXRoIHJ1bkluTmV3Q29udGV4dDogdHJ1ZVxuICAgICAgaWYgKCFjb250ZXh0ICYmIHR5cGVvZiBfX1ZVRV9TU1JfQ09OVEVYVF9fICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZXh0ID0gX19WVUVfU1NSX0NPTlRFWFRfX1xuICAgICAgfVxuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCBzdHlsZXNcbiAgICAgIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICAgICAgaW5qZWN0U3R5bGVzLmNhbGwodGhpcywgY29udGV4dClcbiAgICAgIH1cbiAgICAgIC8vIHJlZ2lzdGVyIGNvbXBvbmVudCBtb2R1bGUgaWRlbnRpZmllciBmb3IgYXN5bmMgY2h1bmsgaW5mZXJyZW5jZVxuICAgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMpIHtcbiAgICAgICAgY29udGV4dC5fcmVnaXN0ZXJlZENvbXBvbmVudHMuYWRkKG1vZHVsZUlkZW50aWZpZXIpXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHVzZWQgYnkgc3NyIGluIGNhc2UgY29tcG9uZW50IGlzIGNhY2hlZCBhbmQgYmVmb3JlQ3JlYXRlXG4gICAgLy8gbmV2ZXIgZ2V0cyBjYWxsZWRcbiAgICBvcHRpb25zLl9zc3JSZWdpc3RlciA9IGhvb2tcbiAgfSBlbHNlIGlmIChpbmplY3RTdHlsZXMpIHtcbiAgICBob29rID0gc2hhZG93TW9kZVxuICAgICAgPyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKG9wdGlvbnMuZnVuY3Rpb25hbCA/IHRoaXMucGFyZW50IDogdGhpcykuJHJvb3QuJG9wdGlvbnMuc2hhZG93Um9vdFxuICAgICAgICApXG4gICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24gKGgsIGNvbnRleHQpIHtcbiAgICAgICAgaG9vay5jYWxsKGNvbnRleHQpXG4gICAgICAgIHJldHVybiBvcmlnaW5hbFJlbmRlcihoLCBjb250ZXh0KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhcyBiZWZvcmVDcmVhdGUgaG9va1xuICAgICAgdmFyIGV4aXN0aW5nID0gb3B0aW9ucy5iZWZvcmVDcmVhdGVcbiAgICAgIG9wdGlvbnMuYmVmb3JlQ3JlYXRlID0gZXhpc3RpbmdcbiAgICAgICAgPyBbXS5jb25jYXQoZXhpc3RpbmcsIGhvb2spXG4gICAgICAgIDogW2hvb2tdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBleHBvcnRzOiBzY3JpcHRFeHBvcnRzLFxuICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgfVxufVxuIiwiLyohXG4gKiB2dWUtcmVzb3VyY2UgdjEuNS4xXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcGFnZWtpdC92dWUtcmVzb3VyY2VcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIFByb21pc2VzL0ErIHBvbHlmaWxsIHYxLjEuNCAoaHR0cHM6Ly9naXRodWIuY29tL2JyYW1zdGVpbi9wcm9taXMpXG4gKi9cblxudmFyIFJFU09MVkVEID0gMDtcbnZhciBSRUpFQ1RFRCA9IDE7XG52YXIgUEVORElORyA9IDI7XG5cbmZ1bmN0aW9uIFByb21pc2UkMShleGVjdXRvcikge1xuXG4gICAgdGhpcy5zdGF0ZSA9IFBFTkRJTkc7XG4gICAgdGhpcy52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmRlZmVycmVkID0gW107XG5cbiAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICB0cnkge1xuICAgICAgICBleGVjdXRvcihmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHgpO1xuICAgICAgICB9LCBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qocik7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcHJvbWlzZS5yZWplY3QoZSk7XG4gICAgfVxufVxuXG5Qcm9taXNlJDEucmVqZWN0ID0gZnVuY3Rpb24gKHIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlamVjdChyKTtcbiAgICB9KTtcbn07XG5cblByb21pc2UkMS5yZXNvbHZlID0gZnVuY3Rpb24gKHgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHJlc29sdmUoeCk7XG4gICAgfSk7XG59O1xuXG5Qcm9taXNlJDEuYWxsID0gZnVuY3Rpb24gYWxsKGl0ZXJhYmxlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlJDEoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICB2YXIgY291bnQgPSAwLCByZXN1bHQgPSBbXTtcblxuICAgICAgICBpZiAoaXRlcmFibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZXNvbHZlcihpKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSB4O1xuICAgICAgICAgICAgICAgIGNvdW50ICs9IDE7XG5cbiAgICAgICAgICAgICAgICBpZiAoY291bnQgPT09IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIFByb21pc2UkMS5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmVyKGkpLCByZWplY3QpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5Qcm9taXNlJDEucmFjZSA9IGZ1bmN0aW9uIHJhY2UoaXRlcmFibGUpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIFByb21pc2UkMS5yZXNvbHZlKGl0ZXJhYmxlW2ldKS50aGVuKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbnZhciBwID0gUHJvbWlzZSQxLnByb3RvdHlwZTtcblxucC5yZXNvbHZlID0gZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICAgICAgaWYgKHggPT09IHByb21pc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Byb21pc2Ugc2V0dGxlZCB3aXRoIGl0c2VsZi4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjYWxsZWQgPSBmYWxzZTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdmFyIHRoZW4gPSB4ICYmIHhbJ3RoZW4nXTtcblxuICAgICAgICAgICAgaWYgKHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhlbi5jYWxsKHgsIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoeCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2FsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgaWYgKCFjYWxsZWQpIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlLnJlamVjdChlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb21pc2Uuc3RhdGUgPSBSRVNPTFZFRDtcbiAgICAgICAgcHJvbWlzZS52YWx1ZSA9IHg7XG4gICAgICAgIHByb21pc2Uubm90aWZ5KCk7XG4gICAgfVxufTtcblxucC5yZWplY3QgPSBmdW5jdGlvbiByZWplY3QocmVhc29uKSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuXG4gICAgaWYgKHByb21pc2Uuc3RhdGUgPT09IFBFTkRJTkcpIHtcbiAgICAgICAgaWYgKHJlYXNvbiA9PT0gcHJvbWlzZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZSBzZXR0bGVkIHdpdGggaXRzZWxmLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJvbWlzZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICAgICAgICBwcm9taXNlLnZhbHVlID0gcmVhc29uO1xuICAgICAgICBwcm9taXNlLm5vdGlmeSgpO1xuICAgIH1cbn07XG5cbnAubm90aWZ5ID0gZnVuY3Rpb24gbm90aWZ5KCkge1xuICAgIHZhciBwcm9taXNlID0gdGhpcztcblxuICAgIG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHByb21pc2Uuc3RhdGUgIT09IFBFTkRJTkcpIHtcbiAgICAgICAgICAgIHdoaWxlIChwcm9taXNlLmRlZmVycmVkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBkZWZlcnJlZCA9IHByb21pc2UuZGVmZXJyZWQuc2hpZnQoKSxcbiAgICAgICAgICAgICAgICAgICAgb25SZXNvbHZlZCA9IGRlZmVycmVkWzBdLFxuICAgICAgICAgICAgICAgICAgICBvblJlamVjdGVkID0gZGVmZXJyZWRbMV0sXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUgPSBkZWZlcnJlZFsyXSxcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0ID0gZGVmZXJyZWRbM107XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvbWlzZS5zdGF0ZSA9PT0gUkVTT0xWRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb25SZXNvbHZlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUob25SZXNvbHZlZC5jYWxsKHVuZGVmaW5lZCwgcHJvbWlzZS52YWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHByb21pc2UudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb21pc2Uuc3RhdGUgPT09IFJFSkVDVEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG9uUmVqZWN0ZWQuY2FsbCh1bmRlZmluZWQsIHByb21pc2UudmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KHByb21pc2UudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG5wLnRoZW4gPSBmdW5jdGlvbiB0aGVuKG9uUmVzb2x2ZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHRoaXM7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UkMShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHByb21pc2UuZGVmZXJyZWQucHVzaChbb25SZXNvbHZlZCwgb25SZWplY3RlZCwgcmVzb2x2ZSwgcmVqZWN0XSk7XG4gICAgICAgIHByb21pc2Uubm90aWZ5KCk7XG4gICAgfSk7XG59O1xuXG5wLmNhdGNoID0gZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG59O1xuXG4vKipcbiAqIFByb21pc2UgYWRhcHRlci5cbiAqL1xuXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgd2luZG93LlByb21pc2UgPSBQcm9taXNlJDE7XG59XG5cbmZ1bmN0aW9uIFByb21pc2VPYmooZXhlY3V0b3IsIGNvbnRleHQpIHtcblxuICAgIGlmIChleGVjdXRvciBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gZXhlY3V0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoZXhlY3V0b3IuYmluZChjb250ZXh0KSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbn1cblxuUHJvbWlzZU9iai5hbGwgPSBmdW5jdGlvbiAoaXRlcmFibGUsIGNvbnRleHQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmooUHJvbWlzZS5hbGwoaXRlcmFibGUpLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmVzb2x2ZSA9IGZ1bmN0aW9uICh2YWx1ZSwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJlc29sdmUodmFsdWUpLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmVqZWN0ID0gZnVuY3Rpb24gKHJlYXNvbiwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJlamVjdChyZWFzb24pLCBjb250ZXh0KTtcbn07XG5cblByb21pc2VPYmoucmFjZSA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgY29udGV4dCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihQcm9taXNlLnJhY2UoaXRlcmFibGUpLCBjb250ZXh0KTtcbn07XG5cbnZhciBwJDEgPSBQcm9taXNlT2JqLnByb3RvdHlwZTtcblxucCQxLmJpbmQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG5wJDEudGhlbiA9IGZ1bmN0aW9uIChmdWxmaWxsZWQsIHJlamVjdGVkKSB7XG5cbiAgICBpZiAoZnVsZmlsbGVkICYmIGZ1bGZpbGxlZC5iaW5kICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICBmdWxmaWxsZWQgPSBmdWxmaWxsZWQuYmluZCh0aGlzLmNvbnRleHQpO1xuICAgIH1cblxuICAgIGlmIChyZWplY3RlZCAmJiByZWplY3RlZC5iaW5kICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICByZWplY3RlZCA9IHJlamVjdGVkLmJpbmQodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmoodGhpcy5wcm9taXNlLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCksIHRoaXMuY29udGV4dCk7XG59O1xuXG5wJDEuY2F0Y2ggPSBmdW5jdGlvbiAocmVqZWN0ZWQpIHtcblxuICAgIGlmIChyZWplY3RlZCAmJiByZWplY3RlZC5iaW5kICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgICByZWplY3RlZCA9IHJlamVjdGVkLmJpbmQodGhpcy5jb250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmoodGhpcy5wcm9taXNlLmNhdGNoKHJlamVjdGVkKSwgdGhpcy5jb250ZXh0KTtcbn07XG5cbnAkMS5maW5hbGx5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG5cbiAgICByZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVhc29uKTtcbiAgICB9XG4gICAgKTtcbn07XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbnMuXG4gKi9cblxudmFyIHJlZiA9IHt9O1xudmFyIGhhc093blByb3BlcnR5ID0gcmVmLmhhc093blByb3BlcnR5O1xudmFyIHJlZiQxID0gW107XG52YXIgc2xpY2UgPSByZWYkMS5zbGljZTtcbnZhciBkZWJ1ZyA9IGZhbHNlLCBudGljaztcblxudmFyIGluQnJvd3NlciA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xuXG5mdW5jdGlvbiBVdGlsIChyZWYpIHtcbiAgICB2YXIgY29uZmlnID0gcmVmLmNvbmZpZztcbiAgICB2YXIgbmV4dFRpY2sgPSByZWYubmV4dFRpY2s7XG5cbiAgICBudGljayA9IG5leHRUaWNrO1xuICAgIGRlYnVnID0gY29uZmlnLmRlYnVnIHx8ICFjb25maWcuc2lsZW50O1xufVxuXG5mdW5jdGlvbiB3YXJuKG1zZykge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVidWcpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdbVnVlUmVzb3VyY2Ugd2Fybl06ICcgKyBtc2cpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBuZXh0VGljayhjYiwgY3R4KSB7XG4gICAgcmV0dXJuIG50aWNrKGNiLCBjdHgpO1xufVxuXG5mdW5jdGlvbiB0cmltKHN0cikge1xuICAgIHJldHVybiBzdHIgPyBzdHIucmVwbGFjZSgvXlxccyp8XFxzKiQvZywgJycpIDogJyc7XG59XG5cbmZ1bmN0aW9uIHRyaW1FbmQoc3RyLCBjaGFycykge1xuXG4gICAgaWYgKHN0ciAmJiBjaGFycyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvXFxzKyQvLCAnJyk7XG4gICAgfVxuXG4gICAgaWYgKCFzdHIgfHwgIWNoYXJzKSB7XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKG5ldyBSZWdFeHAoKFwiW1wiICsgY2hhcnMgKyBcIl0rJFwiKSksICcnKTtcbn1cblxuZnVuY3Rpb24gdG9Mb3dlcihzdHIpIHtcbiAgICByZXR1cm4gc3RyID8gc3RyLnRvTG93ZXJDYXNlKCkgOiAnJztcbn1cblxuZnVuY3Rpb24gdG9VcHBlcihzdHIpIHtcbiAgICByZXR1cm4gc3RyID8gc3RyLnRvVXBwZXJDYXNlKCkgOiAnJztcbn1cblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG5mdW5jdGlvbiBpc1N0cmluZyh2YWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICAgIHJldHVybiBvYmogIT09IG51bGwgJiYgdHlwZW9mIG9iaiA9PT0gJ29iamVjdCc7XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gICAgcmV0dXJuIGlzT2JqZWN0KG9iaikgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iaikgPT0gT2JqZWN0LnByb3RvdHlwZTtcbn1cblxuZnVuY3Rpb24gaXNCbG9iKG9iaikge1xuICAgIHJldHVybiB0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcgJiYgb2JqIGluc3RhbmNlb2YgQmxvYjtcbn1cblxuZnVuY3Rpb24gaXNGb3JtRGF0YShvYmopIHtcbiAgICByZXR1cm4gdHlwZW9mIEZvcm1EYXRhICE9PSAndW5kZWZpbmVkJyAmJiBvYmogaW5zdGFuY2VvZiBGb3JtRGF0YTtcbn1cblxuZnVuY3Rpb24gd2hlbih2YWx1ZSwgZnVsZmlsbGVkLCByZWplY3RlZCkge1xuXG4gICAgdmFyIHByb21pc2UgPSBQcm9taXNlT2JqLnJlc29sdmUodmFsdWUpO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG59XG5cbmZ1bmN0aW9uIG9wdGlvbnMoZm4sIG9iaiwgb3B0cykge1xuXG4gICAgb3B0cyA9IG9wdHMgfHwge307XG5cbiAgICBpZiAoaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgICBvcHRzID0gb3B0cy5jYWxsKG9iaik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKGZuLmJpbmQoeyR2bTogb2JqLCAkb3B0aW9uczogb3B0c30pLCBmbiwgeyRvcHRpb25zOiBvcHRzfSk7XG59XG5cbmZ1bmN0aW9uIGVhY2gob2JqLCBpdGVyYXRvcikge1xuXG4gICAgdmFyIGksIGtleTtcblxuICAgIGlmIChpc0FycmF5KG9iaikpIHtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaXRlcmF0b3IuY2FsbChvYmpbaV0sIG9ialtpXSwgaSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG9iaikpIHtcbiAgICAgICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICBpdGVyYXRvci5jYWxsKG9ialtrZXldLCBvYmpba2V5XSwga2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvYmo7XG59XG5cbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IF9hc3NpZ247XG5cbmZ1bmN0aW9uIG1lcmdlKHRhcmdldCkge1xuXG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICBfbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdHModGFyZ2V0KSB7XG5cbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICAgICAgaWYgKHRhcmdldFtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9hc3NpZ24odGFyZ2V0KSB7XG5cbiAgICB2YXIgYXJncyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIF9tZXJnZSh0YXJnZXQsIHNvdXJjZSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5mdW5jdGlvbiBfbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIGRlZXApIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChkZWVwICYmIChpc1BsYWluT2JqZWN0KHNvdXJjZVtrZXldKSB8fCBpc0FycmF5KHNvdXJjZVtrZXldKSkpIHtcbiAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHNvdXJjZVtrZXldKSAmJiAhaXNQbGFpbk9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRba2V5XSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzQXJyYXkoc291cmNlW2tleV0pICYmICFpc0FycmF5KHRhcmdldFtrZXldKSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfbWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldLCBkZWVwKTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2Vba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFJvb3QgUHJlZml4IFRyYW5zZm9ybS5cbiAqL1xuXG5mdW5jdGlvbiByb290IChvcHRpb25zJCQxLCBuZXh0KSB7XG5cbiAgICB2YXIgdXJsID0gbmV4dChvcHRpb25zJCQxKTtcblxuICAgIGlmIChpc1N0cmluZyhvcHRpb25zJCQxLnJvb3QpICYmICEvXihodHRwcz86KT9cXC8vLnRlc3QodXJsKSkge1xuICAgICAgICB1cmwgPSB0cmltRW5kKG9wdGlvbnMkJDEucm9vdCwgJy8nKSArICcvJyArIHVybDtcbiAgICB9XG5cbiAgICByZXR1cm4gdXJsO1xufVxuXG4vKipcbiAqIFF1ZXJ5IFBhcmFtZXRlciBUcmFuc2Zvcm0uXG4gKi9cblxuZnVuY3Rpb24gcXVlcnkgKG9wdGlvbnMkJDEsIG5leHQpIHtcblxuICAgIHZhciB1cmxQYXJhbXMgPSBPYmplY3Qua2V5cyhVcmwub3B0aW9ucy5wYXJhbXMpLCBxdWVyeSA9IHt9LCB1cmwgPSBuZXh0KG9wdGlvbnMkJDEpO1xuXG4gICAgZWFjaChvcHRpb25zJCQxLnBhcmFtcywgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgICAgaWYgKHVybFBhcmFtcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgICAgICBxdWVyeVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHF1ZXJ5ID0gVXJsLnBhcmFtcyhxdWVyeSk7XG5cbiAgICBpZiAocXVlcnkpIHtcbiAgICAgICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09IC0xID8gJz8nIDogJyYnKSArIHF1ZXJ5O1xuICAgIH1cblxuICAgIHJldHVybiB1cmw7XG59XG5cbi8qKlxuICogVVJMIFRlbXBsYXRlIHYyLjAuNiAoaHR0cHM6Ly9naXRodWIuY29tL2JyYW1zdGVpbi91cmwtdGVtcGxhdGUpXG4gKi9cblxuZnVuY3Rpb24gZXhwYW5kKHVybCwgcGFyYW1zLCB2YXJpYWJsZXMpIHtcblxuICAgIHZhciB0bXBsID0gcGFyc2UodXJsKSwgZXhwYW5kZWQgPSB0bXBsLmV4cGFuZChwYXJhbXMpO1xuXG4gICAgaWYgKHZhcmlhYmxlcykge1xuICAgICAgICB2YXJpYWJsZXMucHVzaC5hcHBseSh2YXJpYWJsZXMsIHRtcGwudmFycyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4cGFuZGVkO1xufVxuXG5mdW5jdGlvbiBwYXJzZSh0ZW1wbGF0ZSkge1xuXG4gICAgdmFyIG9wZXJhdG9ycyA9IFsnKycsICcjJywgJy4nLCAnLycsICc7JywgJz8nLCAnJiddLCB2YXJpYWJsZXMgPSBbXTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHZhcnM6IHZhcmlhYmxlcyxcbiAgICAgICAgZXhwYW5kOiBmdW5jdGlvbiBleHBhbmQoY29udGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoL1xceyhbXnt9XSspXFx9fChbXnt9XSspL2csIGZ1bmN0aW9uIChfLCBleHByZXNzaW9uLCBsaXRlcmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb24pIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgb3BlcmF0b3IgPSBudWxsLCB2YWx1ZXMgPSBbXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmF0b3JzLmluZGV4T2YoZXhwcmVzc2lvbi5jaGFyQXQoMCkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IgPSBleHByZXNzaW9uLmNoYXJBdCgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBleHByZXNzaW9uLnN1YnN0cigxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24uc3BsaXQoLywvZykuZm9yRWFjaChmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSAvKFteOipdKikoPzo6KFxcZCspfChcXCopKT8vLmV4ZWModmFyaWFibGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2guYXBwbHkodmFsdWVzLCBnZXRWYWx1ZXMoY29udGV4dCwgb3BlcmF0b3IsIHRtcFsxXSwgdG1wWzJdIHx8IHRtcFszXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLnB1c2godG1wWzFdKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yICYmIG9wZXJhdG9yICE9PSAnKycpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcGFyYXRvciA9ICcsJztcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnPycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSAnJic7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdG9yICE9PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3IgPSBvcGVyYXRvcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh2YWx1ZXMubGVuZ3RoICE9PSAwID8gb3BlcmF0b3IgOiAnJykgKyB2YWx1ZXMuam9pbihzZXBhcmF0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5qb2luKCcsJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXNlcnZlZChsaXRlcmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlcyhjb250ZXh0LCBvcGVyYXRvciwga2V5LCBtb2RpZmllcikge1xuXG4gICAgdmFyIHZhbHVlID0gY29udGV4dFtrZXldLCByZXN1bHQgPSBbXTtcblxuICAgIGlmIChpc0RlZmluZWQodmFsdWUpICYmIHZhbHVlICE9PSAnJykge1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGlmIChtb2RpZmllciAmJiBtb2RpZmllciAhPT0gJyonKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcoMCwgcGFyc2VJbnQobW9kaWZpZXIsIDEwKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVZhbHVlKG9wZXJhdG9yLCB2YWx1ZSwgaXNLZXlPcGVyYXRvcihvcGVyYXRvcikgPyBrZXkgOiBudWxsKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobW9kaWZpZXIgPT09ICcqJykge1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZS5maWx0ZXIoaXNEZWZpbmVkKS5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlLCBpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSA/IGtleSA6IG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0RlZmluZWQodmFsdWVba10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVmFsdWUob3BlcmF0b3IsIHZhbHVlW2tdLCBrKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHRtcCA9IFtdO1xuXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLmZpbHRlcihpc0RlZmluZWQpLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0bXAucHVzaChlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXModmFsdWUpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0RlZmluZWQodmFsdWVba10pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGspKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAucHVzaChlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWVba10udG9TdHJpbmcoKSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNLZXlPcGVyYXRvcihvcGVyYXRvcikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScgKyB0bXAuam9pbignLCcpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRtcC5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godG1wLmpvaW4oJywnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnOycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJycgJiYgKG9wZXJhdG9yID09PSAnJicgfHwgb3BlcmF0b3IgPT09ICc/JykpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nKTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKCcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc0tleU9wZXJhdG9yKG9wZXJhdG9yKSB7XG4gICAgcmV0dXJuIG9wZXJhdG9yID09PSAnOycgfHwgb3BlcmF0b3IgPT09ICcmJyB8fCBvcGVyYXRvciA9PT0gJz8nO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVWYWx1ZShvcGVyYXRvciwgdmFsdWUsIGtleSkge1xuXG4gICAgdmFsdWUgPSAob3BlcmF0b3IgPT09ICcrJyB8fCBvcGVyYXRvciA9PT0gJyMnKSA/IGVuY29kZVJlc2VydmVkKHZhbHVlKSA6IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGVuY29kZVJlc2VydmVkKHN0cikge1xuICAgIHJldHVybiBzdHIuc3BsaXQoLyglWzAtOUEtRmEtZl17Mn0pL2cpLm1hcChmdW5jdGlvbiAocGFydCkge1xuICAgICAgICBpZiAoIS8lWzAtOUEtRmEtZl0vLnRlc3QocGFydCkpIHtcbiAgICAgICAgICAgIHBhcnQgPSBlbmNvZGVVUkkocGFydCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfSkuam9pbignJyk7XG59XG5cbi8qKlxuICogVVJMIFRlbXBsYXRlIChSRkMgNjU3MCkgVHJhbnNmb3JtLlxuICovXG5cbmZ1bmN0aW9uIHRlbXBsYXRlIChvcHRpb25zKSB7XG5cbiAgICB2YXIgdmFyaWFibGVzID0gW10sIHVybCA9IGV4cGFuZChvcHRpb25zLnVybCwgb3B0aW9ucy5wYXJhbXMsIHZhcmlhYmxlcyk7XG5cbiAgICB2YXJpYWJsZXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGRlbGV0ZSBvcHRpb25zLnBhcmFtc1trZXldO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVybDtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBVUkwgdGVtcGxhdGluZy5cbiAqL1xuXG5mdW5jdGlvbiBVcmwodXJsLCBwYXJhbXMpIHtcblxuICAgIHZhciBzZWxmID0gdGhpcyB8fCB7fSwgb3B0aW9ucyQkMSA9IHVybCwgdHJhbnNmb3JtO1xuXG4gICAgaWYgKGlzU3RyaW5nKHVybCkpIHtcbiAgICAgICAgb3B0aW9ucyQkMSA9IHt1cmw6IHVybCwgcGFyYW1zOiBwYXJhbXN9O1xuICAgIH1cblxuICAgIG9wdGlvbnMkJDEgPSBtZXJnZSh7fSwgVXJsLm9wdGlvbnMsIHNlbGYuJG9wdGlvbnMsIG9wdGlvbnMkJDEpO1xuXG4gICAgVXJsLnRyYW5zZm9ybXMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikge1xuXG4gICAgICAgIGlmIChpc1N0cmluZyhoYW5kbGVyKSkge1xuICAgICAgICAgICAgaGFuZGxlciA9IFVybC50cmFuc2Zvcm1baGFuZGxlcl07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgICAgICAgICAgdHJhbnNmb3JtID0gZmFjdG9yeShoYW5kbGVyLCB0cmFuc2Zvcm0sIHNlbGYuJHZtKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdHJhbnNmb3JtKG9wdGlvbnMkJDEpO1xufVxuXG4vKipcbiAqIFVybCBvcHRpb25zLlxuICovXG5cblVybC5vcHRpb25zID0ge1xuICAgIHVybDogJycsXG4gICAgcm9vdDogbnVsbCxcbiAgICBwYXJhbXM6IHt9XG59O1xuXG4vKipcbiAqIFVybCB0cmFuc2Zvcm1zLlxuICovXG5cblVybC50cmFuc2Zvcm0gPSB7dGVtcGxhdGU6IHRlbXBsYXRlLCBxdWVyeTogcXVlcnksIHJvb3Q6IHJvb3R9O1xuVXJsLnRyYW5zZm9ybXMgPSBbJ3RlbXBsYXRlJywgJ3F1ZXJ5JywgJ3Jvb3QnXTtcblxuLyoqXG4gKiBFbmNvZGVzIGEgVXJsIHBhcmFtZXRlciBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9ialxuICovXG5cblVybC5wYXJhbXMgPSBmdW5jdGlvbiAob2JqKSB7XG5cbiAgICB2YXIgcGFyYW1zID0gW10sIGVzY2FwZSA9IGVuY29kZVVSSUNvbXBvbmVudDtcblxuICAgIHBhcmFtcy5hZGQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICB2YWx1ZSA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wdXNoKGVzY2FwZShrZXkpICsgJz0nICsgZXNjYXBlKHZhbHVlKSk7XG4gICAgfTtcblxuICAgIHNlcmlhbGl6ZShwYXJhbXMsIG9iaik7XG5cbiAgICByZXR1cm4gcGFyYW1zLmpvaW4oJyYnKS5yZXBsYWNlKC8lMjAvZywgJysnKTtcbn07XG5cbi8qKlxuICogUGFyc2UgYSBVUkwgYW5kIHJldHVybiBpdHMgY29tcG9uZW50cy5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdXJsXG4gKi9cblxuVXJsLnBhcnNlID0gZnVuY3Rpb24gKHVybCkge1xuXG4gICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuXG4gICAgaWYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSkge1xuICAgICAgICBlbC5ocmVmID0gdXJsO1xuICAgICAgICB1cmwgPSBlbC5ocmVmO1xuICAgIH1cblxuICAgIGVsLmhyZWYgPSB1cmw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBocmVmOiBlbC5ocmVmLFxuICAgICAgICBwcm90b2NvbDogZWwucHJvdG9jb2wgPyBlbC5wcm90b2NvbC5yZXBsYWNlKC86JC8sICcnKSA6ICcnLFxuICAgICAgICBwb3J0OiBlbC5wb3J0LFxuICAgICAgICBob3N0OiBlbC5ob3N0LFxuICAgICAgICBob3N0bmFtZTogZWwuaG9zdG5hbWUsXG4gICAgICAgIHBhdGhuYW1lOiBlbC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyA/IGVsLnBhdGhuYW1lIDogJy8nICsgZWwucGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaDogZWwuc2VhcmNoID8gZWwuc2VhcmNoLnJlcGxhY2UoL15cXD8vLCAnJykgOiAnJyxcbiAgICAgICAgaGFzaDogZWwuaGFzaCA/IGVsLmhhc2gucmVwbGFjZSgvXiMvLCAnJykgOiAnJ1xuICAgIH07XG59O1xuXG5mdW5jdGlvbiBmYWN0b3J5KGhhbmRsZXIsIG5leHQsIHZtKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zJCQxKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwodm0sIG9wdGlvbnMkJDEsIG5leHQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZShwYXJhbXMsIG9iaiwgc2NvcGUpIHtcblxuICAgIHZhciBhcnJheSA9IGlzQXJyYXkob2JqKSwgcGxhaW4gPSBpc1BsYWluT2JqZWN0KG9iaiksIGhhc2g7XG5cbiAgICBlYWNoKG9iaiwgZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcblxuICAgICAgICBoYXNoID0gaXNPYmplY3QodmFsdWUpIHx8IGlzQXJyYXkodmFsdWUpO1xuXG4gICAgICAgIGlmIChzY29wZSkge1xuICAgICAgICAgICAga2V5ID0gc2NvcGUgKyAnWycgKyAocGxhaW4gfHwgaGFzaCA/IGtleSA6ICcnKSArICddJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2NvcGUgJiYgYXJyYXkpIHtcbiAgICAgICAgICAgIHBhcmFtcy5hZGQodmFsdWUubmFtZSwgdmFsdWUudmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc2gpIHtcbiAgICAgICAgICAgIHNlcmlhbGl6ZShwYXJhbXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zLmFkZChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFhEb21haW4gY2xpZW50IChJbnRlcm5ldCBFeHBsb3JlcikuXG4gKi9cblxuZnVuY3Rpb24geGRyQ2xpZW50IChyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgdmFyIHhkciA9IG5ldyBYRG9tYWluUmVxdWVzdCgpLCBoYW5kbGVyID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgICAgICAgICAgIHZhciB0eXBlID0gcmVmLnR5cGU7XG5cblxuICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSAwO1xuXG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdsb2FkJykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAyMDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDUwMDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlcXVlc3QucmVzcG9uZFdpdGgoeGRyLnJlc3BvbnNlVGV4dCwge3N0YXR1czogc3RhdHVzfSkpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0LmFib3J0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geGRyLmFib3J0KCk7IH07XG5cbiAgICAgICAgeGRyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuZ2V0VXJsKCkpO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0LnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHhkci50aW1lb3V0ID0gcmVxdWVzdC50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgeGRyLm9ubG9hZCA9IGhhbmRsZXI7XG4gICAgICAgIHhkci5vbmFib3J0ID0gaGFuZGxlcjtcbiAgICAgICAgeGRyLm9uZXJyb3IgPSBoYW5kbGVyO1xuICAgICAgICB4ZHIub250aW1lb3V0ID0gaGFuZGxlcjtcbiAgICAgICAgeGRyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgeGRyLnNlbmQocmVxdWVzdC5nZXRCb2R5KCkpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIENPUlMgSW50ZXJjZXB0b3IuXG4gKi9cblxudmFyIFNVUFBPUlRTX0NPUlMgPSBpbkJyb3dzZXIgJiYgJ3dpdGhDcmVkZW50aWFscycgaW4gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG5cbmZ1bmN0aW9uIGNvcnMgKHJlcXVlc3QpIHtcblxuICAgIGlmIChpbkJyb3dzZXIpIHtcblxuICAgICAgICB2YXIgb3JnVXJsID0gVXJsLnBhcnNlKGxvY2F0aW9uLmhyZWYpO1xuICAgICAgICB2YXIgcmVxVXJsID0gVXJsLnBhcnNlKHJlcXVlc3QuZ2V0VXJsKCkpO1xuXG4gICAgICAgIGlmIChyZXFVcmwucHJvdG9jb2wgIT09IG9yZ1VybC5wcm90b2NvbCB8fCByZXFVcmwuaG9zdCAhPT0gb3JnVXJsLmhvc3QpIHtcblxuICAgICAgICAgICAgcmVxdWVzdC5jcm9zc09yaWdpbiA9IHRydWU7XG4gICAgICAgICAgICByZXF1ZXN0LmVtdWxhdGVIVFRQID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGlmICghU1VQUE9SVFNfQ09SUykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3QuY2xpZW50ID0geGRyQ2xpZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qKlxuICogRm9ybSBkYXRhIEludGVyY2VwdG9yLlxuICovXG5cbmZ1bmN0aW9uIGZvcm0gKHJlcXVlc3QpIHtcblxuICAgIGlmIChpc0Zvcm1EYXRhKHJlcXVlc3QuYm9keSkpIHtcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmRlbGV0ZSgnQ29udGVudC1UeXBlJyk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdChyZXF1ZXN0LmJvZHkpICYmIHJlcXVlc3QuZW11bGF0ZUpTT04pIHtcbiAgICAgICAgcmVxdWVzdC5ib2R5ID0gVXJsLnBhcmFtcyhyZXF1ZXN0LmJvZHkpO1xuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyk7XG4gICAgfVxuXG59XG5cbi8qKlxuICogSlNPTiBJbnRlcmNlcHRvci5cbiAqL1xuXG5mdW5jdGlvbiBqc29uIChyZXF1ZXN0KSB7XG5cbiAgICB2YXIgdHlwZSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpIHx8ICcnO1xuXG4gICAgaWYgKGlzT2JqZWN0KHJlcXVlc3QuYm9keSkgJiYgdHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgPT09IDApIHtcbiAgICAgICAgcmVxdWVzdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkocmVxdWVzdC5ib2R5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJvZHlUZXh0ID8gd2hlbihyZXNwb25zZS50ZXh0KCksIGZ1bmN0aW9uICh0ZXh0KSB7XG5cbiAgICAgICAgICAgIHZhciB0eXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtVHlwZScpIHx8ICcnO1xuXG4gICAgICAgICAgICBpZiAodHlwZS5pbmRleE9mKCdhcHBsaWNhdGlvbi9qc29uJykgPT09IDAgfHwgaXNKc29uKHRleHQpKSB7XG5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5ib2R5ID0gSlNPTi5wYXJzZSh0ZXh0KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmJvZHkgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5ib2R5ID0gdGV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuXG4gICAgICAgIH0pIDogcmVzcG9uc2U7XG5cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc0pzb24oc3RyKSB7XG5cbiAgICB2YXIgc3RhcnQgPSBzdHIubWF0Y2goL15cXHMqKFxcW3xcXHspLyk7XG4gICAgdmFyIGVuZCA9IHsnWyc6IC9dXFxzKiQvLCAneyc6IC99XFxzKiQvfTtcblxuICAgIHJldHVybiBzdGFydCAmJiBlbmRbc3RhcnRbMV1dLnRlc3Qoc3RyKTtcbn1cblxuLyoqXG4gKiBKU09OUCBjbGllbnQgKEJyb3dzZXIpLlxuICovXG5cbmZ1bmN0aW9uIGpzb25wQ2xpZW50IChyZXF1ZXN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgdmFyIG5hbWUgPSByZXF1ZXN0Lmpzb25wIHx8ICdjYWxsYmFjaycsIGNhbGxiYWNrID0gcmVxdWVzdC5qc29ucENhbGxiYWNrIHx8ICdfanNvbnAnICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpLCBib2R5ID0gbnVsbCwgaGFuZGxlciwgc2NyaXB0O1xuXG4gICAgICAgIGhhbmRsZXIgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IHJlZi50eXBlO1xuXG5cbiAgICAgICAgICAgIHZhciBzdGF0dXMgPSAwO1xuXG4gICAgICAgICAgICBpZiAodHlwZSA9PT0gJ2xvYWQnICYmIGJvZHkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSAyMDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgICAgICBzdGF0dXMgPSA1MDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGF0dXMgJiYgd2luZG93W2NhbGxiYWNrXSkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSB3aW5kb3dbY2FsbGJhY2tdO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc2NyaXB0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzb2x2ZShyZXF1ZXN0LnJlc3BvbmRXaXRoKGJvZHksIHtzdGF0dXM6IHN0YXR1c30pKTtcbiAgICAgICAgfTtcblxuICAgICAgICB3aW5kb3dbY2FsbGJhY2tdID0gZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgYm9keSA9IEpTT04uc3RyaW5naWZ5KHJlc3VsdCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmVxdWVzdC5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGhhbmRsZXIoe3R5cGU6ICdhYm9ydCd9KTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0LnBhcmFtc1tuYW1lXSA9IGNhbGxiYWNrO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0LnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQocmVxdWVzdC5hYm9ydCwgcmVxdWVzdC50aW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQuc3JjID0gcmVxdWVzdC5nZXRVcmwoKTtcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGhhbmRsZXI7XG4gICAgICAgIHNjcmlwdC5vbmVycm9yID0gaGFuZGxlcjtcblxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogSlNPTlAgSW50ZXJjZXB0b3IuXG4gKi9cblxuZnVuY3Rpb24ganNvbnAgKHJlcXVlc3QpIHtcblxuICAgIGlmIChyZXF1ZXN0Lm1ldGhvZCA9PSAnSlNPTlAnKSB7XG4gICAgICAgIHJlcXVlc3QuY2xpZW50ID0ganNvbnBDbGllbnQ7XG4gICAgfVxuXG59XG5cbi8qKlxuICogQmVmb3JlIEludGVyY2VwdG9yLlxuICovXG5cbmZ1bmN0aW9uIGJlZm9yZSAocmVxdWVzdCkge1xuXG4gICAgaWYgKGlzRnVuY3Rpb24ocmVxdWVzdC5iZWZvcmUpKSB7XG4gICAgICAgIHJlcXVlc3QuYmVmb3JlLmNhbGwodGhpcywgcmVxdWVzdCk7XG4gICAgfVxuXG59XG5cbi8qKlxuICogSFRUUCBtZXRob2Qgb3ZlcnJpZGUgSW50ZXJjZXB0b3IuXG4gKi9cblxuZnVuY3Rpb24gbWV0aG9kIChyZXF1ZXN0KSB7XG5cbiAgICBpZiAocmVxdWVzdC5lbXVsYXRlSFRUUCAmJiAvXihQVVR8UEFUQ0h8REVMRVRFKSQvaS50ZXN0KHJlcXVlc3QubWV0aG9kKSkge1xuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdYLUhUVFAtTWV0aG9kLU92ZXJyaWRlJywgcmVxdWVzdC5tZXRob2QpO1xuICAgICAgICByZXF1ZXN0Lm1ldGhvZCA9ICdQT1NUJztcbiAgICB9XG5cbn1cblxuLyoqXG4gKiBIZWFkZXIgSW50ZXJjZXB0b3IuXG4gKi9cblxuZnVuY3Rpb24gaGVhZGVyIChyZXF1ZXN0KSB7XG5cbiAgICB2YXIgaGVhZGVycyA9IGFzc2lnbih7fSwgSHR0cC5oZWFkZXJzLmNvbW1vbixcbiAgICAgICAgIXJlcXVlc3QuY3Jvc3NPcmlnaW4gPyBIdHRwLmhlYWRlcnMuY3VzdG9tIDoge30sXG4gICAgICAgIEh0dHAuaGVhZGVyc1t0b0xvd2VyKHJlcXVlc3QubWV0aG9kKV1cbiAgICApO1xuXG4gICAgZWFjaChoZWFkZXJzLCBmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKCFyZXF1ZXN0LmhlYWRlcnMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG59XG5cbi8qKlxuICogWE1MSHR0cCBjbGllbnQgKEJyb3dzZXIpLlxuICovXG5cbmZ1bmN0aW9uIHhockNsaWVudCAocmVxdWVzdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZU9iaihmdW5jdGlvbiAocmVzb2x2ZSkge1xuXG4gICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKSwgaGFuZGxlciA9IGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVxdWVzdC5yZXNwb25kV2l0aChcbiAgICAgICAgICAgICAgICAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzID09PSAxMjIzID8gMjA0IDogeGhyLnN0YXR1cywgLy8gSUU5IHN0YXR1cyBidWdcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1cyA9PT0gMTIyMyA/ICdObyBDb250ZW50JyA6IHRyaW0oeGhyLnN0YXR1c1RleHQpXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBlYWNoKHRyaW0oeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKS5zcGxpdCgnXFxuJyksIGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuaGVhZGVycy5hcHBlbmQocm93LnNsaWNlKDAsIHJvdy5pbmRleE9mKCc6JykpLCByb3cuc2xpY2Uocm93LmluZGV4T2YoJzonKSArIDEpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICByZXF1ZXN0LmFib3J0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geGhyLmFib3J0KCk7IH07XG5cbiAgICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QuZ2V0VXJsKCksIHRydWUpO1xuXG4gICAgICAgIGlmIChyZXF1ZXN0LnRpbWVvdXQpIHtcbiAgICAgICAgICAgIHhoci50aW1lb3V0ID0gcmVxdWVzdC50aW1lb3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3QucmVzcG9uc2VUeXBlICYmICdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9IHJlcXVlc3QucmVzcG9uc2VUeXBlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzIHx8IHJlcXVlc3QuY3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFyZXF1ZXN0LmNyb3NzT3JpZ2luKSB7XG4gICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnMuc2V0KCdYLVJlcXVlc3RlZC1XaXRoJywgJ1hNTEh0dHBSZXF1ZXN0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBkZXByZWNhdGVkIHVzZSBkb3dubG9hZFByb2dyZXNzXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHJlcXVlc3QucHJvZ3Jlc3MpICYmIHJlcXVlc3QubWV0aG9kID09PSAnR0VUJykge1xuICAgICAgICAgICAgeGhyLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcmVxdWVzdC5wcm9ncmVzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1ZXN0LmRvd25sb2FkUHJvZ3Jlc3MpKSB7XG4gICAgICAgICAgICB4aHIuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCByZXF1ZXN0LmRvd25sb2FkUHJvZ3Jlc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZGVwcmVjYXRlZCB1c2UgdXBsb2FkUHJvZ3Jlc3NcbiAgICAgICAgaWYgKGlzRnVuY3Rpb24ocmVxdWVzdC5wcm9ncmVzcykgJiYgL14oUE9TVHxQVVQpJC9pLnRlc3QocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcmVxdWVzdC5wcm9ncmVzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXF1ZXN0LnVwbG9hZFByb2dyZXNzKSAmJiB4aHIudXBsb2FkKSB7XG4gICAgICAgICAgICB4aHIudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcmVxdWVzdC51cGxvYWRQcm9ncmVzcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgeGhyLm9ubG9hZCA9IGhhbmRsZXI7XG4gICAgICAgIHhoci5vbmFib3J0ID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLm9uZXJyb3IgPSBoYW5kbGVyO1xuICAgICAgICB4aHIub250aW1lb3V0ID0gaGFuZGxlcjtcbiAgICAgICAgeGhyLnNlbmQocmVxdWVzdC5nZXRCb2R5KCkpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIEh0dHAgY2xpZW50IChOb2RlKS5cbiAqL1xuXG5mdW5jdGlvbiBub2RlQ2xpZW50IChyZXF1ZXN0KSB7XG5cbiAgICB2YXIgY2xpZW50ID0gcmVxdWlyZSgnZ290Jyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2VPYmooZnVuY3Rpb24gKHJlc29sdmUpIHtcblxuICAgICAgICB2YXIgdXJsID0gcmVxdWVzdC5nZXRVcmwoKTtcbiAgICAgICAgdmFyIGJvZHkgPSByZXF1ZXN0LmdldEJvZHkoKTtcbiAgICAgICAgdmFyIG1ldGhvZCA9IHJlcXVlc3QubWV0aG9kO1xuICAgICAgICB2YXIgaGVhZGVycyA9IHt9LCBoYW5kbGVyO1xuXG4gICAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgbmFtZSkge1xuICAgICAgICAgICAgaGVhZGVyc1tuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjbGllbnQodXJsLCB7Ym9keTogYm9keSwgbWV0aG9kOiBtZXRob2QsIGhlYWRlcnM6IGhlYWRlcnN9KS50aGVuKGhhbmRsZXIgPSBmdW5jdGlvbiAocmVzcCkge1xuXG4gICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSByZXF1ZXN0LnJlc3BvbmRXaXRoKHJlc3AuYm9keSwge1xuICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcC5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHRyaW0ocmVzcC5zdGF0dXNNZXNzYWdlKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGVhY2gocmVzcC5oZWFkZXJzLCBmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS5oZWFkZXJzLnNldChuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG5cbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yJCQxKSB7IHJldHVybiBoYW5kbGVyKGVycm9yJCQxLnJlc3BvbnNlKTsgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQmFzZSBjbGllbnQuXG4gKi9cblxuZnVuY3Rpb24gQ2xpZW50IChjb250ZXh0KSB7XG5cbiAgICB2YXIgcmVxSGFuZGxlcnMgPSBbc2VuZFJlcXVlc3RdLCByZXNIYW5kbGVycyA9IFtdO1xuXG4gICAgaWYgKCFpc09iamVjdChjb250ZXh0KSkge1xuICAgICAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBDbGllbnQocmVxdWVzdCkge1xuICAgICAgICB3aGlsZSAocmVxSGFuZGxlcnMubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgIHZhciBoYW5kbGVyID0gcmVxSGFuZGxlcnMucG9wKCk7XG5cbiAgICAgICAgICAgIGlmIChpc0Z1bmN0aW9uKGhhbmRsZXIpKSB7XG5cbiAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSAodm9pZCAwKSwgbmV4dCA9ICh2b2lkIDApO1xuXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBoYW5kbGVyLmNhbGwoY29udGV4dCwgcmVxdWVzdCwgZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gbmV4dCA9IHZhbDsgfSkgfHwgbmV4dDtcblxuICAgICAgICAgICAgICAgIGlmIChpc09iamVjdChyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzSGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gd2hlbihyZXNwb25zZSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLmNhbGwoY29udGV4dCwgcmVzcG9uc2UpIHx8IHJlc3BvbnNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlamVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbihyZXNwb25zZSwgcmVzb2x2ZSwgcmVqZWN0KTtcblxuICAgICAgICAgICAgICAgICAgICB9LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbihyZXNwb25zZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzSGFuZGxlcnMudW5zaGlmdChyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdhcm4oKFwiSW52YWxpZCBpbnRlcmNlcHRvciBvZiB0eXBlIFwiICsgKHR5cGVvZiBoYW5kbGVyKSArIFwiLCBtdXN0IGJlIGEgZnVuY3Rpb25cIikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQ2xpZW50LnVzZSA9IGZ1bmN0aW9uIChoYW5kbGVyKSB7XG4gICAgICAgIHJlcUhhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgfTtcblxuICAgIHJldHVybiBDbGllbnQ7XG59XG5cbmZ1bmN0aW9uIHNlbmRSZXF1ZXN0KHJlcXVlc3QpIHtcblxuICAgIHZhciBjbGllbnQgPSByZXF1ZXN0LmNsaWVudCB8fCAoaW5Ccm93c2VyID8geGhyQ2xpZW50IDogbm9kZUNsaWVudCk7XG5cbiAgICByZXR1cm4gY2xpZW50KHJlcXVlc3QpO1xufVxuXG4vKipcbiAqIEhUVFAgSGVhZGVycy5cbiAqL1xuXG52YXIgSGVhZGVycyA9IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICAgIHZhciB0aGlzJDEgPSB0aGlzO1xuXG5cbiAgICB0aGlzLm1hcCA9IHt9O1xuXG4gICAgZWFjaChoZWFkZXJzLCBmdW5jdGlvbiAodmFsdWUsIG5hbWUpIHsgcmV0dXJuIHRoaXMkMS5hcHBlbmQobmFtZSwgdmFsdWUpOyB9KTtcbn07XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIGhhcyAobmFtZSkge1xuICAgIHJldHVybiBnZXROYW1lKHRoaXMubWFwLCBuYW1lKSAhPT0gbnVsbDtcbn07XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIGdldCAobmFtZSkge1xuXG4gICAgdmFyIGxpc3QgPSB0aGlzLm1hcFtnZXROYW1lKHRoaXMubWFwLCBuYW1lKV07XG5cbiAgICByZXR1cm4gbGlzdCA/IGxpc3Quam9pbigpIDogbnVsbDtcbn07XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uIGdldEFsbCAobmFtZSkge1xuICAgIHJldHVybiB0aGlzLm1hcFtnZXROYW1lKHRoaXMubWFwLCBuYW1lKV0gfHwgW107XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiBzZXQgKG5hbWUsIHZhbHVlKSB7XG4gICAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShnZXROYW1lKHRoaXMubWFwLCBuYW1lKSB8fCBuYW1lKV0gPSBbdHJpbSh2YWx1ZSldO1xufTtcblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gYXBwZW5kIChuYW1lLCB2YWx1ZSkge1xuXG4gICAgdmFyIGxpc3QgPSB0aGlzLm1hcFtnZXROYW1lKHRoaXMubWFwLCBuYW1lKV07XG5cbiAgICBpZiAobGlzdCkge1xuICAgICAgICBsaXN0LnB1c2godHJpbSh2YWx1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbiBkZWxldGUkMSAobmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtnZXROYW1lKHRoaXMubWFwLCBuYW1lKV07XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbiBkZWxldGVBbGwgKCkge1xuICAgIHRoaXMubWFwID0ge307XG59O1xuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gZm9yRWFjaCAoY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICBlYWNoKHRoaXMubWFwLCBmdW5jdGlvbiAobGlzdCwgbmFtZSkge1xuICAgICAgICBlYWNoKGxpc3QsIGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2YWx1ZSwgbmFtZSwgdGhpcyQxKTsgfSk7XG4gICAgfSk7XG59O1xuXG5mdW5jdGlvbiBnZXROYW1lKG1hcCwgbmFtZSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhtYXApLnJlZHVjZShmdW5jdGlvbiAocHJldiwgY3Vycikge1xuICAgICAgICByZXR1cm4gdG9Mb3dlcihuYW1lKSA9PT0gdG9Mb3dlcihjdXJyKSA/IGN1cnIgOiBwcmV2O1xuICAgIH0sIG51bGwpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcblxuICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+XS9pLnRlc3QobmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJpbShuYW1lKTtcbn1cblxuLyoqXG4gKiBIVFRQIFJlc3BvbnNlLlxuICovXG5cbnZhciBSZXNwb25zZSA9IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHksIHJlZikge1xuICAgIHZhciB1cmwgPSByZWYudXJsO1xuICAgIHZhciBoZWFkZXJzID0gcmVmLmhlYWRlcnM7XG4gICAgdmFyIHN0YXR1cyA9IHJlZi5zdGF0dXM7XG4gICAgdmFyIHN0YXR1c1RleHQgPSByZWYuc3RhdHVzVGV4dDtcblxuXG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy5vayA9IHN0YXR1cyA+PSAyMDAgJiYgc3RhdHVzIDwgMzAwO1xuICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzIHx8IDA7XG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dCB8fCAnJztcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhoZWFkZXJzKTtcbiAgICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gICAgaWYgKGlzU3RyaW5nKGJvZHkpKSB7XG5cbiAgICAgICAgdGhpcy5ib2R5VGV4dCA9IGJvZHk7XG5cbiAgICB9IGVsc2UgaWYgKGlzQmxvYihib2R5KSkge1xuXG4gICAgICAgIHRoaXMuYm9keUJsb2IgPSBib2R5O1xuXG4gICAgICAgIGlmIChpc0Jsb2JUZXh0KGJvZHkpKSB7XG4gICAgICAgICAgICB0aGlzLmJvZHlUZXh0ID0gYmxvYlRleHQoYm9keSk7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5SZXNwb25zZS5wcm90b3R5cGUuYmxvYiA9IGZ1bmN0aW9uIGJsb2IgKCkge1xuICAgIHJldHVybiB3aGVuKHRoaXMuYm9keUJsb2IpO1xufTtcblxuUmVzcG9uc2UucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbiB0ZXh0ICgpIHtcbiAgICByZXR1cm4gd2hlbih0aGlzLmJvZHlUZXh0KTtcbn07XG5cblJlc3BvbnNlLnByb3RvdHlwZS5qc29uID0gZnVuY3Rpb24ganNvbiAoKSB7XG4gICAgcmV0dXJuIHdoZW4odGhpcy50ZXh0KCksIGZ1bmN0aW9uICh0ZXh0KSB7IHJldHVybiBKU09OLnBhcnNlKHRleHQpOyB9KTtcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZXNwb25zZS5wcm90b3R5cGUsICdkYXRhJywge1xuXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvZHk7XG4gICAgfSxcblxuICAgIHNldDogZnVuY3Rpb24gc2V0KGJvZHkpIHtcbiAgICAgICAgdGhpcy5ib2R5ID0gYm9keTtcbiAgICB9XG5cbn0pO1xuXG5mdW5jdGlvbiBibG9iVGV4dChib2R5KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlT2JqKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG5cbiAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgICAgcmVhZGVyLnJlYWRBc1RleHQoYm9keSk7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgICB9O1xuXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzQmxvYlRleHQoYm9keSkge1xuICAgIHJldHVybiBib2R5LnR5cGUuaW5kZXhPZigndGV4dCcpID09PSAwIHx8IGJvZHkudHlwZS5pbmRleE9mKCdqc29uJykgIT09IC0xO1xufVxuXG4vKipcbiAqIEhUVFAgUmVxdWVzdC5cbiAqL1xuXG52YXIgUmVxdWVzdCA9IGZ1bmN0aW9uIFJlcXVlc3Qob3B0aW9ucyQkMSkge1xuXG4gICAgdGhpcy5ib2R5ID0gbnVsbDtcbiAgICB0aGlzLnBhcmFtcyA9IHt9O1xuXG4gICAgYXNzaWduKHRoaXMsIG9wdGlvbnMkJDEsIHtcbiAgICAgICAgbWV0aG9kOiB0b1VwcGVyKG9wdGlvbnMkJDEubWV0aG9kIHx8ICdHRVQnKVxuICAgIH0pO1xuXG4gICAgaWYgKCEodGhpcy5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKTtcbiAgICB9XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5nZXRVcmwgPSBmdW5jdGlvbiBnZXRVcmwgKCkge1xuICAgIHJldHVybiBVcmwodGhpcyk7XG59O1xuXG5SZXF1ZXN0LnByb3RvdHlwZS5nZXRCb2R5ID0gZnVuY3Rpb24gZ2V0Qm9keSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm9keTtcbn07XG5cblJlcXVlc3QucHJvdG90eXBlLnJlc3BvbmRXaXRoID0gZnVuY3Rpb24gcmVzcG9uZFdpdGggKGJvZHksIG9wdGlvbnMkJDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKGJvZHksIGFzc2lnbihvcHRpb25zJCQxIHx8IHt9LCB7dXJsOiB0aGlzLmdldFVybCgpfSkpO1xufTtcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBzZW5kaW5nIG5ldHdvcmsgcmVxdWVzdHMuXG4gKi9cblxudmFyIENPTU1PTl9IRUFERVJTID0geydBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ307XG52YXIgSlNPTl9DT05URU5UX1RZUEUgPSB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnfTtcblxuZnVuY3Rpb24gSHR0cChvcHRpb25zJCQxKSB7XG5cbiAgICB2YXIgc2VsZiA9IHRoaXMgfHwge30sIGNsaWVudCA9IENsaWVudChzZWxmLiR2bSk7XG5cbiAgICBkZWZhdWx0cyhvcHRpb25zJCQxIHx8IHt9LCBzZWxmLiRvcHRpb25zLCBIdHRwLm9wdGlvbnMpO1xuXG4gICAgSHR0cC5pbnRlcmNlcHRvcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikge1xuXG4gICAgICAgIGlmIChpc1N0cmluZyhoYW5kbGVyKSkge1xuICAgICAgICAgICAgaGFuZGxlciA9IEh0dHAuaW50ZXJjZXB0b3JbaGFuZGxlcl07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgICAgICAgICAgY2xpZW50LnVzZShoYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY2xpZW50KG5ldyBSZXF1ZXN0KG9wdGlvbnMkJDEpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuXG4gICAgICAgIHJldHVybiByZXNwb25zZS5vayA/IHJlc3BvbnNlIDogUHJvbWlzZU9iai5yZWplY3QocmVzcG9uc2UpO1xuXG4gICAgfSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlT2JqLnJlamVjdChyZXNwb25zZSk7XG4gICAgfSk7XG59XG5cbkh0dHAub3B0aW9ucyA9IHt9O1xuXG5IdHRwLmhlYWRlcnMgPSB7XG4gICAgcHV0OiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICBwb3N0OiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICBwYXRjaDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgZGVsZXRlOiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICBjb21tb246IENPTU1PTl9IRUFERVJTLFxuICAgIGN1c3RvbToge31cbn07XG5cbkh0dHAuaW50ZXJjZXB0b3IgPSB7YmVmb3JlOiBiZWZvcmUsIG1ldGhvZDogbWV0aG9kLCBqc29ucDoganNvbnAsIGpzb246IGpzb24sIGZvcm06IGZvcm0sIGhlYWRlcjogaGVhZGVyLCBjb3JzOiBjb3JzfTtcbkh0dHAuaW50ZXJjZXB0b3JzID0gWydiZWZvcmUnLCAnbWV0aG9kJywgJ2pzb25wJywgJ2pzb24nLCAnZm9ybScsICdoZWFkZXInLCAnY29ycyddO1xuXG5bJ2dldCcsICdkZWxldGUnLCAnaGVhZCcsICdqc29ucCddLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCQkMSkge1xuXG4gICAgSHR0cFttZXRob2QkJDFdID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucyQkMSkge1xuICAgICAgICByZXR1cm4gdGhpcyhhc3NpZ24ob3B0aW9ucyQkMSB8fCB7fSwge3VybDogdXJsLCBtZXRob2Q6IG1ldGhvZCQkMX0pKTtcbiAgICB9O1xuXG59KTtcblxuWydwb3N0JywgJ3B1dCcsICdwYXRjaCddLmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCQkMSkge1xuXG4gICAgSHR0cFttZXRob2QkJDFdID0gZnVuY3Rpb24gKHVybCwgYm9keSwgb3B0aW9ucyQkMSkge1xuICAgICAgICByZXR1cm4gdGhpcyhhc3NpZ24ob3B0aW9ucyQkMSB8fCB7fSwge3VybDogdXJsLCBtZXRob2Q6IG1ldGhvZCQkMSwgYm9keTogYm9keX0pKTtcbiAgICB9O1xuXG59KTtcblxuLyoqXG4gKiBTZXJ2aWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIFJFU1RmdWwgc2VydmljZXMuXG4gKi9cblxuZnVuY3Rpb24gUmVzb3VyY2UodXJsLCBwYXJhbXMsIGFjdGlvbnMsIG9wdGlvbnMkJDEpIHtcblxuICAgIHZhciBzZWxmID0gdGhpcyB8fCB7fSwgcmVzb3VyY2UgPSB7fTtcblxuICAgIGFjdGlvbnMgPSBhc3NpZ24oe30sXG4gICAgICAgIFJlc291cmNlLmFjdGlvbnMsXG4gICAgICAgIGFjdGlvbnNcbiAgICApO1xuXG4gICAgZWFjaChhY3Rpb25zLCBmdW5jdGlvbiAoYWN0aW9uLCBuYW1lKSB7XG5cbiAgICAgICAgYWN0aW9uID0gbWVyZ2Uoe3VybDogdXJsLCBwYXJhbXM6IGFzc2lnbih7fSwgcGFyYW1zKX0sIG9wdGlvbnMkJDEsIGFjdGlvbik7XG5cbiAgICAgICAgcmVzb3VyY2VbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gKHNlbGYuJGh0dHAgfHwgSHR0cCkob3B0cyhhY3Rpb24sIGFyZ3VtZW50cykpO1xuICAgICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc291cmNlO1xufVxuXG5mdW5jdGlvbiBvcHRzKGFjdGlvbiwgYXJncykge1xuXG4gICAgdmFyIG9wdGlvbnMkJDEgPSBhc3NpZ24oe30sIGFjdGlvbiksIHBhcmFtcyA9IHt9LCBib2R5O1xuXG4gICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuXG4gICAgICAgIGNhc2UgMjpcblxuICAgICAgICAgICAgcGFyYW1zID0gYXJnc1swXTtcbiAgICAgICAgICAgIGJvZHkgPSBhcmdzWzFdO1xuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIDE6XG5cbiAgICAgICAgICAgIGlmICgvXihQT1NUfFBVVHxQQVRDSCkkL2kudGVzdChvcHRpb25zJCQxLm1ldGhvZCkpIHtcbiAgICAgICAgICAgICAgICBib2R5ID0gYXJnc1swXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zID0gYXJnc1swXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAwOlxuXG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuXG4gICAgICAgICAgICB0aHJvdyAnRXhwZWN0ZWQgdXAgdG8gMiBhcmd1bWVudHMgW3BhcmFtcywgYm9keV0sIGdvdCAnICsgYXJncy5sZW5ndGggKyAnIGFyZ3VtZW50cyc7XG4gICAgfVxuXG4gICAgb3B0aW9ucyQkMS5ib2R5ID0gYm9keTtcbiAgICBvcHRpb25zJCQxLnBhcmFtcyA9IGFzc2lnbih7fSwgb3B0aW9ucyQkMS5wYXJhbXMsIHBhcmFtcyk7XG5cbiAgICByZXR1cm4gb3B0aW9ucyQkMTtcbn1cblxuUmVzb3VyY2UuYWN0aW9ucyA9IHtcblxuICAgIGdldDoge21ldGhvZDogJ0dFVCd9LFxuICAgIHNhdmU6IHttZXRob2Q6ICdQT1NUJ30sXG4gICAgcXVlcnk6IHttZXRob2Q6ICdHRVQnfSxcbiAgICB1cGRhdGU6IHttZXRob2Q6ICdQVVQnfSxcbiAgICByZW1vdmU6IHttZXRob2Q6ICdERUxFVEUnfSxcbiAgICBkZWxldGU6IHttZXRob2Q6ICdERUxFVEUnfVxuXG59O1xuXG4vKipcbiAqIEluc3RhbGwgcGx1Z2luLlxuICovXG5cbmZ1bmN0aW9uIHBsdWdpbihWdWUpIHtcblxuICAgIGlmIChwbHVnaW4uaW5zdGFsbGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBVdGlsKFZ1ZSk7XG5cbiAgICBWdWUudXJsID0gVXJsO1xuICAgIFZ1ZS5odHRwID0gSHR0cDtcbiAgICBWdWUucmVzb3VyY2UgPSBSZXNvdXJjZTtcbiAgICBWdWUuUHJvbWlzZSA9IFByb21pc2VPYmo7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWdWUucHJvdG90eXBlLCB7XG5cbiAgICAgICAgJHVybDoge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMoVnVlLnVybCwgdGhpcywgdGhpcy4kb3B0aW9ucy51cmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgICRodHRwOiB7XG4gICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucyhWdWUuaHR0cCwgdGhpcywgdGhpcy4kb3B0aW9ucy5odHRwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAkcmVzb3VyY2U6IHtcbiAgICAgICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBWdWUucmVzb3VyY2UuYmluZCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAkcHJvbWlzZToge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRoaXMkMSA9IHRoaXM7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGV4ZWN1dG9yKSB7IHJldHVybiBuZXcgVnVlLlByb21pc2UoZXhlY3V0b3IsIHRoaXMkMSk7IH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH0pO1xufVxuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LlZ1ZSkge1xuICAgIHdpbmRvdy5WdWUudXNlKHBsdWdpbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdWdpbjtcbmV4cG9ydCB7IFVybCwgSHR0cCwgUmVzb3VyY2UgfTtcbiIsIi8vIHN0eWxlLWxvYWRlcjogQWRkcyBzb21lIGNzcyB0byB0aGUgRE9NIGJ5IGFkZGluZyBhIDxzdHlsZT4gdGFnXG5cbi8vIGxvYWQgdGhlIHN0eWxlc1xudmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMWQ2ODE0MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIpO1xuaWYoY29udGVudC5fX2VzTW9kdWxlKSBjb250ZW50ID0gY29udGVudC5kZWZhdWx0O1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSByZXF1aXJlKFwiIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjc4YWI2NTU4XCIsIGNvbnRlbnQsIGZhbHNlLCB7fSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQ3VycmVuY3lNb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD0wMWQ2ODE0MyZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9DdXJyZW5jeU1vZGFsLnZ1ZT92dWUmdHlwZT1zdHlsZSZpbmRleD0wJmlkPTAxZDY4MTQzJmxhbmc9c2NzcyZzY29wZWQ9dHJ1ZSZcIik7XG4gICAgIGlmKG5ld0NvbnRlbnQuX19lc01vZHVsZSkgbmV3Q29udGVudCA9IG5ld0NvbnRlbnQuZGVmYXVsdDtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59IiwiLy8gc3R5bGUtbG9hZGVyOiBBZGRzIHNvbWUgY3NzIHRvIHRoZSBET00gYnkgYWRkaW5nIGEgPHN0eWxlPiB0YWdcblxuLy8gbG9hZCB0aGUgc3R5bGVzXG52YXIgY29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3N0eWxlUG9zdExvYWRlci5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9Nb2RhbC52dWU/dnVlJnR5cGU9c3R5bGUmaW5kZXg9MCZpZD00ZjY3NDAyNSZsYW5nPXNjc3Mmc2NvcGVkPXRydWUmXCIpO1xuaWYoY29udGVudC5fX2VzTW9kdWxlKSBjb250ZW50ID0gY29udGVudC5kZWZhdWx0O1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciBhZGQgPSByZXF1aXJlKFwiIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikuZGVmYXVsdFxudmFyIHVwZGF0ZSA9IGFkZChcIjBiZGI5MTgwXCIsIGNvbnRlbnQsIGZhbHNlLCB7fSk7XG4vLyBIb3QgTW9kdWxlIFJlcGxhY2VtZW50XG5pZihtb2R1bGUuaG90KSB7XG4gLy8gV2hlbiB0aGUgc3R5bGVzIGNoYW5nZSwgdXBkYXRlIHRoZSA8c3R5bGU+IHRhZ3NcbiBpZighY29udGVudC5sb2NhbHMpIHtcbiAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGY2NzQwMjUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiLCBmdW5jdGlvbigpIHtcbiAgICAgdmFyIG5ld0NvbnRlbnQgPSByZXF1aXJlKFwiISEuLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy9zdHlsZVBvc3RMb2FkZXIuanMhLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Nhc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vTW9kYWwudnVlP3Z1ZSZ0eXBlPXN0eWxlJmluZGV4PTAmaWQ9NGY2NzQwMjUmbGFuZz1zY3NzJnNjb3BlZD10cnVlJlwiKTtcbiAgICAgaWYobmV3Q29udGVudC5fX2VzTW9kdWxlKSBuZXdDb250ZW50ID0gbmV3Q29udGVudC5kZWZhdWx0O1xuICAgICBpZih0eXBlb2YgbmV3Q29udGVudCA9PT0gJ3N0cmluZycpIG5ld0NvbnRlbnQgPSBbW21vZHVsZS5pZCwgbmV3Q29udGVudCwgJyddXTtcbiAgICAgdXBkYXRlKG5ld0NvbnRlbnQpO1xuICAgfSk7XG4gfVxuIC8vIFdoZW4gdGhlIG1vZHVsZSBpcyBkaXNwb3NlZCwgcmVtb3ZlIHRoZSA8c3R5bGU+IHRhZ3NcbiBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24oKSB7IHVwZGF0ZSgpOyB9KTtcbn0iLCIvKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRlLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0VG9TdHlsZXMgKHBhcmVudElkLCBsaXN0KSB7XG4gIHZhciBzdHlsZXMgPSBbXVxuICB2YXIgbmV3U3R5bGVzID0ge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldXG4gICAgdmFyIGlkID0gaXRlbVswXVxuICAgIHZhciBjc3MgPSBpdGVtWzFdXG4gICAgdmFyIG1lZGlhID0gaXRlbVsyXVxuICAgIHZhciBzb3VyY2VNYXAgPSBpdGVtWzNdXG4gICAgdmFyIHBhcnQgPSB7XG4gICAgICBpZDogcGFyZW50SWQgKyAnOicgKyBpLFxuICAgICAgY3NzOiBjc3MsXG4gICAgICBtZWRpYTogbWVkaWEsXG4gICAgICBzb3VyY2VNYXA6IHNvdXJjZU1hcFxuICAgIH1cbiAgICBpZiAoIW5ld1N0eWxlc1tpZF0pIHtcbiAgICAgIHN0eWxlcy5wdXNoKG5ld1N0eWxlc1tpZF0gPSB7IGlkOiBpZCwgcGFydHM6IFtwYXJ0XSB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdTdHlsZXNbaWRdLnBhcnRzLnB1c2gocGFydClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0eWxlc1xufVxuIiwiLypcbiAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcbiAgQXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuICBNb2RpZmllZCBieSBFdmFuIFlvdSBAeXl4OTkwODAzXG4qL1xuXG5pbXBvcnQgbGlzdFRvU3R5bGVzIGZyb20gJy4vbGlzdFRvU3R5bGVzJ1xuXG52YXIgaGFzRG9jdW1lbnQgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnXG5cbmlmICh0eXBlb2YgREVCVUcgIT09ICd1bmRlZmluZWQnICYmIERFQlVHKSB7XG4gIGlmICghaGFzRG9jdW1lbnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgJ3Z1ZS1zdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudC4gJyArXG4gICAgXCJVc2UgeyB0YXJnZXQ6ICdub2RlJyB9IGluIHlvdXIgV2VicGFjayBjb25maWcgdG8gaW5kaWNhdGUgYSBzZXJ2ZXItcmVuZGVyaW5nIGVudmlyb25tZW50LlwiXG4gICkgfVxufVxuXG4vKlxudHlwZSBTdHlsZU9iamVjdCA9IHtcbiAgaWQ6IG51bWJlcjtcbiAgcGFydHM6IEFycmF5PFN0eWxlT2JqZWN0UGFydD5cbn1cblxudHlwZSBTdHlsZU9iamVjdFBhcnQgPSB7XG4gIGNzczogc3RyaW5nO1xuICBtZWRpYTogc3RyaW5nO1xuICBzb3VyY2VNYXA6ID9zdHJpbmdcbn1cbiovXG5cbnZhciBzdHlsZXNJbkRvbSA9IHsvKlxuICBbaWQ6IG51bWJlcl06IHtcbiAgICBpZDogbnVtYmVyLFxuICAgIHJlZnM6IG51bWJlcixcbiAgICBwYXJ0czogQXJyYXk8KG9iaj86IFN0eWxlT2JqZWN0UGFydCkgPT4gdm9pZD5cbiAgfVxuKi99XG5cbnZhciBoZWFkID0gaGFzRG9jdW1lbnQgJiYgKGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXSlcbnZhciBzaW5nbGV0b25FbGVtZW50ID0gbnVsbFxudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwXG52YXIgaXNQcm9kdWN0aW9uID0gZmFsc2VcbnZhciBub29wID0gZnVuY3Rpb24gKCkge31cbnZhciBvcHRpb25zID0gbnVsbFxudmFyIHNzcklkS2V5ID0gJ2RhdGEtdnVlLXNzci1pZCdcblxuLy8gRm9yY2Ugc2luZ2xlLXRhZyBzb2x1dGlvbiBvbiBJRTYtOSwgd2hpY2ggaGFzIGEgaGFyZCBsaW1pdCBvbiB0aGUgIyBvZiA8c3R5bGU+XG4vLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG52YXIgaXNPbGRJRSA9IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9tc2llIFs2LTldXFxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkU3R5bGVzQ2xpZW50IChwYXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlvbiwgX29wdGlvbnMpIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxuXG4gIG9wdGlvbnMgPSBfb3B0aW9ucyB8fCB7fVxuXG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBtYXlSZW1vdmUucHVzaChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICovKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0cy5sZW5ndGggPiBpdGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5sZW5ndGggPSBpdGVtLnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAoKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gIHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCByZW1vdmVcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlWycgKyBzc3JJZEtleSArICd+PVwiJyArIG9iai5pZCArICdcIl0nKVxuXG4gIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBhbmQgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgLy8gc2ltcGx5IGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbm9vcFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBidXQgaW4gZGV2IG1vZGUuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24gQ2hyb21lIGNhbid0IGhhbmRsZSBzb3VyY2UgbWFwIGluIHNlcnZlci1yZW5kZXJlZFxuICAgICAgLy8gc3R5bGUgdGFncyAtIHNvdXJjZSBtYXBzIGluIDxzdHlsZT4gb25seSB3b3JrcyBpZiB0aGUgc3R5bGUgdGFnIGlzXG4gICAgICAvLyBjcmVhdGVkIGFuZCBpbnNlcnRlZCBkeW5hbWljYWxseS4gU28gd2UgcmVtb3ZlIHRoZSBzZXJ2ZXIgcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlcyBhbmQgaW5qZWN0IG5ldyBvbmVzLlxuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc09sZElFKSB7XG4gICAgLy8gdXNlIHNpbmdsZXRvbiBtb2RlIGZvciBJRTkuXG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKytcbiAgICBzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KCkpXG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgZmFsc2UpXG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2UgbXVsdGktc3R5bGUtdGFnIG1vZGUgaW4gYWxsIG90aGVyIGNhc2VzXG4gICAgc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KClcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50KVxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICB1cGRhdGUob2JqKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG4gICAgICAgICAgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiZcbiAgICAgICAgICBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iailcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxudmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnRcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKVxuICB9XG59KSgpXG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5jc3NcblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcylcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcylcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY3NzTm9kZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGVFbGVtZW50LCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3NcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwXG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSlcbiAgfVxuICBpZiAob3B0aW9ucy5zc3JJZCkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoc3NySWRLZXksIG9iai5pZClcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXApIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RldnRvb2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcbiAgICAvLyB0aGlzIG1ha2VzIHNvdXJjZSBtYXBzIGluc2lkZSBzdHlsZSB0YWdzIHdvcmsgcHJvcGVybHkgaW4gQ2hyb21lXG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlVVJMPScgKyBzb3VyY2VNYXAuc291cmNlc1swXSArICcgKi8nXG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyAnICovJ1xuICB9XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzc1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKVxuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSlcbiAgfVxufVxuIiwiaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3Z1ZS5jb21tb24ucHJvZC5qcycpXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vdnVlLmNvbW1vbi5kZXYuanMnKVxufVxuIiwiLyohXG4gKiBWdWUuanMgdjIuNi4xMlxuICogKGMpIDIwMTQtMjAyMCBFdmFuIFlvdVxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cInVzZSBzdHJpY3RcIjt2YXIgZT1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiB0KGUpe3JldHVybiBudWxsPT1lfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWV9ZnVuY3Rpb24gcihlKXtyZXR1cm4hMD09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGV8fFwic3ltYm9sXCI9PXR5cGVvZiBlfHxcImJvb2xlYW5cIj09dHlwZW9mIGV9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlfXZhciBhPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gcyhlKXtyZXR1cm5cIltvYmplY3QgT2JqZWN0XVwiPT09YS5jYWxsKGUpfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cGFyc2VGbG9hdChTdHJpbmcoZSkpO3JldHVybiB0Pj0wJiZNYXRoLmZsb29yKHQpPT09dCYmaXNGaW5pdGUoZSl9ZnVuY3Rpb24gdShlKXtyZXR1cm4gbihlKSYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS50aGVuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhdGNofWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG51bGw9PWU/XCJcIjpBcnJheS5pc0FycmF5KGUpfHxzKGUpJiZlLnRvU3RyaW5nPT09YT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9cGFyc2VGbG9hdChlKTtyZXR1cm4gaXNOYU4odCk/ZTp0fWZ1bmN0aW9uIHAoZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoXCIsXCIpLGk9MDtpPHIubGVuZ3RoO2krKyluW3JbaV1dPSEwO3JldHVybiB0P2Z1bmN0aW9uKGUpe3JldHVybiBuW2UudG9Mb3dlckNhc2UoKV19OmZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfX12YXIgZD1wKFwic2xvdCxjb21wb25lbnRcIiwhMCksdj1wKFwia2V5LHJlZixzbG90LHNsb3Qtc2NvcGUsaXNcIik7ZnVuY3Rpb24gaChlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19dmFyIG09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiB5KGUsdCl7cmV0dXJuIG0uY2FsbChlLHQpfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9T2JqZWN0LmNyZWF0ZShudWxsKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHRbbl18fCh0W25dPWUobikpfX12YXIgXz0vLShcXHcpL2csYj1nKGZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoXyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKTpcIlwifSl9KSwkPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKX0pLHc9L1xcQihbQS1aXSkvZyxDPWcoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSh3LFwiLSQxXCIpLnRvTG93ZXJDYXNlKCl9KTt2YXIgeD1GdW5jdGlvbi5wcm90b3R5cGUuYmluZD9mdW5jdGlvbihlLHQpe3JldHVybiBlLmJpbmQodCl9OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufTtmdW5jdGlvbiBrKGUsdCl7dD10fHwwO2Zvcih2YXIgbj1lLmxlbmd0aC10LHI9bmV3IEFycmF5KG4pO24tLTspcltuXT1lW24rdF07cmV0dXJuIHJ9ZnVuY3Rpb24gQShlLHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBPKGUpe2Zvcih2YXIgdD17fSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXSYmQSh0LGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIFMoZSx0LG4pe312YXIgVD1mdW5jdGlvbihlLHQsbil7cmV0dXJuITF9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9O2Z1bmN0aW9uIE4oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1vKGUpLHI9byh0KTtpZighbnx8IXIpcmV0dXJuIW4mJiFyJiZTdHJpbmcoZSk9PT1TdHJpbmcodCk7dHJ5e3ZhciBpPUFycmF5LmlzQXJyYXkoZSksYT1BcnJheS5pc0FycmF5KHQpO2lmKGkmJmEpcmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGgmJmUuZXZlcnkoZnVuY3Rpb24oZSxuKXtyZXR1cm4gTihlLHRbbl0pfSk7aWYoZSBpbnN0YW5jZW9mIERhdGUmJnQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBlLmdldFRpbWUoKT09PXQuZ2V0VGltZSgpO2lmKGl8fGEpcmV0dXJuITE7dmFyIHM9T2JqZWN0LmtleXMoZSksYz1PYmplY3Qua2V5cyh0KTtyZXR1cm4gcy5sZW5ndGg9PT1jLmxlbmd0aCYmcy5ldmVyeShmdW5jdGlvbihuKXtyZXR1cm4gTihlW25dLHRbbl0pfSl9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylpZihOKGVbbl0sdCkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gRChlKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oKXt0fHwodD0hMCxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fXZhciBMPVwiZGF0YS1zZXJ2ZXItcmVuZGVyZWRcIixNPVtcImNvbXBvbmVudFwiLFwiZGlyZWN0aXZlXCIsXCJmaWx0ZXJcIl0sST1bXCJiZWZvcmVDcmVhdGVcIixcImNyZWF0ZWRcIixcImJlZm9yZU1vdW50XCIsXCJtb3VudGVkXCIsXCJiZWZvcmVVcGRhdGVcIixcInVwZGF0ZWRcIixcImJlZm9yZURlc3Ryb3lcIixcImRlc3Ryb3llZFwiLFwiYWN0aXZhdGVkXCIsXCJkZWFjdGl2YXRlZFwiLFwiZXJyb3JDYXB0dXJlZFwiLFwic2VydmVyUHJlZmV0Y2hcIl0sRj17b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLHByb2R1Y3Rpb25UaXA6ITEsZGV2dG9vbHM6ITEscGVyZm9ybWFuY2U6ITEsZXJyb3JIYW5kbGVyOm51bGwsd2FybkhhbmRsZXI6bnVsbCxpZ25vcmVkRWxlbWVudHM6W10sa2V5Q29kZXM6T2JqZWN0LmNyZWF0ZShudWxsKSxpc1Jlc2VydmVkVGFnOlQsaXNSZXNlcnZlZEF0dHI6VCxpc1Vua25vd25FbGVtZW50OlQsZ2V0VGFnTmFtZXNwYWNlOlMscGFyc2VQbGF0Zm9ybVRhZ05hbWU6RSxtdXN0VXNlUHJvcDpULGFzeW5jOiEwLF9saWZlY3ljbGVIb29rczpJfSxQPS9hLXpBLVpcXHUwMEI3XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjAzRi1cXHUyMDQwXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZELztmdW5jdGlvbiBSKGUsdCxuLHIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohIXIsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9dmFyIEg9bmV3IFJlZ0V4cChcIlteXCIrUC5zb3VyY2UrXCIuJF9cXFxcZF1cIik7dmFyIEIsVT1cIl9fcHJvdG9fX1wiaW57fSx6PVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3csVj1cInVuZGVmaW5lZFwiIT10eXBlb2YgV1hFbnZpcm9ubWVudCYmISFXWEVudmlyb25tZW50LnBsYXRmb3JtLEs9ViYmV1hFbnZpcm9ubWVudC5wbGF0Zm9ybS50b0xvd2VyQ2FzZSgpLEo9eiYmd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSxxPUomJi9tc2llfHRyaWRlbnQvLnRlc3QoSiksVz1KJiZKLmluZGV4T2YoXCJtc2llIDkuMFwiKT4wLFo9SiYmSi5pbmRleE9mKFwiZWRnZS9cIik+MCxHPShKJiZKLmluZGV4T2YoXCJhbmRyb2lkXCIpLEomJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChKKXx8XCJpb3NcIj09PUspLFg9KEomJi9jaHJvbWVcXC9cXGQrLy50ZXN0KEopLEomJi9waGFudG9tanMvLnRlc3QoSiksSiYmSi5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pKSxZPXt9LndhdGNoLFE9ITE7aWYoeil0cnl7dmFyIGVlPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShlZSxcInBhc3NpdmVcIix7Z2V0OmZ1bmN0aW9uKCl7UT0hMH19KSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3QtcGFzc2l2ZVwiLG51bGwsZWUpfWNhdGNoKGUpe312YXIgdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09QiYmKEI9IXomJiFWJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsJiYoZ2xvYmFsLnByb2Nlc3MmJlwic2VydmVyXCI9PT1nbG9iYWwucHJvY2Vzcy5lbnYuVlVFX0VOVikpLEJ9LG5lPXomJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fO2Z1bmN0aW9uIHJlKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJi9uYXRpdmUgY29kZS8udGVzdChlLnRvU3RyaW5nKCkpfXZhciBpZSxvZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZyZShTeW1ib2wpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVmbGVjdCYmcmUoUmVmbGVjdC5vd25LZXlzKTtpZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgU2V0JiZyZShTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuITA9PT10aGlzLnNldFtlXX0sZS5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGUpe3RoaXMuc2V0W2VdPSEwfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2V0PU9iamVjdC5jcmVhdGUobnVsbCl9LGV9KCk7dmFyIGFlPVMsc2U9MCxjZT1mdW5jdGlvbigpe3RoaXMuaWQ9c2UrKyx0aGlzLnN1YnM9W119O2NlLnByb3RvdHlwZS5hZGRTdWI9ZnVuY3Rpb24oZSl7dGhpcy5zdWJzLnB1c2goZSl9LGNlLnByb3RvdHlwZS5yZW1vdmVTdWI9ZnVuY3Rpb24oZSl7aCh0aGlzLnN1YnMsZSl9LGNlLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXtjZS50YXJnZXQmJmNlLnRhcmdldC5hZGREZXAodGhpcyl9LGNlLnByb3RvdHlwZS5ub3RpZnk9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy5zdWJzLnNsaWNlKCksdD0wLG49ZS5sZW5ndGg7dDxuO3QrKyllW3RdLnVwZGF0ZSgpfSxjZS50YXJnZXQ9bnVsbDt2YXIgdWU9W107ZnVuY3Rpb24gbGUoZSl7dWUucHVzaChlKSxjZS50YXJnZXQ9ZX1mdW5jdGlvbiBmZSgpe3VlLnBvcCgpLGNlLnRhcmdldD11ZVt1ZS5sZW5ndGgtMV19dmFyIHBlPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEscyl7dGhpcy50YWc9ZSx0aGlzLmRhdGE9dCx0aGlzLmNoaWxkcmVuPW4sdGhpcy50ZXh0PXIsdGhpcy5lbG09aSx0aGlzLm5zPXZvaWQgMCx0aGlzLmNvbnRleHQ9byx0aGlzLmZuQ29udGV4dD12b2lkIDAsdGhpcy5mbk9wdGlvbnM9dm9pZCAwLHRoaXMuZm5TY29wZUlkPXZvaWQgMCx0aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9YSx0aGlzLmNvbXBvbmVudEluc3RhbmNlPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNPbmNlPSExLHRoaXMuYXN5bmNGYWN0b3J5PXMsdGhpcy5hc3luY01ldGE9dm9pZCAwLHRoaXMuaXNBc3luY1BsYWNlaG9sZGVyPSExfSxkZT17Y2hpbGQ6e2NvbmZpZ3VyYWJsZTohMH19O2RlLmNoaWxkLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbXBvbmVudEluc3RhbmNlfSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhwZS5wcm90b3R5cGUsZGUpO3ZhciB2ZT1mdW5jdGlvbihlKXt2b2lkIDA9PT1lJiYoZT1cIlwiKTt2YXIgdD1uZXcgcGU7cmV0dXJuIHQudGV4dD1lLHQuaXNDb21tZW50PSEwLHR9O2Z1bmN0aW9uIGhlKGUpe3JldHVybiBuZXcgcGUodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiBtZShlKXt2YXIgdD1uZXcgcGUoZS50YWcsZS5kYXRhLGUuY2hpbGRyZW4mJmUuY2hpbGRyZW4uc2xpY2UoKSxlLnRleHQsZS5lbG0sZS5jb250ZXh0LGUuY29tcG9uZW50T3B0aW9ucyxlLmFzeW5jRmFjdG9yeSk7cmV0dXJuIHQubnM9ZS5ucyx0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0NvbW1lbnQ9ZS5pc0NvbW1lbnQsdC5mbkNvbnRleHQ9ZS5mbkNvbnRleHQsdC5mbk9wdGlvbnM9ZS5mbk9wdGlvbnMsdC5mblNjb3BlSWQ9ZS5mblNjb3BlSWQsdC5hc3luY01ldGE9ZS5hc3luY01ldGEsdC5pc0Nsb25lZD0hMCx0fXZhciB5ZT1BcnJheS5wcm90b3R5cGUsZ2U9T2JqZWN0LmNyZWF0ZSh5ZSk7W1wicHVzaFwiLFwicG9wXCIsXCJzaGlmdFwiLFwidW5zaGlmdFwiLFwic3BsaWNlXCIsXCJzb3J0XCIsXCJyZXZlcnNlXCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9eWVbZV07UihnZSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPVtdLHI9YXJndW1lbnRzLmxlbmd0aDtyLS07KW5bcl09YXJndW1lbnRzW3JdO3ZhciBpLG89dC5hcHBseSh0aGlzLG4pLGE9dGhpcy5fX29iX187c3dpdGNoKGUpe2Nhc2VcInB1c2hcIjpjYXNlXCJ1bnNoaWZ0XCI6aT1uO2JyZWFrO2Nhc2VcInNwbGljZVwiOmk9bi5zbGljZSgyKX1yZXR1cm4gaSYmYS5vYnNlcnZlQXJyYXkoaSksYS5kZXAubm90aWZ5KCksb30pfSk7dmFyIF9lPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGdlKSxiZT0hMDtmdW5jdGlvbiAkZShlKXtiZT1lfXZhciB3ZT1mdW5jdGlvbihlKXt2YXIgdDt0aGlzLnZhbHVlPWUsdGhpcy5kZXA9bmV3IGNlLHRoaXMudm1Db3VudD0wLFIoZSxcIl9fb2JfX1wiLHRoaXMpLEFycmF5LmlzQXJyYXkoZSk/KFU/KHQ9Z2UsZS5fX3Byb3RvX189dCk6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj0wLGk9bi5sZW5ndGg7cjxpO3IrKyl7dmFyIG89bltyXTtSKGUsbyx0W29dKX19KGUsZ2UsX2UpLHRoaXMub2JzZXJ2ZUFycmF5KGUpKTp0aGlzLndhbGsoZSl9O2Z1bmN0aW9uIENlKGUsdCl7dmFyIG47aWYobyhlKSYmIShlIGluc3RhbmNlb2YgcGUpKXJldHVybiB5KGUsXCJfX29iX19cIikmJmUuX19vYl9fIGluc3RhbmNlb2Ygd2U/bj1lLl9fb2JfXzpiZSYmIXRlKCkmJihBcnJheS5pc0FycmF5KGUpfHxzKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYobj1uZXcgd2UoZSkpLHQmJm4mJm4udm1Db3VudCsrLG59ZnVuY3Rpb24geGUoZSx0LG4scixpKXt2YXIgbz1uZXcgY2UsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCk7aWYoIWF8fCExIT09YS5jb25maWd1cmFibGUpe3ZhciBzPWEmJmEuZ2V0LGM9YSYmYS5zZXQ7cyYmIWN8fDIhPT1hcmd1bWVudHMubGVuZ3RofHwobj1lW3RdKTt2YXIgdT0haSYmQ2Uobik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9cz9zLmNhbGwoZSk6bjtyZXR1cm4gY2UudGFyZ2V0JiYoby5kZXBlbmQoKSx1JiYodS5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheSh0KSYmZnVuY3Rpb24gZSh0KXtmb3IodmFyIG49dm9pZCAwLHI9MCxpPXQubGVuZ3RoO3I8aTtyKyspKG49dFtyXSkmJm4uX19vYl9fJiZuLl9fb2JfXy5kZXAuZGVwZW5kKCksQXJyYXkuaXNBcnJheShuKSYmZShuKX0odCkpKSx0fSxzZXQ6ZnVuY3Rpb24odCl7dmFyIHI9cz9zLmNhbGwoZSk6bjt0PT09cnx8dCE9dCYmciE9cnx8cyYmIWN8fChjP2MuY2FsbChlLHQpOm49dCx1PSFpJiZDZSh0KSxvLm5vdGlmeSgpKX19KX19ZnVuY3Rpb24ga2UoZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkmJmModCkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKHQgaW4gZSYmISh0IGluIE9iamVjdC5wcm90b3R5cGUpKXJldHVybiBlW3RdPW4sbjt2YXIgcj1lLl9fb2JfXztyZXR1cm4gZS5faXNWdWV8fHImJnIudm1Db3VudD9uOnI/KHhlKHIudmFsdWUsdCxuKSxyLmRlcC5ub3RpZnkoKSxuKTooZVt0XT1uLG4pfWZ1bmN0aW9uIEFlKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmYyh0KSllLnNwbGljZSh0LDEpO2Vsc2V7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8eShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfX13ZS5wcm90b3R5cGUud2Fsaz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9T2JqZWN0LmtleXMoZSksbj0wO248dC5sZW5ndGg7bisrKXhlKGUsdFtuXSl9LHdlLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKUNlKGVbdF0pfTt2YXIgT2U9Ri5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7ZnVuY3Rpb24gU2UoZSx0KXtpZighdClyZXR1cm4gZTtmb3IodmFyIG4scixpLG89b2U/UmVmbGVjdC5vd25LZXlzKHQpOk9iamVjdC5rZXlzKHQpLGE9MDthPG8ubGVuZ3RoO2ErKylcIl9fb2JfX1wiIT09KG49b1thXSkmJihyPWVbbl0saT10W25dLHkoZSxuKT9yIT09aSYmcyhyKSYmcyhpKSYmU2UocixpKTprZShlLG4saSkpO3JldHVybiBlfWZ1bmN0aW9uIFRlKGUsdCxuKXtyZXR1cm4gbj9mdW5jdGlvbigpe3ZhciByPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKG4sbik6dCxpPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZS5jYWxsKG4sbik6ZTtyZXR1cm4gcj9TZShyLGkpOml9OnQ/ZT9mdW5jdGlvbigpe3JldHVybiBTZShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QuY2FsbCh0aGlzLHRoaXMpOnQsXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lLmNhbGwodGhpcyx0aGlzKTplKX06dDplfWZ1bmN0aW9uIEVlKGUsdCl7dmFyIG49dD9lP2UuY29uY2F0KHQpOkFycmF5LmlzQXJyYXkodCk/dDpbdF06ZTtyZXR1cm4gbj9mdW5jdGlvbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKS0xPT09dC5pbmRleE9mKGVbbl0pJiZ0LnB1c2goZVtuXSk7cmV0dXJuIHR9KG4pOm59ZnVuY3Rpb24gTmUoZSx0LG4scil7dmFyIGk9T2JqZWN0LmNyZWF0ZShlfHxudWxsKTtyZXR1cm4gdD9BKGksdCk6aX1PZS5kYXRhPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbj9UZShlLHQsbik6dCYmXCJmdW5jdGlvblwiIT10eXBlb2YgdD9lOlRlKGUsdCl9LEkuZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlXT1FZX0pLE0uZm9yRWFjaChmdW5jdGlvbihlKXtPZVtlK1wic1wiXT1OZX0pLE9lLndhdGNoPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1ZJiYoZT12b2lkIDApLHQ9PT1ZJiYodD12b2lkIDApLCF0KXJldHVybiBPYmplY3QuY3JlYXRlKGV8fG51bGwpO2lmKCFlKXJldHVybiB0O3ZhciBpPXt9O2Zvcih2YXIgbyBpbiBBKGksZSksdCl7dmFyIGE9aVtvXSxzPXRbb107YSYmIUFycmF5LmlzQXJyYXkoYSkmJihhPVthXSksaVtvXT1hP2EuY29uY2F0KHMpOkFycmF5LmlzQXJyYXkocyk/czpbc119cmV0dXJuIGl9LE9lLnByb3BzPU9lLm1ldGhvZHM9T2UuaW5qZWN0PU9lLmNvbXB1dGVkPWZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFlKXJldHVybiB0O3ZhciBpPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIEEoaSxlKSx0JiZBKGksdCksaX0sT2UucHJvdmlkZT1UZTt2YXIgamU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9O2Z1bmN0aW9uIERlKGUsdCxuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYodD10Lm9wdGlvbnMpLGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5wcm9wcztpZihuKXt2YXIgcixpLG89e307aWYoQXJyYXkuaXNBcnJheShuKSlmb3Iocj1uLmxlbmd0aDtyLS07KVwic3RyaW5nXCI9PXR5cGVvZihpPW5bcl0pJiYob1tiKGkpXT17dHlwZTpudWxsfSk7ZWxzZSBpZihzKG4pKWZvcih2YXIgYSBpbiBuKWk9blthXSxvW2IoYSldPXMoaSk/aTp7dHlwZTppfTtlLnByb3BzPW99fSh0KSxmdW5jdGlvbihlLHQpe3ZhciBuPWUuaW5qZWN0O2lmKG4pe3ZhciByPWUuaW5qZWN0PXt9O2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspcltuW2ldXT17ZnJvbTpuW2ldfTtlbHNlIGlmKHMobikpZm9yKHZhciBvIGluIG4pe3ZhciBhPW5bb107cltvXT1zKGEpP0Eoe2Zyb206b30sYSk6e2Zyb206YX19fX0odCksZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXJlY3RpdmVzO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07XCJmdW5jdGlvblwiPT10eXBlb2YgciYmKHRbbl09e2JpbmQ6cix1cGRhdGU6cn0pfX0odCksIXQuX2Jhc2UmJih0LmV4dGVuZHMmJihlPURlKGUsdC5leHRlbmRzLG4pKSx0Lm1peGlucykpZm9yKHZhciByPTAsaT10Lm1peGlucy5sZW5ndGg7cjxpO3IrKyllPURlKGUsdC5taXhpbnNbcl0sbik7dmFyIG8sYT17fTtmb3IobyBpbiBlKWMobyk7Zm9yKG8gaW4gdCl5KGUsbyl8fGMobyk7ZnVuY3Rpb24gYyhyKXt2YXIgaT1PZVtyXXx8amU7YVtyXT1pKGVbcl0sdFtyXSxuLHIpfXJldHVybiBhfWZ1bmN0aW9uIExlKGUsdCxuLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuKXt2YXIgaT1lW3RdO2lmKHkoaSxuKSlyZXR1cm4gaVtuXTt2YXIgbz1iKG4pO2lmKHkoaSxvKSlyZXR1cm4gaVtvXTt2YXIgYT0kKG8pO3JldHVybiB5KGksYSk/aVthXTppW25dfHxpW29dfHxpW2FdfX1mdW5jdGlvbiBNZShlLHQsbixyKXt2YXIgaT10W2VdLG89IXkobixlKSxhPW5bZV0scz1QZShCb29sZWFuLGkudHlwZSk7aWYocz4tMSlpZihvJiYheShpLFwiZGVmYXVsdFwiKSlhPSExO2Vsc2UgaWYoXCJcIj09PWF8fGE9PT1DKGUpKXt2YXIgYz1QZShTdHJpbmcsaS50eXBlKTsoYzwwfHxzPGMpJiYoYT0hMCl9aWYodm9pZCAwPT09YSl7YT1mdW5jdGlvbihlLHQsbil7aWYoIXkodCxcImRlZmF1bHRcIikpcmV0dXJuO3ZhciByPXQuZGVmYXVsdDtpZihlJiZlLiRvcHRpb25zLnByb3BzRGF0YSYmdm9pZCAwPT09ZS4kb3B0aW9ucy5wcm9wc0RhdGFbbl0mJnZvaWQgMCE9PWUuX3Byb3BzW25dKXJldHVybiBlLl9wcm9wc1tuXTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZcIkZ1bmN0aW9uXCIhPT1JZSh0LnR5cGUpP3IuY2FsbChlKTpyfShyLGksZSk7dmFyIHU9YmU7JGUoITApLENlKGEpLCRlKHUpfXJldHVybiBhfWZ1bmN0aW9uIEllKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxccypmdW5jdGlvbiAoXFx3KykvKTtyZXR1cm4gdD90WzFdOlwiXCJ9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm4gSWUoZSk9PT1JZSh0KX1mdW5jdGlvbiBQZShlLHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXJldHVybiBGZSh0LGUpPzA6LTE7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKEZlKHRbbl0sZSkpcmV0dXJuIG47cmV0dXJuLTF9ZnVuY3Rpb24gUmUoZSx0LG4pe2xlKCk7dHJ5e2lmKHQpZm9yKHZhciByPXQ7cj1yLiRwYXJlbnQ7KXt2YXIgaT1yLiRvcHRpb25zLmVycm9yQ2FwdHVyZWQ7aWYoaSlmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyl0cnl7aWYoITE9PT1pW29dLmNhbGwocixlLHQsbikpcmV0dXJufWNhdGNoKGUpe0JlKGUscixcImVycm9yQ2FwdHVyZWQgaG9va1wiKX19QmUoZSx0LG4pfWZpbmFsbHl7ZmUoKX19ZnVuY3Rpb24gSGUoZSx0LG4scixpKXt2YXIgbzt0cnl7KG89bj9lLmFwcGx5KHQsbik6ZS5jYWxsKHQpKSYmIW8uX2lzVnVlJiZ1KG8pJiYhby5faGFuZGxlZCYmKG8uY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIFJlKGUscixpK1wiIChQcm9taXNlL2FzeW5jKVwiKX0pLG8uX2hhbmRsZWQ9ITApfWNhdGNoKGUpe1JlKGUscixpKX1yZXR1cm4gb31mdW5jdGlvbiBCZShlLHQsbil7aWYoRi5lcnJvckhhbmRsZXIpdHJ5e3JldHVybiBGLmVycm9ySGFuZGxlci5jYWxsKG51bGwsZSx0LG4pfWNhdGNoKHQpe3QhPT1lJiZVZSh0LG51bGwsXCJjb25maWcuZXJyb3JIYW5kbGVyXCIpfVVlKGUsdCxuKX1mdW5jdGlvbiBVZShlLHQsbil7aWYoIXomJiFWfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgY29uc29sZSl0aHJvdyBlO2NvbnNvbGUuZXJyb3IoZSl9dmFyIHplLFZlPSExLEtlPVtdLEplPSExO2Z1bmN0aW9uIHFlKCl7SmU9ITE7dmFyIGU9S2Uuc2xpY2UoMCk7S2UubGVuZ3RoPTA7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XSgpfWlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlJiZyZShQcm9taXNlKSl7dmFyIFdlPVByb21pc2UucmVzb2x2ZSgpO3plPWZ1bmN0aW9uKCl7V2UudGhlbihxZSksRyYmc2V0VGltZW91dChTKX0sVmU9ITB9ZWxzZSBpZihxfHxcInVuZGVmaW5lZFwiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcnx8IXJlKE11dGF0aW9uT2JzZXJ2ZXIpJiZcIltvYmplY3QgTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yXVwiIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXplPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZXRJbW1lZGlhdGUmJnJlKHNldEltbWVkaWF0ZSk/ZnVuY3Rpb24oKXtzZXRJbW1lZGlhdGUocWUpfTpmdW5jdGlvbigpe3NldFRpbWVvdXQocWUsMCl9O2Vsc2V7dmFyIFplPTEsR2U9bmV3IE11dGF0aW9uT2JzZXJ2ZXIocWUpLFhlPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFN0cmluZyhaZSkpO0dlLm9ic2VydmUoWGUse2NoYXJhY3RlckRhdGE6ITB9KSx6ZT1mdW5jdGlvbigpe1plPShaZSsxKSUyLFhlLmRhdGE9U3RyaW5nKFplKX0sVmU9ITB9ZnVuY3Rpb24gWWUoZSx0KXt2YXIgbjtpZihLZS5wdXNoKGZ1bmN0aW9uKCl7aWYoZSl0cnl7ZS5jYWxsKHQpfWNhdGNoKGUpe1JlKGUsdCxcIm5leHRUaWNrXCIpfWVsc2UgbiYmbih0KX0pLEplfHwoSmU9ITAsemUoKSksIWUmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBQcm9taXNlKXJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtuPWV9KX12YXIgUWU9bmV3IGllO2Z1bmN0aW9uIGV0KGUpeyFmdW5jdGlvbiBlKHQsbil7dmFyIHIsaTt2YXIgYT1BcnJheS5pc0FycmF5KHQpO2lmKCFhJiYhbyh0KXx8T2JqZWN0LmlzRnJvemVuKHQpfHx0IGluc3RhbmNlb2YgcGUpcmV0dXJuO2lmKHQuX19vYl9fKXt2YXIgcz10Ll9fb2JfXy5kZXAuaWQ7aWYobi5oYXMocykpcmV0dXJuO24uYWRkKHMpfWlmKGEpZm9yKHI9dC5sZW5ndGg7ci0tOyllKHRbcl0sbik7ZWxzZSBmb3IoaT1PYmplY3Qua2V5cyh0KSxyPWkubGVuZ3RoO3ItLTspZSh0W2lbcl1dLG4pfShlLFFlKSxRZS5jbGVhcigpfXZhciB0dD1nKGZ1bmN0aW9uKGUpe3ZhciB0PVwiJlwiPT09ZS5jaGFyQXQoMCksbj1cIn5cIj09PShlPXQ/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCkscj1cIiFcIj09PShlPW4/ZS5zbGljZSgxKTplKS5jaGFyQXQoMCk7cmV0dXJue25hbWU6ZT1yP2Uuc2xpY2UoMSk6ZSxvbmNlOm4sY2FwdHVyZTpyLHBhc3NpdmU6dH19KTtmdW5jdGlvbiBudChlLHQpe2Z1bmN0aW9uIG4oKXt2YXIgZT1hcmd1bWVudHMscj1uLmZucztpZighQXJyYXkuaXNBcnJheShyKSlyZXR1cm4gSGUocixudWxsLGFyZ3VtZW50cyx0LFwidi1vbiBoYW5kbGVyXCIpO2Zvcih2YXIgaT1yLnNsaWNlKCksbz0wO288aS5sZW5ndGg7bysrKUhlKGlbb10sbnVsbCxlLHQsXCJ2LW9uIGhhbmRsZXJcIil9cmV0dXJuIG4uZm5zPWUsbn1mdW5jdGlvbiBydChlLG4saSxvLGEscyl7dmFyIGMsdSxsLGY7Zm9yKGMgaW4gZSl1PWVbY10sbD1uW2NdLGY9dHQoYyksdCh1KXx8KHQobCk/KHQodS5mbnMpJiYodT1lW2NdPW50KHUscykpLHIoZi5vbmNlKSYmKHU9ZVtjXT1hKGYubmFtZSx1LGYuY2FwdHVyZSkpLGkoZi5uYW1lLHUsZi5jYXB0dXJlLGYucGFzc2l2ZSxmLnBhcmFtcykpOnUhPT1sJiYobC5mbnM9dSxlW2NdPWwpKTtmb3IoYyBpbiBuKXQoZVtjXSkmJm8oKGY9dHQoYykpLm5hbWUsbltjXSxmLmNhcHR1cmUpfWZ1bmN0aW9uIGl0KGUsaSxvKXt2YXIgYTtlIGluc3RhbmNlb2YgcGUmJihlPWUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pKTt2YXIgcz1lW2ldO2Z1bmN0aW9uIGMoKXtvLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxoKGEuZm5zLGMpfXQocyk/YT1udChbY10pOm4ocy5mbnMpJiZyKHMubWVyZ2VkKT8oYT1zKS5mbnMucHVzaChjKTphPW50KFtzLGNdKSxhLm1lcmdlZD0hMCxlW2ldPWF9ZnVuY3Rpb24gb3QoZSx0LHIsaSxvKXtpZihuKHQpKXtpZih5KHQscikpcmV0dXJuIGVbcl09dFtyXSxvfHxkZWxldGUgdFtyXSwhMDtpZih5KHQsaSkpcmV0dXJuIGVbcl09dFtpXSxvfHxkZWxldGUgdFtpXSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhdChlKXtyZXR1cm4gaShlKT9baGUoZSldOkFycmF5LmlzQXJyYXkoZSk/ZnVuY3Rpb24gZShvLGEpe3ZhciBzPVtdO3ZhciBjLHUsbCxmO2ZvcihjPTA7YzxvLmxlbmd0aDtjKyspdCh1PW9bY10pfHxcImJvb2xlYW5cIj09dHlwZW9mIHV8fChsPXMubGVuZ3RoLTEsZj1zW2xdLEFycmF5LmlzQXJyYXkodSk/dS5sZW5ndGg+MCYmKHN0KCh1PWUodSwoYXx8XCJcIikrXCJfXCIrYykpWzBdKSYmc3QoZikmJihzW2xdPWhlKGYudGV4dCt1WzBdLnRleHQpLHUuc2hpZnQoKSkscy5wdXNoLmFwcGx5KHMsdSkpOmkodSk/c3QoZik/c1tsXT1oZShmLnRleHQrdSk6XCJcIiE9PXUmJnMucHVzaChoZSh1KSk6c3QodSkmJnN0KGYpP3NbbF09aGUoZi50ZXh0K3UudGV4dCk6KHIoby5faXNWTGlzdCkmJm4odS50YWcpJiZ0KHUua2V5KSYmbihhKSYmKHUua2V5PVwiX192bGlzdFwiK2ErXCJfXCIrYytcIl9fXCIpLHMucHVzaCh1KSkpO3JldHVybiBzfShlKTp2b2lkIDB9ZnVuY3Rpb24gc3QoZSl7cmV0dXJuIG4oZSkmJm4oZS50ZXh0KSYmITE9PT1lLmlzQ29tbWVudH1mdW5jdGlvbiBjdChlLHQpe2lmKGUpe2Zvcih2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9b2U/UmVmbGVjdC5vd25LZXlzKGUpOk9iamVjdC5rZXlzKGUpLGk9MDtpPHIubGVuZ3RoO2krKyl7dmFyIG89cltpXTtpZihcIl9fb2JfX1wiIT09byl7Zm9yKHZhciBhPWVbb10uZnJvbSxzPXQ7czspe2lmKHMuX3Byb3ZpZGVkJiZ5KHMuX3Byb3ZpZGVkLGEpKXtuW29dPXMuX3Byb3ZpZGVkW2FdO2JyZWFrfXM9cy4kcGFyZW50fWlmKCFzJiZcImRlZmF1bHRcImluIGVbb10pe3ZhciBjPWVbb10uZGVmYXVsdDtuW29dPVwiZnVuY3Rpb25cIj09dHlwZW9mIGM/Yy5jYWxsKHQpOmN9fX1yZXR1cm4gbn19ZnVuY3Rpb24gdXQoZSx0KXtpZighZXx8IWUubGVuZ3RoKXJldHVybnt9O2Zvcih2YXIgbj17fSxyPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdLGE9by5kYXRhO2lmKGEmJmEuYXR0cnMmJmEuYXR0cnMuc2xvdCYmZGVsZXRlIGEuYXR0cnMuc2xvdCxvLmNvbnRleHQhPT10JiZvLmZuQ29udGV4dCE9PXR8fCFhfHxudWxsPT1hLnNsb3QpKG4uZGVmYXVsdHx8KG4uZGVmYXVsdD1bXSkpLnB1c2gobyk7ZWxzZXt2YXIgcz1hLnNsb3QsYz1uW3NdfHwobltzXT1bXSk7XCJ0ZW1wbGF0ZVwiPT09by50YWc/Yy5wdXNoLmFwcGx5KGMsby5jaGlsZHJlbnx8W10pOmMucHVzaChvKX19Zm9yKHZhciB1IGluIG4pblt1XS5ldmVyeShsdCkmJmRlbGV0ZSBuW3VdO3JldHVybiBufWZ1bmN0aW9uIGx0KGUpe3JldHVybiBlLmlzQ29tbWVudCYmIWUuYXN5bmNGYWN0b3J5fHxcIiBcIj09PWUudGV4dH1mdW5jdGlvbiBmdCh0LG4scil7dmFyIGksbz1PYmplY3Qua2V5cyhuKS5sZW5ndGg+MCxhPXQ/ISF0LiRzdGFibGU6IW8scz10JiZ0LiRrZXk7aWYodCl7aWYodC5fbm9ybWFsaXplZClyZXR1cm4gdC5fbm9ybWFsaXplZDtpZihhJiZyJiZyIT09ZSYmcz09PXIuJGtleSYmIW8mJiFyLiRoYXNOb3JtYWwpcmV0dXJuIHI7Zm9yKHZhciBjIGluIGk9e30sdCl0W2NdJiZcIiRcIiE9PWNbMF0mJihpW2NdPXB0KG4sYyx0W2NdKSl9ZWxzZSBpPXt9O2Zvcih2YXIgdSBpbiBuKXUgaW4gaXx8KGlbdV09ZHQobix1KSk7cmV0dXJuIHQmJk9iamVjdC5pc0V4dGVuc2libGUodCkmJih0Ll9ub3JtYWxpemVkPWkpLFIoaSxcIiRzdGFibGVcIixhKSxSKGksXCIka2V5XCIscyksUihpLFwiJGhhc05vcm1hbFwiLG8pLGl9ZnVuY3Rpb24gcHQoZSx0LG4pe3ZhciByPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD9uLmFwcGx5KG51bGwsYXJndW1lbnRzKTpuKHt9KTtyZXR1cm4oZT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmIUFycmF5LmlzQXJyYXkoZSk/W2VdOmF0KGUpKSYmKDA9PT1lLmxlbmd0aHx8MT09PWUubGVuZ3RoJiZlWzBdLmlzQ29tbWVudCk/dm9pZCAwOmV9O3JldHVybiBuLnByb3h5JiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtnZXQ6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHJ9ZnVuY3Rpb24gZHQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZVt0XX19ZnVuY3Rpb24gdnQoZSx0KXt2YXIgcixpLGEscyxjO2lmKEFycmF5LmlzQXJyYXkoZSl8fFwic3RyaW5nXCI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlLmxlbmd0aCksaT0wLGE9ZS5sZW5ndGg7aTxhO2krKylyW2ldPXQoZVtpXSxpKTtlbHNlIGlmKFwibnVtYmVyXCI9PXR5cGVvZiBlKWZvcihyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPXQoaSsxLGkpO2Vsc2UgaWYobyhlKSlpZihvZSYmZVtTeW1ib2wuaXRlcmF0b3JdKXtyPVtdO2Zvcih2YXIgdT1lW1N5bWJvbC5pdGVyYXRvcl0oKSxsPXUubmV4dCgpOyFsLmRvbmU7KXIucHVzaCh0KGwudmFsdWUsci5sZW5ndGgpKSxsPXUubmV4dCgpfWVsc2UgZm9yKHM9T2JqZWN0LmtleXMoZSkscj1uZXcgQXJyYXkocy5sZW5ndGgpLGk9MCxhPXMubGVuZ3RoO2k8YTtpKyspYz1zW2ldLHJbaV09dChlW2NdLGMsaSk7cmV0dXJuIG4ocil8fChyPVtdKSxyLl9pc1ZMaXN0PSEwLHJ9ZnVuY3Rpb24gaHQoZSx0LG4scil7dmFyIGksbz10aGlzLiRzY29wZWRTbG90c1tlXTtvPyhuPW58fHt9LHImJihuPUEoQSh7fSxyKSxuKSksaT1vKG4pfHx0KTppPXRoaXMuJHNsb3RzW2VdfHx0O3ZhciBhPW4mJm4uc2xvdDtyZXR1cm4gYT90aGlzLiRjcmVhdGVFbGVtZW50KFwidGVtcGxhdGVcIix7c2xvdDphfSxpKTppfWZ1bmN0aW9uIG10KGUpe3JldHVybiBMZSh0aGlzLiRvcHRpb25zLFwiZmlsdGVyc1wiLGUpfHxFfWZ1bmN0aW9uIHl0KGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/LTE9PT1lLmluZGV4T2YodCk6ZSE9PXR9ZnVuY3Rpb24gZ3QoZSx0LG4scixpKXt2YXIgbz1GLmtleUNvZGVzW3RdfHxuO3JldHVybiBpJiZyJiYhRi5rZXlDb2Rlc1t0XT95dChpLHIpOm8/eXQobyxlKTpyP0MocikhPT10OnZvaWQgMH1mdW5jdGlvbiBfdChlLHQsbixyLGkpe2lmKG4paWYobyhuKSl7dmFyIGE7QXJyYXkuaXNBcnJheShuKSYmKG49TyhuKSk7dmFyIHM9ZnVuY3Rpb24obyl7aWYoXCJjbGFzc1wiPT09b3x8XCJzdHlsZVwiPT09b3x8dihvKSlhPWU7ZWxzZXt2YXIgcz1lLmF0dHJzJiZlLmF0dHJzLnR5cGU7YT1yfHxGLm11c3RVc2VQcm9wKHQscyxvKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRyc3x8KGUuYXR0cnM9e30pfXZhciBjPWIobyksdT1DKG8pO2MgaW4gYXx8dSBpbiBhfHwoYVtvXT1uW29dLGkmJigoZS5vbnx8KGUub249e30pKVtcInVwZGF0ZTpcIitvXT1mdW5jdGlvbihlKXtuW29dPWV9KSl9O2Zvcih2YXIgYyBpbiBuKXMoYyl9ZWxzZTtyZXR1cm4gZX1mdW5jdGlvbiBidChlLHQpe3ZhciBuPXRoaXMuX3N0YXRpY1RyZWVzfHwodGhpcy5fc3RhdGljVHJlZXM9W10pLHI9bltlXTtyZXR1cm4gciYmIXQ/cjood3Qocj1uW2VdPXRoaXMuJG9wdGlvbnMuc3RhdGljUmVuZGVyRm5zW2VdLmNhbGwodGhpcy5fcmVuZGVyUHJveHksbnVsbCx0aGlzKSxcIl9fc3RhdGljX19cIitlLCExKSxyKX1mdW5jdGlvbiAkdChlLHQsbil7cmV0dXJuIHd0KGUsXCJfX29uY2VfX1wiK3QrKG4/XCJfXCIrbjpcIlwiKSwhMCksZX1mdW5jdGlvbiB3dChlLHQsbil7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdJiZcInN0cmluZ1wiIT10eXBlb2YgZVtyXSYmQ3QoZVtyXSx0K1wiX1wiK3Isbik7ZWxzZSBDdChlLHQsbil9ZnVuY3Rpb24gQ3QoZSx0LG4pe2UuaXNTdGF0aWM9ITAsZS5rZXk9dCxlLmlzT25jZT1ufWZ1bmN0aW9uIHh0KGUsdCl7aWYodClpZihzKHQpKXt2YXIgbj1lLm9uPWUub24/QSh7fSxlLm9uKTp7fTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07bltyXT1pP1tdLmNvbmNhdChpLG8pOm99fWVsc2U7cmV0dXJuIGV9ZnVuY3Rpb24ga3QoZSx0LG4scil7dD10fHx7JHN0YWJsZTohbn07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07QXJyYXkuaXNBcnJheShvKT9rdChvLHQsbik6byYmKG8ucHJveHkmJihvLmZuLnByb3h5PSEwKSx0W28ua2V5XT1vLmZuKX1yZXR1cm4gciYmKHQuJGtleT1yKSx0fWZ1bmN0aW9uIEF0KGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2YXIgcj10W25dO1wic3RyaW5nXCI9PXR5cGVvZiByJiZyJiYoZVt0W25dXT10W24rMV0pfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/dCtlOmV9ZnVuY3Rpb24gU3QoZSl7ZS5fbz0kdCxlLl9uPWYsZS5fcz1sLGUuX2w9dnQsZS5fdD1odCxlLl9xPU4sZS5faT1qLGUuX209YnQsZS5fZj1tdCxlLl9rPWd0LGUuX2I9X3QsZS5fdj1oZSxlLl9lPXZlLGUuX3U9a3QsZS5fZz14dCxlLl9kPUF0LGUuX3A9T3R9ZnVuY3Rpb24gVHQodCxuLGksbyxhKXt2YXIgcyxjPXRoaXMsdT1hLm9wdGlvbnM7eShvLFwiX3VpZFwiKT8ocz1PYmplY3QuY3JlYXRlKG8pKS5fb3JpZ2luYWw9bzoocz1vLG89by5fb3JpZ2luYWwpO3ZhciBsPXIodS5fY29tcGlsZWQpLGY9IWw7dGhpcy5kYXRhPXQsdGhpcy5wcm9wcz1uLHRoaXMuY2hpbGRyZW49aSx0aGlzLnBhcmVudD1vLHRoaXMubGlzdGVuZXJzPXQub258fGUsdGhpcy5pbmplY3Rpb25zPWN0KHUuaW5qZWN0LG8pLHRoaXMuc2xvdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy4kc2xvdHN8fGZ0KHQuc2NvcGVkU2xvdHMsYy4kc2xvdHM9dXQoaSxvKSksYy4kc2xvdHN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwic2NvcGVkU2xvdHNcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnQodC5zY29wZWRTbG90cyx0aGlzLnNsb3RzKCkpfX0pLGwmJih0aGlzLiRvcHRpb25zPXUsdGhpcy4kc2xvdHM9dGhpcy5zbG90cygpLHRoaXMuJHNjb3BlZFNsb3RzPWZ0KHQuc2NvcGVkU2xvdHMsdGhpcy4kc2xvdHMpKSx1Ll9zY29wZUlkP3RoaXMuX2M9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UHQocyxlLHQsbixyLGYpO3JldHVybiBpJiYhQXJyYXkuaXNBcnJheShpKSYmKGkuZm5TY29wZUlkPXUuX3Njb3BlSWQsaS5mbkNvbnRleHQ9byksaX06dGhpcy5fYz1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gUHQocyxlLHQsbixyLGYpfX1mdW5jdGlvbiBFdChlLHQsbixyLGkpe3ZhciBvPW1lKGUpO3JldHVybiBvLmZuQ29udGV4dD1uLG8uZm5PcHRpb25zPXIsdC5zbG90JiYoKG8uZGF0YXx8KG8uZGF0YT17fSkpLnNsb3Q9dC5zbG90KSxvfWZ1bmN0aW9uIE50KGUsdCl7Zm9yKHZhciBuIGluIHQpZVtiKG4pXT10W25dfVN0KFR0LnByb3RvdHlwZSk7dmFyIGp0PXtpbml0OmZ1bmN0aW9uKGUsdCl7aWYoZS5jb21wb25lbnRJbnN0YW5jZSYmIWUuY29tcG9uZW50SW5zdGFuY2UuX2lzRGVzdHJveWVkJiZlLmRhdGEua2VlcEFsaXZlKXt2YXIgcj1lO2p0LnByZXBhdGNoKHIscil9ZWxzZXsoZS5jb21wb25lbnRJbnN0YW5jZT1mdW5jdGlvbihlLHQpe3ZhciByPXtfaXNDb21wb25lbnQ6ITAsX3BhcmVudFZub2RlOmUscGFyZW50OnR9LGk9ZS5kYXRhLmlubGluZVRlbXBsYXRlO24oaSkmJihyLnJlbmRlcj1pLnJlbmRlcixyLnN0YXRpY1JlbmRlckZucz1pLnN0YXRpY1JlbmRlckZucyk7cmV0dXJuIG5ldyBlLmNvbXBvbmVudE9wdGlvbnMuQ3RvcihyKX0oZSxXdCkpLiRtb3VudCh0P2UuZWxtOnZvaWQgMCx0KX19LHByZXBhdGNoOmZ1bmN0aW9uKHQsbil7dmFyIHI9bi5jb21wb25lbnRPcHRpb25zOyFmdW5jdGlvbih0LG4scixpLG8pe3ZhciBhPWkuZGF0YS5zY29wZWRTbG90cyxzPXQuJHNjb3BlZFNsb3RzLGM9ISEoYSYmIWEuJHN0YWJsZXx8cyE9PWUmJiFzLiRzdGFibGV8fGEmJnQuJHNjb3BlZFNsb3RzLiRrZXkhPT1hLiRrZXkpLHU9ISEob3x8dC4kb3B0aW9ucy5fcmVuZGVyQ2hpbGRyZW58fGMpO3QuJG9wdGlvbnMuX3BhcmVudFZub2RlPWksdC4kdm5vZGU9aSx0Ll92bm9kZSYmKHQuX3Zub2RlLnBhcmVudD1pKTtpZih0LiRvcHRpb25zLl9yZW5kZXJDaGlsZHJlbj1vLHQuJGF0dHJzPWkuZGF0YS5hdHRyc3x8ZSx0LiRsaXN0ZW5lcnM9cnx8ZSxuJiZ0LiRvcHRpb25zLnByb3BzKXskZSghMSk7Zm9yKHZhciBsPXQuX3Byb3BzLGY9dC4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHA9MDtwPGYubGVuZ3RoO3ArKyl7dmFyIGQ9ZltwXSx2PXQuJG9wdGlvbnMucHJvcHM7bFtkXT1NZShkLHYsbix0KX0kZSghMCksdC4kb3B0aW9ucy5wcm9wc0RhdGE9bn1yPXJ8fGU7dmFyIGg9dC4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzO3QuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycz1yLHF0KHQscixoKSx1JiYodC4kc2xvdHM9dXQobyxpLmNvbnRleHQpLHQuJGZvcmNlVXBkYXRlKCkpfShuLmNvbXBvbmVudEluc3RhbmNlPXQuY29tcG9uZW50SW5zdGFuY2Usci5wcm9wc0RhdGEsci5saXN0ZW5lcnMsbixyLmNoaWxkcmVuKX0saW5zZXJ0OmZ1bmN0aW9uKGUpe3ZhciB0LG49ZS5jb250ZXh0LHI9ZS5jb21wb25lbnRJbnN0YW5jZTtyLl9pc01vdW50ZWR8fChyLl9pc01vdW50ZWQ9ITAsWXQocixcIm1vdW50ZWRcIikpLGUuZGF0YS5rZWVwQWxpdmUmJihuLl9pc01vdW50ZWQ/KCh0PXIpLl9pbmFjdGl2ZT0hMSxlbi5wdXNoKHQpKTpYdChyLCEwKSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb21wb25lbnRJbnN0YW5jZTt0Ll9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/ZnVuY3Rpb24gZSh0LG4pe2lmKG4mJih0Ll9kaXJlY3RJbmFjdGl2ZT0hMCxHdCh0KSkpcmV0dXJuO2lmKCF0Ll9pbmFjdGl2ZSl7dC5faW5hY3RpdmU9ITA7Zm9yKHZhciByPTA7cjx0LiRjaGlsZHJlbi5sZW5ndGg7cisrKWUodC4kY2hpbGRyZW5bcl0pO1l0KHQsXCJkZWFjdGl2YXRlZFwiKX19KHQsITApOnQuJGRlc3Ryb3koKSl9fSxEdD1PYmplY3Qua2V5cyhqdCk7ZnVuY3Rpb24gTHQoaSxhLHMsYyxsKXtpZighdChpKSl7dmFyIGY9cy4kb3B0aW9ucy5fYmFzZTtpZihvKGkpJiYoaT1mLmV4dGVuZChpKSksXCJmdW5jdGlvblwiPT10eXBlb2YgaSl7dmFyIHA7aWYodChpLmNpZCkmJnZvaWQgMD09PShpPWZ1bmN0aW9uKGUsaSl7aWYocihlLmVycm9yKSYmbihlLmVycm9yQ29tcCkpcmV0dXJuIGUuZXJyb3JDb21wO2lmKG4oZS5yZXNvbHZlZCkpcmV0dXJuIGUucmVzb2x2ZWQ7dmFyIGE9SHQ7YSYmbihlLm93bmVycykmJi0xPT09ZS5vd25lcnMuaW5kZXhPZihhKSYmZS5vd25lcnMucHVzaChhKTtpZihyKGUubG9hZGluZykmJm4oZS5sb2FkaW5nQ29tcCkpcmV0dXJuIGUubG9hZGluZ0NvbXA7aWYoYSYmIW4oZS5vd25lcnMpKXt2YXIgcz1lLm93bmVycz1bYV0sYz0hMCxsPW51bGwsZj1udWxsO2EuJG9uKFwiaG9vazpkZXN0cm95ZWRcIixmdW5jdGlvbigpe3JldHVybiBoKHMsYSl9KTt2YXIgcD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxuPXMubGVuZ3RoO3Q8bjt0Kyspc1t0XS4kZm9yY2VVcGRhdGUoKTtlJiYocy5sZW5ndGg9MCxudWxsIT09bCYmKGNsZWFyVGltZW91dChsKSxsPW51bGwpLG51bGwhPT1mJiYoY2xlYXJUaW1lb3V0KGYpLGY9bnVsbCkpfSxkPUQoZnVuY3Rpb24odCl7ZS5yZXNvbHZlZD1CdCh0LGkpLGM/cy5sZW5ndGg9MDpwKCEwKX0pLHY9RChmdW5jdGlvbih0KXtuKGUuZXJyb3JDb21wKSYmKGUuZXJyb3I9ITAscCghMCkpfSksbT1lKGQsdik7cmV0dXJuIG8obSkmJih1KG0pP3QoZS5yZXNvbHZlZCkmJm0udGhlbihkLHYpOnUobS5jb21wb25lbnQpJiYobS5jb21wb25lbnQudGhlbihkLHYpLG4obS5lcnJvcikmJihlLmVycm9yQ29tcD1CdChtLmVycm9yLGkpKSxuKG0ubG9hZGluZykmJihlLmxvYWRpbmdDb21wPUJ0KG0ubG9hZGluZyxpKSwwPT09bS5kZWxheT9lLmxvYWRpbmc9ITA6bD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bD1udWxsLHQoZS5yZXNvbHZlZCkmJnQoZS5lcnJvcikmJihlLmxvYWRpbmc9ITAscCghMSkpfSxtLmRlbGF5fHwyMDApKSxuKG0udGltZW91dCkmJihmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmPW51bGwsdChlLnJlc29sdmVkKSYmdihudWxsKX0sbS50aW1lb3V0KSkpKSxjPSExLGUubG9hZGluZz9lLmxvYWRpbmdDb21wOmUucmVzb2x2ZWR9fShwPWksZikpKXJldHVybiBmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBvPXZlKCk7cmV0dXJuIG8uYXN5bmNGYWN0b3J5PWUsby5hc3luY01ldGE9e2RhdGE6dCxjb250ZXh0Om4sY2hpbGRyZW46cix0YWc6aX0sb30ocCxhLHMsYyxsKTthPWF8fHt9LCRuKGkpLG4oYS5tb2RlbCkmJmZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS5tb2RlbCYmZS5tb2RlbC5wcm9wfHxcInZhbHVlXCIsaT1lLm1vZGVsJiZlLm1vZGVsLmV2ZW50fHxcImlucHV0XCI7KHQuYXR0cnN8fCh0LmF0dHJzPXt9KSlbcl09dC5tb2RlbC52YWx1ZTt2YXIgbz10Lm9ufHwodC5vbj17fSksYT1vW2ldLHM9dC5tb2RlbC5jYWxsYmFjaztuKGEpPyhBcnJheS5pc0FycmF5KGEpPy0xPT09YS5pbmRleE9mKHMpOmEhPT1zKSYmKG9baV09W3NdLmNvbmNhdChhKSk6b1tpXT1zfShpLm9wdGlvbnMsYSk7dmFyIGQ9ZnVuY3Rpb24oZSxyLGkpe3ZhciBvPXIub3B0aW9ucy5wcm9wcztpZighdChvKSl7dmFyIGE9e30scz1lLmF0dHJzLGM9ZS5wcm9wcztpZihuKHMpfHxuKGMpKWZvcih2YXIgdSBpbiBvKXt2YXIgbD1DKHUpO290KGEsYyx1LGwsITApfHxvdChhLHMsdSxsLCExKX1yZXR1cm4gYX19KGEsaSk7aWYocihpLm9wdGlvbnMuZnVuY3Rpb25hbCkpcmV0dXJuIGZ1bmN0aW9uKHQscixpLG8sYSl7dmFyIHM9dC5vcHRpb25zLGM9e30sdT1zLnByb3BzO2lmKG4odSkpZm9yKHZhciBsIGluIHUpY1tsXT1NZShsLHUscnx8ZSk7ZWxzZSBuKGkuYXR0cnMpJiZOdChjLGkuYXR0cnMpLG4oaS5wcm9wcykmJk50KGMsaS5wcm9wcyk7dmFyIGY9bmV3IFR0KGksYyxhLG8sdCkscD1zLnJlbmRlci5jYWxsKG51bGwsZi5fYyxmKTtpZihwIGluc3RhbmNlb2YgcGUpcmV0dXJuIEV0KHAsaSxmLnBhcmVudCxzKTtpZihBcnJheS5pc0FycmF5KHApKXtmb3IodmFyIGQ9YXQocCl8fFtdLHY9bmV3IEFycmF5KGQubGVuZ3RoKSxoPTA7aDxkLmxlbmd0aDtoKyspdltoXT1FdChkW2hdLGksZi5wYXJlbnQscyk7cmV0dXJuIHZ9fShpLGQsYSxzLGMpO3ZhciB2PWEub247aWYoYS5vbj1hLm5hdGl2ZU9uLHIoaS5vcHRpb25zLmFic3RyYWN0KSl7dmFyIG09YS5zbG90O2E9e30sbSYmKGEuc2xvdD1tKX0hZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuaG9va3x8KGUuaG9vaz17fSksbj0wO248RHQubGVuZ3RoO24rKyl7dmFyIHI9RHRbbl0saT10W3JdLG89anRbcl07aT09PW98fGkmJmkuX21lcmdlZHx8KHRbcl09aT9NdChvLGkpOm8pfX0oYSk7dmFyIHk9aS5vcHRpb25zLm5hbWV8fGw7cmV0dXJuIG5ldyBwZShcInZ1ZS1jb21wb25lbnQtXCIraS5jaWQrKHk/XCItXCIreTpcIlwiKSxhLHZvaWQgMCx2b2lkIDAsdm9pZCAwLHMse0N0b3I6aSxwcm9wc0RhdGE6ZCxsaXN0ZW5lcnM6dix0YWc6bCxjaGlsZHJlbjpjfSxwKX19fWZ1bmN0aW9uIE10KGUsdCl7dmFyIG49ZnVuY3Rpb24obixyKXtlKG4sciksdChuLHIpfTtyZXR1cm4gbi5fbWVyZ2VkPSEwLG59dmFyIEl0PTEsRnQ9MjtmdW5jdGlvbiBQdChlLGEscyxjLHUsbCl7cmV0dXJuKEFycmF5LmlzQXJyYXkocyl8fGkocykpJiYodT1jLGM9cyxzPXZvaWQgMCkscihsKSYmKHU9RnQpLGZ1bmN0aW9uKGUsaSxhLHMsYyl7aWYobihhKSYmbihhLl9fb2JfXykpcmV0dXJuIHZlKCk7bihhKSYmbihhLmlzKSYmKGk9YS5pcyk7aWYoIWkpcmV0dXJuIHZlKCk7QXJyYXkuaXNBcnJheShzKSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygc1swXSYmKChhPWF8fHt9KS5zY29wZWRTbG90cz17ZGVmYXVsdDpzWzBdfSxzLmxlbmd0aD0wKTtjPT09RnQ/cz1hdChzKTpjPT09SXQmJihzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKEFycmF5LmlzQXJyYXkoZVt0XSkpcmV0dXJuIEFycmF5LnByb3RvdHlwZS5jb25jYXQuYXBwbHkoW10sZSk7cmV0dXJuIGV9KHMpKTt2YXIgdSxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpKXt2YXIgZjtsPWUuJHZub2RlJiZlLiR2bm9kZS5uc3x8Ri5nZXRUYWdOYW1lc3BhY2UoaSksdT1GLmlzUmVzZXJ2ZWRUYWcoaSk/bmV3IHBlKEYucGFyc2VQbGF0Zm9ybVRhZ05hbWUoaSksYSxzLHZvaWQgMCx2b2lkIDAsZSk6YSYmYS5wcmV8fCFuKGY9TGUoZS4kb3B0aW9ucyxcImNvbXBvbmVudHNcIixpKSk/bmV3IHBlKGksYSxzLHZvaWQgMCx2b2lkIDAsZSk6THQoZixhLGUscyxpKX1lbHNlIHU9THQoaSxhLGUscyk7cmV0dXJuIEFycmF5LmlzQXJyYXkodSk/dTpuKHUpPyhuKGwpJiZmdW5jdGlvbiBlKGksbyxhKXtpLm5zPW87XCJmb3JlaWduT2JqZWN0XCI9PT1pLnRhZyYmKG89dm9pZCAwLGE9ITApO2lmKG4oaS5jaGlsZHJlbikpZm9yKHZhciBzPTAsYz1pLmNoaWxkcmVuLmxlbmd0aDtzPGM7cysrKXt2YXIgdT1pLmNoaWxkcmVuW3NdO24odS50YWcpJiYodCh1Lm5zKXx8cihhKSYmXCJzdmdcIiE9PXUudGFnKSYmZSh1LG8sYSl9fSh1LGwpLG4oYSkmJmZ1bmN0aW9uKGUpe28oZS5zdHlsZSkmJmV0KGUuc3R5bGUpO28oZS5jbGFzcykmJmV0KGUuY2xhc3MpfShhKSx1KTp2ZSgpfShlLGEscyxjLHUpfXZhciBSdCxIdD1udWxsO2Z1bmN0aW9uIEJ0KGUsdCl7cmV0dXJuKGUuX19lc01vZHVsZXx8b2UmJlwiTW9kdWxlXCI9PT1lW1N5bWJvbC50b1N0cmluZ1RhZ10pJiYoZT1lLmRlZmF1bHQpLG8oZSk/dC5leHRlbmQoZSk6ZX1mdW5jdGlvbiBVdChlKXtyZXR1cm4gZS5pc0NvbW1lbnQmJmUuYXN5bmNGYWN0b3J5fWZ1bmN0aW9uIHp0KGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0Kyspe3ZhciByPWVbdF07aWYobihyKSYmKG4oci5jb21wb25lbnRPcHRpb25zKXx8VXQocikpKXJldHVybiByfX1mdW5jdGlvbiBWdChlLHQpe1J0LiRvbihlLHQpfWZ1bmN0aW9uIEt0KGUsdCl7UnQuJG9mZihlLHQpfWZ1bmN0aW9uIEp0KGUsdCl7dmFyIG49UnQ7cmV0dXJuIGZ1bmN0aW9uIHIoKXtudWxsIT09dC5hcHBseShudWxsLGFyZ3VtZW50cykmJm4uJG9mZihlLHIpfX1mdW5jdGlvbiBxdChlLHQsbil7UnQ9ZSxydCh0LG58fHt9LFZ0LEt0LEp0LGUpLFJ0PXZvaWQgMH12YXIgV3Q9bnVsbDtmdW5jdGlvbiBadChlKXt2YXIgdD1XdDtyZXR1cm4gV3Q9ZSxmdW5jdGlvbigpe1d0PXR9fWZ1bmN0aW9uIEd0KGUpe2Zvcig7ZSYmKGU9ZS4kcGFyZW50KTspaWYoZS5faW5hY3RpdmUpcmV0dXJuITA7cmV0dXJuITF9ZnVuY3Rpb24gWHQoZSx0KXtpZih0KXtpZihlLl9kaXJlY3RJbmFjdGl2ZT0hMSxHdChlKSlyZXR1cm59ZWxzZSBpZihlLl9kaXJlY3RJbmFjdGl2ZSlyZXR1cm47aWYoZS5faW5hY3RpdmV8fG51bGw9PT1lLl9pbmFjdGl2ZSl7ZS5faW5hY3RpdmU9ITE7Zm9yKHZhciBuPTA7bjxlLiRjaGlsZHJlbi5sZW5ndGg7bisrKVh0KGUuJGNoaWxkcmVuW25dKTtZdChlLFwiYWN0aXZhdGVkXCIpfX1mdW5jdGlvbiBZdChlLHQpe2xlKCk7dmFyIG49ZS4kb3B0aW9uc1t0XSxyPXQrXCIgaG9va1wiO2lmKG4pZm9yKHZhciBpPTAsbz1uLmxlbmd0aDtpPG87aSsrKUhlKG5baV0sZSxudWxsLGUscik7ZS5faGFzSG9va0V2ZW50JiZlLiRlbWl0KFwiaG9vazpcIit0KSxmZSgpfXZhciBRdD1bXSxlbj1bXSx0bj17fSxubj0hMSxybj0hMSxvbj0wO3ZhciBhbj0wLHNuPURhdGUubm93O2lmKHomJiFxKXt2YXIgY249d2luZG93LnBlcmZvcm1hbmNlO2NuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBjbi5ub3cmJnNuKCk+ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJFdmVudFwiKS50aW1lU3RhbXAmJihzbj1mdW5jdGlvbigpe3JldHVybiBjbi5ub3coKX0pfWZ1bmN0aW9uIHVuKCl7dmFyIGUsdDtmb3IoYW49c24oKSxybj0hMCxRdC5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQtdC5pZH0pLG9uPTA7b248UXQubGVuZ3RoO29uKyspKGU9UXRbb25dKS5iZWZvcmUmJmUuYmVmb3JlKCksdD1lLmlkLHRuW3RdPW51bGwsZS5ydW4oKTt2YXIgbj1lbi5zbGljZSgpLHI9UXQuc2xpY2UoKTtvbj1RdC5sZW5ndGg9ZW4ubGVuZ3RoPTAsdG49e30sbm49cm49ITEsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDxlLmxlbmd0aDt0KyspZVt0XS5faW5hY3RpdmU9ITAsWHQoZVt0XSwhMCl9KG4pLGZ1bmN0aW9uKGUpe3ZhciB0PWUubGVuZ3RoO2Zvcig7dC0tOyl7dmFyIG49ZVt0XSxyPW4udm07ci5fd2F0Y2hlcj09PW4mJnIuX2lzTW91bnRlZCYmIXIuX2lzRGVzdHJveWVkJiZZdChyLFwidXBkYXRlZFwiKX19KHIpLG5lJiZGLmRldnRvb2xzJiZuZS5lbWl0KFwiZmx1c2hcIil9dmFyIGxuPTAsZm49ZnVuY3Rpb24oZSx0LG4scixpKXt0aGlzLnZtPWUsaSYmKGUuX3dhdGNoZXI9dGhpcyksZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSxyPyh0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMsdGhpcy5iZWZvcmU9ci5iZWZvcmUpOnRoaXMuZGVlcD10aGlzLnVzZXI9dGhpcy5sYXp5PXRoaXMuc3luYz0hMSx0aGlzLmNiPW4sdGhpcy5pZD0rK2xuLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGllLHRoaXMubmV3RGVwSWRzPW5ldyBpZSx0aGlzLmV4cHJlc3Npb249XCJcIixcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3RoaXMuZ2V0dGVyPXQ6KHRoaXMuZ2V0dGVyPWZ1bmN0aW9uKGUpe2lmKCFILnRlc3QoZSkpe3ZhciB0PWUuc3BsaXQoXCIuXCIpO3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7aWYoIWUpcmV0dXJuO2U9ZVt0W25dXX1yZXR1cm4gZX19fSh0KSx0aGlzLmdldHRlcnx8KHRoaXMuZ2V0dGVyPVMpKSx0aGlzLnZhbHVlPXRoaXMubGF6eT92b2lkIDA6dGhpcy5nZXQoKX07Zm4ucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3ZhciBlO2xlKHRoaXMpO3ZhciB0PXRoaXMudm07dHJ5e2U9dGhpcy5nZXR0ZXIuY2FsbCh0LHQpfWNhdGNoKGUpe2lmKCF0aGlzLnVzZXIpdGhyb3cgZTtSZShlLHQsJ2dldHRlciBmb3Igd2F0Y2hlciBcIicrdGhpcy5leHByZXNzaW9uKydcIicpfWZpbmFsbHl7dGhpcy5kZWVwJiZldChlKSxmZSgpLHRoaXMuY2xlYW51cERlcHMoKX1yZXR1cm4gZX0sZm4ucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sZm4ucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl7dmFyIHQ9dGhpcy5kZXBzW2VdO3RoaXMubmV3RGVwSWRzLmhhcyh0LmlkKXx8dC5yZW1vdmVTdWIodGhpcyl9dmFyIG49dGhpcy5kZXBJZHM7dGhpcy5kZXBJZHM9dGhpcy5uZXdEZXBJZHMsdGhpcy5uZXdEZXBJZHM9bix0aGlzLm5ld0RlcElkcy5jbGVhcigpLG49dGhpcy5kZXBzLHRoaXMuZGVwcz10aGlzLm5ld0RlcHMsdGhpcy5uZXdEZXBzPW4sdGhpcy5uZXdEZXBzLmxlbmd0aD0wfSxmbi5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5sYXp5P3RoaXMuZGlydHk9ITA6dGhpcy5zeW5jP3RoaXMucnVuKCk6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5pZDtpZihudWxsPT10blt0XSl7aWYodG5bdF09ITAscm4pe2Zvcih2YXIgbj1RdC5sZW5ndGgtMTtuPm9uJiZRdFtuXS5pZD5lLmlkOyluLS07UXQuc3BsaWNlKG4rMSwwLGUpfWVsc2UgUXQucHVzaChlKTtubnx8KG5uPSEwLFllKHVuKSl9fSh0aGlzKX0sZm4ucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgZT10aGlzLmdldCgpO2lmKGUhPT10aGlzLnZhbHVlfHxvKGUpfHx0aGlzLmRlZXApe3ZhciB0PXRoaXMudmFsdWU7aWYodGhpcy52YWx1ZT1lLHRoaXMudXNlcil0cnl7dGhpcy5jYi5jYWxsKHRoaXMudm0sZSx0KX1jYXRjaChlKXtSZShlLHRoaXMudm0sJ2NhbGxiYWNrIGZvciB3YXRjaGVyIFwiJyt0aGlzLmV4cHJlc3Npb24rJ1wiJyl9ZWxzZSB0aGlzLmNiLmNhbGwodGhpcy52bSxlLHQpfX19LGZuLnByb3RvdHlwZS5ldmFsdWF0ZT1mdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfSxmbi5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuZGVwcy5sZW5ndGg7ZS0tOyl0aGlzLmRlcHNbZV0uZGVwZW5kKCl9LGZuLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt0aGlzLnZtLl9pc0JlaW5nRGVzdHJveWVkfHxoKHRoaXMudm0uX3dhdGNoZXJzLHRoaXMpO2Zvcih2YXIgZT10aGlzLmRlcHMubGVuZ3RoO2UtLTspdGhpcy5kZXBzW2VdLnJlbW92ZVN1Yih0aGlzKTt0aGlzLmFjdGl2ZT0hMX19O3ZhciBwbj17ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OlMsc2V0OlN9O2Z1bmN0aW9uIGRuKGUsdCxuKXtwbi5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1t0XVtuXX0scG4uc2V0PWZ1bmN0aW9uKGUpe3RoaXNbdF1bbl09ZX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixwbil9ZnVuY3Rpb24gdm4oZSl7ZS5fd2F0Y2hlcnM9W107dmFyIHQ9ZS4kb3B0aW9uczt0LnByb3BzJiZmdW5jdGlvbihlLHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuX3Byb3BzPXt9LGk9ZS4kb3B0aW9ucy5fcHJvcEtleXM9W107ZS4kcGFyZW50JiYkZSghMSk7dmFyIG89ZnVuY3Rpb24obyl7aS5wdXNoKG8pO3ZhciBhPU1lKG8sdCxuLGUpO3hlKHIsbyxhKSxvIGluIGV8fGRuKGUsXCJfcHJvcHNcIixvKX07Zm9yKHZhciBhIGluIHQpbyhhKTskZSghMCl9KGUsdC5wcm9wcyksdC5tZXRob2RzJiZmdW5jdGlvbihlLHQpe2UuJG9wdGlvbnMucHJvcHM7Zm9yKHZhciBuIGluIHQpZVtuXT1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0W25dP1M6eCh0W25dLGUpfShlLHQubWV0aG9kcyksdC5kYXRhP2Z1bmN0aW9uKGUpe3ZhciB0PWUuJG9wdGlvbnMuZGF0YTtzKHQ9ZS5fZGF0YT1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2Z1bmN0aW9uKGUsdCl7bGUoKTt0cnl7cmV0dXJuIGUuY2FsbCh0LHQpfWNhdGNoKGUpe3JldHVybiBSZShlLHQsXCJkYXRhKClcIikse319ZmluYWxseXtmZSgpfX0odCxlKTp0fHx7fSl8fCh0PXt9KTt2YXIgbj1PYmplY3Qua2V5cyh0KSxyPWUuJG9wdGlvbnMucHJvcHMsaT0oZS4kb3B0aW9ucy5tZXRob2RzLG4ubGVuZ3RoKTtmb3IoO2ktLTspe3ZhciBvPW5baV07ciYmeShyLG8pfHwoYT12b2lkIDAsMzYhPT0oYT0obytcIlwiKS5jaGFyQ29kZUF0KDApKSYmOTUhPT1hJiZkbihlLFwiX2RhdGFcIixvKSl9dmFyIGE7Q2UodCwhMCl9KGUpOkNlKGUuX2RhdGE9e30sITApLHQuY29tcHV0ZWQmJmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5fY29tcHV0ZWRXYXRjaGVycz1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGUoKTtmb3IodmFyIGkgaW4gdCl7dmFyIG89dFtpXSxhPVwiZnVuY3Rpb25cIj09dHlwZW9mIG8/bzpvLmdldDtyfHwobltpXT1uZXcgZm4oZSxhfHxTLFMsaG4pKSxpIGluIGV8fG1uKGUsaSxvKX19KGUsdC5jb21wdXRlZCksdC53YXRjaCYmdC53YXRjaCE9PVkmJmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylfbihlLG4scltpXSk7ZWxzZSBfbihlLG4scil9fShlLHQud2F0Y2gpfXZhciBobj17bGF6eTohMH07ZnVuY3Rpb24gbW4oZSx0LG4pe3ZhciByPSF0ZSgpO1wiZnVuY3Rpb25cIj09dHlwZW9mIG4/KHBuLmdldD1yP3luKHQpOmduKG4pLHBuLnNldD1TKToocG4uZ2V0PW4uZ2V0P3ImJiExIT09bi5jYWNoZT95bih0KTpnbihuLmdldCk6Uyxwbi5zZXQ9bi5zZXR8fFMpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQscG4pfWZ1bmN0aW9uIHluKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NvbXB1dGVkV2F0Y2hlcnMmJnRoaXMuX2NvbXB1dGVkV2F0Y2hlcnNbZV07aWYodClyZXR1cm4gdC5kaXJ0eSYmdC5ldmFsdWF0ZSgpLGNlLnRhcmdldCYmdC5kZXBlbmQoKSx0LnZhbHVlfX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcyl9fWZ1bmN0aW9uIF9uKGUsdCxuLHIpe3JldHVybiBzKG4pJiYocj1uLG49bi5oYW5kbGVyKSxcInN0cmluZ1wiPT10eXBlb2YgbiYmKG49ZVtuXSksZS4kd2F0Y2godCxuLHIpfXZhciBibj0wO2Z1bmN0aW9uICRuKGUpe3ZhciB0PWUub3B0aW9ucztpZihlLnN1cGVyKXt2YXIgbj0kbihlLnN1cGVyKTtpZihuIT09ZS5zdXBlck9wdGlvbnMpe2Uuc3VwZXJPcHRpb25zPW47dmFyIHI9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLm9wdGlvbnMscj1lLnNlYWxlZE9wdGlvbnM7Zm9yKHZhciBpIGluIG4pbltpXSE9PXJbaV0mJih0fHwodD17fSksdFtpXT1uW2ldKTtyZXR1cm4gdH0oZSk7ciYmQShlLmV4dGVuZE9wdGlvbnMsciksKHQ9ZS5vcHRpb25zPURlKG4sZS5leHRlbmRPcHRpb25zKSkubmFtZSYmKHQuY29tcG9uZW50c1t0Lm5hbWVdPWUpfX1yZXR1cm4gdH1mdW5jdGlvbiB3bihlKXt0aGlzLl9pbml0KGUpfWZ1bmN0aW9uIENuKGUpe2UuY2lkPTA7dmFyIHQ9MTtlLmV4dGVuZD1mdW5jdGlvbihlKXtlPWV8fHt9O3ZhciBuPXRoaXMscj1uLmNpZCxpPWUuX0N0b3J8fChlLl9DdG9yPXt9KTtpZihpW3JdKXJldHVybiBpW3JdO3ZhciBvPWUubmFtZXx8bi5vcHRpb25zLm5hbWUsYT1mdW5jdGlvbihlKXt0aGlzLl9pbml0KGUpfTtyZXR1cm4oYS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSkpLmNvbnN0cnVjdG9yPWEsYS5jaWQ9dCsrLGEub3B0aW9ucz1EZShuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEub3B0aW9ucy5wcm9wcyYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLnByb3BzO2Zvcih2YXIgbiBpbiB0KWRuKGUucHJvdG90eXBlLFwiX3Byb3BzXCIsbil9KGEpLGEub3B0aW9ucy5jb21wdXRlZCYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vcHRpb25zLmNvbXB1dGVkO2Zvcih2YXIgbiBpbiB0KW1uKGUucHJvdG90eXBlLG4sdFtuXSl9KGEpLGEuZXh0ZW5kPW4uZXh0ZW5kLGEubWl4aW49bi5taXhpbixhLnVzZT1uLnVzZSxNLmZvckVhY2goZnVuY3Rpb24oZSl7YVtlXT1uW2VdfSksbyYmKGEub3B0aW9ucy5jb21wb25lbnRzW29dPWEpLGEuc3VwZXJPcHRpb25zPW4ub3B0aW9ucyxhLmV4dGVuZE9wdGlvbnM9ZSxhLnNlYWxlZE9wdGlvbnM9QSh7fSxhLm9wdGlvbnMpLGlbcl09YSxhfX1mdW5jdGlvbiB4bihlKXtyZXR1cm4gZSYmKGUuQ3Rvci5vcHRpb25zLm5hbWV8fGUudGFnKX1mdW5jdGlvbiBrbihlLHQpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP2UuaW5kZXhPZih0KT4tMTpcInN0cmluZ1wiPT10eXBlb2YgZT9lLnNwbGl0KFwiLFwiKS5pbmRleE9mKHQpPi0xOihuPWUsXCJbb2JqZWN0IFJlZ0V4cF1cIj09PWEuY2FsbChuKSYmZS50ZXN0KHQpKTt2YXIgbn1mdW5jdGlvbiBBbihlLHQpe3ZhciBuPWUuY2FjaGUscj1lLmtleXMsaT1lLl92bm9kZTtmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXTtpZihhKXt2YXIgcz14bihhLmNvbXBvbmVudE9wdGlvbnMpO3MmJiF0KHMpJiZPbihuLG8scixpKX19fWZ1bmN0aW9uIE9uKGUsdCxuLHIpe3ZhciBpPWVbdF07IWl8fHImJmkudGFnPT09ci50YWd8fGkuY29tcG9uZW50SW5zdGFuY2UuJGRlc3Ryb3koKSxlW3RdPW51bGwsaChuLHQpfSFmdW5jdGlvbih0KXt0LnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbih0KXt2YXIgbj10aGlzO24uX3VpZD1ibisrLG4uX2lzVnVlPSEwLHQmJnQuX2lzQ29tcG9uZW50P2Z1bmN0aW9uKGUsdCl7dmFyIG49ZS4kb3B0aW9ucz1PYmplY3QuY3JlYXRlKGUuY29uc3RydWN0b3Iub3B0aW9ucykscj10Ll9wYXJlbnRWbm9kZTtuLnBhcmVudD10LnBhcmVudCxuLl9wYXJlbnRWbm9kZT1yO3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztuLnByb3BzRGF0YT1pLnByb3BzRGF0YSxuLl9wYXJlbnRMaXN0ZW5lcnM9aS5saXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49aS5jaGlsZHJlbixuLl9jb21wb25lbnRUYWc9aS50YWcsdC5yZW5kZXImJihuLnJlbmRlcj10LnJlbmRlcixuLnN0YXRpY1JlbmRlckZucz10LnN0YXRpY1JlbmRlckZucyl9KG4sdCk6bi4kb3B0aW9ucz1EZSgkbihuLmNvbnN0cnVjdG9yKSx0fHx7fSxuKSxuLl9yZW5kZXJQcm94eT1uLG4uX3NlbGY9bixmdW5jdGlvbihlKXt2YXIgdD1lLiRvcHRpb25zLG49dC5wYXJlbnQ7aWYobiYmIXQuYWJzdHJhY3Qpe2Zvcig7bi4kb3B0aW9ucy5hYnN0cmFjdCYmbi4kcGFyZW50OyluPW4uJHBhcmVudDtuLiRjaGlsZHJlbi5wdXNoKGUpfWUuJHBhcmVudD1uLGUuJHJvb3Q9bj9uLiRyb290OmUsZS4kY2hpbGRyZW49W10sZS4kcmVmcz17fSxlLl93YXRjaGVyPW51bGwsZS5faW5hY3RpdmU9bnVsbCxlLl9kaXJlY3RJbmFjdGl2ZT0hMSxlLl9pc01vdW50ZWQ9ITEsZS5faXNEZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX0obiksZnVuY3Rpb24oZSl7ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksZS5faGFzSG9va0V2ZW50PSExO3ZhciB0PWUuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVyczt0JiZxdChlLHQpfShuKSxmdW5jdGlvbih0KXt0Ll92bm9kZT1udWxsLHQuX3N0YXRpY1RyZWVzPW51bGw7dmFyIG49dC4kb3B0aW9ucyxyPXQuJHZub2RlPW4uX3BhcmVudFZub2RlLGk9ciYmci5jb250ZXh0O3QuJHNsb3RzPXV0KG4uX3JlbmRlckNoaWxkcmVuLGkpLHQuJHNjb3BlZFNsb3RzPWUsdC5fYz1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gUHQodCxlLG4scixpLCExKX0sdC4kY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLG4scixpKXtyZXR1cm4gUHQodCxlLG4scixpLCEwKX07dmFyIG89ciYmci5kYXRhO3hlKHQsXCIkYXR0cnNcIixvJiZvLmF0dHJzfHxlLG51bGwsITApLHhlKHQsXCIkbGlzdGVuZXJzXCIsbi5fcGFyZW50TGlzdGVuZXJzfHxlLG51bGwsITApfShuKSxZdChuLFwiYmVmb3JlQ3JlYXRlXCIpLGZ1bmN0aW9uKGUpe3ZhciB0PWN0KGUuJG9wdGlvbnMuaW5qZWN0LGUpO3QmJigkZSghMSksT2JqZWN0LmtleXModCkuZm9yRWFjaChmdW5jdGlvbihuKXt4ZShlLG4sdFtuXSl9KSwkZSghMCkpfShuKSx2bihuKSxmdW5jdGlvbihlKXt2YXIgdD1lLiRvcHRpb25zLnByb3ZpZGU7dCYmKGUuX3Byb3ZpZGVkPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dC5jYWxsKGUpOnQpfShuKSxZdChuLFwiY3JlYXRlZFwiKSxuLiRvcHRpb25zLmVsJiZuLiRtb3VudChuLiRvcHRpb25zLmVsKX19KHduKSxmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGF9fSxuPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcHJvcHN9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCIkZGF0YVwiLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcIiRwcm9wc1wiLG4pLGUucHJvdG90eXBlLiRzZXQ9a2UsZS5wcm90b3R5cGUuJGRlbGV0ZT1BZSxlLnByb3RvdHlwZS4kd2F0Y2g9ZnVuY3Rpb24oZSx0LG4pe2lmKHModCkpcmV0dXJuIF9uKHRoaXMsZSx0LG4pOyhuPW58fHt9KS51c2VyPSEwO3ZhciByPW5ldyBmbih0aGlzLGUsdCxuKTtpZihuLmltbWVkaWF0ZSl0cnl7dC5jYWxsKHRoaXMsci52YWx1ZSl9Y2F0Y2goZSl7UmUoZSx0aGlzLCdjYWxsYmFjayBmb3IgaW1tZWRpYXRlIHdhdGNoZXIgXCInK3IuZXhwcmVzc2lvbisnXCInKX1yZXR1cm4gZnVuY3Rpb24oKXtyLnRlYXJkb3duKCl9fX0od24pLGZ1bmN0aW9uKGUpe3ZhciB0PS9eaG9vazovO2UucHJvdG90eXBlLiRvbj1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXM7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGk9MCxvPWUubGVuZ3RoO2k8bztpKyspci4kb24oZVtpXSxuKTtlbHNlKHIuX2V2ZW50c1tlXXx8KHIuX2V2ZW50c1tlXT1bXSkpLnB1c2gobiksdC50ZXN0KGUpJiYoci5faGFzSG9va0V2ZW50PSEwKTtyZXR1cm4gcn0sZS5wcm90b3R5cGUuJG9uY2U9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO2Z1bmN0aW9uIHIoKXtuLiRvZmYoZSxyKSx0LmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5mbj10LG4uJG9uKGUsciksbn0sZS5wcm90b3R5cGUuJG9mZj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLG47aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKW4uJG9mZihlW3JdLHQpO3JldHVybiBufXZhciBvLGE9bi5fZXZlbnRzW2VdO2lmKCFhKXJldHVybiBuO2lmKCF0KXJldHVybiBuLl9ldmVudHNbZV09bnVsbCxuO2Zvcih2YXIgcz1hLmxlbmd0aDtzLS07KWlmKChvPWFbc10pPT09dHx8by5mbj09PXQpe2Euc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIG59LGUucHJvdG90eXBlLiRlbWl0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2V2ZW50c1tlXTtpZih0KXt0PXQubGVuZ3RoPjE/ayh0KTp0O2Zvcih2YXIgbj1rKGFyZ3VtZW50cywxKSxyPSdldmVudCBoYW5kbGVyIGZvciBcIicrZSsnXCInLGk9MCxvPXQubGVuZ3RoO2k8bztpKyspSGUodFtpXSx0aGlzLG4sdGhpcyxyKX1yZXR1cm4gdGhpc319KHduKSxmdW5jdGlvbihlKXtlLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcyxyPW4uJGVsLGk9bi5fdm5vZGUsbz1adChuKTtuLl92bm9kZT1lLG4uJGVsPWk/bi5fX3BhdGNoX18oaSxlKTpuLl9fcGF0Y2hfXyhuLiRlbCxlLHQsITEpLG8oKSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5fd2F0Y2hlciYmdGhpcy5fd2F0Y2hlci51cGRhdGUoKX0sZS5wcm90b3R5cGUuJGRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCFlLl9pc0JlaW5nRGVzdHJveWVkKXtZdChlLFwiYmVmb3JlRGVzdHJveVwiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8aCh0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCxlLl9fcGF0Y2hfXyhlLl92bm9kZSxudWxsKSxZdChlLFwiZGVzdHJveWVkXCIpLGUuJG9mZigpLGUuJGVsJiYoZS4kZWwuX192dWVfXz1udWxsKSxlLiR2bm9kZSYmKGUuJHZub2RlLnBhcmVudD1udWxsKX19fSh3biksZnVuY3Rpb24oZSl7U3QoZS5wcm90b3R5cGUpLGUucHJvdG90eXBlLiRuZXh0VGljaz1mdW5jdGlvbihlKXtyZXR1cm4gWWUoZSx0aGlzKX0sZS5wcm90b3R5cGUuX3JlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcyxuPXQuJG9wdGlvbnMscj1uLnJlbmRlcixpPW4uX3BhcmVudFZub2RlO2kmJih0LiRzY29wZWRTbG90cz1mdChpLmRhdGEuc2NvcGVkU2xvdHMsdC4kc2xvdHMsdC4kc2NvcGVkU2xvdHMpKSx0LiR2bm9kZT1pO3RyeXtIdD10LGU9ci5jYWxsKHQuX3JlbmRlclByb3h5LHQuJGNyZWF0ZUVsZW1lbnQpfWNhdGNoKG4pe1JlKG4sdCxcInJlbmRlclwiKSxlPXQuX3Zub2RlfWZpbmFsbHl7SHQ9bnVsbH1yZXR1cm4gQXJyYXkuaXNBcnJheShlKSYmMT09PWUubGVuZ3RoJiYoZT1lWzBdKSxlIGluc3RhbmNlb2YgcGV8fChlPXZlKCkpLGUucGFyZW50PWksZX19KHduKTt2YXIgU249W1N0cmluZyxSZWdFeHAsQXJyYXldLFRuPXtLZWVwQWxpdmU6e25hbWU6XCJrZWVwLWFsaXZlXCIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6U24sZXhjbHVkZTpTbixtYXg6W1N0cmluZyxOdW1iZXJdfSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5jYWNoZT1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMua2V5cz1bXX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7Zm9yKHZhciBlIGluIHRoaXMuY2FjaGUpT24odGhpcy5jYWNoZSxlLHRoaXMua2V5cyl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJHdhdGNoKFwiaW5jbHVkZVwiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIGtuKHQsZSl9KX0pLHRoaXMuJHdhdGNoKFwiZXhjbHVkZVwiLGZ1bmN0aW9uKHQpe0FuKGUsZnVuY3Rpb24oZSl7cmV0dXJuIWtuKHQsZSl9KX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRzbG90cy5kZWZhdWx0LHQ9enQoZSksbj10JiZ0LmNvbXBvbmVudE9wdGlvbnM7aWYobil7dmFyIHI9eG4obiksaT10aGlzLmluY2x1ZGUsbz10aGlzLmV4Y2x1ZGU7aWYoaSYmKCFyfHwha24oaSxyKSl8fG8mJnImJmtuKG8scikpcmV0dXJuIHQ7dmFyIGE9dGhpcy5jYWNoZSxzPXRoaXMua2V5cyxjPW51bGw9PXQua2V5P24uQ3Rvci5jaWQrKG4udGFnP1wiOjpcIituLnRhZzpcIlwiKTp0LmtleTthW2NdPyh0LmNvbXBvbmVudEluc3RhbmNlPWFbY10uY29tcG9uZW50SW5zdGFuY2UsaChzLGMpLHMucHVzaChjKSk6KGFbY109dCxzLnB1c2goYyksdGhpcy5tYXgmJnMubGVuZ3RoPnBhcnNlSW50KHRoaXMubWF4KSYmT24oYSxzWzBdLHMsdGhpcy5fdm5vZGUpKSx0LmRhdGEua2VlcEFsaXZlPSEwfXJldHVybiB0fHxlJiZlWzBdfX19OyFmdW5jdGlvbihlKXt2YXIgdD17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEZ9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImNvbmZpZ1wiLHQpLGUudXRpbD17d2FybjphZSxleHRlbmQ6QSxtZXJnZU9wdGlvbnM6RGUsZGVmaW5lUmVhY3RpdmU6eGV9LGUuc2V0PWtlLGUuZGVsZXRlPUFlLGUubmV4dFRpY2s9WWUsZS5vYnNlcnZhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiBDZShlKSxlfSxlLm9wdGlvbnM9T2JqZWN0LmNyZWF0ZShudWxsKSxNLmZvckVhY2goZnVuY3Rpb24odCl7ZS5vcHRpb25zW3QrXCJzXCJdPU9iamVjdC5jcmVhdGUobnVsbCl9KSxlLm9wdGlvbnMuX2Jhc2U9ZSxBKGUub3B0aW9ucy5jb21wb25lbnRzLFRuKSxmdW5jdGlvbihlKXtlLnVzZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnN0YWxsZWRQbHVnaW5zfHwodGhpcy5faW5zdGFsbGVkUGx1Z2lucz1bXSk7aWYodC5pbmRleE9mKGUpPi0xKXJldHVybiB0aGlzO3ZhciBuPWsoYXJndW1lbnRzLDEpO3JldHVybiBuLnVuc2hpZnQodGhpcyksXCJmdW5jdGlvblwiPT10eXBlb2YgZS5pbnN0YWxsP2UuaW5zdGFsbC5hcHBseShlLG4pOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUuYXBwbHkobnVsbCxuKSx0LnB1c2goZSksdGhpc319KGUpLGZ1bmN0aW9uKGUpe2UubWl4aW49ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucz1EZSh0aGlzLm9wdGlvbnMsZSksdGhpc319KGUpLENuKGUpLGZ1bmN0aW9uKGUpe00uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdPWZ1bmN0aW9uKGUsbil7cmV0dXJuIG4/KFwiY29tcG9uZW50XCI9PT10JiZzKG4pJiYobi5uYW1lPW4ubmFtZXx8ZSxuPXRoaXMub3B0aW9ucy5fYmFzZS5leHRlbmQobikpLFwiZGlyZWN0aXZlXCI9PT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiYobj17YmluZDpuLHVwZGF0ZTpufSksdGhpcy5vcHRpb25zW3QrXCJzXCJdW2VdPW4sbik6dGhpcy5vcHRpb25zW3QrXCJzXCJdW2VdfX0pfShlKX0od24pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh3bi5wcm90b3R5cGUsXCIkaXNTZXJ2ZXJcIix7Z2V0OnRlfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHduLnByb3RvdHlwZSxcIiRzc3JDb250ZXh0XCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR2bm9kZSYmdGhpcy4kdm5vZGUuc3NyQ29udGV4dH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkod24sXCJGdW5jdGlvbmFsUmVuZGVyQ29udGV4dFwiLHt2YWx1ZTpUdH0pLHduLnZlcnNpb249XCIyLjYuMTJcIjt2YXIgRW49cChcInN0eWxlLGNsYXNzXCIpLE5uPXAoXCJpbnB1dCx0ZXh0YXJlYSxvcHRpb24sc2VsZWN0LHByb2dyZXNzXCIpLGpuPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm5cInZhbHVlXCI9PT1uJiZObihlKSYmXCJidXR0b25cIiE9PXR8fFwic2VsZWN0ZWRcIj09PW4mJlwib3B0aW9uXCI9PT1lfHxcImNoZWNrZWRcIj09PW4mJlwiaW5wdXRcIj09PWV8fFwibXV0ZWRcIj09PW4mJlwidmlkZW9cIj09PWV9LERuPXAoXCJjb250ZW50ZWRpdGFibGUsZHJhZ2dhYmxlLHNwZWxsY2hlY2tcIiksTG49cChcImV2ZW50cyxjYXJldCx0eXBpbmcscGxhaW50ZXh0LW9ubHlcIiksTW49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gSG4odCl8fFwiZmFsc2VcIj09PXQ/XCJmYWxzZVwiOlwiY29udGVudGVkaXRhYmxlXCI9PT1lJiZMbih0KT90OlwidHJ1ZVwifSxJbj1wKFwiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZVwiKSxGbj1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixQbj1mdW5jdGlvbihlKXtyZXR1cm5cIjpcIj09PWUuY2hhckF0KDUpJiZcInhsaW5rXCI9PT1lLnNsaWNlKDAsNSl9LFJuPWZ1bmN0aW9uKGUpe3JldHVybiBQbihlKT9lLnNsaWNlKDYsZS5sZW5ndGgpOlwiXCJ9LEhuPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHwhMT09PWV9O2Z1bmN0aW9uIEJuKGUpe2Zvcih2YXIgdD1lLmRhdGEscj1lLGk9ZTtuKGkuY29tcG9uZW50SW5zdGFuY2UpOykoaT1pLmNvbXBvbmVudEluc3RhbmNlLl92bm9kZSkmJmkuZGF0YSYmKHQ9VW4oaS5kYXRhLHQpKTtmb3IoO24ocj1yLnBhcmVudCk7KXImJnIuZGF0YSYmKHQ9VW4odCxyLmRhdGEpKTtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZihuKGUpfHxuKHQpKXJldHVybiB6bihlLFZuKHQpKTtyZXR1cm5cIlwifSh0LnN0YXRpY0NsYXNzLHQuY2xhc3MpfWZ1bmN0aW9uIFVuKGUsdCl7cmV0dXJue3N0YXRpY0NsYXNzOnpuKGUuc3RhdGljQ2xhc3MsdC5zdGF0aWNDbGFzcyksY2xhc3M6bihlLmNsYXNzKT9bZS5jbGFzcyx0LmNsYXNzXTp0LmNsYXNzfX1mdW5jdGlvbiB6bihlLHQpe3JldHVybiBlP3Q/ZStcIiBcIit0OmU6dHx8XCJcIn1mdW5jdGlvbiBWbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9mdW5jdGlvbihlKXtmb3IodmFyIHQscj1cIlwiLGk9MCxvPWUubGVuZ3RoO2k8bztpKyspbih0PVZuKGVbaV0pKSYmXCJcIiE9PXQmJihyJiYocis9XCIgXCIpLHIrPXQpO3JldHVybiByfShlKTpvKGUpP2Z1bmN0aW9uKGUpe3ZhciB0PVwiXCI7Zm9yKHZhciBuIGluIGUpZVtuXSYmKHQmJih0Kz1cIiBcIiksdCs9bik7cmV0dXJuIHR9KGUpOlwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJcIn12YXIgS249e3N2ZzpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsbWF0aDpcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIn0sSm49cChcImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUscGljdHVyZSxocixpbWcsbGksbWFpbixvbCxwLHByZSx1bCxhLGIsYWJicixiZGksYmRvLGJyLGNpdGUsY29kZSxkYXRhLGRmbixlbSxpLGtiZCxtYXJrLHEscnAscnQscnRjLHJ1YnkscyxzYW1wLHNtYWxsLHNwYW4sc3Ryb25nLHN1YixzdXAsdGltZSx1LHZhcix3YnIsYXJlYSxhdWRpbyxtYXAsdHJhY2ssdmlkZW8sZW1iZWQsb2JqZWN0LHBhcmFtLHNvdXJjZSxjYW52YXMsc2NyaXB0LG5vc2NyaXB0LGRlbCxpbnMsY2FwdGlvbixjb2wsY29sZ3JvdXAsdGFibGUsdGhlYWQsdGJvZHksdGQsdGgsdHIsYnV0dG9uLGRhdGFsaXN0LGZpZWxkc2V0LGZvcm0saW5wdXQsbGFiZWwsbGVnZW5kLG1ldGVyLG9wdGdyb3VwLG9wdGlvbixvdXRwdXQscHJvZ3Jlc3Msc2VsZWN0LHRleHRhcmVhLGRldGFpbHMsZGlhbG9nLG1lbnUsbWVudWl0ZW0sc3VtbWFyeSxjb250ZW50LGVsZW1lbnQsc2hhZG93LHRlbXBsYXRlLGJsb2NrcXVvdGUsaWZyYW1lLHRmb290XCIpLHFuPXAoXCJzdmcsYW5pbWF0ZSxjaXJjbGUsY2xpcHBhdGgsY3Vyc29yLGRlZnMsZGVzYyxlbGxpcHNlLGZpbHRlcixmb250LWZhY2UsZm9yZWlnbk9iamVjdCxnLGdseXBoLGltYWdlLGxpbmUsbWFya2VyLG1hc2ssbWlzc2luZy1nbHlwaCxwYXRoLHBhdHRlcm4scG9seWdvbixwb2x5bGluZSxyZWN0LHN3aXRjaCxzeW1ib2wsdGV4dCx0ZXh0cGF0aCx0c3Bhbix1c2Usdmlld1wiLCEwKSxXbj1mdW5jdGlvbihlKXtyZXR1cm4gSm4oZSl8fHFuKGUpfTtmdW5jdGlvbiBabihlKXtyZXR1cm4gcW4oZSk/XCJzdmdcIjpcIm1hdGhcIj09PWU/XCJtYXRoXCI6dm9pZCAwfXZhciBHbj1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBYbj1wKFwidGV4dCxudW1iZXIscGFzc3dvcmQsc2VhcmNoLGVtYWlsLHRlbCx1cmxcIik7ZnVuY3Rpb24gWW4oZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe3ZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk7cmV0dXJuIHR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIil9cmV0dXJuIGV9dmFyIFFuPU9iamVjdC5mcmVlemUoe2NyZWF0ZUVsZW1lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVyblwic2VsZWN0XCIhPT1lP246KHQuZGF0YSYmdC5kYXRhLmF0dHJzJiZ2b2lkIDAhPT10LmRhdGEuYXR0cnMubXVsdGlwbGUmJm4uc2V0QXR0cmlidXRlKFwibXVsdGlwbGVcIixcIm11bHRpcGxlXCIpLG4pfSxjcmVhdGVFbGVtZW50TlM6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKEtuW2VdLHQpfSxjcmVhdGVUZXh0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSl9LGNyZWF0ZUNvbW1lbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZSl9LGluc2VydEJlZm9yZTpmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUNoaWxkKHQpfSxhcHBlbmRDaGlsZDpmdW5jdGlvbihlLHQpe2UuYXBwZW5kQ2hpbGQodCl9LHBhcmVudE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZX0sbmV4dFNpYmxpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubmV4dFNpYmxpbmd9LHRhZ05hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGFnTmFtZX0sc2V0VGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSx0KXtlLnRleHRDb250ZW50PXR9LHNldFN0eWxlU2NvcGU6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZSh0LFwiXCIpfX0pLGVyPXtjcmVhdGU6ZnVuY3Rpb24oZSx0KXt0cih0KX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7ZS5kYXRhLnJlZiE9PXQuZGF0YS5yZWYmJih0cihlLCEwKSx0cih0KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oZSl7dHIoZSwhMCl9fTtmdW5jdGlvbiB0cihlLHQpe3ZhciByPWUuZGF0YS5yZWY7aWYobihyKSl7dmFyIGk9ZS5jb250ZXh0LG89ZS5jb21wb25lbnRJbnN0YW5jZXx8ZS5lbG0sYT1pLiRyZWZzO3Q/QXJyYXkuaXNBcnJheShhW3JdKT9oKGFbcl0sbyk6YVtyXT09PW8mJihhW3JdPXZvaWQgMCk6ZS5kYXRhLnJlZkluRm9yP0FycmF5LmlzQXJyYXkoYVtyXSk/YVtyXS5pbmRleE9mKG8pPDAmJmFbcl0ucHVzaChvKTphW3JdPVtvXTphW3JdPW99fXZhciBucj1uZXcgcGUoXCJcIix7fSxbXSkscnI9W1wiY3JlYXRlXCIsXCJhY3RpdmF0ZVwiLFwidXBkYXRlXCIsXCJyZW1vdmVcIixcImRlc3Ryb3lcIl07ZnVuY3Rpb24gaXIoZSxpKXtyZXR1cm4gZS5rZXk9PT1pLmtleSYmKGUudGFnPT09aS50YWcmJmUuaXNDb21tZW50PT09aS5pc0NvbW1lbnQmJm4oZS5kYXRhKT09PW4oaS5kYXRhKSYmZnVuY3Rpb24oZSx0KXtpZihcImlucHV0XCIhPT1lLnRhZylyZXR1cm4hMDt2YXIgcixpPW4ocj1lLmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZSxvPW4ocj10LmRhdGEpJiZuKHI9ci5hdHRycykmJnIudHlwZTtyZXR1cm4gaT09PW98fFhuKGkpJiZYbihvKX0oZSxpKXx8cihlLmlzQXN5bmNQbGFjZWhvbGRlcikmJmUuYXN5bmNGYWN0b3J5PT09aS5hc3luY0ZhY3RvcnkmJnQoaS5hc3luY0ZhY3RvcnkuZXJyb3IpKX1mdW5jdGlvbiBvcihlLHQscil7dmFyIGksbyxhPXt9O2ZvcihpPXQ7aTw9cjsrK2kpbihvPWVbaV0ua2V5KSYmKGFbb109aSk7cmV0dXJuIGF9dmFyIGFyPXtjcmVhdGU6c3IsdXBkYXRlOnNyLGRlc3Ryb3k6ZnVuY3Rpb24oZSl7c3IoZSxucil9fTtmdW5jdGlvbiBzcihlLHQpeyhlLmRhdGEuZGlyZWN0aXZlc3x8dC5kYXRhLmRpcmVjdGl2ZXMpJiZmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxvPWU9PT1ucixhPXQ9PT1ucixzPXVyKGUuZGF0YS5kaXJlY3RpdmVzLGUuY29udGV4dCksYz11cih0LmRhdGEuZGlyZWN0aXZlcyx0LmNvbnRleHQpLHU9W10sbD1bXTtmb3IobiBpbiBjKXI9c1tuXSxpPWNbbl0scj8oaS5vbGRWYWx1ZT1yLnZhbHVlLGkub2xkQXJnPXIuYXJnLGZyKGksXCJ1cGRhdGVcIix0LGUpLGkuZGVmJiZpLmRlZi5jb21wb25lbnRVcGRhdGVkJiZsLnB1c2goaSkpOihmcihpLFwiYmluZFwiLHQsZSksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZ1LnB1c2goaSkpO2lmKHUubGVuZ3RoKXt2YXIgZj1mdW5jdGlvbigpe2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKWZyKHVbbl0sXCJpbnNlcnRlZFwiLHQsZSl9O28/aXQodCxcImluc2VydFwiLGYpOmYoKX1sLmxlbmd0aCYmaXQodCxcInBvc3RwYXRjaFwiLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPTA7bjxsLmxlbmd0aDtuKyspZnIobFtuXSxcImNvbXBvbmVudFVwZGF0ZWRcIix0LGUpfSk7aWYoIW8pZm9yKG4gaW4gcyljW25dfHxmcihzW25dLFwidW5iaW5kXCIsZSxlLGEpfShlLHQpfXZhciBjcj1PYmplY3QuY3JlYXRlKG51bGwpO2Z1bmN0aW9uIHVyKGUsdCl7dmFyIG4scixpPU9iamVjdC5jcmVhdGUobnVsbCk7aWYoIWUpcmV0dXJuIGk7Zm9yKG49MDtuPGUubGVuZ3RoO24rKykocj1lW25dKS5tb2RpZmllcnN8fChyLm1vZGlmaWVycz1jciksaVtscihyKV09cixyLmRlZj1MZSh0LiRvcHRpb25zLFwiZGlyZWN0aXZlc1wiLHIubmFtZSk7cmV0dXJuIGl9ZnVuY3Rpb24gbHIoZSl7cmV0dXJuIGUucmF3TmFtZXx8ZS5uYW1lK1wiLlwiK09iamVjdC5rZXlzKGUubW9kaWZpZXJzfHx7fSkuam9pbihcIi5cIil9ZnVuY3Rpb24gZnIoZSx0LG4scixpKXt2YXIgbz1lLmRlZiYmZS5kZWZbdF07aWYobyl0cnl7byhuLmVsbSxlLG4scixpKX1jYXRjaChyKXtSZShyLG4uY29udGV4dCxcImRpcmVjdGl2ZSBcIitlLm5hbWUrXCIgXCIrdCtcIiBob29rXCIpfX12YXIgcHI9W2VyLGFyXTtmdW5jdGlvbiBkcihlLHIpe3ZhciBpPXIuY29tcG9uZW50T3B0aW9ucztpZighKG4oaSkmJiExPT09aS5DdG9yLm9wdGlvbnMuaW5oZXJpdEF0dHJzfHx0KGUuZGF0YS5hdHRycykmJnQoci5kYXRhLmF0dHJzKSkpe3ZhciBvLGEscz1yLmVsbSxjPWUuZGF0YS5hdHRyc3x8e30sdT1yLmRhdGEuYXR0cnN8fHt9O2ZvcihvIGluIG4odS5fX29iX18pJiYodT1yLmRhdGEuYXR0cnM9QSh7fSx1KSksdSlhPXVbb10sY1tvXSE9PWEmJnZyKHMsbyxhKTtmb3IobyBpbihxfHxaKSYmdS52YWx1ZSE9PWMudmFsdWUmJnZyKHMsXCJ2YWx1ZVwiLHUudmFsdWUpLGMpdCh1W29dKSYmKFBuKG8pP3MucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4obykpOkRuKG8pfHxzLnJlbW92ZUF0dHJpYnV0ZShvKSl9fWZ1bmN0aW9uIHZyKGUsdCxuKXtlLnRhZ05hbWUuaW5kZXhPZihcIi1cIik+LTE/aHIoZSx0LG4pOkluKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOihuPVwiYWxsb3dmdWxsc2NyZWVuXCI9PT10JiZcIkVNQkVEXCI9PT1lLnRhZ05hbWU/XCJ0cnVlXCI6dCxlLnNldEF0dHJpYnV0ZSh0LG4pKTpEbih0KT9lLnNldEF0dHJpYnV0ZSh0LE1uKHQsbikpOlBuKHQpP0huKG4pP2UucmVtb3ZlQXR0cmlidXRlTlMoRm4sUm4odCkpOmUuc2V0QXR0cmlidXRlTlMoRm4sdCxuKTpocihlLHQsbil9ZnVuY3Rpb24gaHIoZSx0LG4pe2lmKEhuKG4pKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7aWYocSYmIVcmJlwiVEVYVEFSRUFcIj09PWUudGFnTmFtZSYmXCJwbGFjZWhvbGRlclwiPT09dCYmXCJcIiE9PW4mJiFlLl9faWVwaCl7dmFyIHI9ZnVuY3Rpb24odCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLHIpfTtlLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnB1dFwiLHIpLGUuX19pZXBoPSEwfWUuc2V0QXR0cmlidXRlKHQsbil9fXZhciBtcj17Y3JlYXRlOmRyLHVwZGF0ZTpkcn07ZnVuY3Rpb24geXIoZSxyKXt2YXIgaT1yLmVsbSxvPXIuZGF0YSxhPWUuZGF0YTtpZighKHQoby5zdGF0aWNDbGFzcykmJnQoby5jbGFzcykmJih0KGEpfHx0KGEuc3RhdGljQ2xhc3MpJiZ0KGEuY2xhc3MpKSkpe3ZhciBzPUJuKHIpLGM9aS5fdHJhbnNpdGlvbkNsYXNzZXM7bihjKSYmKHM9em4ocyxWbihjKSkpLHMhPT1pLl9wcmV2Q2xhc3MmJihpLnNldEF0dHJpYnV0ZShcImNsYXNzXCIscyksaS5fcHJldkNsYXNzPXMpfX12YXIgZ3IsX3IsYnIsJHIsd3IsQ3IseHI9e2NyZWF0ZTp5cix1cGRhdGU6eXJ9LGtyPS9bXFx3KS4rXFwtXyRcXF1dLztmdW5jdGlvbiBBcihlKXt2YXIgdCxuLHIsaSxvLGE9ITEscz0hMSxjPSExLHU9ITEsbD0wLGY9MCxwPTAsZD0wO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaWYobj10LHQ9ZS5jaGFyQ29kZUF0KHIpLGEpMzk9PT10JiY5MiE9PW4mJihhPSExKTtlbHNlIGlmKHMpMzQ9PT10JiY5MiE9PW4mJihzPSExKTtlbHNlIGlmKGMpOTY9PT10JiY5MiE9PW4mJihjPSExKTtlbHNlIGlmKHUpNDc9PT10JiY5MiE9PW4mJih1PSExKTtlbHNlIGlmKDEyNCE9PXR8fDEyND09PWUuY2hhckNvZGVBdChyKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQoci0xKXx8bHx8Znx8cCl7c3dpdGNoKHQpe2Nhc2UgMzQ6cz0hMDticmVhaztjYXNlIDM5OmE9ITA7YnJlYWs7Y2FzZSA5NjpjPSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZisrO2JyZWFrO2Nhc2UgOTM6Zi0tO2JyZWFrO2Nhc2UgMTIzOmwrKzticmVhaztjYXNlIDEyNTpsLS19aWYoNDc9PT10KXtmb3IodmFyIHY9ci0xLGg9dm9pZCAwO3Y+PTAmJlwiIFwiPT09KGg9ZS5jaGFyQXQodikpO3YtLSk7aCYma3IudGVzdChoKXx8KHU9ITApfX1lbHNlIHZvaWQgMD09PWk/KGQ9cisxLGk9ZS5zbGljZSgwLHIpLnRyaW0oKSk6bSgpO2Z1bmN0aW9uIG0oKXsob3x8KG89W10pKS5wdXNoKGUuc2xpY2UoZCxyKS50cmltKCkpLGQ9cisxfWlmKHZvaWQgMD09PWk/aT1lLnNsaWNlKDAscikudHJpbSgpOjAhPT1kJiZtKCksbylmb3Iocj0wO3I8by5sZW5ndGg7cisrKWk9T3IoaSxvW3JdKTtyZXR1cm4gaX1mdW5jdGlvbiBPcihlLHQpe3ZhciBuPXQuaW5kZXhPZihcIihcIik7aWYobjwwKXJldHVybidfZihcIicrdCsnXCIpKCcrZStcIilcIjt2YXIgcj10LnNsaWNlKDAsbiksaT10LnNsaWNlKG4rMSk7cmV0dXJuJ19mKFwiJytyKydcIikoJytlKyhcIilcIiE9PWk/XCIsXCIraTppKX1mdW5jdGlvbiBTcihlLHQpe2NvbnNvbGUuZXJyb3IoXCJbVnVlIGNvbXBpbGVyXTogXCIrZSl9ZnVuY3Rpb24gVHIoZSx0KXtyZXR1cm4gZT9lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pOltdfWZ1bmN0aW9uIEVyKGUsdCxuLHIsaSl7KGUucHJvcHN8fChlLnByb3BzPVtdKSkucHVzaChScih7bmFtZTp0LHZhbHVlOm4sZHluYW1pYzppfSxyKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBOcihlLHQsbixyLGkpeyhpP2UuZHluYW1pY0F0dHJzfHwoZS5keW5hbWljQXR0cnM9W10pOmUuYXR0cnN8fChlLmF0dHJzPVtdKSkucHVzaChScih7bmFtZTp0LHZhbHVlOm4sZHluYW1pYzppfSxyKSksZS5wbGFpbj0hMX1mdW5jdGlvbiBqcihlLHQsbixyKXtlLmF0dHJzTWFwW3RdPW4sZS5hdHRyc0xpc3QucHVzaChScih7bmFtZTp0LHZhbHVlOm59LHIpKX1mdW5jdGlvbiBEcihlLHQsbixyLGksbyxhLHMpeyhlLmRpcmVjdGl2ZXN8fChlLmRpcmVjdGl2ZXM9W10pKS5wdXNoKFJyKHtuYW1lOnQscmF3TmFtZTpuLHZhbHVlOnIsYXJnOmksaXNEeW5hbWljQXJnOm8sbW9kaWZpZXJzOmF9LHMpKSxlLnBsYWluPSExfWZ1bmN0aW9uIExyKGUsdCxuKXtyZXR1cm4gbj9cIl9wKFwiK3QrJyxcIicrZSsnXCIpJzplK3R9ZnVuY3Rpb24gTXIodCxuLHIsaSxvLGEscyxjKXt2YXIgdTsoaT1pfHxlKS5yaWdodD9jP249XCIoXCIrbitcIik9PT0nY2xpY2snPydjb250ZXh0bWVudSc6KFwiK24rXCIpXCI6XCJjbGlja1wiPT09biYmKG49XCJjb250ZXh0bWVudVwiLGRlbGV0ZSBpLnJpZ2h0KTppLm1pZGRsZSYmKGM/bj1cIihcIituK1wiKT09PSdjbGljayc/J21vdXNldXAnOihcIituK1wiKVwiOlwiY2xpY2tcIj09PW4mJihuPVwibW91c2V1cFwiKSksaS5jYXB0dXJlJiYoZGVsZXRlIGkuY2FwdHVyZSxuPUxyKFwiIVwiLG4sYykpLGkub25jZSYmKGRlbGV0ZSBpLm9uY2Usbj1McihcIn5cIixuLGMpKSxpLnBhc3NpdmUmJihkZWxldGUgaS5wYXNzaXZlLG49THIoXCImXCIsbixjKSksaS5uYXRpdmU/KGRlbGV0ZSBpLm5hdGl2ZSx1PXQubmF0aXZlRXZlbnRzfHwodC5uYXRpdmVFdmVudHM9e30pKTp1PXQuZXZlbnRzfHwodC5ldmVudHM9e30pO3ZhciBsPVJyKHt2YWx1ZTpyLnRyaW0oKSxkeW5hbWljOmN9LHMpO2khPT1lJiYobC5tb2RpZmllcnM9aSk7dmFyIGY9dVtuXTtBcnJheS5pc0FycmF5KGYpP28/Zi51bnNoaWZ0KGwpOmYucHVzaChsKTp1W25dPWY/bz9bbCxmXTpbZixsXTpsLHQucGxhaW49ITF9ZnVuY3Rpb24gSXIoZSx0LG4pe3ZhciByPUZyKGUsXCI6XCIrdCl8fEZyKGUsXCJ2LWJpbmQ6XCIrdCk7aWYobnVsbCE9cilyZXR1cm4gQXIocik7aWYoITEhPT1uKXt2YXIgaT1GcihlLHQpO2lmKG51bGwhPWkpcmV0dXJuIEpTT04uc3RyaW5naWZ5KGkpfX1mdW5jdGlvbiBGcihlLHQsbil7dmFyIHI7aWYobnVsbCE9KHI9ZS5hdHRyc01hcFt0XSkpZm9yKHZhciBpPWUuYXR0cnNMaXN0LG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYoaVtvXS5uYW1lPT09dCl7aS5zcGxpY2UobywxKTticmVha31yZXR1cm4gbiYmZGVsZXRlIGUuYXR0cnNNYXBbdF0scn1mdW5jdGlvbiBQcihlLHQpe2Zvcih2YXIgbj1lLmF0dHJzTGlzdCxyPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO2lmKHQudGVzdChvLm5hbWUpKXJldHVybiBuLnNwbGljZShyLDEpLG99fWZ1bmN0aW9uIFJyKGUsdCl7cmV0dXJuIHQmJihudWxsIT10LnN0YXJ0JiYoZS5zdGFydD10LnN0YXJ0KSxudWxsIT10LmVuZCYmKGUuZW5kPXQuZW5kKSksZX1mdW5jdGlvbiBIcihlLHQsbil7dmFyIHI9bnx8e30saT1yLm51bWJlcixvPVwiJCR2XCI7ci50cmltJiYobz1cIih0eXBlb2YgJCR2ID09PSAnc3RyaW5nJz8gJCR2LnRyaW0oKTogJCR2KVwiKSxpJiYobz1cIl9uKFwiK28rXCIpXCIpO3ZhciBhPUJyKHQsbyk7ZS5tb2RlbD17dmFsdWU6XCIoXCIrdCtcIilcIixleHByZXNzaW9uOkpTT04uc3RyaW5naWZ5KHQpLGNhbGxiYWNrOlwiZnVuY3Rpb24gKCQkdikge1wiK2ErXCJ9XCJ9fWZ1bmN0aW9uIEJyKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7aWYoZT1lLnRyaW0oKSxncj1lLmxlbmd0aCxlLmluZGV4T2YoXCJbXCIpPDB8fGUubGFzdEluZGV4T2YoXCJdXCIpPGdyLTEpcmV0dXJuKCRyPWUubGFzdEluZGV4T2YoXCIuXCIpKT4tMT97ZXhwOmUuc2xpY2UoMCwkciksa2V5OidcIicrZS5zbGljZSgkcisxKSsnXCInfTp7ZXhwOmUsa2V5Om51bGx9O19yPWUsJHI9d3I9Q3I9MDtmb3IoOyF6cigpOylWcihicj1VcigpKT9Kcihicik6OTE9PT1iciYmS3IoYnIpO3JldHVybntleHA6ZS5zbGljZSgwLHdyKSxrZXk6ZS5zbGljZSh3cisxLENyKX19KGUpO3JldHVybiBudWxsPT09bi5rZXk/ZStcIj1cIit0OlwiJHNldChcIituLmV4cCtcIiwgXCIrbi5rZXkrXCIsIFwiK3QrXCIpXCJ9ZnVuY3Rpb24gVXIoKXtyZXR1cm4gX3IuY2hhckNvZGVBdCgrKyRyKX1mdW5jdGlvbiB6cigpe3JldHVybiAkcj49Z3J9ZnVuY3Rpb24gVnIoZSl7cmV0dXJuIDM0PT09ZXx8Mzk9PT1lfWZ1bmN0aW9uIEtyKGUpe3ZhciB0PTE7Zm9yKHdyPSRyOyF6cigpOylpZihWcihlPVVyKCkpKUpyKGUpO2Vsc2UgaWYoOTE9PT1lJiZ0KyssOTM9PT1lJiZ0LS0sMD09PXQpe0NyPSRyO2JyZWFrfX1mdW5jdGlvbiBKcihlKXtmb3IodmFyIHQ9ZTshenIoKSYmKGU9VXIoKSkhPT10Oyk7fXZhciBxcixXcj1cIl9fclwiLFpyPVwiX19jXCI7ZnVuY3Rpb24gR3IoZSx0LG4pe3ZhciByPXFyO3JldHVybiBmdW5jdGlvbiBpKCl7bnVsbCE9PXQuYXBwbHkobnVsbCxhcmd1bWVudHMpJiZRcihlLGksbixyKX19dmFyIFhyPVZlJiYhKFgmJk51bWJlcihYWzFdKTw9NTMpO2Z1bmN0aW9uIFlyKGUsdCxuLHIpe2lmKFhyKXt2YXIgaT1hbixvPXQ7dD1vLl93cmFwcGVyPWZ1bmN0aW9uKGUpe2lmKGUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0fHxlLnRpbWVTdGFtcD49aXx8ZS50aW1lU3RhbXA8PTB8fGUudGFyZ2V0Lm93bmVyRG9jdW1lbnQhPT1kb2N1bWVudClyZXR1cm4gby5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fXFyLmFkZEV2ZW50TGlzdGVuZXIoZSx0LFE/e2NhcHR1cmU6bixwYXNzaXZlOnJ9Om4pfWZ1bmN0aW9uIFFyKGUsdCxuLHIpeyhyfHxxcikucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQuX3dyYXBwZXJ8fHQsbil9ZnVuY3Rpb24gZWkoZSxyKXtpZighdChlLmRhdGEub24pfHwhdChyLmRhdGEub24pKXt2YXIgaT1yLmRhdGEub258fHt9LG89ZS5kYXRhLm9ufHx7fTtxcj1yLmVsbSxmdW5jdGlvbihlKXtpZihuKGVbV3JdKSl7dmFyIHQ9cT9cImNoYW5nZVwiOlwiaW5wdXRcIjtlW3RdPVtdLmNvbmNhdChlW1dyXSxlW3RdfHxbXSksZGVsZXRlIGVbV3JdfW4oZVtacl0pJiYoZS5jaGFuZ2U9W10uY29uY2F0KGVbWnJdLGUuY2hhbmdlfHxbXSksZGVsZXRlIGVbWnJdKX0oaSkscnQoaSxvLFlyLFFyLEdyLHIuY29udGV4dCkscXI9dm9pZCAwfX12YXIgdGksbmk9e2NyZWF0ZTplaSx1cGRhdGU6ZWl9O2Z1bmN0aW9uIHJpKGUscil7aWYoIXQoZS5kYXRhLmRvbVByb3BzKXx8IXQoci5kYXRhLmRvbVByb3BzKSl7dmFyIGksbyxhPXIuZWxtLHM9ZS5kYXRhLmRvbVByb3BzfHx7fSxjPXIuZGF0YS5kb21Qcm9wc3x8e307Zm9yKGkgaW4gbihjLl9fb2JfXykmJihjPXIuZGF0YS5kb21Qcm9wcz1BKHt9LGMpKSxzKWkgaW4gY3x8KGFbaV09XCJcIik7Zm9yKGkgaW4gYyl7aWYobz1jW2ldLFwidGV4dENvbnRlbnRcIj09PWl8fFwiaW5uZXJIVE1MXCI9PT1pKXtpZihyLmNoaWxkcmVuJiYoci5jaGlsZHJlbi5sZW5ndGg9MCksbz09PXNbaV0pY29udGludWU7MT09PWEuY2hpbGROb2Rlcy5sZW5ndGgmJmEucmVtb3ZlQ2hpbGQoYS5jaGlsZE5vZGVzWzBdKX1pZihcInZhbHVlXCI9PT1pJiZcIlBST0dSRVNTXCIhPT1hLnRhZ05hbWUpe2EuX3ZhbHVlPW87dmFyIHU9dChvKT9cIlwiOlN0cmluZyhvKTtpaShhLHUpJiYoYS52YWx1ZT11KX1lbHNlIGlmKFwiaW5uZXJIVE1MXCI9PT1pJiZxbihhLnRhZ05hbWUpJiZ0KGEuaW5uZXJIVE1MKSl7KHRpPXRpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9XCI8c3ZnPlwiK28rXCI8L3N2Zz5cIjtmb3IodmFyIGw9dGkuZmlyc3RDaGlsZDthLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtmb3IoO2wuZmlyc3RDaGlsZDspYS5hcHBlbmRDaGlsZChsLmZpcnN0Q2hpbGQpfWVsc2UgaWYobyE9PXNbaV0pdHJ5e2FbaV09b31jYXRjaChlKXt9fX19ZnVuY3Rpb24gaWkoZSx0KXtyZXR1cm4hZS5jb21wb3NpbmcmJihcIk9QVElPTlwiPT09ZS50YWdOYW1lfHxmdW5jdGlvbihlLHQpe3ZhciBuPSEwO3RyeXtuPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lfWNhdGNoKGUpe31yZXR1cm4gbiYmZS52YWx1ZSE9PXR9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7dmFyIHI9ZS52YWx1ZSxpPWUuX3ZNb2RpZmllcnM7aWYobihpKSl7aWYoaS5udW1iZXIpcmV0dXJuIGYocikhPT1mKHQpO2lmKGkudHJpbSlyZXR1cm4gci50cmltKCkhPT10LnRyaW0oKX1yZXR1cm4gciE9PXR9KGUsdCkpfXZhciBvaT17Y3JlYXRlOnJpLHVwZGF0ZTpyaX0sYWk9ZyhmdW5jdGlvbihlKXt2YXIgdD17fSxuPS86KC4rKS87cmV0dXJuIGUuc3BsaXQoLzsoPyFbXihdKlxcKSkvZykuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlKXt2YXIgcj1lLnNwbGl0KG4pO3IubGVuZ3RoPjEmJih0W3JbMF0udHJpbSgpXT1yWzFdLnRyaW0oKSl9fSksdH0pO2Z1bmN0aW9uIHNpKGUpe3ZhciB0PWNpKGUuc3R5bGUpO3JldHVybiBlLnN0YXRpY1N0eWxlP0EoZS5zdGF0aWNTdHlsZSx0KTp0fWZ1bmN0aW9uIGNpKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpP08oZSk6XCJzdHJpbmdcIj09dHlwZW9mIGU/YWkoZSk6ZX12YXIgdWksbGk9L14tLS8sZmk9L1xccyohaW1wb3J0YW50JC8scGk9ZnVuY3Rpb24oZSx0LG4pe2lmKGxpLnRlc3QodCkpZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pO2Vsc2UgaWYoZmkudGVzdChuKSllLnN0eWxlLnNldFByb3BlcnR5KEModCksbi5yZXBsYWNlKGZpLFwiXCIpLFwiaW1wb3J0YW50XCIpO2Vsc2V7dmFyIHI9dmkodCk7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspZS5zdHlsZVtyXT1uW2ldO2Vsc2UgZS5zdHlsZVtyXT1ufX0sZGk9W1wiV2Via2l0XCIsXCJNb3pcIixcIm1zXCJdLHZpPWcoZnVuY3Rpb24oZSl7aWYodWk9dWl8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsXCJmaWx0ZXJcIiE9PShlPWIoZSkpJiZlIGluIHVpKXJldHVybiBlO2Zvcih2YXIgdD1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj0wO248ZGkubGVuZ3RoO24rKyl7dmFyIHI9ZGlbbl0rdDtpZihyIGluIHVpKXJldHVybiByfX0pO2Z1bmN0aW9uIGhpKGUscil7dmFyIGk9ci5kYXRhLG89ZS5kYXRhO2lmKCEodChpLnN0YXRpY1N0eWxlKSYmdChpLnN0eWxlKSYmdChvLnN0YXRpY1N0eWxlKSYmdChvLnN0eWxlKSkpe3ZhciBhLHMsYz1yLmVsbSx1PW8uc3RhdGljU3R5bGUsbD1vLm5vcm1hbGl6ZWRTdHlsZXx8by5zdHlsZXx8e30sZj11fHxsLHA9Y2koci5kYXRhLnN0eWxlKXx8e307ci5kYXRhLm5vcm1hbGl6ZWRTdHlsZT1uKHAuX19vYl9fKT9BKHt9LHApOnA7dmFyIGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbixyPXt9O2lmKHQpZm9yKHZhciBpPWU7aS5jb21wb25lbnRJbnN0YW5jZTspKGk9aS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpJiZpLmRhdGEmJihuPXNpKGkuZGF0YSkpJiZBKHIsbik7KG49c2koZS5kYXRhKSkmJkEocixuKTtmb3IodmFyIG89ZTtvPW8ucGFyZW50OylvLmRhdGEmJihuPXNpKG8uZGF0YSkpJiZBKHIsbik7cmV0dXJuIHJ9KHIsITApO2ZvcihzIGluIGYpdChkW3NdKSYmcGkoYyxzLFwiXCIpO2ZvcihzIGluIGQpKGE9ZFtzXSkhPT1mW3NdJiZwaShjLHMsbnVsbD09YT9cIlwiOmEpfX12YXIgbWk9e2NyZWF0ZTpoaSx1cGRhdGU6aGl9LHlpPS9cXHMrLztmdW5jdGlvbiBnaShlLHQpe2lmKHQmJih0PXQudHJpbSgpKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoXCIgXCIpPi0xP3Quc3BsaXQoeWkpLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xhc3NMaXN0LmFkZCh0KX0pOmUuY2xhc3NMaXN0LmFkZCh0KTtlbHNle3ZhciBuPVwiIFwiKyhlLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpfHxcIlwiKStcIiBcIjtuLmluZGV4T2YoXCIgXCIrdCtcIiBcIik8MCYmZS5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLChuK3QpLnRyaW0oKSl9fWZ1bmN0aW9uIF9pKGUsdCl7aWYodCYmKHQ9dC50cmltKCkpKWlmKGUuY2xhc3NMaXN0KXQuaW5kZXhPZihcIiBcIik+LTE/dC5zcGxpdCh5aSkuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGFzc0xpc3QucmVtb3ZlKHQpfSk6ZS5jbGFzc0xpc3QucmVtb3ZlKHQpLGUuY2xhc3NMaXN0Lmxlbmd0aHx8ZS5yZW1vdmVBdHRyaWJ1dGUoXCJjbGFzc1wiKTtlbHNle2Zvcih2YXIgbj1cIiBcIisoZS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKXx8XCJcIikrXCIgXCIscj1cIiBcIit0K1wiIFwiO24uaW5kZXhPZihyKT49MDspbj1uLnJlcGxhY2UocixcIiBcIik7KG49bi50cmltKCkpP2Uuc2V0QXR0cmlidXRlKFwiY2xhc3NcIixuKTplLnJlbW92ZUF0dHJpYnV0ZShcImNsYXNzXCIpfX1mdW5jdGlvbiBiaShlKXtpZihlKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSl7dmFyIHQ9e307cmV0dXJuITEhPT1lLmNzcyYmQSh0LCRpKGUubmFtZXx8XCJ2XCIpKSxBKHQsZSksdH1yZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT8kaShlKTp2b2lkIDB9fXZhciAkaT1nKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUrXCItZW50ZXJcIixlbnRlclRvQ2xhc3M6ZStcIi1lbnRlci10b1wiLGVudGVyQWN0aXZlQ2xhc3M6ZStcIi1lbnRlci1hY3RpdmVcIixsZWF2ZUNsYXNzOmUrXCItbGVhdmVcIixsZWF2ZVRvQ2xhc3M6ZStcIi1sZWF2ZS10b1wiLGxlYXZlQWN0aXZlQ2xhc3M6ZStcIi1sZWF2ZS1hY3RpdmVcIn19KSx3aT16JiYhVyxDaT1cInRyYW5zaXRpb25cIix4aT1cImFuaW1hdGlvblwiLGtpPVwidHJhbnNpdGlvblwiLEFpPVwidHJhbnNpdGlvbmVuZFwiLE9pPVwiYW5pbWF0aW9uXCIsU2k9XCJhbmltYXRpb25lbmRcIjt3aSYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihraT1cIldlYmtpdFRyYW5zaXRpb25cIixBaT1cIndlYmtpdFRyYW5zaXRpb25FbmRcIiksdm9pZCAwPT09d2luZG93Lm9uYW5pbWF0aW9uZW5kJiZ2b2lkIDAhPT13aW5kb3cub253ZWJraXRhbmltYXRpb25lbmQmJihPaT1cIldlYmtpdEFuaW1hdGlvblwiLFNpPVwid2Via2l0QW5pbWF0aW9uRW5kXCIpKTt2YXIgVGk9ej93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOnNldFRpbWVvdXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX07ZnVuY3Rpb24gRWkoZSl7VGkoZnVuY3Rpb24oKXtUaShlKX0pfWZ1bmN0aW9uIE5pKGUsdCl7dmFyIG49ZS5fdHJhbnNpdGlvbkNsYXNzZXN8fChlLl90cmFuc2l0aW9uQ2xhc3Nlcz1bXSk7bi5pbmRleE9mKHQpPDAmJihuLnB1c2godCksZ2koZSx0KSl9ZnVuY3Rpb24gamkoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmaChlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxfaShlLHQpfWZ1bmN0aW9uIERpKGUsdCxuKXt2YXIgcj1NaShlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09Q2k/QWk6U2ksYz0wLHU9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyxsKSxuKCl9LGw9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJnUoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmdSgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLGwpfXZhciBMaT0vXFxiKHRyYW5zZm9ybXxhbGwpKCx8JCkvO2Z1bmN0aW9uIE1pKGUsdCl7dmFyIG4scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxpPShyW2tpK1wiRGVsYXlcIl18fFwiXCIpLnNwbGl0KFwiLCBcIiksbz0ocltraStcIkR1cmF0aW9uXCJdfHxcIlwiKS5zcGxpdChcIiwgXCIpLGE9SWkoaSxvKSxzPShyW09pK1wiRGVsYXlcIl18fFwiXCIpLnNwbGl0KFwiLCBcIiksYz0ocltPaStcIkR1cmF0aW9uXCJdfHxcIlwiKS5zcGxpdChcIiwgXCIpLHU9SWkocyxjKSxsPTAsZj0wO3JldHVybiB0PT09Q2k/YT4wJiYobj1DaSxsPWEsZj1vLmxlbmd0aCk6dD09PXhpP3U+MCYmKG49eGksbD11LGY9Yy5sZW5ndGgpOmY9KG49KGw9TWF0aC5tYXgoYSx1KSk+MD9hPnU/Q2k6eGk6bnVsbCk/bj09PUNpP28ubGVuZ3RoOmMubGVuZ3RoOjAse3R5cGU6bix0aW1lb3V0OmwscHJvcENvdW50OmYsaGFzVHJhbnNmb3JtOm49PT1DaSYmTGkudGVzdChyW2tpK1wiUHJvcGVydHlcIl0pfX1mdW5jdGlvbiBJaShlLHQpe2Zvcig7ZS5sZW5ndGg8dC5sZW5ndGg7KWU9ZS5jb25jYXQoZSk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdC5tYXAoZnVuY3Rpb24odCxuKXtyZXR1cm4gRmkodCkrRmkoZVtuXSl9KSl9ZnVuY3Rpb24gRmkoZSl7cmV0dXJuIDFlMypOdW1iZXIoZS5zbGljZSgwLC0xKS5yZXBsYWNlKFwiLFwiLFwiLlwiKSl9ZnVuY3Rpb24gUGkoZSxyKXt2YXIgaT1lLmVsbTtuKGkuX2xlYXZlQ2IpJiYoaS5fbGVhdmVDYi5jYW5jZWxsZWQ9ITAsaS5fbGVhdmVDYigpKTt2YXIgYT1iaShlLmRhdGEudHJhbnNpdGlvbik7aWYoIXQoYSkmJiFuKGkuX2VudGVyQ2IpJiYxPT09aS5ub2RlVHlwZSl7Zm9yKHZhciBzPWEuY3NzLGM9YS50eXBlLHU9YS5lbnRlckNsYXNzLGw9YS5lbnRlclRvQ2xhc3MscD1hLmVudGVyQWN0aXZlQ2xhc3MsZD1hLmFwcGVhckNsYXNzLHY9YS5hcHBlYXJUb0NsYXNzLGg9YS5hcHBlYXJBY3RpdmVDbGFzcyxtPWEuYmVmb3JlRW50ZXIseT1hLmVudGVyLGc9YS5hZnRlckVudGVyLF89YS5lbnRlckNhbmNlbGxlZCxiPWEuYmVmb3JlQXBwZWFyLCQ9YS5hcHBlYXIsdz1hLmFmdGVyQXBwZWFyLEM9YS5hcHBlYXJDYW5jZWxsZWQseD1hLmR1cmF0aW9uLGs9V3QsQT1XdC4kdm5vZGU7QSYmQS5wYXJlbnQ7KWs9QS5jb250ZXh0LEE9QS5wYXJlbnQ7dmFyIE89IWsuX2lzTW91bnRlZHx8IWUuaXNSb290SW5zZXJ0O2lmKCFPfHwkfHxcIlwiPT09JCl7dmFyIFM9TyYmZD9kOnUsVD1PJiZoP2g6cCxFPU8mJnY/djpsLE49TyYmYnx8bSxqPU8mJlwiZnVuY3Rpb25cIj09dHlwZW9mICQ/JDp5LEw9TyYmd3x8ZyxNPU8mJkN8fF8sST1mKG8oeCk/eC5lbnRlcjp4KSxGPSExIT09cyYmIVcsUD1CaShqKSxSPWkuX2VudGVyQ2I9RChmdW5jdGlvbigpe0YmJihqaShpLEUpLGppKGksVCkpLFIuY2FuY2VsbGVkPyhGJiZqaShpLFMpLE0mJk0oaSkpOkwmJkwoaSksaS5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGl0KGUsXCJpbnNlcnRcIixmdW5jdGlvbigpe3ZhciB0PWkucGFyZW50Tm9kZSxuPXQmJnQuX3BlbmRpbmcmJnQuX3BlbmRpbmdbZS5rZXldO24mJm4udGFnPT09ZS50YWcmJm4uZWxtLl9sZWF2ZUNiJiZuLmVsbS5fbGVhdmVDYigpLGomJmooaSxSKX0pLE4mJk4oaSksRiYmKE5pKGksUyksTmkoaSxUKSxFaShmdW5jdGlvbigpe2ppKGksUyksUi5jYW5jZWxsZWR8fChOaShpLEUpLFB8fChIaShJKT9zZXRUaW1lb3V0KFIsSSk6RGkoaSxjLFIpKSl9KSksZS5kYXRhLnNob3cmJihyJiZyKCksaiYmaihpLFIpKSxGfHxQfHxSKCl9fX1mdW5jdGlvbiBSaShlLHIpe3ZhciBpPWUuZWxtO24oaS5fZW50ZXJDYikmJihpLl9lbnRlckNiLmNhbmNlbGxlZD0hMCxpLl9lbnRlckNiKCkpO3ZhciBhPWJpKGUuZGF0YS50cmFuc2l0aW9uKTtpZih0KGEpfHwxIT09aS5ub2RlVHlwZSlyZXR1cm4gcigpO2lmKCFuKGkuX2xlYXZlQ2IpKXt2YXIgcz1hLmNzcyxjPWEudHlwZSx1PWEubGVhdmVDbGFzcyxsPWEubGVhdmVUb0NsYXNzLHA9YS5sZWF2ZUFjdGl2ZUNsYXNzLGQ9YS5iZWZvcmVMZWF2ZSx2PWEubGVhdmUsaD1hLmFmdGVyTGVhdmUsbT1hLmxlYXZlQ2FuY2VsbGVkLHk9YS5kZWxheUxlYXZlLGc9YS5kdXJhdGlvbixfPSExIT09cyYmIVcsYj1CaSh2KSwkPWYobyhnKT9nLmxlYXZlOmcpLHc9aS5fbGVhdmVDYj1EKGZ1bmN0aW9uKCl7aS5wYXJlbnROb2RlJiZpLnBhcmVudE5vZGUuX3BlbmRpbmcmJihpLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51bGwpLF8mJihqaShpLGwpLGppKGkscCkpLHcuY2FuY2VsbGVkPyhfJiZqaShpLHUpLG0mJm0oaSkpOihyKCksaCYmaChpKSksaS5fbGVhdmVDYj1udWxsfSk7eT95KEMpOkMoKX1mdW5jdGlvbiBDKCl7dy5jYW5jZWxsZWR8fCghZS5kYXRhLnNob3cmJmkucGFyZW50Tm9kZSYmKChpLnBhcmVudE5vZGUuX3BlbmRpbmd8fChpLnBhcmVudE5vZGUuX3BlbmRpbmc9e30pKVtlLmtleV09ZSksZCYmZChpKSxfJiYoTmkoaSx1KSxOaShpLHApLEVpKGZ1bmN0aW9uKCl7amkoaSx1KSx3LmNhbmNlbGxlZHx8KE5pKGksbCksYnx8KEhpKCQpP3NldFRpbWVvdXQodywkKTpEaShpLGMsdykpKX0pKSx2JiZ2KGksdyksX3x8Ynx8dygpKX19ZnVuY3Rpb24gSGkoZSl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGUmJiFpc05hTihlKX1mdW5jdGlvbiBCaShlKXtpZih0KGUpKXJldHVybiExO3ZhciByPWUuZm5zO3JldHVybiBuKHIpP0JpKEFycmF5LmlzQXJyYXkocik/clswXTpyKTooZS5fbGVuZ3RofHxlLmxlbmd0aCk+MX1mdW5jdGlvbiBVaShlLHQpeyEwIT09dC5kYXRhLnNob3cmJlBpKHQpfXZhciB6aT1mdW5jdGlvbihlKXt2YXIgbyxhLHM9e30sYz1lLm1vZHVsZXMsdT1lLm5vZGVPcHM7Zm9yKG89MDtvPHJyLmxlbmd0aDsrK28pZm9yKHNbcnJbb11dPVtdLGE9MDthPGMubGVuZ3RoOysrYSluKGNbYV1bcnJbb11dKSYmc1tycltvXV0ucHVzaChjW2FdW3JyW29dXSk7ZnVuY3Rpb24gbChlKXt2YXIgdD11LnBhcmVudE5vZGUoZSk7bih0KSYmdS5yZW1vdmVDaGlsZCh0LGUpfWZ1bmN0aW9uIGYoZSx0LGksbyxhLGMsbCl7aWYobihlLmVsbSkmJm4oYykmJihlPWNbbF09bWUoZSkpLGUuaXNSb290SW5zZXJ0PSFhLCFmdW5jdGlvbihlLHQsaSxvKXt2YXIgYT1lLmRhdGE7aWYobihhKSl7dmFyIGM9bihlLmNvbXBvbmVudEluc3RhbmNlKSYmYS5rZWVwQWxpdmU7aWYobihhPWEuaG9vaykmJm4oYT1hLmluaXQpJiZhKGUsITEpLG4oZS5jb21wb25lbnRJbnN0YW5jZSkpcmV0dXJuIGQoZSx0KSx2KGksZS5lbG0sbykscihjKSYmZnVuY3Rpb24oZSx0LHIsaSl7Zm9yKHZhciBvLGE9ZTthLmNvbXBvbmVudEluc3RhbmNlOylpZihhPWEuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLG4obz1hLmRhdGEpJiZuKG89by50cmFuc2l0aW9uKSl7Zm9yKG89MDtvPHMuYWN0aXZhdGUubGVuZ3RoOysrbylzLmFjdGl2YXRlW29dKG5yLGEpO3QucHVzaChhKTticmVha312KHIsZS5lbG0saSl9KGUsdCxpLG8pLCEwfX0oZSx0LGksbykpe3ZhciBmPWUuZGF0YSxwPWUuY2hpbGRyZW4sbT1lLnRhZztuKG0pPyhlLmVsbT1lLm5zP3UuY3JlYXRlRWxlbWVudE5TKGUubnMsbSk6dS5jcmVhdGVFbGVtZW50KG0sZSksZyhlKSxoKGUscCx0KSxuKGYpJiZ5KGUsdCksdihpLGUuZWxtLG8pKTpyKGUuaXNDb21tZW50KT8oZS5lbG09dS5jcmVhdGVDb21tZW50KGUudGV4dCksdihpLGUuZWxtLG8pKTooZS5lbG09dS5jcmVhdGVUZXh0Tm9kZShlLnRleHQpLHYoaSxlLmVsbSxvKSl9fWZ1bmN0aW9uIGQoZSx0KXtuKGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSYmKHQucHVzaC5hcHBseSh0LGUuZGF0YS5wZW5kaW5nSW5zZXJ0KSxlLmRhdGEucGVuZGluZ0luc2VydD1udWxsKSxlLmVsbT1lLmNvbXBvbmVudEluc3RhbmNlLiRlbCxtKGUpPyh5KGUsdCksZyhlKSk6KHRyKGUpLHQucHVzaChlKSl9ZnVuY3Rpb24gdihlLHQscil7bihlKSYmKG4ocik/dS5wYXJlbnROb2RlKHIpPT09ZSYmdS5pbnNlcnRCZWZvcmUoZSx0LHIpOnUuYXBwZW5kQ2hpbGQoZSx0KSl9ZnVuY3Rpb24gaChlLHQsbil7aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIHI9MDtyPHQubGVuZ3RoOysrcilmKHRbcl0sbixlLmVsbSxudWxsLCEwLHQscik7ZWxzZSBpKGUudGV4dCkmJnUuYXBwZW5kQ2hpbGQoZS5lbG0sdS5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoZS50ZXh0KSkpfWZ1bmN0aW9uIG0oZSl7Zm9yKDtlLmNvbXBvbmVudEluc3RhbmNlOyllPWUuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlO3JldHVybiBuKGUudGFnKX1mdW5jdGlvbiB5KGUsdCl7Zm9yKHZhciByPTA7cjxzLmNyZWF0ZS5sZW5ndGg7KytyKXMuY3JlYXRlW3JdKG5yLGUpO24obz1lLmRhdGEuaG9vaykmJihuKG8uY3JlYXRlKSYmby5jcmVhdGUobnIsZSksbihvLmluc2VydCkmJnQucHVzaChlKSl9ZnVuY3Rpb24gZyhlKXt2YXIgdDtpZihuKHQ9ZS5mblNjb3BlSWQpKXUuc2V0U3R5bGVTY29wZShlLmVsbSx0KTtlbHNlIGZvcih2YXIgcj1lO3I7KW4odD1yLmNvbnRleHQpJiZuKHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnUuc2V0U3R5bGVTY29wZShlLmVsbSx0KSxyPXIucGFyZW50O24odD1XdCkmJnQhPT1lLmNvbnRleHQmJnQhPT1lLmZuQ29udGV4dCYmbih0PXQuJG9wdGlvbnMuX3Njb3BlSWQpJiZ1LnNldFN0eWxlU2NvcGUoZS5lbG0sdCl9ZnVuY3Rpb24gXyhlLHQsbixyLGksbyl7Zm9yKDtyPD1pOysrcilmKG5bcl0sbyxlLHQsITEsbixyKX1mdW5jdGlvbiBiKGUpe3ZhciB0LHIsaT1lLmRhdGE7aWYobihpKSlmb3Iobih0PWkuaG9vaykmJm4odD10LmRlc3Ryb3kpJiZ0KGUpLHQ9MDt0PHMuZGVzdHJveS5sZW5ndGg7Kyt0KXMuZGVzdHJveVt0XShlKTtpZihuKHQ9ZS5jaGlsZHJlbikpZm9yKHI9MDtyPGUuY2hpbGRyZW4ubGVuZ3RoOysrciliKGUuY2hpbGRyZW5bcl0pfWZ1bmN0aW9uICQoZSx0LHIpe2Zvcig7dDw9cjsrK3Qpe3ZhciBpPWVbdF07bihpKSYmKG4oaS50YWcpPyh3KGkpLGIoaSkpOmwoaS5lbG0pKX19ZnVuY3Rpb24gdyhlLHQpe2lmKG4odCl8fG4oZS5kYXRhKSl7dmFyIHIsaT1zLnJlbW92ZS5sZW5ndGgrMTtmb3Iobih0KT90Lmxpc3RlbmVycys9aTp0PWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpezA9PS0tbi5saXN0ZW5lcnMmJmwoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn0oZS5lbG0saSksbihyPWUuY29tcG9uZW50SW5zdGFuY2UpJiZuKHI9ci5fdm5vZGUpJiZuKHIuZGF0YSkmJncocix0KSxyPTA7cjxzLnJlbW92ZS5sZW5ndGg7KytyKXMucmVtb3ZlW3JdKGUsdCk7bihyPWUuZGF0YS5ob29rKSYmbihyPXIucmVtb3ZlKT9yKGUsdCk6dCgpfWVsc2UgbChlLmVsbSl9ZnVuY3Rpb24gQyhlLHQscixpKXtmb3IodmFyIG89cjtvPGk7bysrKXt2YXIgYT10W29dO2lmKG4oYSkmJmlyKGUsYSkpcmV0dXJuIG99fWZ1bmN0aW9uIHgoZSxpLG8sYSxjLGwpe2lmKGUhPT1pKXtuKGkuZWxtKSYmbihhKSYmKGk9YVtjXT1tZShpKSk7dmFyIHA9aS5lbG09ZS5lbG07aWYocihlLmlzQXN5bmNQbGFjZWhvbGRlcikpbihpLmFzeW5jRmFjdG9yeS5yZXNvbHZlZCk/TyhlLmVsbSxpLG8pOmkuaXNBc3luY1BsYWNlaG9sZGVyPSEwO2Vsc2UgaWYocihpLmlzU3RhdGljKSYmcihlLmlzU3RhdGljKSYmaS5rZXk9PT1lLmtleSYmKHIoaS5pc0Nsb25lZCl8fHIoaS5pc09uY2UpKSlpLmNvbXBvbmVudEluc3RhbmNlPWUuY29tcG9uZW50SW5zdGFuY2U7ZWxzZXt2YXIgZCx2PWkuZGF0YTtuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucHJlcGF0Y2gpJiZkKGUsaSk7dmFyIGg9ZS5jaGlsZHJlbix5PWkuY2hpbGRyZW47aWYobih2KSYmbShpKSl7Zm9yKGQ9MDtkPHMudXBkYXRlLmxlbmd0aDsrK2Qpcy51cGRhdGVbZF0oZSxpKTtuKGQ9di5ob29rKSYmbihkPWQudXBkYXRlKSYmZChlLGkpfXQoaS50ZXh0KT9uKGgpJiZuKHkpP2ghPT15JiZmdW5jdGlvbihlLHIsaSxvLGEpe2Zvcih2YXIgcyxjLGwscD0wLGQ9MCx2PXIubGVuZ3RoLTEsaD1yWzBdLG09clt2XSx5PWkubGVuZ3RoLTEsZz1pWzBdLGI9aVt5XSx3PSFhO3A8PXYmJmQ8PXk7KXQoaCk/aD1yWysrcF06dChtKT9tPXJbLS12XTppcihoLGcpPyh4KGgsZyxvLGksZCksaD1yWysrcF0sZz1pWysrZF0pOmlyKG0sYik/KHgobSxiLG8saSx5KSxtPXJbLS12XSxiPWlbLS15XSk6aXIoaCxiKT8oeChoLGIsbyxpLHkpLHcmJnUuaW5zZXJ0QmVmb3JlKGUsaC5lbG0sdS5uZXh0U2libGluZyhtLmVsbSkpLGg9clsrK3BdLGI9aVstLXldKTppcihtLGcpPyh4KG0sZyxvLGksZCksdyYmdS5pbnNlcnRCZWZvcmUoZSxtLmVsbSxoLmVsbSksbT1yWy0tdl0sZz1pWysrZF0pOih0KHMpJiYocz1vcihyLHAsdikpLHQoYz1uKGcua2V5KT9zW2cua2V5XTpDKGcscixwLHYpKT9mKGcsbyxlLGguZWxtLCExLGksZCk6aXIobD1yW2NdLGcpPyh4KGwsZyxvLGksZCkscltjXT12b2lkIDAsdyYmdS5pbnNlcnRCZWZvcmUoZSxsLmVsbSxoLmVsbSkpOmYoZyxvLGUsaC5lbG0sITEsaSxkKSxnPWlbKytkXSk7cD52P18oZSx0KGlbeSsxXSk/bnVsbDppW3krMV0uZWxtLGksZCx5LG8pOmQ+eSYmJChyLHAsdil9KHAsaCx5LG8sbCk6bih5KT8obihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsXCJcIiksXyhwLG51bGwseSwwLHkubGVuZ3RoLTEsbykpOm4oaCk/JChoLDAsaC5sZW5ndGgtMSk6bihlLnRleHQpJiZ1LnNldFRleHRDb250ZW50KHAsXCJcIik6ZS50ZXh0IT09aS50ZXh0JiZ1LnNldFRleHRDb250ZW50KHAsaS50ZXh0KSxuKHYpJiZuKGQ9di5ob29rKSYmbihkPWQucG9zdHBhdGNoKSYmZChlLGkpfX19ZnVuY3Rpb24gayhlLHQsaSl7aWYocihpKSYmbihlLnBhcmVudCkpZS5wYXJlbnQuZGF0YS5wZW5kaW5nSW5zZXJ0PXQ7ZWxzZSBmb3IodmFyIG89MDtvPHQubGVuZ3RoOysrbyl0W29dLmRhdGEuaG9vay5pbnNlcnQodFtvXSl9dmFyIEE9cChcImF0dHJzLGNsYXNzLHN0YXRpY0NsYXNzLHN0YXRpY1N0eWxlLGtleVwiKTtmdW5jdGlvbiBPKGUsdCxpLG8pe3ZhciBhLHM9dC50YWcsYz10LmRhdGEsdT10LmNoaWxkcmVuO2lmKG89b3x8YyYmYy5wcmUsdC5lbG09ZSxyKHQuaXNDb21tZW50KSYmbih0LmFzeW5jRmFjdG9yeSkpcmV0dXJuIHQuaXNBc3luY1BsYWNlaG9sZGVyPSEwLCEwO2lmKG4oYykmJihuKGE9Yy5ob29rKSYmbihhPWEuaW5pdCkmJmEodCwhMCksbihhPXQuY29tcG9uZW50SW5zdGFuY2UpKSlyZXR1cm4gZCh0LGkpLCEwO2lmKG4ocykpe2lmKG4odSkpaWYoZS5oYXNDaGlsZE5vZGVzKCkpaWYobihhPWMpJiZuKGE9YS5kb21Qcm9wcykmJm4oYT1hLmlubmVySFRNTCkpe2lmKGEhPT1lLmlubmVySFRNTClyZXR1cm4hMX1lbHNle2Zvcih2YXIgbD0hMCxmPWUuZmlyc3RDaGlsZCxwPTA7cDx1Lmxlbmd0aDtwKyspe2lmKCFmfHwhTyhmLHVbcF0saSxvKSl7bD0hMTticmVha31mPWYubmV4dFNpYmxpbmd9aWYoIWx8fGYpcmV0dXJuITF9ZWxzZSBoKHQsdSxpKTtpZihuKGMpKXt2YXIgdj0hMTtmb3IodmFyIG0gaW4gYylpZighQShtKSl7dj0hMCx5KHQsaSk7YnJlYWt9IXYmJmMuY2xhc3MmJmV0KGMuY2xhc3MpfX1lbHNlIGUuZGF0YSE9PXQudGV4dCYmKGUuZGF0YT10LnRleHQpO3JldHVybiEwfXJldHVybiBmdW5jdGlvbihlLGksbyxhKXtpZighdChpKSl7dmFyIGMsbD0hMSxwPVtdO2lmKHQoZSkpbD0hMCxmKGkscCk7ZWxzZXt2YXIgZD1uKGUubm9kZVR5cGUpO2lmKCFkJiZpcihlLGkpKXgoZSxpLHAsbnVsbCxudWxsLGEpO2Vsc2V7aWYoZCl7aWYoMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKEwpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoTCksbz0hMCkscihvKSYmTyhlLGkscCkpcmV0dXJuIGsoaSxwLCEwKSxlO2M9ZSxlPW5ldyBwZSh1LnRhZ05hbWUoYykudG9Mb3dlckNhc2UoKSx7fSxbXSx2b2lkIDAsYyl9dmFyIHY9ZS5lbG0saD11LnBhcmVudE5vZGUodik7aWYoZihpLHAsdi5fbGVhdmVDYj9udWxsOmgsdS5uZXh0U2libGluZyh2KSksbihpLnBhcmVudCkpZm9yKHZhciB5PWkucGFyZW50LGc9bShpKTt5Oyl7Zm9yKHZhciBfPTA7XzxzLmRlc3Ryb3kubGVuZ3RoOysrXylzLmRlc3Ryb3lbX10oeSk7aWYoeS5lbG09aS5lbG0sZyl7Zm9yKHZhciB3PTA7dzxzLmNyZWF0ZS5sZW5ndGg7Kyt3KXMuY3JlYXRlW3ddKG5yLHkpO3ZhciBDPXkuZGF0YS5ob29rLmluc2VydDtpZihDLm1lcmdlZClmb3IodmFyIEE9MTtBPEMuZm5zLmxlbmd0aDtBKyspQy5mbnNbQV0oKX1lbHNlIHRyKHkpO3k9eS5wYXJlbnR9bihoKT8kKFtlXSwwLDApOm4oZS50YWcpJiZiKGUpfX1yZXR1cm4gayhpLHAsbCksaS5lbG19bihlKSYmYihlKX19KHtub2RlT3BzOlFuLG1vZHVsZXM6W21yLHhyLG5pLG9pLG1pLHo/e2NyZWF0ZTpVaSxhY3RpdmF0ZTpVaSxyZW1vdmU6ZnVuY3Rpb24oZSx0KXshMCE9PWUuZGF0YS5zaG93P1JpKGUsdCk6dCgpfX06e31dLmNvbmNhdChwcil9KTtXJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic2VsZWN0aW9uY2hhbmdlXCIsZnVuY3Rpb24oKXt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O2UmJmUudm1vZGVsJiZYaShlLFwiaW5wdXRcIil9KTt2YXIgVmk9e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuLHIpe1wic2VsZWN0XCI9PT1uLnRhZz8oci5lbG0mJiFyLmVsbS5fdk9wdGlvbnM/aXQobixcInBvc3RwYXRjaFwiLGZ1bmN0aW9uKCl7VmkuY29tcG9uZW50VXBkYXRlZChlLHQsbil9KTpLaShlLHQsbi5jb250ZXh0KSxlLl92T3B0aW9ucz1bXS5tYXAuY2FsbChlLm9wdGlvbnMsV2kpKTooXCJ0ZXh0YXJlYVwiPT09bi50YWd8fFhuKGUudHlwZSkpJiYoZS5fdk1vZGlmaWVycz10Lm1vZGlmaWVycyx0Lm1vZGlmaWVycy5sYXp5fHwoZS5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLFppKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjb21wb3NpdGlvbmVuZFwiLEdpKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIixHaSksVyYmKGUudm1vZGVsPSEwKSkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZihcInNlbGVjdFwiPT09bi50YWcpe0tpKGUsdCxuLmNvbnRleHQpO3ZhciByPWUuX3ZPcHRpb25zLGk9ZS5fdk9wdGlvbnM9W10ubWFwLmNhbGwoZS5vcHRpb25zLFdpKTtpZihpLnNvbWUoZnVuY3Rpb24oZSx0KXtyZXR1cm4hTihlLHJbdF0pfSkpKGUubXVsdGlwbGU/dC52YWx1ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybiBxaShlLGkpfSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJnFpKHQudmFsdWUsaSkpJiZYaShlLFwiY2hhbmdlXCIpfX19O2Z1bmN0aW9uIEtpKGUsdCxuKXtKaShlLHQsbiksKHF8fFopJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SmkoZSx0LG4pfSwwKX1mdW5jdGlvbiBKaShlLHQsbil7dmFyIHI9dC52YWx1ZSxpPWUubXVsdGlwbGU7aWYoIWl8fEFycmF5LmlzQXJyYXkocikpe2Zvcih2YXIgbyxhLHM9MCxjPWUub3B0aW9ucy5sZW5ndGg7czxjO3MrKylpZihhPWUub3B0aW9uc1tzXSxpKW89aihyLFdpKGEpKT4tMSxhLnNlbGVjdGVkIT09byYmKGEuc2VsZWN0ZWQ9byk7ZWxzZSBpZihOKFdpKGEpLHIpKXJldHVybiB2b2lkKGUuc2VsZWN0ZWRJbmRleCE9PXMmJihlLnNlbGVjdGVkSW5kZXg9cykpO2l8fChlLnNlbGVjdGVkSW5kZXg9LTEpfX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiB0LmV2ZXJ5KGZ1bmN0aW9uKHQpe3JldHVybiFOKHQsZSl9KX1mdW5jdGlvbiBXaShlKXtyZXR1cm5cIl92YWx1ZVwiaW4gZT9lLl92YWx1ZTplLnZhbHVlfWZ1bmN0aW9uIFppKGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMH1mdW5jdGlvbiBHaShlKXtlLnRhcmdldC5jb21wb3NpbmcmJihlLnRhcmdldC5jb21wb3Npbmc9ITEsWGkoZS50YXJnZXQsXCJpbnB1dFwiKSl9ZnVuY3Rpb24gWGkoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFdmVudChcIkhUTUxFdmVudHNcIik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFlpKGUpe3JldHVybiFlLmNvbXBvbmVudEluc3RhbmNlfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WWkoZS5jb21wb25lbnRJbnN0YW5jZS5fdm5vZGUpfXZhciBRaT17bW9kZWw6Vmksc2hvdzp7YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPShuPVlpKG4pKS5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbixvPWUuX192T3JpZ2luYWxEaXNwbGF5PVwibm9uZVwiPT09ZS5zdHlsZS5kaXNwbGF5P1wiXCI6ZS5zdHlsZS5kaXNwbGF5O3ImJmk/KG4uZGF0YS5zaG93PSEwLFBpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9b30pKTplLnN0eWxlLmRpc3BsYXk9cj9vOlwibm9uZVwifSx1cGRhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQudmFsdWU7IXIhPSF0Lm9sZFZhbHVlJiYoKG49WWkobikpLmRhdGEmJm4uZGF0YS50cmFuc2l0aW9uPyhuLmRhdGEuc2hvdz0hMCxyP1BpKG4sZnVuY3Rpb24oKXtlLnN0eWxlLmRpc3BsYXk9ZS5fX3ZPcmlnaW5hbERpc3BsYXl9KTpSaShuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PVwibm9uZVwifSkpOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5Olwibm9uZVwiKX0sdW5iaW5kOmZ1bmN0aW9uKGUsdCxuLHIsaSl7aXx8KGUuc3R5bGUuZGlzcGxheT1lLl9fdk9yaWdpbmFsRGlzcGxheSl9fX0sZW89e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVudGVyVG9DbGFzczpTdHJpbmcsbGVhdmVUb0NsYXNzOlN0cmluZyxlbnRlckFjdGl2ZUNsYXNzOlN0cmluZyxsZWF2ZUFjdGl2ZUNsYXNzOlN0cmluZyxhcHBlYXJDbGFzczpTdHJpbmcsYXBwZWFyQWN0aXZlQ2xhc3M6U3RyaW5nLGFwcGVhclRvQ2xhc3M6U3RyaW5nLGR1cmF0aW9uOltOdW1iZXIsU3RyaW5nLE9iamVjdF19O2Z1bmN0aW9uIHRvKGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q/dG8oenQodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gbm8oZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbYihvKV09aVtvXTtyZXR1cm4gdH1mdW5jdGlvbiBybyhlLHQpe2lmKC9cXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpKXJldHVybiBlKFwia2VlcC1hbGl2ZVwiLHtwcm9wczp0LmNvbXBvbmVudE9wdGlvbnMucHJvcHNEYXRhfSl9dmFyIGlvPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRhZ3x8VXQoZSl9LG9vPWZ1bmN0aW9uKGUpe3JldHVyblwic2hvd1wiPT09ZS5uYW1lfSxhbz17bmFtZTpcInRyYW5zaXRpb25cIixwcm9wczplbyxhYnN0cmFjdDohMCxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPXRoaXMuJHNsb3RzLmRlZmF1bHQ7aWYobiYmKG49bi5maWx0ZXIoaW8pKS5sZW5ndGgpe3ZhciByPXRoaXMubW9kZSxvPW5bMF07aWYoZnVuY3Rpb24oZSl7Zm9yKDtlPWUucGFyZW50OylpZihlLmRhdGEudHJhbnNpdGlvbilyZXR1cm4hMH0odGhpcy4kdm5vZGUpKXJldHVybiBvO3ZhciBhPXRvKG8pO2lmKCFhKXJldHVybiBvO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIHJvKGUsbyk7dmFyIHM9XCJfX3RyYW5zaXRpb24tXCIrdGhpcy5fdWlkK1wiLVwiO2Eua2V5PW51bGw9PWEua2V5P2EuaXNDb21tZW50P3MrXCJjb21tZW50XCI6cythLnRhZzppKGEua2V5KT8wPT09U3RyaW5nKGEua2V5KS5pbmRleE9mKHMpP2Eua2V5OnMrYS5rZXk6YS5rZXk7dmFyIGM9KGEuZGF0YXx8KGEuZGF0YT17fSkpLnRyYW5zaXRpb249bm8odGhpcyksdT10aGlzLl92bm9kZSxsPXRvKHUpO2lmKGEuZGF0YS5kaXJlY3RpdmVzJiZhLmRhdGEuZGlyZWN0aXZlcy5zb21lKG9vKSYmKGEuZGF0YS5zaG93PSEwKSxsJiZsLmRhdGEmJiFmdW5jdGlvbihlLHQpe3JldHVybiB0LmtleT09PWUua2V5JiZ0LnRhZz09PWUudGFnfShhLGwpJiYhVXQobCkmJighbC5jb21wb25lbnRJbnN0YW5jZXx8IWwuY29tcG9uZW50SW5zdGFuY2UuX3Zub2RlLmlzQ29tbWVudCkpe3ZhciBmPWwuZGF0YS50cmFuc2l0aW9uPUEoe30sYyk7aWYoXCJvdXQtaW5cIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsaXQoZixcImFmdGVyTGVhdmVcIixmdW5jdGlvbigpe3QuX2xlYXZpbmc9ITEsdC4kZm9yY2VVcGRhdGUoKX0pLHJvKGUsbyk7aWYoXCJpbi1vdXRcIj09PXIpe2lmKFV0KGEpKXJldHVybiB1O3ZhciBwLGQ9ZnVuY3Rpb24oKXtwKCl9O2l0KGMsXCJhZnRlckVudGVyXCIsZCksaXQoYyxcImVudGVyQ2FuY2VsbGVkXCIsZCksaXQoZixcImRlbGF5TGVhdmVcIixmdW5jdGlvbihlKXtwPWV9KX19cmV0dXJuIG99fX0sc289QSh7dGFnOlN0cmluZyxtb3ZlQ2xhc3M6U3RyaW5nfSxlbyk7ZnVuY3Rpb24gY28oZSl7ZS5lbG0uX21vdmVDYiYmZS5lbG0uX21vdmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigpfWZ1bmN0aW9uIHVvKGUpe2UuZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gbG8oZSl7dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10LmxlZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUuZWxtLnN0eWxlO28udHJhbnNmb3JtPW8uV2Via2l0VHJhbnNmb3JtPVwidHJhbnNsYXRlKFwiK3IrXCJweCxcIitpK1wicHgpXCIsby50cmFuc2l0aW9uRHVyYXRpb249XCIwc1wifX1kZWxldGUgc28ubW9kZTt2YXIgZm89e1RyYW5zaXRpb246YW8sVHJhbnNpdGlvbkdyb3VwOntwcm9wczpzbyxiZWZvcmVNb3VudDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLl91cGRhdGU7dGhpcy5fdXBkYXRlPWZ1bmN0aW9uKG4scil7dmFyIGk9WnQoZSk7ZS5fX3BhdGNoX18oZS5fdm5vZGUsZS5rZXB0LCExLCEwKSxlLl92bm9kZT1lLmtlcHQsaSgpLHQuY2FsbChlLG4scil9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudGFnfHx0aGlzLiR2bm9kZS5kYXRhLnRhZ3x8XCJzcGFuXCIsbj1PYmplY3QuY3JlYXRlKG51bGwpLHI9dGhpcy5wcmV2Q2hpbGRyZW49dGhpcy5jaGlsZHJlbixpPXRoaXMuJHNsb3RzLmRlZmF1bHR8fFtdLG89dGhpcy5jaGlsZHJlbj1bXSxhPW5vKHRoaXMpLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIGM9aVtzXTtjLnRhZyYmbnVsbCE9Yy5rZXkmJjAhPT1TdHJpbmcoYy5rZXkpLmluZGV4T2YoXCJfX3ZsaXN0XCIpJiYoby5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249YSl9aWYocil7Zm9yKHZhciB1PVtdLGw9W10sZj0wO2Y8ci5sZW5ndGg7ZisrKXt2YXIgcD1yW2ZdO3AuZGF0YS50cmFuc2l0aW9uPWEscC5kYXRhLnBvcz1wLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuW3Aua2V5XT91LnB1c2gocCk6bC5wdXNoKHApfXRoaXMua2VwdD1lKHQsbnVsbCx1KSx0aGlzLnJlbW92ZWQ9bH1yZXR1cm4gZSh0LG51bGwsbyl9LHVwZGF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByZXZDaGlsZHJlbix0PXRoaXMubW92ZUNsYXNzfHwodGhpcy5uYW1lfHxcInZcIikrXCItbW92ZVwiO2UubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkmJihlLmZvckVhY2goY28pLGUuZm9yRWFjaCh1byksZS5mb3JFYWNoKGxvKSx0aGlzLl9yZWZsb3c9ZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUuZGF0YS5tb3ZlZCl7dmFyIG49ZS5lbG0scj1uLnN0eWxlO05pKG4sdCksci50cmFuc2Zvcm09ci5XZWJraXRUcmFuc2Zvcm09ci50cmFuc2l0aW9uRHVyYXRpb249XCJcIixuLmFkZEV2ZW50TGlzdGVuZXIoQWksbi5fbW92ZUNiPWZ1bmN0aW9uIGUocil7ciYmci50YXJnZXQhPT1ufHxyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKEFpLGUpLG4uX21vdmVDYj1udWxsLGppKG4sdCkpfSl9fSkpfSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoIXdpKXJldHVybiExO2lmKHRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7dmFyIG49ZS5jbG9uZU5vZGUoKTtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmZS5fdHJhbnNpdGlvbkNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihlKXtfaShuLGUpfSksZ2kobix0KSxuLnN0eWxlLmRpc3BsYXk9XCJub25lXCIsdGhpcy4kZWwuYXBwZW5kQ2hpbGQobik7dmFyIHI9TWkobik7cmV0dXJuIHRoaXMuJGVsLnJlbW92ZUNoaWxkKG4pLHRoaXMuX2hhc01vdmU9ci5oYXNUcmFuc2Zvcm19fX19O3duLmNvbmZpZy5tdXN0VXNlUHJvcD1qbix3bi5jb25maWcuaXNSZXNlcnZlZFRhZz1Xbix3bi5jb25maWcuaXNSZXNlcnZlZEF0dHI9RW4sd24uY29uZmlnLmdldFRhZ05hbWVzcGFjZT1abix3bi5jb25maWcuaXNVbmtub3duRWxlbWVudD1mdW5jdGlvbihlKXtpZigheilyZXR1cm4hMDtpZihXbihlKSlyZXR1cm4hMTtpZihlPWUudG9Mb3dlckNhc2UoKSxudWxsIT1HbltlXSlyZXR1cm4gR25bZV07dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtyZXR1cm4gZS5pbmRleE9mKFwiLVwiKT4tMT9HbltlXT10LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxVbmtub3duRWxlbWVudHx8dC5jb25zdHJ1Y3Rvcj09PXdpbmRvdy5IVE1MRWxlbWVudDpHbltlXT0vSFRNTFVua25vd25FbGVtZW50Ly50ZXN0KHQudG9TdHJpbmcoKSl9LEEod24ub3B0aW9ucy5kaXJlY3RpdmVzLFFpKSxBKHduLm9wdGlvbnMuY29tcG9uZW50cyxmbyksd24ucHJvdG90eXBlLl9fcGF0Y2hfXz16P3ppOlMsd24ucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIGUuJGVsPXQsZS4kb3B0aW9ucy5yZW5kZXJ8fChlLiRvcHRpb25zLnJlbmRlcj12ZSksWXQoZSxcImJlZm9yZU1vdW50XCIpLHI9ZnVuY3Rpb24oKXtlLl91cGRhdGUoZS5fcmVuZGVyKCksbil9LG5ldyBmbihlLHIsUyx7YmVmb3JlOmZ1bmN0aW9uKCl7ZS5faXNNb3VudGVkJiYhZS5faXNEZXN0cm95ZWQmJll0KGUsXCJiZWZvcmVVcGRhdGVcIil9fSwhMCksbj0hMSxudWxsPT1lLiR2bm9kZSYmKGUuX2lzTW91bnRlZD0hMCxZdChlLFwibW91bnRlZFwiKSksZX0odGhpcyxlPWUmJno/WW4oZSk6dm9pZCAwLHQpfSx6JiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Ri5kZXZ0b29scyYmbmUmJm5lLmVtaXQoXCJpbml0XCIsd24pfSwwKTt2YXIgcG89L1xce1xceygoPzoufFxccj9cXG4pKz8pXFx9XFx9L2csdm89L1stLiorP14ke30oKXxbXFxdXFwvXFxcXF0vZyxobz1nKGZ1bmN0aW9uKGUpe3ZhciB0PWVbMF0ucmVwbGFjZSh2byxcIlxcXFwkJlwiKSxuPWVbMV0ucmVwbGFjZSh2byxcIlxcXFwkJlwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh0K1wiKCg/Oi58XFxcXG4pKz8pXCIrbixcImdcIil9KTt2YXIgbW89e3N0YXRpY0tleXM6W1wic3RhdGljQ2xhc3NcIl0sdHJhbnNmb3JtTm9kZTpmdW5jdGlvbihlLHQpe3Qud2Fybjt2YXIgbj1GcihlLFwiY2xhc3NcIik7biYmKGUuc3RhdGljQ2xhc3M9SlNPTi5zdHJpbmdpZnkobikpO3ZhciByPUlyKGUsXCJjbGFzc1wiLCExKTtyJiYoZS5jbGFzc0JpbmRpbmc9cil9LGdlbkRhdGE6ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtyZXR1cm4gZS5zdGF0aWNDbGFzcyYmKHQrPVwic3RhdGljQ2xhc3M6XCIrZS5zdGF0aWNDbGFzcytcIixcIiksZS5jbGFzc0JpbmRpbmcmJih0Kz1cImNsYXNzOlwiK2UuY2xhc3NCaW5kaW5nK1wiLFwiKSx0fX07dmFyIHlvLGdvPXtzdGF0aWNLZXlzOltcInN0YXRpY1N0eWxlXCJdLHRyYW5zZm9ybU5vZGU6ZnVuY3Rpb24oZSx0KXt0Lndhcm47dmFyIG49RnIoZSxcInN0eWxlXCIpO24mJihlLnN0YXRpY1N0eWxlPUpTT04uc3RyaW5naWZ5KGFpKG4pKSk7dmFyIHI9SXIoZSxcInN0eWxlXCIsITEpO3ImJihlLnN0eWxlQmluZGluZz1yKX0sZ2VuRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1cIlwiO3JldHVybiBlLnN0YXRpY1N0eWxlJiYodCs9XCJzdGF0aWNTdHlsZTpcIitlLnN0YXRpY1N0eWxlK1wiLFwiKSxlLnN0eWxlQmluZGluZyYmKHQrPVwic3R5bGU6KFwiK2Uuc3R5bGVCaW5kaW5nK1wiKSxcIiksdH19LF9vPWZ1bmN0aW9uKGUpe3JldHVybih5bz15b3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSkuaW5uZXJIVE1MPWUseW8udGV4dENvbnRlbnR9LGJvPXAoXCJhcmVhLGJhc2UsYnIsY29sLGVtYmVkLGZyYW1lLGhyLGltZyxpbnB1dCxpc2luZGV4LGtleWdlbixsaW5rLG1ldGEscGFyYW0sc291cmNlLHRyYWNrLHdiclwiKSwkbz1wKFwiY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZVwiKSx3bz1wKFwiYWRkcmVzcyxhcnRpY2xlLGFzaWRlLGJhc2UsYmxvY2txdW90ZSxib2R5LGNhcHRpb24sY29sLGNvbGdyb3VwLGRkLGRldGFpbHMsZGlhbG9nLGRpdixkbCxkdCxmaWVsZHNldCxmaWdjYXB0aW9uLGZpZ3VyZSxmb290ZXIsZm9ybSxoMSxoMixoMyxoNCxoNSxoNixoZWFkLGhlYWRlcixoZ3JvdXAsaHIsaHRtbCxsZWdlbmQsbGksbWVudWl0ZW0sbWV0YSxvcHRncm91cCxvcHRpb24scGFyYW0scnAscnQsc291cmNlLHN0eWxlLHN1bW1hcnksdGJvZHksdGQsdGZvb3QsdGgsdGhlYWQsdGl0bGUsdHIsdHJhY2tcIiksQ289L15cXHMqKFteXFxzXCInPD5cXC89XSspKD86XFxzKig9KVxccyooPzpcIihbXlwiXSopXCIrfCcoW14nXSopJyt8KFteXFxzXCInPTw+YF0rKSkpPy8seG89L15cXHMqKCg/OnYtW1xcdy1dKzp8QHw6fCMpXFxbW149XStcXF1bXlxcc1wiJzw+XFwvPV0qKSg/OlxccyooPSlcXHMqKD86XCIoW15cIl0qKVwiK3wnKFteJ10qKScrfChbXlxcc1wiJz08PmBdKykpKT8vLGtvPVwiW2EtekEtWl9dW1xcXFwtXFxcXC4wLTlfYS16QS1aXCIrUC5zb3VyY2UrXCJdKlwiLEFvPVwiKCg/OlwiK2tvK1wiXFxcXDopP1wiK2tvK1wiKVwiLE9vPW5ldyBSZWdFeHAoXCJePFwiK0FvKSxTbz0vXlxccyooXFwvPyk+LyxUbz1uZXcgUmVnRXhwKFwiXjxcXFxcL1wiK0FvK1wiW14+XSo+XCIpLEVvPS9ePCFET0NUWVBFIFtePl0rPi9pLE5vPS9ePCFcXC0tLyxqbz0vXjwhXFxbLyxEbz1wKFwic2NyaXB0LHN0eWxlLHRleHRhcmVhXCIsITApLExvPXt9LE1vPXtcIiZsdDtcIjpcIjxcIixcIiZndDtcIjpcIj5cIixcIiZxdW90O1wiOidcIicsXCImYW1wO1wiOlwiJlwiLFwiJiMxMDtcIjpcIlxcblwiLFwiJiM5O1wiOlwiXFx0XCIsXCImIzM5O1wiOlwiJ1wifSxJbz0vJig/Omx0fGd0fHF1b3R8YW1wfCMzOSk7L2csRm89LyYoPzpsdHxndHxxdW90fGFtcHwjMzl8IzEwfCM5KTsvZyxQbz1wKFwicHJlLHRleHRhcmVhXCIsITApLFJvPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJlBvKGUpJiZcIlxcblwiPT09dFswXX07ZnVuY3Rpb24gSG8oZSx0KXt2YXIgbj10P0ZvOklvO3JldHVybiBlLnJlcGxhY2UobixmdW5jdGlvbihlKXtyZXR1cm4gTW9bZV19KX12YXIgQm8sVW8sem8sVm8sS28sSm8scW8sV28sWm89L15AfF52LW9uOi8sR289L152LXxeQHxeOnxeIy8sWG89LyhbXFxzXFxTXSo/KVxccysoPzppbnxvZilcXHMrKFtcXHNcXFNdKikvLFlvPS8sKFteLFxcfVxcXV0qKSg/OiwoW14sXFx9XFxdXSopKT8kLyxRbz0vXlxcKHxcXCkkL2csZWE9L15cXFsuKlxcXSQvLHRhPS86KC4qKSQvLG5hPS9eOnxeXFwufF52LWJpbmQ6LyxyYT0vXFwuW14uXFxdXSsoPz1bXlxcXV0qJCkvZyxpYT0vXnYtc2xvdCg6fCQpfF4jLyxvYT0vW1xcclxcbl0vLGFhPS9cXHMrL2csc2E9ZyhfbyksY2E9XCJfZW1wdHlfXCI7ZnVuY3Rpb24gdWEoZSx0LG4pe3JldHVybnt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0OnQsYXR0cnNNYXA6bWEodCkscmF3QXR0cnNNYXA6e30scGFyZW50Om4sY2hpbGRyZW46W119fWZ1bmN0aW9uIGxhKGUsdCl7Qm89dC53YXJufHxTcixKbz10LmlzUHJlVGFnfHxULHFvPXQubXVzdFVzZVByb3B8fFQsV289dC5nZXRUYWdOYW1lc3BhY2V8fFQ7dC5pc1Jlc2VydmVkVGFnO3pvPVRyKHQubW9kdWxlcyxcInRyYW5zZm9ybU5vZGVcIiksVm89VHIodC5tb2R1bGVzLFwicHJlVHJhbnNmb3JtTm9kZVwiKSxLbz1Ucih0Lm1vZHVsZXMsXCJwb3N0VHJhbnNmb3JtTm9kZVwiKSxVbz10LmRlbGltaXRlcnM7dmFyIG4scixpPVtdLG89ITEhPT10LnByZXNlcnZlV2hpdGVzcGFjZSxhPXQud2hpdGVzcGFjZSxzPSExLGM9ITE7ZnVuY3Rpb24gdShlKXtpZihsKGUpLHN8fGUucHJvY2Vzc2VkfHwoZT1mYShlLHQpKSxpLmxlbmd0aHx8ZT09PW58fG4uaWYmJihlLmVsc2VpZnx8ZS5lbHNlKSYmZGEobix7ZXhwOmUuZWxzZWlmLGJsb2NrOmV9KSxyJiYhZS5mb3JiaWRkZW4paWYoZS5lbHNlaWZ8fGUuZWxzZSlhPWUsKHU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7Zm9yKDt0LS07KXtpZigxPT09ZVt0XS50eXBlKXJldHVybiBlW3RdO2UucG9wKCl9fShyLmNoaWxkcmVuKSkmJnUuaWYmJmRhKHUse2V4cDphLmVsc2VpZixibG9jazphfSk7ZWxzZXtpZihlLnNsb3RTY29wZSl7dmFyIG89ZS5zbG90VGFyZ2V0fHwnXCJkZWZhdWx0XCInOyhyLnNjb3BlZFNsb3RzfHwoci5zY29wZWRTbG90cz17fSkpW29dPWV9ci5jaGlsZHJlbi5wdXNoKGUpLGUucGFyZW50PXJ9dmFyIGEsdTtlLmNoaWxkcmVuPWUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLnNsb3RTY29wZX0pLGwoZSksZS5wcmUmJihzPSExKSxKbyhlLnRhZykmJihjPSExKTtmb3IodmFyIGY9MDtmPEtvLmxlbmd0aDtmKyspS29bZl0oZSx0KX1mdW5jdGlvbiBsKGUpe2lmKCFjKWZvcih2YXIgdDsodD1lLmNoaWxkcmVuW2UuY2hpbGRyZW4ubGVuZ3RoLTFdKSYmMz09PXQudHlwZSYmXCIgXCI9PT10LnRleHQ7KWUuY2hpbGRyZW4ucG9wKCl9cmV0dXJuIGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuLHIsaT1bXSxvPXQuZXhwZWN0SFRNTCxhPXQuaXNVbmFyeVRhZ3x8VCxzPXQuY2FuQmVMZWZ0T3BlblRhZ3x8VCxjPTA7ZTspe2lmKG49ZSxyJiZEbyhyKSl7dmFyIHU9MCxsPXIudG9Mb3dlckNhc2UoKSxmPUxvW2xdfHwoTG9bbF09bmV3IFJlZ0V4cChcIihbXFxcXHNcXFxcU10qPykoPC9cIitsK1wiW14+XSo+KVwiLFwiaVwiKSkscD1lLnJlcGxhY2UoZixmdW5jdGlvbihlLG4scil7cmV0dXJuIHU9ci5sZW5ndGgsRG8obCl8fFwibm9zY3JpcHRcIj09PWx8fChuPW4ucmVwbGFjZSgvPCFcXC0tKFtcXHNcXFNdKj8pLS0+L2csXCIkMVwiKS5yZXBsYWNlKC88IVxcW0NEQVRBXFxbKFtcXHNcXFNdKj8pXV0+L2csXCIkMVwiKSksUm8obCxuKSYmKG49bi5zbGljZSgxKSksdC5jaGFycyYmdC5jaGFycyhuKSxcIlwifSk7Yys9ZS5sZW5ndGgtcC5sZW5ndGgsZT1wLEEobCxjLXUsYyl9ZWxzZXt2YXIgZD1lLmluZGV4T2YoXCI8XCIpO2lmKDA9PT1kKXtpZihOby50ZXN0KGUpKXt2YXIgdj1lLmluZGV4T2YoXCItLVxceDNlXCIpO2lmKHY+PTApe3Quc2hvdWxkS2VlcENvbW1lbnQmJnQuY29tbWVudChlLnN1YnN0cmluZyg0LHYpLGMsYyt2KzMpLEModiszKTtjb250aW51ZX19aWYoam8udGVzdChlKSl7dmFyIGg9ZS5pbmRleE9mKFwiXT5cIik7aWYoaD49MCl7QyhoKzIpO2NvbnRpbnVlfX12YXIgbT1lLm1hdGNoKEVvKTtpZihtKXtDKG1bMF0ubGVuZ3RoKTtjb250aW51ZX12YXIgeT1lLm1hdGNoKFRvKTtpZih5KXt2YXIgZz1jO0MoeVswXS5sZW5ndGgpLEEoeVsxXSxnLGMpO2NvbnRpbnVlfXZhciBfPXgoKTtpZihfKXtrKF8pLFJvKF8udGFnTmFtZSxlKSYmQygxKTtjb250aW51ZX19dmFyIGI9dm9pZCAwLCQ9dm9pZCAwLHc9dm9pZCAwO2lmKGQ+PTApe2ZvcigkPWUuc2xpY2UoZCk7IShUby50ZXN0KCQpfHxPby50ZXN0KCQpfHxOby50ZXN0KCQpfHxqby50ZXN0KCQpfHwodz0kLmluZGV4T2YoXCI8XCIsMSkpPDApOylkKz13LCQ9ZS5zbGljZShkKTtiPWUuc3Vic3RyaW5nKDAsZCl9ZDwwJiYoYj1lKSxiJiZDKGIubGVuZ3RoKSx0LmNoYXJzJiZiJiZ0LmNoYXJzKGIsYy1iLmxlbmd0aCxjKX1pZihlPT09bil7dC5jaGFycyYmdC5jaGFycyhlKTticmVha319ZnVuY3Rpb24gQyh0KXtjKz10LGU9ZS5zdWJzdHJpbmcodCl9ZnVuY3Rpb24geCgpe3ZhciB0PWUubWF0Y2goT28pO2lmKHQpe3ZhciBuLHIsaT17dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmN9O2ZvcihDKHRbMF0ubGVuZ3RoKTshKG49ZS5tYXRjaChTbykpJiYocj1lLm1hdGNoKHhvKXx8ZS5tYXRjaChDbykpOylyLnN0YXJ0PWMsQyhyWzBdLmxlbmd0aCksci5lbmQ9YyxpLmF0dHJzLnB1c2gocik7aWYobilyZXR1cm4gaS51bmFyeVNsYXNoPW5bMV0sQyhuWzBdLmxlbmd0aCksaS5lbmQ9YyxpfX1mdW5jdGlvbiBrKGUpe3ZhciBuPWUudGFnTmFtZSxjPWUudW5hcnlTbGFzaDtvJiYoXCJwXCI9PT1yJiZ3byhuKSYmQShyKSxzKG4pJiZyPT09biYmQShuKSk7Zm9yKHZhciB1PWEobil8fCEhYyxsPWUuYXR0cnMubGVuZ3RoLGY9bmV3IEFycmF5KGwpLHA9MDtwPGw7cCsrKXt2YXIgZD1lLmF0dHJzW3BdLHY9ZFszXXx8ZFs0XXx8ZFs1XXx8XCJcIixoPVwiYVwiPT09biYmXCJocmVmXCI9PT1kWzFdP3Quc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOnQuc2hvdWxkRGVjb2RlTmV3bGluZXM7ZltwXT17bmFtZTpkWzFdLHZhbHVlOkhvKHYsaCl9fXV8fChpLnB1c2goe3RhZzpuLGxvd2VyQ2FzZWRUYWc6bi50b0xvd2VyQ2FzZSgpLGF0dHJzOmYsc3RhcnQ6ZS5zdGFydCxlbmQ6ZS5lbmR9KSxyPW4pLHQuc3RhcnQmJnQuc3RhcnQobixmLHUsZS5zdGFydCxlLmVuZCl9ZnVuY3Rpb24gQShlLG4sbyl7dmFyIGEscztpZihudWxsPT1uJiYobj1jKSxudWxsPT1vJiYobz1jKSxlKWZvcihzPWUudG9Mb3dlckNhc2UoKSxhPWkubGVuZ3RoLTE7YT49MCYmaVthXS5sb3dlckNhc2VkVGFnIT09czthLS0pO2Vsc2UgYT0wO2lmKGE+PTApe2Zvcih2YXIgdT1pLmxlbmd0aC0xO3U+PWE7dS0tKXQuZW5kJiZ0LmVuZChpW3VdLnRhZyxuLG8pO2kubGVuZ3RoPWEscj1hJiZpW2EtMV0udGFnfWVsc2VcImJyXCI9PT1zP3Quc3RhcnQmJnQuc3RhcnQoZSxbXSwhMCxuLG8pOlwicFwiPT09cyYmKHQuc3RhcnQmJnQuc3RhcnQoZSxbXSwhMSxuLG8pLHQuZW5kJiZ0LmVuZChlLG4sbykpfUEoKX0oZSx7d2FybjpCbyxleHBlY3RIVE1MOnQuZXhwZWN0SFRNTCxpc1VuYXJ5VGFnOnQuaXNVbmFyeVRhZyxjYW5CZUxlZnRPcGVuVGFnOnQuY2FuQmVMZWZ0T3BlblRhZyxzaG91bGREZWNvZGVOZXdsaW5lczp0LnNob3VsZERlY29kZU5ld2xpbmVzLHNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZjp0LnNob3VsZERlY29kZU5ld2xpbmVzRm9ySHJlZixzaG91bGRLZWVwQ29tbWVudDp0LmNvbW1lbnRzLG91dHB1dFNvdXJjZVJhbmdlOnQub3V0cHV0U291cmNlUmFuZ2Usc3RhcnQ6ZnVuY3Rpb24oZSxvLGEsbCxmKXt2YXIgcD1yJiZyLm5zfHxXbyhlKTtxJiZcInN2Z1wiPT09cCYmKG89ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTt5YS50ZXN0KHIubmFtZSl8fChyLm5hbWU9ci5uYW1lLnJlcGxhY2UoZ2EsXCJcIiksdC5wdXNoKHIpKX1yZXR1cm4gdH0obykpO3ZhciBkLHY9dWEoZSxvLHIpO3AmJih2Lm5zPXApLFwic3R5bGVcIiE9PShkPXYpLnRhZyYmKFwic2NyaXB0XCIhPT1kLnRhZ3x8ZC5hdHRyc01hcC50eXBlJiZcInRleHQvamF2YXNjcmlwdFwiIT09ZC5hdHRyc01hcC50eXBlKXx8dGUoKXx8KHYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGg9MDtoPFZvLmxlbmd0aDtoKyspdj1Wb1toXSh2LHQpfHx2O3N8fCghZnVuY3Rpb24oZSl7bnVsbCE9RnIoZSxcInYtcHJlXCIpJiYoZS5wcmU9ITApfSh2KSx2LnByZSYmKHM9ITApKSxKbyh2LnRhZykmJihjPSEwKSxzP2Z1bmN0aW9uKGUpe3ZhciB0PWUuYXR0cnNMaXN0LG49dC5sZW5ndGg7aWYobilmb3IodmFyIHI9ZS5hdHRycz1uZXcgQXJyYXkobiksaT0wO2k8bjtpKyspcltpXT17bmFtZTp0W2ldLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkodFtpXS52YWx1ZSl9LG51bGwhPXRbaV0uc3RhcnQmJihyW2ldLnN0YXJ0PXRbaV0uc3RhcnQscltpXS5lbmQ9dFtpXS5lbmQpO2Vsc2UgZS5wcmV8fChlLnBsYWluPSEwKX0odik6di5wcm9jZXNzZWR8fChwYSh2KSxmdW5jdGlvbihlKXt2YXIgdD1GcihlLFwidi1pZlwiKTtpZih0KWUuaWY9dCxkYShlLHtleHA6dCxibG9jazplfSk7ZWxzZXtudWxsIT1GcihlLFwidi1lbHNlXCIpJiYoZS5lbHNlPSEwKTt2YXIgbj1GcihlLFwidi1lbHNlLWlmXCIpO24mJihlLmVsc2VpZj1uKX19KHYpLGZ1bmN0aW9uKGUpe251bGwhPUZyKGUsXCJ2LW9uY2VcIikmJihlLm9uY2U9ITApfSh2KSksbnx8KG49diksYT91KHYpOihyPXYsaS5wdXNoKHYpKX0sZW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1pW2kubGVuZ3RoLTFdO2kubGVuZ3RoLT0xLHI9aVtpLmxlbmd0aC0xXSx1KG8pfSxjaGFyczpmdW5jdGlvbihlLHQsbil7aWYociYmKCFxfHxcInRleHRhcmVhXCIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRlciE9PWUpKXt2YXIgaSx1LGwsZj1yLmNoaWxkcmVuO2lmKGU9Y3x8ZS50cmltKCk/XCJzY3JpcHRcIj09PShpPXIpLnRhZ3x8XCJzdHlsZVwiPT09aS50YWc/ZTpzYShlKTpmLmxlbmd0aD9hP1wiY29uZGVuc2VcIj09PWEmJm9hLnRlc3QoZSk/XCJcIjpcIiBcIjpvP1wiIFwiOlwiXCI6XCJcIiljfHxcImNvbmRlbnNlXCIhPT1hfHwoZT1lLnJlcGxhY2UoYWEsXCIgXCIpKSwhcyYmXCIgXCIhPT1lJiYodT1mdW5jdGlvbihlLHQpe3ZhciBuPXQ/aG8odCk6cG87aWYobi50ZXN0KGUpKXtmb3IodmFyIHIsaSxvLGE9W10scz1bXSxjPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXsoaT1yLmluZGV4KT5jJiYocy5wdXNoKG89ZS5zbGljZShjLGkpKSxhLnB1c2goSlNPTi5zdHJpbmdpZnkobykpKTt2YXIgdT1BcihyWzFdLnRyaW0oKSk7YS5wdXNoKFwiX3MoXCIrdStcIilcIikscy5wdXNoKHtcIkBiaW5kaW5nXCI6dX0pLGM9aStyWzBdLmxlbmd0aH1yZXR1cm4gYzxlLmxlbmd0aCYmKHMucHVzaChvPWUuc2xpY2UoYykpLGEucHVzaChKU09OLnN0cmluZ2lmeShvKSkpLHtleHByZXNzaW9uOmEuam9pbihcIitcIiksdG9rZW5zOnN9fX0oZSxVbykpP2w9e3R5cGU6MixleHByZXNzaW9uOnUuZXhwcmVzc2lvbix0b2tlbnM6dS50b2tlbnMsdGV4dDplfTpcIiBcIj09PWUmJmYubGVuZ3RoJiZcIiBcIj09PWZbZi5sZW5ndGgtMV0udGV4dHx8KGw9e3R5cGU6Myx0ZXh0OmV9KSxsJiZmLnB1c2gobCl9fSxjb21tZW50OmZ1bmN0aW9uKGUsdCxuKXtpZihyKXt2YXIgaT17dHlwZTozLHRleHQ6ZSxpc0NvbW1lbnQ6ITB9O3IuY2hpbGRyZW4ucHVzaChpKX19fSksbn1mdW5jdGlvbiBmYShlLHQpe3ZhciBuLHI7KHI9SXIobj1lLFwia2V5XCIpKSYmKG4ua2V5PXIpLGUucGxhaW49IWUua2V5JiYhZS5zY29wZWRTbG90cyYmIWUuYXR0cnNMaXN0Lmxlbmd0aCxmdW5jdGlvbihlKXt2YXIgdD1JcihlLFwicmVmXCIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9ZnVuY3Rpb24oZSl7dmFyIHQ9ZTtmb3IoO3Q7KXtpZih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfShlKSl9KGUpLGZ1bmN0aW9uKGUpe3ZhciB0O1widGVtcGxhdGVcIj09PWUudGFnPyh0PUZyKGUsXCJzY29wZVwiKSxlLnNsb3RTY29wZT10fHxGcihlLFwic2xvdC1zY29wZVwiKSk6KHQ9RnIoZSxcInNsb3Qtc2NvcGVcIikpJiYoZS5zbG90U2NvcGU9dCk7dmFyIG49SXIoZSxcInNsb3RcIik7biYmKGUuc2xvdFRhcmdldD0nXCJcIic9PT1uPydcImRlZmF1bHRcIic6bixlLnNsb3RUYXJnZXREeW5hbWljPSEoIWUuYXR0cnNNYXBbXCI6c2xvdFwiXSYmIWUuYXR0cnNNYXBbXCJ2LWJpbmQ6c2xvdFwiXSksXCJ0ZW1wbGF0ZVwiPT09ZS50YWd8fGUuc2xvdFNjb3BlfHxOcihlLFwic2xvdFwiLG4sZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5yYXdBdHRyc01hcFtcIjpcIit0XXx8ZS5yYXdBdHRyc01hcFtcInYtYmluZDpcIit0XXx8ZS5yYXdBdHRyc01hcFt0XX0oZSxcInNsb3RcIikpKTtpZihcInRlbXBsYXRlXCI9PT1lLnRhZyl7dmFyIHI9UHIoZSxpYSk7aWYocil7dmFyIGk9dmEociksbz1pLm5hbWUsYT1pLmR5bmFtaWM7ZS5zbG90VGFyZ2V0PW8sZS5zbG90VGFyZ2V0RHluYW1pYz1hLGUuc2xvdFNjb3BlPXIudmFsdWV8fGNhfX1lbHNle3ZhciBzPVByKGUsaWEpO2lmKHMpe3ZhciBjPWUuc2NvcGVkU2xvdHN8fChlLnNjb3BlZFNsb3RzPXt9KSx1PXZhKHMpLGw9dS5uYW1lLGY9dS5keW5hbWljLHA9Y1tsXT11YShcInRlbXBsYXRlXCIsW10sZSk7cC5zbG90VGFyZ2V0PWwscC5zbG90VGFyZ2V0RHluYW1pYz1mLHAuY2hpbGRyZW49ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oZSl7aWYoIWUuc2xvdFNjb3BlKXJldHVybiBlLnBhcmVudD1wLCEwfSkscC5zbG90U2NvcGU9cy52YWx1ZXx8Y2EsZS5jaGlsZHJlbj1bXSxlLnBsYWluPSExfX19KGUpLGZ1bmN0aW9uKGUpe1wic2xvdFwiPT09ZS50YWcmJihlLnNsb3ROYW1lPUlyKGUsXCJuYW1lXCIpKX0oZSksZnVuY3Rpb24oZSl7dmFyIHQ7KHQ9SXIoZSxcImlzXCIpKSYmKGUuY29tcG9uZW50PXQpO251bGwhPUZyKGUsXCJpbmxpbmUtdGVtcGxhdGVcIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX0oZSk7Zm9yKHZhciBpPTA7aTx6by5sZW5ndGg7aSsrKWU9em9baV0oZSx0KXx8ZTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQsbixyLGksbyxhLHMsYyx1PWUuYXR0cnNMaXN0O2Zvcih0PTAsbj11Lmxlbmd0aDt0PG47dCsrKWlmKHI9aT11W3RdLm5hbWUsbz11W3RdLnZhbHVlLEdvLnRlc3QocikpaWYoZS5oYXNCaW5kaW5ncz0hMCwoYT1oYShyLnJlcGxhY2UoR28sXCJcIikpKSYmKHI9ci5yZXBsYWNlKHJhLFwiXCIpKSxuYS50ZXN0KHIpKXI9ci5yZXBsYWNlKG5hLFwiXCIpLG89QXIobyksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLGEmJihhLnByb3AmJiFjJiZcImlubmVySHRtbFwiPT09KHI9YihyKSkmJihyPVwiaW5uZXJIVE1MXCIpLGEuY2FtZWwmJiFjJiYocj1iKHIpKSxhLnN5bmMmJihzPUJyKG8sXCIkZXZlbnRcIiksYz9NcihlLCdcInVwZGF0ZTpcIisoJytyK1wiKVwiLHMsbnVsbCwhMSwwLHVbdF0sITApOihNcihlLFwidXBkYXRlOlwiK2IocikscyxudWxsLCExLDAsdVt0XSksQyhyKSE9PWIocikmJk1yKGUsXCJ1cGRhdGU6XCIrQyhyKSxzLG51bGwsITEsMCx1W3RdKSkpKSxhJiZhLnByb3B8fCFlLmNvbXBvbmVudCYmcW8oZS50YWcsZS5hdHRyc01hcC50eXBlLHIpP0VyKGUscixvLHVbdF0sYyk6TnIoZSxyLG8sdVt0XSxjKTtlbHNlIGlmKFpvLnRlc3Qocikpcj1yLnJlcGxhY2UoWm8sXCJcIiksKGM9ZWEudGVzdChyKSkmJihyPXIuc2xpY2UoMSwtMSkpLE1yKGUscixvLGEsITEsMCx1W3RdLGMpO2Vsc2V7dmFyIGw9KHI9ci5yZXBsYWNlKEdvLFwiXCIpKS5tYXRjaCh0YSksZj1sJiZsWzFdO2M9ITEsZiYmKHI9ci5zbGljZSgwLC0oZi5sZW5ndGgrMSkpLGVhLnRlc3QoZikmJihmPWYuc2xpY2UoMSwtMSksYz0hMCkpLERyKGUscixpLG8sZixjLGEsdVt0XSl9ZWxzZSBOcihlLHIsSlNPTi5zdHJpbmdpZnkobyksdVt0XSksIWUuY29tcG9uZW50JiZcIm11dGVkXCI9PT1yJiZxbyhlLnRhZyxlLmF0dHJzTWFwLnR5cGUscikmJkVyKGUscixcInRydWVcIix1W3RdKX0oZSksZX1mdW5jdGlvbiBwYShlKXt2YXIgdDtpZih0PUZyKGUsXCJ2LWZvclwiKSl7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaChYbyk7aWYoIXQpcmV0dXJuO3ZhciBuPXt9O24uZm9yPXRbMl0udHJpbSgpO3ZhciByPXRbMV0udHJpbSgpLnJlcGxhY2UoUW8sXCJcIiksaT1yLm1hdGNoKFlvKTtpPyhuLmFsaWFzPXIucmVwbGFjZShZbyxcIlwiKS50cmltKCksbi5pdGVyYXRvcjE9aVsxXS50cmltKCksaVsyXSYmKG4uaXRlcmF0b3IyPWlbMl0udHJpbSgpKSk6bi5hbGlhcz1yO3JldHVybiBufSh0KTtuJiZBKGUsbil9fWZ1bmN0aW9uIGRhKGUsdCl7ZS5pZkNvbmRpdGlvbnN8fChlLmlmQ29uZGl0aW9ucz1bXSksZS5pZkNvbmRpdGlvbnMucHVzaCh0KX1mdW5jdGlvbiB2YShlKXt2YXIgdD1lLm5hbWUucmVwbGFjZShpYSxcIlwiKTtyZXR1cm4gdHx8XCIjXCIhPT1lLm5hbWVbMF0mJih0PVwiZGVmYXVsdFwiKSxlYS50ZXN0KHQpP3tuYW1lOnQuc2xpY2UoMSwtMSksZHluYW1pYzohMH06e25hbWU6J1wiJyt0KydcIicsZHluYW1pYzohMX19ZnVuY3Rpb24gaGEoZSl7dmFyIHQ9ZS5tYXRjaChyYSk7aWYodCl7dmFyIG49e307cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXtuW2Uuc2xpY2UoMSldPSEwfSksbn19ZnVuY3Rpb24gbWEoZSl7Zm9yKHZhciB0PXt9LG49MCxyPWUubGVuZ3RoO248cjtuKyspdFtlW25dLm5hbWVdPWVbbl0udmFsdWU7cmV0dXJuIHR9dmFyIHlhPS9eeG1sbnM6TlNcXGQrLyxnYT0vXk5TXFxkKzovO2Z1bmN0aW9uIF9hKGUpe3JldHVybiB1YShlLnRhZyxlLmF0dHJzTGlzdC5zbGljZSgpLGUucGFyZW50KX12YXIgYmE9W21vLGdvLHtwcmVUcmFuc2Zvcm1Ob2RlOmZ1bmN0aW9uKGUsdCl7aWYoXCJpbnB1dFwiPT09ZS50YWcpe3ZhciBuLHI9ZS5hdHRyc01hcDtpZighcltcInYtbW9kZWxcIl0pcmV0dXJuO2lmKChyW1wiOnR5cGVcIl18fHJbXCJ2LWJpbmQ6dHlwZVwiXSkmJihuPUlyKGUsXCJ0eXBlXCIpKSxyLnR5cGV8fG58fCFyW1widi1iaW5kXCJdfHwobj1cIihcIityW1widi1iaW5kXCJdK1wiKS50eXBlXCIpLG4pe3ZhciBpPUZyKGUsXCJ2LWlmXCIsITApLG89aT9cIiYmKFwiK2krXCIpXCI6XCJcIixhPW51bGwhPUZyKGUsXCJ2LWVsc2VcIiwhMCkscz1GcihlLFwidi1lbHNlLWlmXCIsITApLGM9X2EoZSk7cGEoYyksanIoYyxcInR5cGVcIixcImNoZWNrYm94XCIpLGZhKGMsdCksYy5wcm9jZXNzZWQ9ITAsYy5pZj1cIihcIituK1wiKT09PSdjaGVja2JveCdcIitvLGRhKGMse2V4cDpjLmlmLGJsb2NrOmN9KTt2YXIgdT1fYShlKTtGcih1LFwidi1mb3JcIiwhMCksanIodSxcInR5cGVcIixcInJhZGlvXCIpLGZhKHUsdCksZGEoYyx7ZXhwOlwiKFwiK24rXCIpPT09J3JhZGlvJ1wiK28sYmxvY2s6dX0pO3ZhciBsPV9hKGUpO3JldHVybiBGcihsLFwidi1mb3JcIiwhMCksanIobCxcIjp0eXBlXCIsbiksZmEobCx0KSxkYShjLHtleHA6aSxibG9jazpsfSksYT9jLmVsc2U9ITA6cyYmKGMuZWxzZWlmPXMpLGN9fX19XTt2YXIgJGEsd2EsQ2E9e2V4cGVjdEhUTUw6ITAsbW9kdWxlczpiYSxkaXJlY3RpdmVzOnttb2RlbDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQubW9kaWZpZXJzLG89ZS50YWcsYT1lLmF0dHJzTWFwLnR5cGU7aWYoZS5jb21wb25lbnQpcmV0dXJuIEhyKGUscixpKSwhMTtpZihcInNlbGVjdFwiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPSd2YXIgJCRzZWxlY3RlZFZhbCA9IEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCgkZXZlbnQudGFyZ2V0Lm9wdGlvbnMsZnVuY3Rpb24obyl7cmV0dXJuIG8uc2VsZWN0ZWR9KS5tYXAoZnVuY3Rpb24obyl7dmFyIHZhbCA9IFwiX3ZhbHVlXCIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJysobiYmbi5udW1iZXI/XCJfbih2YWwpXCI6XCJ2YWxcIikrXCJ9KTtcIjtyPXIrXCIgXCIrQnIodCxcIiRldmVudC50YXJnZXQubXVsdGlwbGUgPyAkJHNlbGVjdGVkVmFsIDogJCRzZWxlY3RlZFZhbFswXVwiKSxNcihlLFwiY2hhbmdlXCIscixudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoXCJpbnB1dFwiPT09byYmXCJjaGVja2JveFwiPT09YSkhZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4mJm4ubnVtYmVyLGk9SXIoZSxcInZhbHVlXCIpfHxcIm51bGxcIixvPUlyKGUsXCJ0cnVlLXZhbHVlXCIpfHxcInRydWVcIixhPUlyKGUsXCJmYWxzZS12YWx1ZVwiKXx8XCJmYWxzZVwiO0VyKGUsXCJjaGVja2VkXCIsXCJBcnJheS5pc0FycmF5KFwiK3QrXCIpP19pKFwiK3QrXCIsXCIraStcIik+LTFcIisoXCJ0cnVlXCI9PT1vP1wiOihcIit0K1wiKVwiOlwiOl9xKFwiK3QrXCIsXCIrbytcIilcIikpLE1yKGUsXCJjaGFuZ2VcIixcInZhciAkJGE9XCIrdCtcIiwkJGVsPSRldmVudC50YXJnZXQsJCRjPSQkZWwuY2hlY2tlZD8oXCIrbytcIik6KFwiK2ErXCIpO2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj1cIisocj9cIl9uKFwiK2krXCIpXCI6aSkrXCIsJCRpPV9pKCQkYSwkJHYpO2lmKCQkZWwuY2hlY2tlZCl7JCRpPDAmJihcIitCcih0LFwiJCRhLmNvbmNhdChbJCR2XSlcIikrXCIpfWVsc2V7JCRpPi0xJiYoXCIrQnIodCxcIiQkYS5zbGljZSgwLCQkaSkuY29uY2F0KCQkYS5zbGljZSgkJGkrMSkpXCIpK1wiKX19ZWxzZXtcIitCcih0LFwiJCRjXCIpK1wifVwiLG51bGwsITApfShlLHIsaSk7ZWxzZSBpZihcImlucHV0XCI9PT1vJiZcInJhZGlvXCI9PT1hKSFmdW5jdGlvbihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT1JcihlLFwidmFsdWVcIil8fFwibnVsbFwiO0VyKGUsXCJjaGVja2VkXCIsXCJfcShcIit0K1wiLFwiKyhpPXI/XCJfbihcIitpK1wiKVwiOmkpK1wiKVwiKSxNcihlLFwiY2hhbmdlXCIsQnIodCxpKSxudWxsLCEwKX0oZSxyLGkpO2Vsc2UgaWYoXCJpbnB1dFwiPT09b3x8XCJ0ZXh0YXJlYVwiPT09bykhZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuYXR0cnNNYXAudHlwZSxpPW58fHt9LG89aS5sYXp5LGE9aS5udW1iZXIscz1pLnRyaW0sYz0hbyYmXCJyYW5nZVwiIT09cix1PW8/XCJjaGFuZ2VcIjpcInJhbmdlXCI9PT1yP1dyOlwiaW5wdXRcIixsPVwiJGV2ZW50LnRhcmdldC52YWx1ZVwiO3MmJihsPVwiJGV2ZW50LnRhcmdldC52YWx1ZS50cmltKClcIiksYSYmKGw9XCJfbihcIitsK1wiKVwiKTt2YXIgZj1Ccih0LGwpO2MmJihmPVwiaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuO1wiK2YpLEVyKGUsXCJ2YWx1ZVwiLFwiKFwiK3QrXCIpXCIpLE1yKGUsdSxmLG51bGwsITApLChzfHxhKSYmTXIoZSxcImJsdXJcIixcIiRmb3JjZVVwZGF0ZSgpXCIpfShlLHIsaSk7ZWxzZSBpZighRi5pc1Jlc2VydmVkVGFnKG8pKXJldHVybiBIcihlLHIsaSksITE7cmV0dXJuITB9LHRleHQ6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZFcihlLFwidGV4dENvbnRlbnRcIixcIl9zKFwiK3QudmFsdWUrXCIpXCIsdCl9LGh0bWw6ZnVuY3Rpb24oZSx0KXt0LnZhbHVlJiZFcihlLFwiaW5uZXJIVE1MXCIsXCJfcyhcIit0LnZhbHVlK1wiKVwiLHQpfX0saXNQcmVUYWc6ZnVuY3Rpb24oZSl7cmV0dXJuXCJwcmVcIj09PWV9LGlzVW5hcnlUYWc6Ym8sbXVzdFVzZVByb3A6am4sY2FuQmVMZWZ0T3BlblRhZzokbyxpc1Jlc2VydmVkVGFnOlduLGdldFRhZ05hbWVzcGFjZTpabixzdGF0aWNLZXlzOmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oXCIsXCIpfShiYSl9LHhhPWcoZnVuY3Rpb24oZSl7cmV0dXJuIHAoXCJ0eXBlLHRhZyxhdHRyc0xpc3QsYXR0cnNNYXAscGxhaW4scGFyZW50LGNoaWxkcmVuLGF0dHJzLHN0YXJ0LGVuZCxyYXdBdHRyc01hcFwiKyhlP1wiLFwiK2U6XCJcIikpfSk7ZnVuY3Rpb24ga2EoZSx0KXtlJiYoJGE9eGEodC5zdGF0aWNLZXlzfHxcIlwiKSx3YT10LmlzUmVzZXJ2ZWRUYWd8fFQsZnVuY3Rpb24gZSh0KXt0LnN0YXRpYz1mdW5jdGlvbihlKXtpZigyPT09ZS50eXBlKXJldHVybiExO2lmKDM9PT1lLnR5cGUpcmV0dXJuITA7cmV0dXJuISghZS5wcmUmJihlLmhhc0JpbmRpbmdzfHxlLmlmfHxlLmZvcnx8ZChlLnRhZyl8fCF3YShlLnRhZyl8fGZ1bmN0aW9uKGUpe2Zvcig7ZS5wYXJlbnQ7KXtpZihcInRlbXBsYXRlXCIhPT0oZT1lLnBhcmVudCkudGFnKXJldHVybiExO2lmKGUuZm9yKXJldHVybiEwfXJldHVybiExfShlKXx8IU9iamVjdC5rZXlzKGUpLmV2ZXJ5KCRhKSkpfSh0KTtpZigxPT09dC50eXBlKXtpZighd2EodC50YWcpJiZcInNsb3RcIiE9PXQudGFnJiZudWxsPT10LmF0dHJzTWFwW1wiaW5saW5lLXRlbXBsYXRlXCJdKXJldHVybjtmb3IodmFyIG49MCxyPXQuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspe3ZhciBpPXQuY2hpbGRyZW5bbl07ZShpKSxpLnN0YXRpY3x8KHQuc3RhdGljPSExKX1pZih0LmlmQ29uZGl0aW9ucylmb3IodmFyIG89MSxhPXQuaWZDb25kaXRpb25zLmxlbmd0aDtvPGE7bysrKXt2YXIgcz10LmlmQ29uZGl0aW9uc1tvXS5ibG9jaztlKHMpLHMuc3RhdGljfHwodC5zdGF0aWM9ITEpfX19KGUpLGZ1bmN0aW9uIGUodCxuKXtpZigxPT09dC50eXBlKXtpZigodC5zdGF0aWN8fHQub25jZSkmJih0LnN0YXRpY0luRm9yPW4pLHQuc3RhdGljJiZ0LmNoaWxkcmVuLmxlbmd0aCYmKDEhPT10LmNoaWxkcmVuLmxlbmd0aHx8MyE9PXQuY2hpbGRyZW5bMF0udHlwZSkpcmV0dXJuIHZvaWQodC5zdGF0aWNSb290PSEwKTtpZih0LnN0YXRpY1Jvb3Q9ITEsdC5jaGlsZHJlbilmb3IodmFyIHI9MCxpPXQuY2hpbGRyZW4ubGVuZ3RoO3I8aTtyKyspZSh0LmNoaWxkcmVuW3JdLG58fCEhdC5mb3IpO2lmKHQuaWZDb25kaXRpb25zKWZvcih2YXIgbz0xLGE9dC5pZkNvbmRpdGlvbnMubGVuZ3RoO288YTtvKyspZSh0LmlmQ29uZGl0aW9uc1tvXS5ibG9jayxuKX19KGUsITEpKX12YXIgQWE9L14oW1xcdyRfXSt8XFwoW14pXSo/XFwpKVxccyo9PnxeZnVuY3Rpb24oPzpcXHMrW1xcdyRdKyk/XFxzKlxcKC8sT2E9L1xcKFteKV0qP1xcKTsqJC8sU2E9L15bQS1aYS16XyRdW1xcdyRdKig/OlxcLltBLVphLXpfJF1bXFx3JF0qfFxcWydbXiddKj8nXXxcXFtcIlteXCJdKj9cIl18XFxbXFxkK118XFxbW0EtWmEtel8kXVtcXHckXSpdKSokLyxUYT17ZXNjOjI3LHRhYjo5LGVudGVyOjEzLHNwYWNlOjMyLHVwOjM4LGxlZnQ6MzcscmlnaHQ6MzksZG93bjo0MCxkZWxldGU6WzgsNDZdfSxFYT17ZXNjOltcIkVzY1wiLFwiRXNjYXBlXCJdLHRhYjpcIlRhYlwiLGVudGVyOlwiRW50ZXJcIixzcGFjZTpbXCIgXCIsXCJTcGFjZWJhclwiXSx1cDpbXCJVcFwiLFwiQXJyb3dVcFwiXSxsZWZ0OltcIkxlZnRcIixcIkFycm93TGVmdFwiXSxyaWdodDpbXCJSaWdodFwiLFwiQXJyb3dSaWdodFwiXSxkb3duOltcIkRvd25cIixcIkFycm93RG93blwiXSxkZWxldGU6W1wiQmFja3NwYWNlXCIsXCJEZWxldGVcIixcIkRlbFwiXX0sTmE9ZnVuY3Rpb24oZSl7cmV0dXJuXCJpZihcIitlK1wiKXJldHVybiBudWxsO1wifSxqYT17c3RvcDpcIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIixwcmV2ZW50OlwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCIsc2VsZjpOYShcIiRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0XCIpLGN0cmw6TmEoXCIhJGV2ZW50LmN0cmxLZXlcIiksc2hpZnQ6TmEoXCIhJGV2ZW50LnNoaWZ0S2V5XCIpLGFsdDpOYShcIiEkZXZlbnQuYWx0S2V5XCIpLG1ldGE6TmEoXCIhJGV2ZW50Lm1ldGFLZXlcIiksbGVmdDpOYShcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAwXCIpLG1pZGRsZTpOYShcIididXR0b24nIGluICRldmVudCAmJiAkZXZlbnQuYnV0dG9uICE9PSAxXCIpLHJpZ2h0Ok5hKFwiJ2J1dHRvbicgaW4gJGV2ZW50ICYmICRldmVudC5idXR0b24gIT09IDJcIil9O2Z1bmN0aW9uIERhKGUsdCl7dmFyIG49dD9cIm5hdGl2ZU9uOlwiOlwib246XCIscj1cIlwiLGk9XCJcIjtmb3IodmFyIG8gaW4gZSl7dmFyIGE9TGEoZVtvXSk7ZVtvXSYmZVtvXS5keW5hbWljP2krPW8rXCIsXCIrYStcIixcIjpyKz0nXCInK28rJ1wiOicrYStcIixcIn1yZXR1cm4gcj1cIntcIityLnNsaWNlKDAsLTEpK1wifVwiLGk/bitcIl9kKFwiK3IrXCIsW1wiK2kuc2xpY2UoMCwtMSkrXCJdKVwiOm4rcn1mdW5jdGlvbiBMYShlKXtpZighZSlyZXR1cm5cImZ1bmN0aW9uKCl7fVwiO2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuXCJbXCIrZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIExhKGUpfSkuam9pbihcIixcIikrXCJdXCI7dmFyIHQ9U2EudGVzdChlLnZhbHVlKSxuPUFhLnRlc3QoZS52YWx1ZSkscj1TYS50ZXN0KGUudmFsdWUucmVwbGFjZShPYSxcIlwiKSk7aWYoZS5tb2RpZmllcnMpe3ZhciBpPVwiXCIsbz1cIlwiLGE9W107Zm9yKHZhciBzIGluIGUubW9kaWZpZXJzKWlmKGphW3NdKW8rPWphW3NdLFRhW3NdJiZhLnB1c2gocyk7ZWxzZSBpZihcImV4YWN0XCI9PT1zKXt2YXIgYz1lLm1vZGlmaWVycztvKz1OYShbXCJjdHJsXCIsXCJzaGlmdFwiLFwiYWx0XCIsXCJtZXRhXCJdLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hY1tlXX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm5cIiRldmVudC5cIitlK1wiS2V5XCJ9KS5qb2luKFwifHxcIikpfWVsc2UgYS5wdXNoKHMpO3JldHVybiBhLmxlbmd0aCYmKGkrPWZ1bmN0aW9uKGUpe3JldHVyblwiaWYoISRldmVudC50eXBlLmluZGV4T2YoJ2tleScpJiZcIitlLm1hcChNYSkuam9pbihcIiYmXCIpK1wiKXJldHVybiBudWxsO1wifShhKSksbyYmKGkrPW8pLFwiZnVuY3Rpb24oJGV2ZW50KXtcIitpKyh0P1wicmV0dXJuIFwiK2UudmFsdWUrXCIoJGV2ZW50KVwiOm4/XCJyZXR1cm4gKFwiK2UudmFsdWUrXCIpKCRldmVudClcIjpyP1wicmV0dXJuIFwiK2UudmFsdWU6ZS52YWx1ZSkrXCJ9XCJ9cmV0dXJuIHR8fG4/ZS52YWx1ZTpcImZ1bmN0aW9uKCRldmVudCl7XCIrKHI/XCJyZXR1cm4gXCIrZS52YWx1ZTplLnZhbHVlKStcIn1cIn1mdW5jdGlvbiBNYShlKXt2YXIgdD1wYXJzZUludChlLDEwKTtpZih0KXJldHVyblwiJGV2ZW50LmtleUNvZGUhPT1cIit0O3ZhciBuPVRhW2VdLHI9RWFbZV07cmV0dXJuXCJfaygkZXZlbnQua2V5Q29kZSxcIitKU09OLnN0cmluZ2lmeShlKStcIixcIitKU09OLnN0cmluZ2lmeShuKStcIiwkZXZlbnQua2V5LFwiK0pTT04uc3RyaW5naWZ5KHIpK1wiKVwifXZhciBJYT17b246ZnVuY3Rpb24oZSx0KXtlLndyYXBMaXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuXCJfZyhcIitlK1wiLFwiK3QudmFsdWUrXCIpXCJ9fSxiaW5kOmZ1bmN0aW9uKGUsdCl7ZS53cmFwRGF0YT1mdW5jdGlvbihuKXtyZXR1cm5cIl9iKFwiK24rXCIsJ1wiK2UudGFnK1wiJyxcIit0LnZhbHVlK1wiLFwiKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMucHJvcD9cInRydWVcIjpcImZhbHNlXCIpKyh0Lm1vZGlmaWVycyYmdC5tb2RpZmllcnMuc3luYz9cIix0cnVlXCI6XCJcIikrXCIpXCJ9fSxjbG9hazpTfSxGYT1mdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9ZSx0aGlzLndhcm49ZS53YXJufHxTcix0aGlzLnRyYW5zZm9ybXM9VHIoZS5tb2R1bGVzLFwidHJhbnNmb3JtQ29kZVwiKSx0aGlzLmRhdGFHZW5GbnM9VHIoZS5tb2R1bGVzLFwiZ2VuRGF0YVwiKSx0aGlzLmRpcmVjdGl2ZXM9QShBKHt9LElhKSxlLmRpcmVjdGl2ZXMpO3ZhciB0PWUuaXNSZXNlcnZlZFRhZ3x8VDt0aGlzLm1heWJlQ29tcG9uZW50PWZ1bmN0aW9uKGUpe3JldHVybiEhZS5jb21wb25lbnR8fCF0KGUudGFnKX0sdGhpcy5vbmNlSWQ9MCx0aGlzLnN0YXRpY1JlbmRlckZucz1bXSx0aGlzLnByZT0hMX07ZnVuY3Rpb24gUGEoZSx0KXt2YXIgbj1uZXcgRmEodCk7cmV0dXJue3JlbmRlcjpcIndpdGgodGhpcyl7cmV0dXJuIFwiKyhlP1JhKGUsbik6J19jKFwiZGl2XCIpJykrXCJ9XCIsc3RhdGljUmVuZGVyRm5zOm4uc3RhdGljUmVuZGVyRm5zfX1mdW5jdGlvbiBSYShlLHQpe2lmKGUucGFyZW50JiYoZS5wcmU9ZS5wcmV8fGUucGFyZW50LnByZSksZS5zdGF0aWNSb290JiYhZS5zdGF0aWNQcm9jZXNzZWQpcmV0dXJuIEhhKGUsdCk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBCYShlLHQpO2lmKGUuZm9yJiYhZS5mb3JQcm9jZXNzZWQpcmV0dXJuIHphKGUsdCk7aWYoZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoXCJ0ZW1wbGF0ZVwiIT09ZS50YWd8fGUuc2xvdFRhcmdldHx8dC5wcmUpe2lmKFwic2xvdFwiPT09ZS50YWcpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5zbG90TmFtZXx8J1wiZGVmYXVsdFwiJyxyPXFhKGUsdCksaT1cIl90KFwiK24rKHI/XCIsXCIrcjpcIlwiKSxvPWUuYXR0cnN8fGUuZHluYW1pY0F0dHJzP0dhKChlLmF0dHJzfHxbXSkuY29uY2F0KGUuZHluYW1pY0F0dHJzfHxbXSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybntuYW1lOmIoZS5uYW1lKSx2YWx1ZTplLnZhbHVlLGR5bmFtaWM6ZS5keW5hbWljfX0pKTpudWxsLGE9ZS5hdHRyc01hcFtcInYtYmluZFwiXTshbyYmIWF8fHJ8fChpKz1cIixudWxsXCIpO28mJihpKz1cIixcIitvKTthJiYoaSs9KG8/XCJcIjpcIixudWxsXCIpK1wiLFwiK2EpO3JldHVybiBpK1wiKVwifShlLHQpO3ZhciBuO2lmKGUuY29tcG9uZW50KW49ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXQuaW5saW5lVGVtcGxhdGU/bnVsbDpxYSh0LG4sITApO3JldHVyblwiX2MoXCIrZStcIixcIitWYSh0LG4pKyhyP1wiLFwiK3I6XCJcIikrXCIpXCJ9KGUuY29tcG9uZW50LGUsdCk7ZWxzZXt2YXIgcjsoIWUucGxhaW58fGUucHJlJiZ0Lm1heWJlQ29tcG9uZW50KGUpKSYmKHI9VmEoZSx0KSk7dmFyIGk9ZS5pbmxpbmVUZW1wbGF0ZT9udWxsOnFhKGUsdCwhMCk7bj1cIl9jKCdcIitlLnRhZytcIidcIisocj9cIixcIityOlwiXCIpKyhpP1wiLFwiK2k6XCJcIikrXCIpXCJ9Zm9yKHZhciBvPTA7bzx0LnRyYW5zZm9ybXMubGVuZ3RoO28rKyluPXQudHJhbnNmb3Jtc1tvXShlLG4pO3JldHVybiBufXJldHVybiBxYShlLHQpfHxcInZvaWQgMFwifWZ1bmN0aW9uIEhhKGUsdCl7ZS5zdGF0aWNQcm9jZXNzZWQ9ITA7dmFyIG49dC5wcmU7cmV0dXJuIGUucHJlJiYodC5wcmU9ZS5wcmUpLHQuc3RhdGljUmVuZGVyRm5zLnB1c2goXCJ3aXRoKHRoaXMpe3JldHVybiBcIitSYShlLHQpK1wifVwiKSx0LnByZT1uLFwiX20oXCIrKHQuc3RhdGljUmVuZGVyRm5zLmxlbmd0aC0xKSsoZS5zdGF0aWNJbkZvcj9cIix0cnVlXCI6XCJcIikrXCIpXCJ9ZnVuY3Rpb24gQmEoZSx0KXtpZihlLm9uY2VQcm9jZXNzZWQ9ITAsZS5pZiYmIWUuaWZQcm9jZXNzZWQpcmV0dXJuIFVhKGUsdCk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciBuPVwiXCIscj1lLnBhcmVudDtyOyl7aWYoci5mb3Ipe249ci5rZXk7YnJlYWt9cj1yLnBhcmVudH1yZXR1cm4gbj9cIl9vKFwiK1JhKGUsdCkrXCIsXCIrdC5vbmNlSWQrKytcIixcIituK1wiKVwiOlJhKGUsdCl9cmV0dXJuIEhhKGUsdCl9ZnVuY3Rpb24gVWEoZSx0LG4scil7cmV0dXJuIGUuaWZQcm9jZXNzZWQ9ITAsZnVuY3Rpb24gZSh0LG4scixpKXtpZighdC5sZW5ndGgpcmV0dXJuIGl8fFwiX2UoKVwiO3ZhciBvPXQuc2hpZnQoKTtyZXR1cm4gby5leHA/XCIoXCIrby5leHArXCIpP1wiK2Eoby5ibG9jaykrXCI6XCIrZSh0LG4scixpKTpcIlwiK2Eoby5ibG9jayk7ZnVuY3Rpb24gYShlKXtyZXR1cm4gcj9yKGUsbik6ZS5vbmNlP0JhKGUsbik6UmEoZSxuKX19KGUuaWZDb25kaXRpb25zLnNsaWNlKCksdCxuLHIpfWZ1bmN0aW9uIHphKGUsdCxuLHIpe3ZhciBpPWUuZm9yLG89ZS5hbGlhcyxhPWUuaXRlcmF0b3IxP1wiLFwiK2UuaXRlcmF0b3IxOlwiXCIscz1lLml0ZXJhdG9yMj9cIixcIitlLml0ZXJhdG9yMjpcIlwiO3JldHVybiBlLmZvclByb2Nlc3NlZD0hMCwocnx8XCJfbFwiKStcIigoXCIraStcIiksZnVuY3Rpb24oXCIrbythK3MrXCIpe3JldHVybiBcIisobnx8UmEpKGUsdCkrXCJ9KVwifWZ1bmN0aW9uIFZhKGUsdCl7dmFyIG49XCJ7XCIscj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuZGlyZWN0aXZlcztpZighbilyZXR1cm47dmFyIHIsaSxvLGEscz1cImRpcmVjdGl2ZXM6W1wiLGM9ITE7Zm9yKHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspe289bltyXSxhPSEwO3ZhciB1PXQuZGlyZWN0aXZlc1tvLm5hbWVdO3UmJihhPSEhdShlLG8sdC53YXJuKSksYSYmKGM9ITAscys9J3tuYW1lOlwiJytvLm5hbWUrJ1wiLHJhd05hbWU6XCInK28ucmF3TmFtZSsnXCInKyhvLnZhbHVlP1wiLHZhbHVlOihcIitvLnZhbHVlK1wiKSxleHByZXNzaW9uOlwiK0pTT04uc3RyaW5naWZ5KG8udmFsdWUpOlwiXCIpKyhvLmFyZz9cIixhcmc6XCIrKG8uaXNEeW5hbWljQXJnP28uYXJnOidcIicrby5hcmcrJ1wiJyk6XCJcIikrKG8ubW9kaWZpZXJzP1wiLG1vZGlmaWVyczpcIitKU09OLnN0cmluZ2lmeShvLm1vZGlmaWVycyk6XCJcIikrXCJ9LFwiKX1pZihjKXJldHVybiBzLnNsaWNlKDAsLTEpK1wiXVwifShlLHQpO3ImJihuKz1yK1wiLFwiKSxlLmtleSYmKG4rPVwia2V5OlwiK2Uua2V5K1wiLFwiKSxlLnJlZiYmKG4rPVwicmVmOlwiK2UucmVmK1wiLFwiKSxlLnJlZkluRm9yJiYobis9XCJyZWZJbkZvcjp0cnVlLFwiKSxlLnByZSYmKG4rPVwicHJlOnRydWUsXCIpLGUuY29tcG9uZW50JiYobis9J3RhZzpcIicrZS50YWcrJ1wiLCcpO2Zvcih2YXIgaT0wO2k8dC5kYXRhR2VuRm5zLmxlbmd0aDtpKyspbis9dC5kYXRhR2VuRm5zW2ldKGUpO2lmKGUuYXR0cnMmJihuKz1cImF0dHJzOlwiK0dhKGUuYXR0cnMpK1wiLFwiKSxlLnByb3BzJiYobis9XCJkb21Qcm9wczpcIitHYShlLnByb3BzKStcIixcIiksZS5ldmVudHMmJihuKz1EYShlLmV2ZW50cywhMSkrXCIsXCIpLGUubmF0aXZlRXZlbnRzJiYobis9RGEoZS5uYXRpdmVFdmVudHMsITApK1wiLFwiKSxlLnNsb3RUYXJnZXQmJiFlLnNsb3RTY29wZSYmKG4rPVwic2xvdDpcIitlLnNsb3RUYXJnZXQrXCIsXCIpLGUuc2NvcGVkU2xvdHMmJihuKz1mdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5mb3J8fE9iamVjdC5rZXlzKHQpLnNvbWUoZnVuY3Rpb24oZSl7dmFyIG49dFtlXTtyZXR1cm4gbi5zbG90VGFyZ2V0RHluYW1pY3x8bi5pZnx8bi5mb3J8fEthKG4pfSksaT0hIWUuaWY7aWYoIXIpZm9yKHZhciBvPWUucGFyZW50O287KXtpZihvLnNsb3RTY29wZSYmby5zbG90U2NvcGUhPT1jYXx8by5mb3Ipe3I9ITA7YnJlYWt9by5pZiYmKGk9ITApLG89by5wYXJlbnR9dmFyIGE9T2JqZWN0LmtleXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBKYSh0W2VdLG4pfSkuam9pbihcIixcIik7cmV0dXJuXCJzY29wZWRTbG90czpfdShbXCIrYStcIl1cIisocj9cIixudWxsLHRydWVcIjpcIlwiKSsoIXImJmk/XCIsbnVsbCxmYWxzZSxcIitmdW5jdGlvbihlKXt2YXIgdD01MzgxLG49ZS5sZW5ndGg7Zm9yKDtuOyl0PTMzKnReZS5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIHQ+Pj4wfShhKTpcIlwiKStcIilcIn0oZSxlLnNjb3BlZFNsb3RzLHQpK1wiLFwiKSxlLm1vZGVsJiYobis9XCJtb2RlbDp7dmFsdWU6XCIrZS5tb2RlbC52YWx1ZStcIixjYWxsYmFjazpcIitlLm1vZGVsLmNhbGxiYWNrK1wiLGV4cHJlc3Npb246XCIrZS5tb2RlbC5leHByZXNzaW9uK1wifSxcIiksZS5pbmxpbmVUZW1wbGF0ZSl7dmFyIG89ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmNoaWxkcmVuWzBdO2lmKG4mJjE9PT1uLnR5cGUpe3ZhciByPVBhKG4sdC5vcHRpb25zKTtyZXR1cm5cImlubGluZVRlbXBsYXRlOntyZW5kZXI6ZnVuY3Rpb24oKXtcIityLnJlbmRlcitcIn0sc3RhdGljUmVuZGVyRm5zOltcIityLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvbigpe1wiK2UrXCJ9XCJ9KS5qb2luKFwiLFwiKStcIl19XCJ9fShlLHQpO28mJihuKz1vK1wiLFwiKX1yZXR1cm4gbj1uLnJlcGxhY2UoLywkLyxcIlwiKStcIn1cIixlLmR5bmFtaWNBdHRycyYmKG49XCJfYihcIituKycsXCInK2UudGFnKydcIiwnK0dhKGUuZHluYW1pY0F0dHJzKStcIilcIiksZS53cmFwRGF0YSYmKG49ZS53cmFwRGF0YShuKSksZS53cmFwTGlzdGVuZXJzJiYobj1lLndyYXBMaXN0ZW5lcnMobikpLG59ZnVuY3Rpb24gS2EoZSl7cmV0dXJuIDE9PT1lLnR5cGUmJihcInNsb3RcIj09PWUudGFnfHxlLmNoaWxkcmVuLnNvbWUoS2EpKX1mdW5jdGlvbiBKYShlLHQpe3ZhciBuPWUuYXR0cnNNYXBbXCJzbG90LXNjb3BlXCJdO2lmKGUuaWYmJiFlLmlmUHJvY2Vzc2VkJiYhbilyZXR1cm4gVWEoZSx0LEphLFwibnVsbFwiKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiB6YShlLHQsSmEpO3ZhciByPWUuc2xvdFNjb3BlPT09Y2E/XCJcIjpTdHJpbmcoZS5zbG90U2NvcGUpLGk9XCJmdW5jdGlvbihcIityK1wiKXtyZXR1cm4gXCIrKFwidGVtcGxhdGVcIj09PWUudGFnP2UuaWYmJm4/XCIoXCIrZS5pZitcIik/XCIrKHFhKGUsdCl8fFwidW5kZWZpbmVkXCIpK1wiOnVuZGVmaW5lZFwiOnFhKGUsdCl8fFwidW5kZWZpbmVkXCI6UmEoZSx0KSkrXCJ9XCIsbz1yP1wiXCI6XCIscHJveHk6dHJ1ZVwiO3JldHVyblwie2tleTpcIisoZS5zbG90VGFyZ2V0fHwnXCJkZWZhdWx0XCInKStcIixmbjpcIitpK28rXCJ9XCJ9ZnVuY3Rpb24gcWEoZSx0LG4scixpKXt2YXIgbz1lLmNoaWxkcmVuO2lmKG8ubGVuZ3RoKXt2YXIgYT1vWzBdO2lmKDE9PT1vLmxlbmd0aCYmYS5mb3ImJlwidGVtcGxhdGVcIiE9PWEudGFnJiZcInNsb3RcIiE9PWEudGFnKXt2YXIgcz1uP3QubWF5YmVDb21wb25lbnQoYSk/XCIsMVwiOlwiLDBcIjpcIlwiO3JldHVyblwiXCIrKHJ8fFJhKShhLHQpK3N9dmFyIGM9bj9mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXTtpZigxPT09aS50eXBlKXtpZihXYShpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIFdhKGUuYmxvY2spfSkpe249MjticmVha30odChpKXx8aS5pZkNvbmRpdGlvbnMmJmkuaWZDb25kaXRpb25zLnNvbWUoZnVuY3Rpb24oZSl7cmV0dXJuIHQoZS5ibG9jayl9KSkmJihuPTEpfX1yZXR1cm4gbn0obyx0Lm1heWJlQ29tcG9uZW50KTowLHU9aXx8WmE7cmV0dXJuXCJbXCIrby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHUoZSx0KX0pLmpvaW4oXCIsXCIpK1wiXVwiKyhjP1wiLFwiK2M6XCJcIil9fWZ1bmN0aW9uIFdhKGUpe3JldHVybiB2b2lkIDAhPT1lLmZvcnx8XCJ0ZW1wbGF0ZVwiPT09ZS50YWd8fFwic2xvdFwiPT09ZS50YWd9ZnVuY3Rpb24gWmEoZSx0KXtyZXR1cm4gMT09PWUudHlwZT9SYShlLHQpOjM9PT1lLnR5cGUmJmUuaXNDb21tZW50PyhyPWUsXCJfZShcIitKU09OLnN0cmluZ2lmeShyLnRleHQpK1wiKVwiKTpcIl92KFwiKygyPT09KG49ZSkudHlwZT9uLmV4cHJlc3Npb246WGEoSlNPTi5zdHJpbmdpZnkobi50ZXh0KSkpK1wiKVwiO3ZhciBuLHJ9ZnVuY3Rpb24gR2EoZSl7Zm9yKHZhciB0PVwiXCIsbj1cIlwiLHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIGk9ZVtyXSxvPVhhKGkudmFsdWUpO2kuZHluYW1pYz9uKz1pLm5hbWUrXCIsXCIrbytcIixcIjp0Kz0nXCInK2kubmFtZSsnXCI6JytvK1wiLFwifXJldHVybiB0PVwie1wiK3Quc2xpY2UoMCwtMSkrXCJ9XCIsbj9cIl9kKFwiK3QrXCIsW1wiK24uc2xpY2UoMCwtMSkrXCJdKVwiOnR9ZnVuY3Rpb24gWGEoZSl7cmV0dXJuIGUucmVwbGFjZSgvXFx1MjAyOC9nLFwiXFxcXHUyMDI4XCIpLnJlcGxhY2UoL1xcdTIwMjkvZyxcIlxcXFx1MjAyOVwiKX1uZXcgUmVnRXhwKFwiXFxcXGJcIitcImRvLGlmLGZvcixsZXQsbmV3LHRyeSx2YXIsY2FzZSxlbHNlLHdpdGgsYXdhaXQsYnJlYWssY2F0Y2gsY2xhc3MsY29uc3Qsc3VwZXIsdGhyb3csd2hpbGUseWllbGQsZGVsZXRlLGV4cG9ydCxpbXBvcnQscmV0dXJuLHN3aXRjaCxkZWZhdWx0LGV4dGVuZHMsZmluYWxseSxjb250aW51ZSxkZWJ1Z2dlcixmdW5jdGlvbixhcmd1bWVudHNcIi5zcGxpdChcIixcIikuam9pbihcIlxcXFxifFxcXFxiXCIpK1wiXFxcXGJcIik7ZnVuY3Rpb24gWWEoZSx0KXt0cnl7cmV0dXJuIG5ldyBGdW5jdGlvbihlKX1jYXRjaChuKXtyZXR1cm4gdC5wdXNoKHtlcnI6bixjb2RlOmV9KSxTfX1mdW5jdGlvbiBRYShlKXt2YXIgdD1PYmplY3QuY3JlYXRlKG51bGwpO3JldHVybiBmdW5jdGlvbihuLHIsaSl7KHI9QSh7fSxyKSkud2FybjtkZWxldGUgci53YXJuO3ZhciBvPXIuZGVsaW1pdGVycz9TdHJpbmcoci5kZWxpbWl0ZXJzKStuOm47aWYodFtvXSlyZXR1cm4gdFtvXTt2YXIgYT1lKG4scikscz17fSxjPVtdO3JldHVybiBzLnJlbmRlcj1ZYShhLnJlbmRlcixjKSxzLnN0YXRpY1JlbmRlckZucz1hLnN0YXRpY1JlbmRlckZucy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIFlhKGUsYyl9KSx0W29dPXN9fXZhciBlcyx0cyxucz0oZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1sYShlLnRyaW0oKSx0KTshMSE9PXQub3B0aW1pemUmJmthKG4sdCk7dmFyIHI9UGEobix0KTtyZXR1cm57YXN0Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRlckZuc319LGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj1PYmplY3QuY3JlYXRlKGUpLGk9W10sbz1bXTtpZihuKWZvcih2YXIgYSBpbiBuLm1vZHVsZXMmJihyLm1vZHVsZXM9KGUubW9kdWxlc3x8W10pLmNvbmNhdChuLm1vZHVsZXMpKSxuLmRpcmVjdGl2ZXMmJihyLmRpcmVjdGl2ZXM9QShPYmplY3QuY3JlYXRlKGUuZGlyZWN0aXZlc3x8bnVsbCksbi5kaXJlY3RpdmVzKSksbilcIm1vZHVsZXNcIiE9PWEmJlwiZGlyZWN0aXZlc1wiIT09YSYmKHJbYV09blthXSk7ci53YXJuPWZ1bmN0aW9uKGUsdCxuKXsobj9vOmkpLnB1c2goZSl9O3ZhciBzPWVzKHQudHJpbSgpLHIpO3JldHVybiBzLmVycm9ycz1pLHMudGlwcz1vLHN9cmV0dXJue2NvbXBpbGU6dCxjb21waWxlVG9GdW5jdGlvbnM6UWEodCl9fSkoQ2EpLHJzPShucy5jb21waWxlLG5zLmNvbXBpbGVUb0Z1bmN0aW9ucyk7ZnVuY3Rpb24gaXMoZSl7cmV0dXJuKHRzPXRzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9ZT8nPGEgaHJlZj1cIlxcblwiLz4nOic8ZGl2IGE9XCJcXG5cIi8+Jyx0cy5pbm5lckhUTUwuaW5kZXhPZihcIiYjMTA7XCIpPjB9dmFyIG9zPSEheiYmaXMoITEpLGFzPSEheiYmaXMoITApLHNzPWcoZnVuY3Rpb24oZSl7dmFyIHQ9WW4oZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksY3M9d24ucHJvdG90eXBlLiRtb3VudDt3bi5wcm90b3R5cGUuJG1vdW50PWZ1bmN0aW9uKGUsdCl7aWYoKGU9ZSYmWW4oZSkpPT09ZG9jdW1lbnQuYm9keXx8ZT09PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudClyZXR1cm4gdGhpczt2YXIgbj10aGlzLiRvcHRpb25zO2lmKCFuLnJlbmRlcil7dmFyIHI9bi50ZW1wbGF0ZTtpZihyKWlmKFwic3RyaW5nXCI9PXR5cGVvZiByKVwiI1wiPT09ci5jaGFyQXQoMCkmJihyPXNzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1mdW5jdGlvbihlKXtpZihlLm91dGVySFRNTClyZXR1cm4gZS5vdXRlckhUTUw7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlLmNsb25lTm9kZSghMCkpLHQuaW5uZXJIVE1MfShlKSk7aWYocil7dmFyIGk9cnMocix7b3V0cHV0U291cmNlUmFuZ2U6ITEsc2hvdWxkRGVjb2RlTmV3bGluZXM6b3Msc2hvdWxkRGVjb2RlTmV3bGluZXNGb3JIcmVmOmFzLGRlbGltaXRlcnM6bi5kZWxpbWl0ZXJzLGNvbW1lbnRzOm4uY29tbWVudHN9LHRoaXMpLG89aS5yZW5kZXIsYT1pLnN0YXRpY1JlbmRlckZucztuLnJlbmRlcj1vLG4uc3RhdGljUmVuZGVyRm5zPWF9fXJldHVybiBjcy5jYWxsKHRoaXMsZSx0KX0sd24uY29tcGlsZT1ycyxtb2R1bGUuZXhwb3J0cz13bjsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcImpRdWVyeVwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmltcG9ydCBjdXJyZW5jeUZvcm1NYXAgZnJvbSAnLi9jdXJyZW5jeS1mb3JtLW1hcCc7XG5pbXBvcnQgQ3VycmVuY3lGb3JtIGZyb20gJy4vY3VycmVuY3ktZm9ybSc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuJCgoKSA9PiB7XG4gIHdpbmRvdy5wcmVzdGFzaG9wLmNvbXBvbmVudC5pbml0Q29tcG9uZW50cyhcbiAgICBbXG4gICAgICAnVHJhbnNsYXRhYmxlSW5wdXQnLFxuICAgIF0sXG4gICk7XG4gIGNvbnN0IGNob2ljZVRyZWUgPSBuZXcgd2luZG93LnByZXN0YXNob3AuY29tcG9uZW50LkNob2ljZVRyZWUoY3VycmVuY3lGb3JtTWFwLnNob3BBc3NvY2lhdGlvblRyZWUpO1xuICBjaG9pY2VUcmVlLmVuYWJsZUF1dG9DaGVja0NoaWxkcmVuKCk7XG4gIGNvbnN0IGN1cnJlbmN5Rm9ybSA9IG5ldyBDdXJyZW5jeUZvcm0oY3VycmVuY3lGb3JtTWFwKTtcbiAgY3VycmVuY3lGb3JtLmluaXQoKTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==

Youez - 2016 - github.com/yon3zu
LinuXploit