(()=>{var e,t,r,n,i={853:(e,t,r)=>{"use strict";r.d(t,{Cj:()=>f,EL:()=>c,Kk:()=>i,Sk:()=>d,WE:()=>n,m0:()=>u,pR:()=>a,qs:()=>l,tk:()=>s,xV:()=>o});var n=window.navigator.userAgent.toLowerCase(),i=window.document.location.href,a=window.document.cookie,o=window.sc_asa_digi_list2||"",u=window.asaPrebidVideoInstremAd,c=window.sc_asa_digi_prop53||"",s=window.sc_asa_digi_prop48||"",d=window.sc_asa_digi_prop40||"",l=window.asa12_mode||"0",f=window.ad_kijinaka||"";window.ENABLE_FREE_AREA_AD;window.parent.configId="67"},811:(e,t,r)=>{"use strict";var n;function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(e,t,r){return(t=function(e){var t=function(e,t){if("object"!==i(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!==i(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"===i(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}r.d(t,{E:()=>u,J:()=>o});var o=(a(n={NAT_AREA1:["A18000000"],CENTER_EXAM_AREA1:["A14080000","A14080100","A14080200","A14080300","A14080400","A14080500"],TOKYO_2020_AREA1:["A07020000","A06100000"],RELIFE_AREA1:["A21030000"],NORMAL_AREA1:["A02000000","A11130000","A11070000","A11040000","A11030000","A11080000","A11020000","A11010000","A11070000","A11090000","A11100000","A11000000"],APITAL_AREA1:["A13000000"],NORMAL_AREA2:["A13000000","A12010000","A12000000","A21020000","A21010000","A21000000","A19130000","A20000000","A06041000","A06040100","A06041100","A06040700","A06040300","A06040600","A06050100","A06050000","A06060000","A06070000"],SOCCER_AREA1:["A06030000"],NORMAL_AREA3:["A06010000","A06000000"],EDU_AREA1:["A19090000","A14000000"],NORMAL_AREA4:["A03000000","A04000000","A17000000","A05000000","A15000000","A10000000","A09000000"],NAT_AREA2:["A16020000"],NORMAL_AREA5:["A16000000"]},"NAT_AREA2",["A01010000","A01020000","A01080000","A01030000","A01080000"]),a(n,"NORMAL_AREA6",["A01060000","A01050000","A01000000"]),a(n,"DEFAULT",["default"]),n),u={IS:{CENTER_EXAM:!1,TOKYO_2020:!1,RELIFE:!1,NORMAL:!1,APITAL:!1,SOCCER:!1,EDU:!1,NAT:!1}}},249:(e,t,r)=>{"use strict";r.d(t,{n:()=>n});var n=function(){window.grumi={cfg:{advs:{57010853:!0,4470253408:!0,4520900043:!0,4521150227:!0,4526711233:!0,4560227961:!0,4577145831:!0,4577730880:!0,4811363908:!0,4883691806:!0,5115414692:!0,4843813175:!0},pubIds:{}},key:"500316ec-18a9-4a62-baed-61d90167d54d"};var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="/load/view.php?a=aHR0cDovL3J1bWNkbi5nZW9lZGdlLmJlL2dydW1pLWlwLmpz";var t=document.getElementsByTagName("head")[0];t.insertBefore(e,t.firstChild)}},299:(e,t,r)=>{"use strict";r.d(t,{n:()=>n}),window.googletagReplacer=window.googletagReplacer||{};var n=window.googletagReplacer,i=[0,57010853,4560227961,4470253408,4883691806,4861701275];function a(){return window.scrollY}var o,u,c={},s={};function d(e){var t=c[e];if(t&&t.active&&t.element&&t.originalGptSlot){delete c[e];var r=document.createElement("div");r.setAttribute("id",t.replacer.id);var n=t.element.getAttribute("class");n&&r.setAttribute("class",n);var i=t.element.getAttribute("style");i&&r.setAttribute("style",i),r.style.display="none",r.style.position="absolute",t.element.insertAdjacentElement("afterend",r),s[t.replacer.id]={originalElement:t.element,originalGptSlot:t.originalGptSlot,replacerElement:r},googletag.cmd.push((function(){var e=googletag.defineSlot(t.replacer.adUnitPath,t.replacer.size,t.replacer.id).addService(googletag.pubads());googletag.pubads().refresh([e]),googletag.display(t.replacer.id)}))}}window.googletagReplacer.define=function(e,t,r,n){c[e]={active:!1,replacer:{adUnitPath:t,size:r,id:n}}},window.googletagReplacer.onSlotRenderEnded=function(e){s[e.slot.getSlotElementId()]?function(e){var t=e.slot.getSlotElementId(),r=s[t];if(!r)return;if(delete s[t],e.isEmpty)return void r.replacerElement.parentNode.removeChild(r.replacerElement);if(!googletag.pubads().clear([r.originalGptSlot]))return console.error("Failed clearing slot for: "+t),void r.replacerElement.parentNode.removeChild(r.replacerElement);r.originalElement.parentNode.removeChild(r.originalElement),r.replacerElement.style.display="",r.replacerElement.style.position=""}(e):function(e){if(e.isEmpty||(t=e,r=t.slot.getResponseInformation(),!r||!i.includes(r.advertiserId)))return;var t,r;var n=e.slot.getSlotElementId();if(!c[n])return;var a=document.getElementById(n);if(!a)return void console.error("Can't find element: "+n);c[n].element=a,c[n].originalGptSlot=e.slot}(e)},window.googletagReplacer.onImpressionViewable=function(e){var t=e.getSlotElementId();c[t]&&(c[t].active=!0)},window.requestAnimationFrame((function e(t){if(void 0!==o){var r=t-o,n=(a()-u)/r;if(n>0&&n<=.2)for(var i=Object.keys(c),s=0;sh&&d(l)}}}o=t,u=a(),setTimeout((function(){return window.requestAnimationFrame(e)}),200)}))},864:(e,t,r)=>{"use strict";r.d(t,{bK:()=>b,NH:()=>y,Oc:()=>m,yx:()=>g,DH:()=>_});var n=function(e){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src="/load/view.php?a=aHR0cDovL21pY3JvLnJ1Ymljb25wcm9qZWN0LmNvbS9wcmViaWQvZHluYW1pYy8xMjk3NC5qcw"+e;var r=document.getElementsByTagName("head")[0];r.insertBefore(t,r.firstChild)},i=function(){!function(e,t,r,n,i,a,o){function u(r,n){t[e]._Q.push([r,n])}t[e]||(t[e]={init:function(){u("i",arguments)},fetchBids:function(){u("f",arguments)},setDisplayBids:function(){},targetingKeys:function(){return[]},_Q:[]},(a=r.createElement(n)).async=!0,a.src="/load/view.php?a=aHR0cDovL2MuYW1hem9uLWFkc3lzdGVtLmNvbS9hYXgyL2Fwc3RhZy5qcw",(o=r.getElementsByTagName(n)[0]).parentNode.insertBefore(a,o))}("apstag",window,document,"script")};function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function o(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return u(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return u(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){c=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(c)throw a}}}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r3&&void 0!==arguments[3]?arguments[3]:{};h=e,d=t,l=r,w.failSafe=null!==(a=u.failSafe)&&void 0!==a?a:w.failSafe,w.apstagBid=null!==(o=u.apstagBid)&&void 0!==o?o:w.apstagBid,i(),p=function(){return window.apstag},n(l),window.pbjs=window.pbjs||{},window.pbjs.que=window.pbjs.que||[],f=window.pbjs}function m(){try{p().init(function(e){for(var t=1;t1&&(asaGumGumFlag=1)}}catch(e){n.e(e)}finally{n.f()}}a("a9")})),h.cmd.push((function(){f.que.push((function(){f.rp.requestBids({callback:function(){return a("prebid")},gptSlotObjects:t})}))})),window.setTimeout((function(){c()}),w.failSafe)}var y=function(){var e=[3750];return{failSafeTimeout:e[0],prebid_wrapper_key:"failSafeTimeout"+e[0]+"ms"}},_=function(){window.ID5EspConfig={partnerId:649}}},735:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}r.d(t,{O:()=>o,s:()=>a});var i,a=function(e,t){if(window.cX=window.cX||{callQueue:[]},!i){var r=setTimeout((function(){window.cX.getSegments||t("piano")}),1e3);window.cX.callQueue.push(["invoke",function(){window.cX.getSegments("ac61cf57605beae6bd38563685b65989b1b7f4fe",(function(n){e.cmd.push((function(){n.length>0&&(i=n.filter((function(e){return"contextual"===e.type})).map((function(e){return e.shortId})),e.pubads().setTargeting("CxContext",i)),clearTimeout(r),t("piano")}))}),500)}])}},o=function(){var e=[];return"object"===n(window.localStorage)&&"function"==typeof window.localStorage.getItem&&null!==localStorage.getItem("cxSegments")&&localStorage.getItem("cxSegments").length>0&&(e=localStorage.getItem("cxSegments").split(",")),e}},601:(e,t,r)=>{"use strict";r.d(t,{Y:()=>n});var n=function(e,t){var r=new XMLHttpRequest;r.onreadystatechange=function(){if(4===r.readyState&&200===r.status)try{!function(e,t){if(e){var r=[],n=[],i=[];Object.keys(e).forEach((function(t){var a=e[t];t.includes("age")?r.push({key:t,value:a}):t.includes("gender")?n.push({key:t,value:a}):t.includes("job")&&i.push({key:t,value:a})}));var a=function(e){return 0===e.length?"":e.reduce((function(e,t){return t.value>e.value?t:e})).key.replace("_rate","")},o=[a(r),a(n),a(i)].filter(Boolean);o.length>0&&t.cmd.push((function(){t.pubads().setTargeting("reader_prediction",[o.join(",")])}))}}(JSON.parse(r.responseText),t)}catch(e){console.error("JSONのパースに失敗しました:",e)}},r.open("GET","https://content-api.asahi-media-biz.com/content/".concat(e,".json"),!0),r.timeout=1e3,r.send(null)}},645:(e,t,r)=>{"use strict";r.d(t,{Bs:()=>u,Em:()=>l,G6:()=>g,Ht:()=>m,IY:()=>w,Ij:()=>c,J5:()=>E,Jl:()=>h,Yf:()=>b,_k:()=>d,gj:()=>_,ie:()=>y,ij:()=>A,jJ:()=>x,mI:()=>f,qs:()=>s,rt:()=>v,wS:()=>S,zu:()=>p});var n=r(853);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function a(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */a=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},u=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(e){d=function(e,t,r){return e[t]=r}}function l(e,t,r,i){var a=t&&t.prototype instanceof h?t:h,o=Object.create(a.prototype),u=new P(i||[]);return n(o,"_invoke",{value:A(e,r,u)}),o}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var p={};function h(){}function v(){}function w(){}var g={};d(g,u,(function(){return this}));var m=Object.getPrototypeOf,b=m&&m(m(k([])));b&&b!==t&&r.call(b,u)&&(g=b);var y=w.prototype=h.prototype=Object.create(g);function _(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function a(n,o,u,c){var s=f(e[n],e,o);if("throw"!==s.type){var d=s.arg,l=d.value;return l&&"object"==i(l)&&r.call(l,"__await")?t.resolve(l.__await).then((function(e){a("next",e,u,c)}),(function(e){a("throw",e,u,c)})):t.resolve(l).then((function(e){d.value=e,u(d)}),(function(e){return a("throw",e,u,c)}))}c(s.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){a(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function A(e,t,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return j()}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var u=E(o,r);if(u){if(u===p)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=f(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===p)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function E(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var i=f(n,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,p;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function k(e){if(e){var t=e[u];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--i){var a=this.tryEntries[i],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var u=r.call(a,"catchLoc"),c=r.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;O(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:k(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},e}function o(e,t,r,n,i,a,o){try{var u=e[a](o),c=u.value}catch(e){return void r(e)}u.done?t(c):Promise.resolve(c).then(n,i)}var u=function(){return window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag},c=function(){return-1!=n.WE.indexOf("iphone")?"iphone":-1!=n.WE.indexOf("android")?"android":-1!=n.WE.indexOf("windows nt")?"windows":-1!=n.WE.indexOf("mac os x")?"mac":"other"},s=function(){return-1!=n.WE.indexOf("msie")||-1!=n.WE.indexOf("trident")?"ie":-1!=n.WE.indexOf("edg")?"edge":-1!=n.WE.indexOf("chrome")?"chrome":-1!=n.WE.indexOf("safari")?"safari":-1!=n.WE.indexOf("firefox")?"firefox":"other"},d=function(e){var t=["B05000000","B05010000","B05040000","B05050000","B05060000","B05020000","B05070000","B05030000"],r="",i=[];if(""!==n.xV){i=n.xV.split(":");for(var a=0;a{"use strict";r.d(t,{H:()=>c,S:()=>u});var n,i=["ads"],a={},o=[],u=function(e,t){n=e,"article"===t&&i.push("piano")},c=function(e,t){"ads"===e&&o.push(t),a[e]=!0,s()&&d()},s=function(){return i.every((function(e){return a[e]}))},d=function(){n.cmd.push((function(){for(var e=0;e{"use strict";r.d(t,{$:()=>a});var n={働き方改革:{ID:"a1"},新型コロナウイルス:{ID:"a2"},新型コロナ:{ID:"a3"},新型肺炎:{ID:"a4"},スマホ:{ID:"a34"},iphone:{ID:"a35"},温室効果ガス:{ID:"a17"},周波数帯:{ID:"a39"},再生可能エネルギー:{ID:"a19"},気候変動:{ID:"a20"},二酸化炭素:{ID:"a21"},プログラミング教育:{ID:"a40"},三菱商事:{ID:"a42"},有効求人倍率:{ID:"a24"},内定率:{ID:"a25"},リクルート:{ID:"a26"},離職率:{ID:"a27"},人材紹介:{ID:"a28"},内定取り消し:{ID:"a29"},人材バンク:{ID:"a30"},第2新卒:{ID:"a31"},ディスコ:{ID:"a32"},就職活動:{ID:"a33"},サハリン2:{ID:"a43"},テレワーク:{ID:"a38"}},i=function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Object.keys(n),r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:n,i=[],a=[],o=0;o=0&&i.push(u),r[u]&&a.push(r[u].ID)}i.length>0&&googletag.cmd.push((function(){googletag.pubads().setTargeting("Pg_Topics",[i.join(",")])})),a.length>0&&googletag.cmd.push((function(){googletag.pubads().setTargeting("Ad_Topics",[a.join(",")])}))},a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Object.keys(n),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n;if("undefined"!=typeof AD_TOPICS_WORDS&&AD_TOPICS_WORDS instanceof Array)i(AD_TOPICS_WORDS,e,t);else{var r=new XMLHttpRequest;r.onreadystatechange=function(){if(4===r.readyState&&200===r.status){var n=JSON.parse(r.responseText).map((function(e){return e.words}));i(n,e,t)}};var a=document.location.hostname,o=["www.asahi.com","wwwcdn.asahi.com"].includes(a)?"www.asahicom.jp":a,u=document.location.pathname.match(/([^/]+).html$/)[1];r.open("GET","https://".concat(o,"/topics/link/").concat(u,".json"),!0),r.timeout=500,r.send(null)}}},708:(e,t,r)=>{"use strict";r.a(e,(async(e,t)=>{try{var n=r(220),i=r(645),a=r(14),o=r(440),u=r(601),c=r(811),s=r(299),d=r(864),l=r(735),f=r(249);function F(e,t){return U(e)||H(e,t)||V(e,t)||K()}function K(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function V(e,t){if(e){if("string"==typeof e)return z(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?z(e,t):void 0}}function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&a.H("ads",A),e(0,[1,2,3,4,5,6]),"ON"===x&&e(0,[7,8,9,10,11,12])}));var G=_.IS.APITAL?"apital":_.IS.RELIFE?"relife":_.IS.SOCCER?"soccer":"article";E=[{slotID:"1st_rect",slotName:"/57465213/www.asahi.com/PC/".concat(G,"/1st_rect"),sizes:[[300,250],[300,600]]},{slotID:"2nd_rect",slotName:"/57465213/www.asahi.com/PC/article/2nd_rect",sizes:[[300,250]]}];"ON"===x&&"Y"==O&&E.push({slotID:"kijinaka_rect",slotName:"/57465213/www.asahi.com/PC/article/kijinaka_rect",mediaType:"multi-format",multiFormatProperties:{display:{sizes:[[300,250]]},video:{sizes:[[300,250]]}}}),"ON"===x&&_.IS.TOKYO_2020&&-1==D.indexOf("trident/7")&&E.push({slotID:"div-gpt-ad-1573619875004-0",slotName:"/57465213/www.asahi.com/PC/webpush",sizes:[[1,1]]}),h.cmd.push((function(){(0,d.bK)(E,S,a.H)})),window.getPrebidInstreamAdUrl=function(e){var t=B.split(/[?#]/)[0];if(void 0===T)var r="";else r=T;if(void 0===m)var n="";else n=m;if(void 0===k)var i="";else i=k;var a="https://pubads.g.doubleclick.net/gampad/ads?sz=640x360&iu=/57465213/www.asahi.com/PC/video&impl=s&gdfp_req=1&env=vp&output=vast&unviewed_position_start=1&url=[referrer_url]&description_url="+t+"&correlator=[timestamp]&cust_params=Pg_Target%3D{pageVariable.Pg_Target_value}%26Pg_Keyword%3D{pageVariable.Pg_Keyword_value}%26asa12_mode%3D{pageVariable.asa12_mode_v}",o=!1,u=function(u){var c;o||(o=!0,c=void 0!==u&&void 0!==u.adTagUrl?u.adTagUrl+"%26Pg_Target%3D"+n+"%26Pg_Keyword%3D"+i+"%26asa12_mode%3D"+r+"&description_url="+t:a,e(c))};pbjs.que.push((function(){pbjs.rp.requestVideoBids({adSlotName:"/57465213/www.asahi.com/PC/video",playerSize:[640,360],callback:u,data:{}})})),window.setTimeout((function(){u()}),4500)},t()}catch(X){t(X)}}),1)},440:function(e){ /*! * in-view 0.6.1 - Get notified when a DOM element enters or exits the viewport. * Copyright (c) 2016 Cam Wiegert - https://camwiegert.github.io/in-view * License: MIT */ e.exports=function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}var i=n(r(2));e.exports=i.default},function(e,t){function r(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=r},function(e,t,r){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(r(9)),a=n(r(3)),o=r(4),u=function(){if("undefined"!=typeof window){var e=100,t=["scroll","resize","load"],r={history:[]},n={offset:{},threshold:0,test:o.inViewport},u=(0,i.default)((function(){r.history.forEach((function(e){r[e].check()}))}),e);t.forEach((function(e){return addEventListener(e,u)})),window.MutationObserver&&addEventListener("DOMContentLoaded",(function(){new MutationObserver(u).observe(document.body,{attributes:!0,childList:!0,subtree:!0})}));var c=function(e){if("string"==typeof e){var t=[].slice.call(document.querySelectorAll(e));return r.history.indexOf(e)>-1?r[e].elements=t:(r[e]=(0,a.default)(t,n),r.history.push(e)),r[e]}};return c.offset=function(e){if(void 0===e)return n.offset;var t=function(e){return"number"==typeof e};return["top","right","bottom","left"].forEach(t(e)?function(t){return n.offset[t]=e}:function(r){return t(e[r])?n.offset[r]=e[r]:null}),n.offset},c.threshold=function(e){return"number"==typeof e&&e>=0&&e<=1?n.threshold=e:n.threshold},c.test=function(e){return"function"==typeof e?n.test=e:n.test},c.is=function(e){return n.test(e,n)},c.offset(0),c}};t.default=u()},function(e,t){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r-1,a=!r&&i;r&&!i&&(e.current.push(t),e.emit("enter",t)),a&&(e.current.splice(n,1),e.emit("exit",t))})),this}},{key:"on",value:function(e,t){return this.handlers[e].push(t),this}},{key:"once",value:function(e,t){return this.singles[e].unshift(t),this}},{key:"emit",value:function(e,t){for(;this.singles[e].length;)this.singles[e].pop()(t);for(var r=this.handlers[e].length;--r>-1;)this.handlers[e][r](t);return this}}]),e}();t.default=function(e,t){return new i(e,t)}},function(e,t){"use strict";function r(e,t){var r=e.getBoundingClientRect(),n=r.top,i=r.right,a=r.bottom,o=r.left,u=r.width,c=r.height,s={t:a,r:window.innerWidth-o,b:window.innerHeight-n,l:i},d={x:t.threshold*u,y:t.threshold*c};return s.t>t.offset.top+d.y&&s.r>t.offset.right+d.x&&s.b>t.offset.bottom+d.y&&s.l>t.offset.left+d.x}Object.defineProperty(t,"__esModule",{value:!0}),t.inViewport=r},function(e,t){(function(t){var r="object"==typeof t&&t&&t.Object===Object&&t;e.exports=r}).call(t,function(){return this}())},function(e,t,r){var n=r(5),i="object"==typeof self&&self&&self.Object===Object&&self,a=n||i||Function("return this")();e.exports=a},function(e,t,r){function n(e,t,r){function n(t){var r=m,n=b;return m=b=void 0,E=t,_=e.apply(n,r)}function d(e){return E=e,S=setTimeout(p,t),x?n(e):_}function l(e){var r=t-(e-A);return O?s(r,y-(e-E)):r}function f(e){var r=e-A;return void 0===A||r>=t||r<0||O&&e-E>=y}function p(){var e=a();return f(e)?h(e):void(S=setTimeout(p,l(e)))}function h(e){return S=void 0,P&&m?n(e):(m=b=void 0,_)}function v(){void 0!==S&&clearTimeout(S),E=0,m=A=b=S=void 0}function w(){return void 0===S?_:h(a())}function g(){var e=a(),r=f(e);if(m=arguments,b=this,A=e,r){if(void 0===S)return d(A);if(O)return S=setTimeout(p,t),n(A)}return void 0===S&&(S=setTimeout(p,t)),_}var m,b,y,_,S,A,E=0,x=!1,O=!1,P=!0;if("function"!=typeof e)throw new TypeError(u);return t=o(t)||0,i(r)&&(x=!!r.leading,y=(O="maxWait"in r)?c(o(r.maxWait)||0,t):y,P="trailing"in r?!!r.trailing:P),g.cancel=v,g.flush=w,g}var i=r(1),a=r(8),o=r(10),u="Expected a function",c=Math.max,s=Math.min;e.exports=n},function(e,t,r){var n=r(6),i=function(){return n.Date.now()};e.exports=i},function(e,t,r){function n(e,t,r){var n=!0,u=!0;if("function"!=typeof e)throw new TypeError(o);return a(r)&&(n="leading"in r?!!r.leading:n,u="trailing"in r?!!r.trailing:u),i(e,t,{leading:n,maxWait:t,trailing:u})}var i=r(7),a=r(1),o="Expected a function";e.exports=n},function(e,t){function r(e){return e}e.exports=r}])}},a={};function o(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return i[e].call(r.exports,r,r.exports,o),r.exports}e="function"==typeof Symbol?Symbol("webpack queues"):"__webpack_queues__",t="function"==typeof Symbol?Symbol("webpack exports"):"__webpack_exports__",r="function"==typeof Symbol?Symbol("webpack error"):"__webpack_error__",n=e=>{e&&e.d<1&&(e.d=1,e.forEach((e=>e.r--)),e.forEach((e=>e.r--?e.r++:e())))},o.a=(i,a,o)=>{var u;o&&((u=[]).d=-1);var c,s,d,l=new Set,f=i.exports,p=new Promise(((e,t)=>{d=t,s=e}));p[t]=f,p[e]=e=>(u&&e(u),l.forEach(e),p.catch((e=>{}))),i.exports=p,a((i=>{var a;c=(i=>i.map((i=>{if(null!==i&&"object"==typeof i){if(i[e])return i;if(i.then){var a=[];a.d=0,i.then((e=>{o[t]=e,n(a)}),(e=>{o[r]=e,n(a)}));var o={};return o[e]=e=>e(a),o}}var u={};return u[e]=e=>{},u[t]=i,u})))(i);var o=()=>c.map((e=>{if(e[r])throw e[r];return e[t]})),s=new Promise((t=>{(a=()=>t(o)).r=0;var r=e=>e!==u&&!l.has(e)&&(l.add(e),e&&!e.d&&(a.r++,e.push(a)));c.map((t=>t[e](r)))}));return a.r?s:o()}),(e=>(e?d(p[r]=e):s(f),n(u)))),u&&u.d<0&&(u.d=0)},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);o(708)})(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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OEJBQThCRyxXQUFXUCxFQUFVUSxXQUUzSm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUM5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVywrQ0FBZ0QsQ0FBQyxJQUFLLElBQUssOEJBQThCRyxXQUFXUCxFQUFVUSxXQUU5Sm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVyw0Q0FBNkMsQ0FBQyxJQUFLLElBQUkseUJBQXlCRyxXQUFXUCxFQUFVUSxXQUNySm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVyw0Q0FBNkMsQ0FBQyxJQUFLLElBQUkseUJBQXlCRyxXQUFXUCxFQUFVUSxXQUNySm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVyw0Q0FBNkMsQ0FBQyxJQUFLLElBQUkseUJBQXlCRyxXQUFXUCxFQUFVUSxXQUNySm1aLEVBQXNCelosS0FBS0YsRUFBVUksV0FBVyw0Q0FBNkMsQ0FBQyxJQUFLLElBQUks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azovL2FkdGFnX2FzYWRpZ2kvLi93d3cvYWQvanMvY29tbW9uL2NvbnN0YW50cy9nbG9iYWxDb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL3d3dy9hZC9qcy9jb21tb24vY29uc3RhbnRzL3BjUGFnZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL3d3dy9hZC9qcy9jb21tb24vZnVuY3Rpb25zL2dlb0VkZ2UuanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL3d3dy9hZC9qcy9jb21tb24vZnVuY3Rpb25zL2dvb2dsZXRhZ1JlcGxhY2VyLmpzIiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvLi93d3cvYWQvanMvY29tbW9uL3RhZ3MvbG9hZFByZWJpZC5qcyIsIndlYnBhY2s6Ly9hZHRhZ19hc2FkaWdpLy4vd3d3L2FkL2pzL2NvbW1vbi90YWdzL2FtYXpvbkE5LmpzIiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvLi93d3cvYWQvanMvY29tbW9uL2Z1bmN0aW9ucy9oZWFkZXJCaWRNYW5hZ2VyLmpzIiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvLi93d3cvYWQvanMvY29tbW9uL2Z1bmN0aW9ucy9waWFuby5qcyIsIndlYnBhY2s6Ly9hZHRhZ19hc2FkaWdpLy4vd3d3L2FkL2pzL2NvbW1vbi9mdW5jdGlvbnMvcmVhZGVyUHJlZGljdGlvbi5qcyIsIndlYnBhY2s6Ly9hZHRhZ19hc2FkaWdpLy4vd3d3L2FkL2pzL2NvbW1vbi9mdW5jdGlvbnMvc2l0ZUluZm8uanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL3d3dy9hZC9qcy9jb21tb24vZnVuY3Rpb25zL3RoaXJkUGFydHlNYW5hZ2VyLmpzIiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvLi93d3cvYWQvanMvY29tbW9uL2Z1bmN0aW9ucy90b3BpY3NUYXJnZXRpbmcuanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL3d3dy9hZC9qcy9wYy9zb2t1aG8uanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS8uL25vZGVfbW9kdWxlcy9pbi12aWV3L2Rpc3QvaW4tdmlldy5taW4uanMiLCJ3ZWJwYWNrOi8vYWR0YWdfYXNhZGlnaS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9hZHRhZ19hc2FkaWdpL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2FkdGFnX2FzYWRpZ2kvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9hZHRhZ19hc2FkaWdpL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgd2VicGFja1F1ZXVlcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbChcIndlYnBhY2sgcXVldWVzXCIpIDogXCJfX3dlYnBhY2tfcXVldWVzX19cIjtcbnZhciB3ZWJwYWNrRXhwb3J0cyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbChcIndlYnBhY2sgZXhwb3J0c1wiKSA6IFwiX193ZWJwYWNrX2V4cG9ydHNfX1wiO1xudmFyIHdlYnBhY2tFcnJvciA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbChcIndlYnBhY2sgZXJyb3JcIikgOiBcIl9fd2VicGFja19lcnJvcl9fXCI7XG52YXIgcmVzb2x2ZVF1ZXVlID0gKHF1ZXVlKSA9PiB7XG5cdGlmKHF1ZXVlICYmIHF1ZXVlLmQgPCAxKSB7XG5cdFx0cXVldWUuZCA9IDE7XG5cdFx0cXVldWUuZm9yRWFjaCgoZm4pID0+IChmbi5yLS0pKTtcblx0XHRxdWV1ZS5mb3JFYWNoKChmbikgPT4gKGZuLnItLSA/IGZuLnIrKyA6IGZuKCkpKTtcblx0fVxufVxudmFyIHdyYXBEZXBzID0gKGRlcHMpID0+IChkZXBzLm1hcCgoZGVwKSA9PiB7XG5cdGlmKGRlcCAhPT0gbnVsbCAmJiB0eXBlb2YgZGVwID09PSBcIm9iamVjdFwiKSB7XG5cdFx0aWYoZGVwW3dlYnBhY2tRdWV1ZXNdKSByZXR1cm4gZGVwO1xuXHRcdGlmKGRlcC50aGVuKSB7XG5cdFx0XHR2YXIgcXVldWUgPSBbXTtcblx0XHRcdHF1ZXVlLmQgPSAwO1xuXHRcdFx0ZGVwLnRoZW4oKHIpID0+IHtcblx0XHRcdFx0b2JqW3dlYnBhY2tFeHBvcnRzXSA9IHI7XG5cdFx0XHRcdHJlc29sdmVRdWV1ZShxdWV1ZSk7XG5cdFx0XHR9LCAoZSkgPT4ge1xuXHRcdFx0XHRvYmpbd2VicGFja0Vycm9yXSA9IGU7XG5cdFx0XHRcdHJlc29sdmVRdWV1ZShxdWV1ZSk7XG5cdFx0XHR9KTtcblx0XHRcdHZhciBvYmogPSB7fTtcblx0XHRcdG9ialt3ZWJwYWNrUXVldWVzXSA9IChmbikgPT4gKGZuKHF1ZXVlKSk7XG5cdFx0XHRyZXR1cm4gb2JqO1xuXHRcdH1cblx0fVxuXHR2YXIgcmV0ID0ge307XG5cdHJldFt3ZWJwYWNrUXVldWVzXSA9IHggPT4ge307XG5cdHJldFt3ZWJwYWNrRXhwb3J0c10gPSBkZXA7XG5cdHJldHVybiByZXQ7XG59KSk7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmEgPSAobW9kdWxlLCBib2R5LCBoYXNBd2FpdCkgPT4ge1xuXHR2YXIgcXVldWU7XG5cdGhhc0F3YWl0ICYmICgocXVldWUgPSBbXSkuZCA9IC0xKTtcblx0dmFyIGRlcFF1ZXVlcyA9IG5ldyBTZXQoKTtcblx0dmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cztcblx0dmFyIGN1cnJlbnREZXBzO1xuXHR2YXIgb3V0ZXJSZXNvbHZlO1xuXHR2YXIgcmVqZWN0O1xuXHR2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWopID0+IHtcblx0XHRyZWplY3QgPSByZWo7XG5cdFx0b3V0ZXJSZXNvbHZlID0gcmVzb2x2ZTtcblx0fSk7XG5cdHByb21pc2Vbd2VicGFja0V4cG9ydHNdID0gZXhwb3J0cztcblx0cHJvbWlzZVt3ZWJwYWNrUXVldWVzXSA9IChmbikgPT4gKHF1ZXVlICYmIGZuKHF1ZXVlKSwgZGVwUXVldWVzLmZvckVhY2goZm4pLCBwcm9taXNlW1wiY2F0Y2hcIl0oeCA9PiB7fSkpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IHByb21pc2U7XG5cdGJvZHkoKGRlcHMpID0+IHtcblx0XHRjdXJyZW50RGVwcyA9IHdyYXBEZXBzKGRlcHMpO1xuXHRcdHZhciBmbjtcblx0XHR2YXIgZ2V0UmVzdWx0ID0gKCkgPT4gKGN1cnJlbnREZXBzLm1hcCgoZCkgPT4ge1xuXHRcdFx0aWYoZFt3ZWJwYWNrRXJyb3JdKSB0aHJvdyBkW3dlYnBhY2tFcnJvcl07XG5cdFx0XHRyZXR1cm4gZFt3ZWJwYWNrRXhwb3J0c107XG5cdFx0fSkpXG5cdFx0dmFyIHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0Zm4gPSAoKSA9PiAocmVzb2x2ZShnZXRSZXN1bHQpKTtcblx0XHRcdGZuLnIgPSAwO1xuXHRcdFx0dmFyIGZuUXVldWUgPSAocSkgPT4gKHEgIT09IHF1ZXVlICYmICFkZXBRdWV1ZXMuaGFzKHEpICYmIChkZXBRdWV1ZXMuYWRkKHEpLCBxICYmICFxLmQgJiYgKGZuLnIrKywgcS5wdXNoKGZuKSkpKTtcblx0XHRcdGN1cnJlbnREZXBzLm1hcCgoZGVwKSA9PiAoZGVwW3dlYnBhY2tRdWV1ZXNdKGZuUXVldWUpKSk7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGZuLnIgPyBwcm9taXNlIDogZ2V0UmVzdWx0KCk7XG5cdH0sIChlcnIpID0+ICgoZXJyID8gcmVqZWN0KHByb21pc2Vbd2VicGFja0Vycm9yXSA9IGVycikgOiBvdXRlclJlc29sdmUoZXhwb3J0cykpLCByZXNvbHZlUXVldWUocXVldWUpKSk7XG5cdHF1ZXVlICYmIHF1ZXVlLmQgPCAwICYmIChxdWV1ZS5kID0gMCk7XG59OyIsIi8vIGV4cG9ydCBjb25zdCB3aW5kb3cgPSB3aW5kb3c7XHJcbi8vIGV4cG9ydCBjb25zdCBkb2N1bWVudCA9IHdpbmRvdy5kb2N1bWVudDtcclxuZXhwb3J0IGNvbnN0IHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XHJcbmV4cG9ydCBjb25zdCBocmVmID0gd2luZG93LmRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XHJcbmV4cG9ydCBjb25zdCBjb29raWUgPSB3aW5kb3cuZG9jdW1lbnQuY29va2llO1xyXG4vLyBleHBvcnQgY29uc3QgQURfVE9QSUNTX1dPUkRTID0gd2luZG93LkFEX1RPUElDU19XT1JEUyB8fCBbXTtcclxuZXhwb3J0IGNvbnN0IHNjX2FzYV9kaWdpX2xpc3QyID0gd2luZG93LnNjX2FzYV9kaWdpX2xpc3QyIHx8ICcnO1xyXG5leHBvcnQgY29uc3QgYXNhUHJlYmlkVmlkZW9JbnN0cmVtQWQgPSB3aW5kb3cuYXNhUHJlYmlkVmlkZW9JbnN0cmVtQWQ7XHJcbmV4cG9ydCBjb25zdCBzY19hc2FfZGlnaV9wcm9wNTMgPSB3aW5kb3cuc2NfYXNhX2RpZ2lfcHJvcDUzIHx8ICcnO1xyXG5leHBvcnQgY29uc3Qgc2NfYXNhX2RpZ2lfcHJvcDQ4ID0gd2luZG93LnNjX2FzYV9kaWdpX3Byb3A0OCB8fCAnJztcclxuZXhwb3J0IGNvbnN0IHNjX2FzYV9kaWdpX3Byb3A0MCA9IHdpbmRvdy5zY19hc2FfZGlnaV9wcm9wNDAgfHwgJyc7XHJcbmV4cG9ydCBjb25zdCBhc2ExMl9tb2RlID0gd2luZG93LmFzYTEyX21vZGUgfHwgJzAnO1xyXG5leHBvcnQgY29uc3QgYWRfa2lqaW5ha2EgPSB3aW5kb3cuYWRfa2lqaW5ha2EgfHwgJyc7XHJcbmV4cG9ydCBjb25zdCBFTkFCTEVfRlJFRV9BUkVBX0FEID0gd2luZG93LkVOQUJMRV9GUkVFX0FSRUFfQUQgfHwgJyc7XHJcbi8vIGV4cG9ydCBjb25zdCBnb29nbGV0YWcgPSB3aW5kb3cuZ29vZ2xldGFnO1xyXG4vLyBleHBvcnQgY29uc3QgcGJqcyA9IHdpbmRvdy5wYmpzO1xyXG5cclxuLy8gdGhpcyBjb25zdGFudCBpcyBmb3Igc2VuZGluZyBjbGljayByYXRlIG9mIGNyZWF0aXZlIHRvIHBpYW5vLlxyXG53aW5kb3cucGFyZW50LmNvbmZpZ0lkID0gXCI2N1wiO1xyXG4iLCJcclxuZXhwb3J0IGNvbnN0IENPTlRFTlRfQ0xBU1NFUyA9IHtcclxuICBOQVRfQVJFQTE6IFtcclxuICAgICdBMTgwMDAwMDAnLFxyXG4gIF0sXHJcbiAgQ0VOVEVSX0VYQU1fQVJFQTE6IFtcclxuICAgICdBMTQwODAwMDAnLFxyXG4gICAgJ0ExNDA4MDEwMCcsXHJcbiAgICAnQTE0MDgwMjAwJyxcclxuICAgICdBMTQwODAzMDAnLFxyXG4gICAgJ0ExNDA4MDQwMCcsXHJcbiAgICAnQTE0MDgwNTAwJyxcclxuICBdLFxyXG4gIFRPS1lPXzIwMjBfQVJFQTE6IFtcclxuICAgICdBMDcwMjAwMDAnLFxyXG4gICAgJ0EwNjEwMDAwMCcsXHJcbiAgXSxcclxuICBSRUxJRkVfQVJFQTE6IFsnQTIxMDMwMDAwJ10sXHJcbiAgTk9STUFMX0FSRUExOiBbXHJcbiAgICAnQTAyMDAwMDAwJyxcclxuICAgICdBMTExMzAwMDAnLFxyXG4gICAgJ0ExMTA3MDAwMCcsXHJcbiAgICAnQTExMDQwMDAwJyxcclxuICAgICdBMTEwMzAwMDAnLFxyXG4gICAgJ0ExMTA4MDAwMCcsXHJcbiAgICAnQTExMDIwMDAwJyxcclxuICAgICdBMTEwMTAwMDAnLFxyXG4gICAgJ0ExMTA3MDAwMCcsXHJcbiAgICAnQTExMDkwMDAwJyxcclxuICAgICdBMTExMDAwMDAnLFxyXG4gICAgJ0ExMTAwMDAwMCcsXHJcbiAgXSxcclxuICBBUElUQUxfQVJFQTE6IFsnQTEzMDAwMDAwJyxdLFxyXG4gIE5PUk1BTF9BUkVBMjogW1xyXG4gICAgJ0ExMzAwMDAwMCcsXHJcbiAgICAnQTEyMDEwMDAwJyxcclxuICAgICdBMTIwMDAwMDAnLFxyXG4gICAgJ0EyMTAyMDAwMCcsXHJcbiAgICAnQTIxMDEwMDAwJyxcclxuICAgICdBMjEwMDAwMDAnLFxyXG4gICAgJ0ExOTEzMDAwMCcsXHJcbiAgICAnQTIwMDAwMDAwJyxcclxuICAgICdBMDYwNDEwMDAnLFxyXG4gICAgJ0EwNjA0MDEwMCcsXHJcbiAgICAnQTA2MDQxMTAwJyxcclxuICAgICdBMDYwNDA3MDAnLFxyXG4gICAgJ0EwNjA0MDMwMCcsXHJcbiAgICAnQTA2MDQwNjAwJyxcclxuICAgICdBMDYwNTAxMDAnLFxyXG4gICAgJ0EwNjA1MDAwMCcsXHJcbiAgICAnQTA2MDYwMDAwJyxcclxuICAgICdBMDYwNzAwMDAnLFxyXG4gIF0sXHJcbiAgU09DQ0VSX0FSRUExOiBbXHJcbiAgICAnQTA2MDMwMDAwJyxcclxuICBdLFxyXG4gIE5PUk1BTF9BUkVBMzogW1xyXG4gICAgJ0EwNjAxMDAwMCcsXHJcbiAgICAnQTA2MDAwMDAwJyxcclxuICBdLFxyXG4gIEVEVV9BUkVBMTogWydBMTkwOTAwMDAnLCAnQTE0MDAwMDAwJyxdLFxyXG4gIE5PUk1BTF9BUkVBNDogW1xyXG4gICAgJ0EwMzAwMDAwMCcsXHJcbiAgICAnQTA0MDAwMDAwJyxcclxuICAgICdBMTcwMDAwMDAnLFxyXG4gICAgJ0EwNTAwMDAwMCcsXHJcbiAgICAnQTE1MDAwMDAwJyxcclxuICAgICdBMTAwMDAwMDAnLFxyXG4gICAgJ0EwOTAwMDAwMCcsXHJcbiAgXSxcclxuICBOQVRfQVJFQTI6IFtcclxuICAgICdBMTYwMjAwMDAnLFxyXG4gIF0sXHJcbiAgTk9STUFMX0FSRUE1OiBbJ0ExNjAwMDAwMCcsXSxcclxuICBOQVRfQVJFQTI6IFtcclxuICAgICdBMDEwMTAwMDAnLFxyXG4gICAgJ0EwMTAyMDAwMCcsXHJcbiAgICAnQTAxMDgwMDAwJyxcclxuICAgICdBMDEwMzAwMDAnLFxyXG4gICAgJ0EwMTA4MDAwMCcsXHJcbiAgXSxcclxuICBOT1JNQUxfQVJFQTY6IFtcclxuICAgICdBMDEwNjAwMDAnLFxyXG4gICAgJ0EwMTA1MDAwMCcsXHJcbiAgICAnQTAxMDAwMDAwJyxcclxuICBdLFxyXG4gIERFRkFVTFQ6IFsnZGVmYXVsdCddLFxyXG59O1xyXG4gIFxyXG5leHBvcnQgY29uc3QgUEFHRV9GTEFHUyA9IHtcclxuICBJUzoge1xyXG4gICAgQ0VOVEVSX0VYQU06IGZhbHNlLFxyXG4gICAgVE9LWU9fMjAyMDogZmFsc2UsXHJcbiAgICBSRUxJRkU6IGZhbHNlLFxyXG4gICAgTk9STUFMOiBmYWxzZSxcclxuICAgIEFQSVRBTDogZmFsc2UsXHJcbiAgICBTT0NDRVI6IGZhbHNlLFxyXG4gICAgRURVOiBmYWxzZSxcclxuICAgIE5BVDogZmFsc2UsXHJcbiAgfSxcclxufTtcclxuIiwiZXhwb3J0IGNvbnN0IG1ha2VHZW9FZGdlVGFnID0gKCkgPT4ge1xyXG4gICAgd2luZG93LmdydW1pID0ge1xyXG4gICAgICAgIGNmZzoge1xyXG4gICAgICAgICAgICBhZHZzOiB7XHJcbiAgICAgICAgICAgICAgICAnNTcwMTA4NTMnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ0NzAyNTM0MDgnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1MjA5MDAwNDMnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1MjExNTAyMjcnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1MjY3MTEyMzMnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1NjAyMjc5NjEnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1NzcxNDU4MzEnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ1Nzc3MzA4ODAnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ4MTEzNjM5MDgnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ4ODM2OTE4MDYnOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzUxMTU0MTQ2OTInOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgJzQ4NDM4MTMxNzUnOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBwdWJJZHM6IHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAga2V5OiAnNTAwMzE2ZWMtMThhOS00YTYyLWJhZWQtNjFkOTAxNjdkNTRkJ1xyXG4gICAgfTtcclxuICAgIHZhciBnZW9lZGdlX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpOyBnZW9lZGdlX2VsZW1lbnQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XHJcbiAgICBnZW9lZGdlX2VsZW1lbnQuYXN5bmMgPSB0cnVlO1xyXG4gICAgZ2VvZWRnZV9lbGVtZW50LnNyYz0nLy9ydW1jZG4uZ2VvZWRnZS5iZS9ncnVtaS1pcC5qcyc7XHJcbiAgICB2YXIgZ2VvZWRnZV90YXJnZXRfZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXTtcclxuICAgIGdlb2VkZ2VfdGFyZ2V0X2VsZW1lbnQuaW5zZXJ0QmVmb3JlKGdlb2VkZ2VfZWxlbWVudCwgZ2VvZWRnZV90YXJnZXRfZWxlbWVudC5maXJzdENoaWxkKTtcclxufVxyXG4iLCJcclxud2luZG93Lmdvb2dsZXRhZ1JlcGxhY2VyID0gd2luZG93Lmdvb2dsZXRhZ1JlcGxhY2VyIHx8IHt9O1xyXG5leHBvcnQgY29uc3QgZ29vZ2xldGFnUmVwbGFjZXIgPSB3aW5kb3cuZ29vZ2xldGFnUmVwbGFjZXI7XHJcbi8vIEdvb2dsZSBBZHjjgIFQcmViaWTnlKjluoPlkYrkuLvjgIFhbWF6b27jg5jjg4Pjg4Djg7zjg5Pjg4fjgqPjg7PjgrDnlKjluoPlkYrkuLvjgIFBZFNlbnNl44CBIG91dGJyYWlu44GM5bqD5ZGK5Li744Gu5aC05ZCI44Gu44G/44Oq44Ki44OG44Oz44K344On44Oz5bqD5ZGK44KS5YuV5L2c44GV44Gb44KL44CCXHJcbmNvbnN0IGFkdmVydGlzZXJJZHMgPSBbMCwgNTcwMTA4NTMsIDQ1NjAyMjc5NjEsIDQ0NzAyNTM0MDgsIDQ4ODM2OTE4MDYsIDQ4NjE3MDEyNzVdO1xyXG4vLyBjb25zdCBhZHZlcnRpc2VySWRzID0gWzU3MDEwODUzLCA0NTYwMjI3OTYxLCA0NDcwMjUzNDA4LCA0ODgzNjkxODA2LCA0ODYxNzAxMjc1LCA4NDYwNzAxM107XHJcblxyXG4vKiAtLS0gQ3VzdG9taXplIENvbmZpZ3MgLS0tICovXHJcbmZ1bmN0aW9uIGdldFNjcm9sbFRvcCgpIHsgcmV0dXJuIHdpbmRvdy5zY3JvbGxZOyB9O1xyXG5mdW5jdGlvbiBzaG91bGRPcHRvdXQoZXZlbnQpIHtcclxuLy8gYGV2ZW50YDogZ29vZ2xldGFnLmV2ZW50cy5TbG90UmVuZGVyRW5kZWRFdmVudFxyXG4vLyhodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9wdWJsaXNoZXItdGFnL3JlZmVyZW5jZSNnb29nbGV0YWcuZXZlbnRzLnNsb3RyZW5kZXJlbmRlZGV2ZW50KVxyXG4vLyBSZXR1cm4gdHJ1ZSBpZiB5b3Ugd2FudCB0byBvcHQtb3V0IHJlZnJlc2hpbmcgYmFzZWQgb24gcmVuZGVyZWQgc2xvdCBpbmZvLlxyXG4vLyBlLmcuIGByZXR1cm4gIWV2ZW50LmlzQmFja2ZpbGw7YFxyXG4gICAgdmFyIHJlc3BvbnNlSW5mbyA9IGV2ZW50LnNsb3QuZ2V0UmVzcG9uc2VJbmZvcm1hdGlvbigpO1xyXG4gICAgcmV0dXJuICEocmVzcG9uc2VJbmZvICYmIGFkdmVydGlzZXJJZHMuaW5jbHVkZXMoIHJlc3BvbnNlSW5mby5hZHZlcnRpc2VySWQgKSk7XHJcbn1cclxudmFyIFNQRUVEX1RIUkVTSE9MRCA9IDAuMjsgLy8gUG9pbnRzIHBlciBtaWxsaXNlY29uZFxyXG52YXIgQkFOTkVSX1RPUF9USFJFU0hPTERfRkFDVE9SID0gMTk1OyAvLyBUaHJlc2hvbGQgd2lsbCBiZTogKEZhY3RvciAvTG9nKEJhbm5lckhlaWdodCAqIDAuMSkpXHJcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuLypcclxuICAgIFtvcmlnaW5hbElkOiBzdHJpbmddOiB7XHJcbiAgICBhY3RpdmU6IGJvb2xlYW4sXHJcbiAgICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXHJcbiAgICBvcmlnaW5hbEdwdFNsb3Q/OiBTbG90LFxyXG4gICAgcmVwbGFjZXI6IHtcclxuICAgIGFkVW5pdFBhdGg6IHN0cmluZyxcclxuICAgIHNpemU6IEdlbmVyYWxTaXplLFxyXG4gICAgaWQ6IHN0cmluZ1xyXG4gICAgfVxyXG4gICAgfVxyXG4qL1xyXG52YXIgcmVwbGFjZXJDb25maWdNYXAgPSB7fTtcclxuLypcclxuICAgIFtyZXBsYWNlcklkOiBzdHJpbmddOiB7XHJcbiAgICBvcmlnaW5hbEVsZW1lbnQ6IEhUTUxFbGVtZW50LFxyXG4gICAgb3JpZ2luYWxHcHRTbG90OiBTbG90LFxyXG4gICAgcmVwbGFjZXJFbGVtZW50OiBIVE1MRWxlbWVudFxyXG4gICAgfVxyXG4qL1xyXG52YXIgcmVwbGFjaW5nTWFwID0ge307XHJcblxyXG53aW5kb3cuZ29vZ2xldGFnUmVwbGFjZXIuZGVmaW5lID0gZnVuY3Rpb24gKG9yaWdpbmFsSWQsIGFkVW5pdFBhdGgsIHNpemUsIHJlcGxhY2VySWQpIHtcclxuICAgIHJlcGxhY2VyQ29uZmlnTWFwW29yaWdpbmFsSWRdID0ge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgcmVwbGFjZXI6IHtcclxuICAgICAgICAgICAgYWRVbml0UGF0aDogYWRVbml0UGF0aCxcclxuICAgICAgICAgICAgc2l6ZTogc2l6ZSxcclxuICAgICAgICAgICAgaWQ6IHJlcGxhY2VySWRcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59O1xyXG5cclxud2luZG93Lmdvb2dsZXRhZ1JlcGxhY2VyLm9uU2xvdFJlbmRlckVuZGVkID0gZnVuY3Rpb24gKGUpIHtcclxuICAgIGlmICggcmVwbGFjaW5nTWFwW2Uuc2xvdC5nZXRTbG90RWxlbWVudElkKCldICkge1xyXG4gICAgICAgIG9uUmVwbGFjZXJSZW5kZXJFbmRlZChlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHNldHVwKGUpO1xyXG4gICAgfVxyXG59O1xyXG5cclxud2luZG93Lmdvb2dsZXRhZ1JlcGxhY2VyLm9uSW1wcmVzc2lvblZpZXdhYmxlID0gZnVuY3Rpb24gKGdwdFNsb3QpIHtcclxuICAgIHZhciBlbGVtZW50SWQgPSBncHRTbG90LmdldFNsb3RFbGVtZW50SWQoKTtcclxuICAgIGlmICggIXJlcGxhY2VyQ29uZmlnTWFwW2VsZW1lbnRJZF0gKSB7IHJldHVybjsgfVxyXG4gICAgcmVwbGFjZXJDb25maWdNYXBbZWxlbWVudElkXS5hY3RpdmUgPSB0cnVlO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gc2V0dXAoZSkge1xyXG4gICAgaWYgKGUuaXNFbXB0eSB8fCBzaG91bGRPcHRvdXQoZSkpIHsgcmV0dXJuOyB9XHJcbiAgICB2YXIgb3JpZ2luYWxJZCA9IGUuc2xvdC5nZXRTbG90RWxlbWVudElkKCk7XHJcbiAgICBpZiAoIXJlcGxhY2VyQ29uZmlnTWFwW29yaWdpbmFsSWRdKSB7IHJldHVybjsgfVxyXG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChvcmlnaW5hbElkKTtcclxuICAgIGlmICghZWxlbWVudCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NhblxcJ3QgZmluZCBlbGVtZW50OiAnICsgb3JpZ2luYWxJZCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgcmVwbGFjZXJDb25maWdNYXBbb3JpZ2luYWxJZF0uZWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgICByZXBsYWNlckNvbmZpZ01hcFtvcmlnaW5hbElkXS5vcmlnaW5hbEdwdFNsb3QgPSBlLnNsb3Q7XHJcbn07XHJcblxyXG52YXIgcHJldmlvdXNUaW1lU3RhbXAsIHByZXZpb3VzU2Nyb2xsVG9wO1xyXG5mdW5jdGlvbiBjaGVjayh0aW1lc3RhbXApIHtcclxuICAgIGlmIChwcmV2aW91c1RpbWVTdGFtcCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdmFyIHRpbWVEaWZmID0gdGltZXN0YW1wIC0gcHJldmlvdXNUaW1lU3RhbXA7XHJcbiAgICAgICAgdmFyIHNwZWVkID0gKGdldFNjcm9sbFRvcCgpIC0gcHJldmlvdXNTY3JvbGxUb3ApIC8gdGltZURpZmY7XHJcbiAgICAgICAgaWYgKHNwZWVkID4gMCAmJiBzcGVlZCA8PSBTUEVFRF9USFJFU0hPTEQpIHtcclxuICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhyZXBsYWNlckNvbmZpZ01hcCk7XHJcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsSWQgPSBrZXlzW2ldO1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHJlcGxhY2VyQ29uZmlnTWFwW29yaWdpbmFsSWRdO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFjb25maWcuYWN0aXZlIHx8ICFjb25maWcuZWxlbWVudCB8fCFjb25maWcub3JpZ2luYWxHcHRTbG90KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgcmVjdCA9IGNvbmZpZy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHRocmVzaG9sZCA9IEJBTk5FUl9UT1BfVEhSRVNIT0xEX0ZBQ1RPUiAvIE1hdGgubG9nKHJlY3QuaGVpZ2h0ICogMC4xKTtcclxuICAgICAgICAgICAgICAgIC8vIHNoaW1hbnVraSBkZWJ1Z1xyXG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHJlY3QudG9wKSA8PSB0aHJlc2hvbGQgJiYgcmVjdC5ib3R0b20gPiB0aHJlc2hvbGQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmICh0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2Uob3JpZ2luYWxJZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcmV2aW91c1RpbWVTdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgIHByZXZpb3VzU2Nyb2xsVG9wID0gZ2V0U2Nyb2xsVG9wKCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2spLCAyMDApO1xyXG59XHJcbndpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2spO1xyXG5cclxuZnVuY3Rpb24gcmVwbGFjZSggb3JpZ2luYWxJZCApIHtcclxuICAgIHZhciBjb25maWcgPSByZXBsYWNlckNvbmZpZ01hcFtvcmlnaW5hbElkXTtcclxuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuYWN0aXZlIHx8ICFjb25maWcuZWxlbWVudCB8fCAhY29uZmlnLm9yaWdpbmFsR3B0U2xvdCkgeyByZXR1cm47IH1cclxuICAgIGRlbGV0ZSByZXBsYWNlckNvbmZpZ01hcFtvcmlnaW5hbElkXTtcclxuICAgIHZhciByZXBsYWNlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHJlcGxhY2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywgY29uZmlnLnJlcGxhY2VyLmlkKTtcclxuICAgIC8vIE1vZGlmeSBpZiB5b3Ugd2FudCB0byBjb3B5IG90aGVyIGF0dHJpYnV0ZXNcclxuICAgIHZhciBjbGFzc0F0dHIgPSBjb25maWcuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2NsYXNzJyk7XHJcbiAgICBpZiAoY2xhc3NBdHRyKSB7IFxyXG4gICAgICAgIHJlcGxhY2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgY2xhc3NBdHRyKTsgXHJcbiAgICB9XHJcbiAgICB2YXIgc3R5bGVBdHRyID0gY29uZmlnLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgaWYgKHN0eWxlQXR0cikgeyByZXBsYWNlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsIHN0eWxlQXR0cik7IH1cclxuICAgIHJlcGxhY2VyRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgcmVwbGFjZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcclxuICAgIGNvbmZpZy5lbGVtZW50Lmluc2VydEFkamFjZW50RWxlbWVudCgnYWZ0ZXJlbmQnLCByZXBsYWNlckVsZW1lbnQpO1xyXG4gICAgcmVwbGFjaW5nTWFwW2NvbmZpZy5yZXBsYWNlci5pZF0gPSB7XHJcbiAgICAgICAgb3JpZ2luYWxFbGVtZW50OiBjb25maWcuZWxlbWVudCxcclxuICAgICAgICBvcmlnaW5hbEdwdFNsb3Q6IGNvbmZpZy5vcmlnaW5hbEdwdFNsb3QsXHJcbiAgICAgICAgcmVwbGFjZXJFbGVtZW50OiByZXBsYWNlckVsZW1lbnRcclxuICAgIH07XHJcbiAgICAvLyBzaGltYW51a2kgZGVidWdcclxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCggZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzbG90ID0gZ29vZ2xldGFnLmRlZmluZVNsb3QoY29uZmlnLnJlcGxhY2VyLmFkVW5pdFBhdGgsY29uZmlnLnJlcGxhY2VyLnNpemUsIGNvbmZpZy5yZXBsYWNlci5pZCkuYWRkU2VydmljZShnb29nbGV0YWcucHViYWRzKCkpO1xyXG4gICAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5yZWZyZXNoKCBbc2xvdF0gKTtcclxuICAgICAgICBnb29nbGV0YWcuZGlzcGxheShjb25maWcucmVwbGFjZXIuaWQpO1xyXG4gICAgfSApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBvblJlcGxhY2VyUmVuZGVyRW5kZWQoZSkge1xyXG4gICAgdmFyIHJlcGxhY2VySWQgPSBlLnNsb3QuZ2V0U2xvdEVsZW1lbnRJZCgpO1xyXG4gICAgdmFyIHJlcGxhY2luZyA9IHJlcGxhY2luZ01hcFtyZXBsYWNlcklkXTtcclxuICAgIGlmICghcmVwbGFjaW5nKSB7IHJldHVybjsgfVxyXG4gICAgZGVsZXRlIHJlcGxhY2luZ01hcFtyZXBsYWNlcklkXTtcclxuICAgIGlmIChlLmlzRW1wdHkpIHtcclxuICAgICAgICByZXBsYWNpbmcucmVwbGFjZXJFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocmVwbGFjaW5nLnJlcGxhY2VyRWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdmFyIGNsZWFyZWQgPSBnb29nbGV0YWcucHViYWRzKCkuY2xlYXIoW3JlcGxhY2luZy5vcmlnaW5hbEdwdFNsb3RdKTtcclxuICAgIGlmICghY2xlYXJlZCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCBjbGVhcmluZyBzbG90IGZvcjogJyArIHJlcGxhY2VySWQpO1xyXG4gICAgICAgIHJlcGxhY2luZy5yZXBsYWNlckVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyZXBsYWNpbmcucmVwbGFjZXJFbGVtZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZXBsYWNpbmcub3JpZ2luYWxFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocmVwbGFjaW5nLm9yaWdpbmFsRWxlbWVudCk7XHJcbiAgICByZXBsYWNpbmcucmVwbGFjZXJFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnJztcclxuICAgIHJlcGxhY2luZy5yZXBsYWNlckVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnJztcclxufVxyXG5cclxuXHJcbiIsIlxyXG5leHBvcnQgY29uc3QgbG9hZFByZWJpZCA9ICggZG1fcXVlcnlfcGFyYW1zICkgPT4ge1xyXG4gICAgdmFyIHBianNFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7IHBianNFbC50eXBlID0gXCJ0ZXh0L2phdmFzY3JpcHRcIjtcclxuICAgIHBianNFbC5hc3luYyA9IHRydWU7XHJcbiAgICBwYmpzRWwuc3JjPScvL21pY3JvLnJ1Ymljb25wcm9qZWN0LmNvbS9wcmViaWQvZHluYW1pYy8xMjk3NC5qcycgKyBkbV9xdWVyeV9wYXJhbXM7XHJcbiAgICB2YXIgcGJqc1RhcmdldEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdO1xyXG4gICAgcGJqc1RhcmdldEVsLmluc2VydEJlZm9yZShwYmpzRWwsIHBianNUYXJnZXRFbC5maXJzdENoaWxkKTtcclxufVxyXG4iLCJleHBvcnQgY29uc3QgYW1hem9uQTkgPSAoKSA9PiB7XHJcbiAgIWZ1bmN0aW9uICggYTksIGEsIHAsIHMsIHQsIEEsIGcgKSB7XHJcbiAgICBpZiAoIGFbYTldICkgcmV0dXJuO1xyXG5cclxuICAgIGZ1bmN0aW9uIHEoIGMsIHIgKSB7IGFbYTldLl9RLnB1c2goIFtjLCByXSApOyB9XHJcblxyXG4gICAgYVthOV0gPSB7XHJcbiAgICAgIGluaXQ6IGZ1bmN0aW9uICgpIHsgcSggJ2knLCBhcmd1bWVudHMgKTsgfSxcclxuICAgICAgZmV0Y2hCaWRzOiBmdW5jdGlvbiAoKSB7IHEoICdmJywgYXJndW1lbnRzICk7IH0sXHJcbiAgICAgIHNldERpc3BsYXlCaWRzOiBmdW5jdGlvbiAoKSB7IH0sXHJcbiAgICAgIHRhcmdldGluZ0tleXM6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdOyB9LFxyXG4gICAgICBfUTogW11cclxuICAgIH07XHJcbiAgICBBID0gcC5jcmVhdGVFbGVtZW50KCBzICk7XHJcbiAgICBBLmFzeW5jID0gITA7XHJcbiAgICBBLnNyYyA9IHQ7XHJcbiAgICBnID0gcC5nZXRFbGVtZW50c0J5VGFnTmFtZSggcyApWzBdO1xyXG4gICAgZy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggQSwgZyApO1xyXG4gIH0oICdhcHN0YWcnLCB3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJy8vYy5hbWF6b24tYWRzeXN0ZW0uY29tL2FheDIvYXBzdGFnLmpzJyApO1xyXG59OyIsImltcG9ydCB7IGxvYWRQcmViaWQgfSBmcm9tICcuLi90YWdzL2xvYWRQcmViaWQnO1xyXG5pbXBvcnQgeyBhbWF6b25BOSB9IGZyb20gJy4uL3RhZ3MvYW1hem9uQTknO1xyXG5cclxubGV0IGdvb2dsZXRhZyA9IHt9O1xyXG5sZXQgcGFnZUZsYWc7XHJcbmxldCBkbVF1ZXJ5UGFyYW1zO1xyXG5sZXQgcGJqcztcclxubGV0IGFwc3RhZ1B1YklkID0gJzM1NDgnO1xyXG5sZXQgdGltZU91dE9iaiA9IHtcclxuICBhcHN0YWdCaWQ6IDIwMDAsXHJcbiAgZmFpbFNhZmU6IDM3NTAsIC8vIEJpZGRlciBUaW1lb3V0OiAyNTAwICogMS41XHJcbn07XHJcbmxldCBnZXRBcHN0YWc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5pdEJpZE1hbmFnZXIoIGluaXRHb29nbGV0YWcsIGluaXRQYWdlRmxhZywgaW5pdERtUXVlcnlQYXJhbXMsIGluaXRUaW1lb3V0T2JqPXt9ICkge1xyXG4gIGdvb2dsZXRhZyA9IGluaXRHb29nbGV0YWc7XHJcbiAgcGFnZUZsYWcgPSBpbml0UGFnZUZsYWc7XHJcbiAgZG1RdWVyeVBhcmFtcyA9IGluaXREbVF1ZXJ5UGFyYW1zO1xyXG4gIHRpbWVPdXRPYmpbJ2ZhaWxTYWZlJ10gPSBpbml0VGltZW91dE9ialsnZmFpbFNhZmUnXSA/PyB0aW1lT3V0T2JqWydmYWlsU2FmZSddO1xyXG4gIHRpbWVPdXRPYmpbJ2Fwc3RhZ0JpZCddID0gaW5pdFRpbWVvdXRPYmpbJ2Fwc3RhZ0JpZCddID8/IHRpbWVPdXRPYmpbJ2Fwc3RhZ0JpZCddO1xyXG4gIGdldEFwc3RhZyA9IG1ha2VBcHN0YWcoKTtcclxuICBwYmpzID0gbWFrZVBianMoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VBcHN0YWcoKSB7XHJcbiAgYW1hem9uQTkoKTtcclxuICAvLyB3aW5kb3cuYXBzdGFn44KS6L+U44GX44Gm44KC44CBXHJcbiAgLy8gd2luZG93LmFwc3RhZ+OBneOBruOCguOBruOBruWkieabtOOBjOWPjeaYoOOBleOCjOOBquOBj+OBquOCi+OBruOBp1xyXG4gIC8vIGdldOmWouaVsOOCkui/lOOBmeOCiOOBhuOBq+OBl+OBpuOAgWFwc3RhZ+OCkuS9v+OBhuaZguOBq+acgOaWsOOBrueKtuaFi+OBmeOCi1xyXG4gIHJldHVybiAoKSA9PiB7IHJldHVybiB3aW5kb3cuYXBzdGFnOyB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaW5pdEFwc3RhZygpIHtcclxuICB0cnkge1xyXG4gICAgZ2V0QXBzdGFnKCkuaW5pdCgge1xyXG4gICAgICBwdWJJRDogYXBzdGFnUHViSWQsXHJcbiAgICAgIGFkU2VydmVyOiAnZ29vZ2xldGFnJyxcclxuICAgICAgYmlkVGltZW91dDogdGltZU91dE9ialsnYXBzdGFnQmlkJ10sXHJcbiAgICAgIC4uLiggcGFnZUZsYWcgJiYgeyB2aWRlb0FkU2VydmVyOiAnREZQJyB9KSxcclxuICAgIH0gKTtcclxuICB9IGNhdGNoIHtcclxuICAgIGNvbnNvbGUubG9nKCdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIEFwc3RhZy4nKVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VQYmpzKCkge1xyXG4gIGxvYWRQcmViaWQoIGRtUXVlcnlQYXJhbXMgKTtcclxuICB3aW5kb3cucGJqcyA9IHdpbmRvdy5wYmpzIHx8IHt9O1xyXG4gIHdpbmRvdy5wYmpzLnF1ZSA9IHdpbmRvdy5wYmpzLnF1ZSB8fCBbXTtcclxuICByZXR1cm4gd2luZG93LnBianM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmZXRjaEhlYWRlckJpZHMoIGFwc3RhZ1Nsb3RzLCBoZWFkZXJCaWRkaW5nU2xvdHMsIHNldFNlcnZpY2VzICkge1xyXG4gIGNvbnN0IGJpZGRlcnMgPSBbJ2E5JywgJ3ByZWJpZCddO1xyXG5cclxuICBjb25zdCByZXF1ZXN0TWFuYWdlciA9IHtcclxuICAgIGFkc2VydmVyUmVxdWVzdFNlbnQ6IGZhbHNlLFxyXG4gIH07XHJcblxyXG4gIGJpZGRlcnMuZm9yRWFjaCggZnVuY3Rpb24gKCBiaWRkZXIgKSB7XHJcbiAgICByZXF1ZXN0TWFuYWdlcltiaWRkZXJdID0gZmFsc2U7XHJcbiAgfSApO1xyXG5cclxuICBjb25zdCByZXF1ZXN0QmlkcyA9ICgpID0+IHtcclxuICAgIGdldEFwc3RhZygpLmZldGNoQmlkcyhcclxuICAgICAge1xyXG4gICAgICAgIHNsb3RzOiBhcHN0YWdTbG90cyxcclxuICAgICAgfSxcclxuICAgICAgYmlkcyA9PiB7XHJcbiAgICAgICAgaWYgKCBwYWdlRmxhZz8uSVMuVE9LWU9fMjAyMCApIHtcclxuICAgICAgICAgIGZvciAoIGNvbnN0IGJpZCBvZiBiaWRzICkge1xyXG4gICAgICAgICAgICBpZiAoIGJpZFsnc2xvdElEJ10gPT09ICdkaXYtZ3B0LWFkLTE1MTgwNjA4NTAxOTItMCcgJiYgYmlkWydhbXpuYmlkJ10ubGVuZ3RoID4gMSApIHtcclxuICAgICAgICAgICAgICBhc2FHdW1HdW1GbGFnID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBoZWFkZXJCaWRkZXJCYWNrKCdhOScpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG5cclxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XHJcbiAgICAgIHBianMucXVlLnB1c2goKCkgPT4ge1xyXG4gICAgICAgIHBianMucnAucmVxdWVzdEJpZHMoe1xyXG4gICAgICAgICAgY2FsbGJhY2s6ICgpID0+IGhlYWRlckJpZGRlckJhY2soJ3ByZWJpZCcpLFxyXG4gICAgICAgICAgZ3B0U2xvdE9iamVjdHM6IGhlYWRlckJpZGRpbmdTbG90cyxcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG5cclxuICBjb25zdCBoZWFkZXJCaWRkZXJCYWNrID0gKGJpZGRlcikgPT4ge1xyXG4gICAgaWYgKHJlcXVlc3RNYW5hZ2VyLmFkc2VydmVyUmVxdWVzdFNlbnQpIHJldHVybjtcclxuXHJcbiAgICBpZiAoYmlkZGVyID09PSAnYTknKSB7XHJcbiAgICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiBnZXRBcHN0YWcoKS5zZXREaXNwbGF5QmlkcygpKTtcclxuICAgIH0gZWxzZSBpZiAoYmlkZGVyID09PSAncHJlYmlkJykge1xyXG4gICAgICAvLyBETyBOT1RISU5HXHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdE1hbmFnZXJbYmlkZGVyXSA9IHRydWU7XHJcblxyXG4gICAgaWYgKGFsbEJpZGRlcnNCYWNrKCkpIHtcclxuICAgICAgc2VuZEFkc2VydmVyUmVxdWVzdCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IGFsbEJpZGRlcnNCYWNrID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIGJpZGRlcnMuZXZlcnkoYmlkZGVyID0+IHJlcXVlc3RNYW5hZ2VyW2JpZGRlcl0pO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IHNlbmRBZHNlcnZlclJlcXVlc3QgPSAoKSA9PiB7XHJcbiAgICBpZiAocmVxdWVzdE1hbmFnZXIuYWRzZXJ2ZXJSZXF1ZXN0U2VudCkgcmV0dXJuO1xyXG4gICAgcmVxdWVzdE1hbmFnZXIuYWRzZXJ2ZXJSZXF1ZXN0U2VudCA9IHRydWU7XHJcbiAgICBnb29nbGV0YWcuY21kLnB1c2goKCkgPT4ge1xyXG4gICAgICBpZiAoc2V0U2VydmljZXMgJiYgdHlwZW9mIHNldFNlcnZpY2VzID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgc2V0U2VydmljZXMoJ2FkcycsIGhlYWRlckJpZGRpbmdTbG90cyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnJlZnJlc2goaGVhZGVyQmlkZGluZ1Nsb3RzKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgcmVxdWVzdEJpZHMoYXBzdGFnU2xvdHMsIGhlYWRlckJpZGRpbmdTbG90cyk7XHJcblxyXG4gIHdpbmRvdy5zZXRUaW1lb3V0KCAoKSA9PiB7XHJcbiAgICBzZW5kQWRzZXJ2ZXJSZXF1ZXN0KCk7XHJcbiAgfSwgdGltZU91dE9ialsnZmFpbFNhZmUnXSApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVxdWVzdFZpZGVvQmlkcyhQZ19UYXJnZXRfdmFsdWUsIFBnX0tleXdvcmRfdmFsdWUpIHtcclxuICB3aW5kb3cuZ2V0UHJlYmlkSW5zdHJlYW1BZFVybCA9ICggY2FsbGJhY2sgKSA9PiB7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvblVybCA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuc3BsaXQoIC9bPyNdLyApWzBdO1xyXG4gICAgbGV0IGFzYTEyX21vZGUgPSAnJztcclxuICAgIGlmICggdHlwZW9mIHdpbmRvdy5hc2ExMl9tb2RlX3YgIT09ICd1bmRlZmluZWQnICkge1xyXG4gICAgICBhc2ExMl9tb2RlID0gd2luZG93LmFzYTEyX21vZGVfdjtcclxuICAgIH1cclxuICAgIGxldCBQZ19UYXJnZXQgPSAnJztcclxuICAgIGlmICggdHlwZW9mIFBnX1RhcmdldF92YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgKSB7XHJcbiAgICAgIFBnX1RhcmdldCA9IFBnX1RhcmdldF92YWx1ZTtcclxuICAgIH1cclxuICAgIGxldCBQZ19LZXl3b3JkID0gJyc7XHJcbiAgICBpZiAoIHR5cGVvZiBQZ19LZXl3b3JkX3ZhbHVlICE9PSAndW5kZWZpbmVkJyApIHtcclxuICAgICAgUGdfS2V5d29yZCA9IFBnX0tleXdvcmRfdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFZpZGVvQWRVcmwgPVxyXG4gICAgICAnaHR0cHM6Ly9wdWJhZHMuZy5kb3VibGVjbGljay5uZXQvZ2FtcGFkL2Fkcz8nICtcclxuICAgICAgJ3N6PTY0MHgzNjAmJyArXHJcbiAgICAgICdpdT0vNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9tb2JpbGUvdmlkZW8mJyArXHJcbiAgICAgICdpbXBsPXMmJyArXHJcbiAgICAgICdnZGZwX3JlcT0xJicgK1xyXG4gICAgICAnZW52PXZwJicgK1xyXG4gICAgICAnb3V0cHV0PXZhc3QmJyArXHJcbiAgICAgICd1bnZpZXdlZF9wb3NpdGlvbl9zdGFydD0xJicgK1xyXG4gICAgICAndXJsPVtyZWZlcnJlcl91cmxdJicgK1xyXG4gICAgICAnZGVzY3JpcHRpb25fdXJsPScgK1xyXG4gICAgICBkZXNjcmlwdGlvblVybCArXHJcbiAgICAgICcmJyArXHJcbiAgICAgICdjb3JyZWxhdG9yPVt0aW1lc3RhbXBdJicgK1xyXG4gICAgICAnY3VzdF9wYXJhbXM9UGdfVGFyZ2V0JTNEe3BhZ2VWYXJpYWJsZS5QZ19UYXJnZXRfdmFsdWV9ICAlMjZQZ19LZXl3b3JkJTNEe3BhZ2VWYXJpYWJsZS5QZ19LZXl3b3JkX3ZhbHVlfSUyNmFzYTEyX21vZGUlM0QgIHtwYWdlVmFyaWFibGUuYXNhMTJfbW9kZV92fSc7XHJcblxyXG4gICAgbGV0IGFkc2VydmVyUmVxdWVzdFNlbnQgPSBmYWxzZTtcclxuICAgIGNvbnN0IG15Q2FsbGJhY2sgPSBmdW5jdGlvbiAoIHZpZGVvQmlkUmVzdWx0ICkge1xyXG4gICAgICBpZiAoIGFkc2VydmVyUmVxdWVzdFNlbnQgKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGFkc2VydmVyUmVxdWVzdFNlbnQgPSB0cnVlO1xyXG5cclxuICAgICAgbGV0IHZpZGVvVVJMO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdHlwZW9mIHZpZGVvQmlkUmVzdWx0ICE9PSAndW5kZWZpbmVkJyAmJlxyXG4gICAgICAgIHR5cGVvZiB2aWRlb0JpZFJlc3VsdC5hZFRhZ1VybCAhPT0gJ3VuZGVmaW5lZCdcclxuICAgICAgKSB7XHJcbiAgICAgICAgdmlkZW9VUkwgPSBcclxuICAgICAgICAgIHZpZGVvQmlkUmVzdWx0LmFkVGFnVXJsICtcclxuICAgICAgICAgICclMjZQZ19UYXJnZXQlM0QnICtcclxuICAgICAgICAgIFBnX1RhcmdldCArXHJcbiAgICAgICAgICAnJTI2UGdfS2V5d29yZCUzRCcgK1xyXG4gICAgICAgICAgUGdfS2V5d29yZCArXHJcbiAgICAgICAgICAnJTI2YXNhMTJfbW9kZSUzRCcgK1xyXG4gICAgICAgICAgYXNhMTJfbW9kZSArXHJcbiAgICAgICAgICAnJmRlc2NyaXB0aW9uX3VybD0nICtcclxuICAgICAgICAgIGRlc2NyaXB0aW9uVXJsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZpZGVvVVJMID0gZGVmYXVsdFZpZGVvQWRVcmw7XHJcbiAgICAgIH1cclxuICAgICAgY2FsbGJhY2soIHZpZGVvVVJMICk7XHJcbiAgICB9O1xyXG5cclxuICAgIHBianMucXVlLnB1c2goIGZ1bmN0aW9uICgpIHtcclxuICAgICAgcGJqcy5ycC5yZXF1ZXN0VmlkZW9CaWRzKCB7XHJcbiAgICAgICAgYWRTbG90TmFtZTogJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL21vYmlsZS92aWRlbycsXHJcbiAgICAgICAgcGxheWVyU2l6ZTogWzY0MCwgMzYwXSxcclxuICAgICAgICBjYWxsYmFjazogbXlDYWxsYmFjayxcclxuICAgICAgICBkYXRhOiB7fSxcclxuICAgICAgfSApO1xyXG4gICAgfSApO1xyXG5cclxuICAgIC8vIGZ1bmN0aW9uIHRpbWVvdXRcclxuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIG15Q2FsbGJhY2soKTtcclxuICAgIH0sIDQ1MDAgKTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0SEJUaW1lb3V0T2JqZWN0ID0gKCkgPT4ge1xyXG4gIHZhciB0aW1lb3V0X2FycmF5ID0gWzM3NTBdO1xyXG4gIC8vIHZhciB0aW1lb3V0X2FycmF5X2luZGV4ID0gTWF0aC5mbG9vciggTWF0aC5yYW5kb20oKSAqIHRpbWVvdXRfYXJyYXkubGVuZ3RoICk7XHJcbiAgdmFyIHRpbWVvdXRfYXJyYXlfaW5kZXggPSAwO1xyXG4gIHJldHVybiB7XHJcbiAgICAgIGZhaWxTYWZlVGltZW91dDogdGltZW91dF9hcnJheVt0aW1lb3V0X2FycmF5X2luZGV4XSxcclxuICAgICAgcHJlYmlkX3dyYXBwZXJfa2V5OiAnZmFpbFNhZmVUaW1lb3V0JyArIHRpbWVvdXRfYXJyYXlbdGltZW91dF9hcnJheV9pbmRleF0gKyAnbXMnXHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNldElENSA9ICgpID0+IHtcclxuICB3aW5kb3cuSUQ1RXNwQ29uZmlnID0ge1xyXG4gICAgICBwYXJ0bmVySWQ6IDY0OVxyXG4gIH07XHJcbn1cclxuIiwiZXhwb3J0IGNvbnN0IHNldFBpYW5vU2VnbWVudHMgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBjeENvbnRleHR1YWxJZHM7XHJcbiAgICByZXR1cm4gKGdvb2dsZXRhZywgc2V0U2VydmljZXMpID0+IHtcclxuICAgICAgICB3aW5kb3cuY1ggPSB3aW5kb3cuY1ggfHwgeyBjYWxsUXVldWU6IFtdIH07XHJcbiAgICAgICAgaWYgKGN4Q29udGV4dHVhbElkcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXdpbmRvdy5jWC5nZXRTZWdtZW50cykge1xyXG4gICAgICAgICAgICAgICAgc2V0U2VydmljZXMoJ3BpYW5vJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LCAxMDAwKTtcclxuICAgICAgICB3aW5kb3cuY1guY2FsbFF1ZXVlLnB1c2goWydpbnZva2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5jWC5nZXRTZWdtZW50cyhcImFjNjFjZjU3NjA1YmVhZTZiZDM4NTYzNjg1YjY1OTg5YjFiN2Y0ZmVcIiwgKHNlZ21lbnRzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBnb29nbGV0YWcuY21kLnB1c2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN4Q29udGV4dHVhbElkcyA9IHNlZ21lbnRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHMgPT4gcy50eXBlID09PSBcImNvbnRleHR1YWxcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAocyA9PiBzLnNob3J0SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKFwiQ3hDb250ZXh0XCIsIGN4Q29udGV4dHVhbElkcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFNlcnZpY2VzKCdwaWFubycpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sIDUwMCk7XHJcbiAgICAgICAgfV0pO1xyXG4gICAgfVxyXG59KClcclxuXHJcbmV4cG9ydCAgY29uc3QgZ2V0VXNlclNlZ21lbnRJZHNMb2NhbCA9ICgpID0+IHtcclxuICAgIHZhciBzZWdtZW50cyA9IFtdO1xyXG4gICAgaWYodHlwZW9mIHdpbmRvdy5sb2NhbFN0b3JhZ2UgPT09ICdvYmplY3QnICYmIHR5cGVvZiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0gPT09ICdmdW5jdGlvbicgJiYgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjeFNlZ21lbnRzXCIpICE9PSBudWxsICYmIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY3hTZWdtZW50c1wiKS5sZW5ndGg+MCkge1xyXG4gICAgICBzZWdtZW50cyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY3hTZWdtZW50c1wiKS5zcGxpdCgnLCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNlZ21lbnRzO1xyXG59XHJcbiIsImZ1bmN0aW9uIGV4ZWN1dGVSZWFkZXJQcmVkaWN0aW9uKG9iaiwgZ29vZ2xldGFnKSB7XHJcbiAgaWYgKCFvYmopIHJldHVybjtcclxuICBjb25zdCBhZ2VWYWx1ZXMgPSBbXTtcclxuICBjb25zdCBnZW5kZXJWYWx1ZXMgPSBbXTtcclxuICBjb25zdCBqb2JWYWx1ZXMgPSBbXTtcclxuXHJcbiAgLy8g44Kt44O844Gu5paH5a2X5YiX5Yik5a6a44Gn5a++5b+c44GZ44KL6YWN5YiX44Gr5oyv44KK5YiG44GRXHJcbiAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGsgPT4ge1xyXG4gICAgY29uc3QgdmFsID0gb2JqW2tdO1xyXG4gICAgaWYgKGsuaW5jbHVkZXMoJ2FnZScpKSB7XHJcbiAgICAgIGFnZVZhbHVlcy5wdXNoKHsga2V5OiBrLCB2YWx1ZTogdmFsIH0pO1xyXG4gICAgfSBlbHNlIGlmIChrLmluY2x1ZGVzKCdnZW5kZXInKSkge1xyXG4gICAgICBnZW5kZXJWYWx1ZXMucHVzaCh7IGtleTogaywgdmFsdWU6IHZhbCB9KTtcclxuICAgIH0gZWxzZSBpZiAoay5pbmNsdWRlcygnam9iJykpIHtcclxuICAgICAgam9iVmFsdWVzLnB1c2goeyBrZXk6IGssIHZhbHVlOiB2YWwgfSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIC8vIOmFjeWIl+OBi+OCieOAjHZhbHVlIOOBjOacgOWkp+OBruOCquODluOCuOOCp+OCr+ODiOOAjeOCkuaOouOBl+OBpuOCreODvOOCkui/lOOBmeODmOODq+ODkeODvOmWouaVsFxyXG4gIC8vIOOCreODvOOBi+OCieOBryAnX3JhdGUnIOOCkuWJiumZpOOBl+OBpui/lOOBmVxyXG4gIGNvbnN0IGdldE1heEtleSA9IChhcnIpID0+IHtcclxuICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XHJcbiAgICBjb25zdCBtYXhPYmogPSBhcnIucmVkdWNlKChhY2MsIGN1cikgPT4ge1xyXG4gICAgICByZXR1cm4gY3VyLnZhbHVlID4gYWNjLnZhbHVlID8gY3VyIDogYWNjO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbWF4T2JqLmtleS5yZXBsYWNlKCdfcmF0ZScsICcnKTtcclxuICB9O1xyXG5cclxuICAvLyBtZW1vOiDlsZ7mgKfjgpLnorrlrprjg63jgrjjg4Pjgq/jga/nj77mrrXpmo7jgafnorrlrprjgZfjgabjgYrjgonjgZrlpInmm7TjgZXjgozjgovlj6/og73mgKfjgYzpq5jjgYTjgZ/jgoHjgIFcclxuICAvLyDjgZ3jga7pg73luqboqIjnrpfplqLmlbDjgpLov73liqDjgZnjgovkuojlrppcclxuICBjb25zdCBhZ2VLZXkgPSBnZXRNYXhLZXkoYWdlVmFsdWVzKTtcclxuICBjb25zdCBnZW5kZXJLZXkgPSBnZXRNYXhLZXkoZ2VuZGVyVmFsdWVzKTtcclxuICBjb25zdCBqb2JLZXkgPSBnZXRNYXhLZXkoam9iVmFsdWVzKTtcclxuXHJcbiAgY29uc3QgcHJlZGljdGlvblZhbHVlcyA9IFthZ2VLZXksIGdlbmRlcktleSwgam9iS2V5XS5maWx0ZXIoQm9vbGVhbik7XHJcblxyXG4gIC8vIOOCv+ODvOOCsuODhuOCo+ODs+OCsOOBq+ioreWumlxyXG4gIGlmIChwcmVkaWN0aW9uVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCgoKSA9PiB7XHJcbiAgICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoJ3JlYWRlcl9wcmVkaWN0aW9uJywgW3ByZWRpY3Rpb25WYWx1ZXMuam9pbignLCcpXSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBYSFLjgadKU09O44KS5Y+W5b6X44GX44CB5a6M5LqG5b6M44Gr6Zay6Kqt6ICF5LqI5ris57WQ5p6c44KS44K/44O844Ky44OG44Kj44Oz44Kw44Gr6Kit5a6a44GZ44KLXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgZmV0Y2hSZWFkZXJQcmVkaWN0aW9uID0gKHBnQXJ0aWNsZUlkLCBnb29nbGV0YWcpID0+IHtcclxuICBjb25zdCByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsgXHJcblxyXG4gIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICBpZiAocmVxLnJlYWR5U3RhdGUgIT09IDQgfHwgcmVxLnN0YXR1cyAhPT0gMjAwKSB7XHJcbiAgICAgIHJldHVybjsgLy8g6YCa5L+h44Ko44Op44O8IG9yIOacquWujOS6huaZguOBr+eEoeimllxyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcHJlZGljdGlvbkpzb24gPSBKU09OLnBhcnNlKHJlcS5yZXNwb25zZVRleHQpO1xyXG4gICAgICBleGVjdXRlUmVhZGVyUHJlZGljdGlvbihwcmVkaWN0aW9uSnNvbiwgZ29vZ2xldGFnKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0pTT07jga7jg5Hjg7zjgrnjgavlpLHmlZfjgZfjgb7jgZfjgZ86JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHJlcS5vcGVuKFxyXG4gICAgJ0dFVCcsXHJcbiAgICBgaHR0cHM6Ly9jb250ZW50LWFwaS5hc2FoaS1tZWRpYS1iaXouY29tL2NvbnRlbnQvJHtwZ0FydGljbGVJZH0uanNvbmAsXHJcbiAgICB0cnVlXHJcbiAgKTtcclxuICByZXEudGltZW91dCA9IDEwMDA7XHJcbiAgcmVxLnNlbmQobnVsbCk7XHJcbn07XHJcbiIsImltcG9ydCB7XHJcbiAgICB1c2VyQWdlbnQsXHJcbiAgICBzY19hc2FfZGlnaV9saXN0MixcclxuICAgIGFzYVByZWJpZFZpZGVvSW5zdHJlbUFkLFxyXG4gICAgc2NfYXNhX2RpZ2lfcHJvcDUzLFxyXG4gICAgc2NfYXNhX2RpZ2lfcHJvcDQ4LFxyXG4gICAgc2NfYXNhX2RpZ2lfcHJvcDQwLFxyXG4gICAgYXNhMTJfbW9kZSxcclxuICAgIGFkX2tpamluYWthLFxyXG4gICAgaHJlZixcclxuICAgIGNvb2tpZSxcclxufSBmcm9tICcuLi9jb25zdGFudHMvZ2xvYmFsQ29uc3RhbnRzJztcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRHb29nbGV0YWcgPSAoKSA9PiB7XHJcbiAgICB3aW5kb3cuZ29vZ2xldGFnID0gd2luZG93Lmdvb2dsZXRhZyB8fCB7fTtcclxuICAgIHdpbmRvdy5nb29nbGV0YWcuY21kID0gd2luZG93Lmdvb2dsZXRhZy5jbWQgfHwgW107XHJcbiAgICByZXR1cm4gd2luZG93Lmdvb2dsZXRhZztcclxufVxyXG5cclxuLy8gRGV0ZWN0IE9TXHJcbmV4cG9ydCBjb25zdCBnZXRPUyA9ICgpID0+IHtcclxuICAgIHZhciBvcyA9ICcnO1xyXG4gICAgaWYodXNlckFnZW50LmluZGV4T2YoJ2lwaG9uZScpICE9IC0xKSB7XHJcbiAgICAgIG9zID0gJ2lwaG9uZSc7XHJcbiAgICB9IGVsc2UgaWYodXNlckFnZW50LmluZGV4T2YoJ2FuZHJvaWQnKSAhPSAtMSkge1xyXG4gICAgICBvcyA9ICdhbmRyb2lkJztcclxuICAgIH0gZWxzZSBpZih1c2VyQWdlbnQuaW5kZXhPZignd2luZG93cyBudCcpICE9IC0xKSB7XHJcbiAgICAgIG9zID0gJ3dpbmRvd3MnO1xyXG4gICAgfSBlbHNlIGlmKHVzZXJBZ2VudC5pbmRleE9mKCdtYWMgb3MgeCcpICE9IC0xKSB7XHJcbiAgICAgIG9zID0gJ21hYyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcyA9ICdvdGhlcic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3M7XHJcbn1cclxuXHJcbi8vIERldGVjdCBCcm93c2VyXHJcbmV4cG9ydCBjb25zdCBnZXRCcm93c2VyID0gKCkgPT4ge1xyXG4gICAgdmFyIGJyb3dzZXIgPSAnJztcclxuICAgIGlmKHVzZXJBZ2VudC5pbmRleE9mKCdtc2llJykgIT0gLTEgfHwgdXNlckFnZW50LmluZGV4T2YoJ3RyaWRlbnQnKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyID0gJ2llJztcclxuICAgIH0gZWxzZSBpZih1c2VyQWdlbnQuaW5kZXhPZignZWRnJykgIT0gLTEpIHtcclxuICAgICAgYnJvd3NlciA9ICdlZGdlJztcclxuICAgIH0gZWxzZSBpZih1c2VyQWdlbnQuaW5kZXhPZignY2hyb21lJykgIT0gLTEpIHtcclxuICAgICAgYnJvd3NlciA9ICdjaHJvbWUnO1xyXG4gICAgfSBlbHNlIGlmKHVzZXJBZ2VudC5pbmRleE9mKCdzYWZhcmknKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyID0gJ3NhZmFyaSc7XHJcbiAgICB9IGVsc2UgaWYodXNlckFnZW50LmluZGV4T2YoJ2ZpcmVmb3gnKSAhPSAtMSkge1xyXG4gICAgICBicm93c2VyID0gJ2ZpcmVmb3gnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYnJvd3NlciA9ICdvdGhlcic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnJvd3NlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFBnVGFyZ2V0VmFsdWUgPSAoIGJyb3dzZXIgKSA9PiB7XHJcbiAgICAvLyDli5XnlLvplqLpgKPjga7lhoXlrrnliIbpoZ7vvIhpbnN0cmVhbeeUqO+8iVxyXG4gICAgdmFyIFBnX1RhcmdldF9tb3ZpZV9hcnJheSA9IFsnQjA1MDAwMDAwJywgJ0IwNTAxMDAwMCcsICdCMDUwNDAwMDAnLCAnQjA1MDUwMDAwJywgJ0IwNTA2MDAwMCcsICdCMDUwMjAwMDAnLCAnQjA1MDcwMDAwJywgJ0IwNTAzMDAwMCddO1xyXG4gICAgLy/lhoXlrrnliIbpoZ7lj5blvpdcclxuICAgIHZhciBQZ19UYXJnZXRfdmFsdWUgPSAnJztcclxuICAgIHZhciBQZ19UYXJnZXRfYXJyYXkgPSBbXTtcclxuICAgIGlmKCBzY19hc2FfZGlnaV9saXN0MiAhPT0gXCJcIiApIHtcclxuICAgICAgICBQZ19UYXJnZXRfYXJyYXkgPSBzY19hc2FfZGlnaV9saXN0Mi5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgZm9yKCB2YXIgaiA9IDA7IGogPCBQZ19UYXJnZXRfYXJyYXkubGVuZ3RoOyBqKysgKSB7XHJcbiAgICAgICAgICAgIGlmKCBqID09PSAwICkge1xyXG4gICAgICAgICAgICAgICAgUGdfVGFyZ2V0X3ZhbHVlID0gUGdfVGFyZ2V0X2FycmF5W2pdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgUGdfVGFyZ2V0X3ZhbHVlID0gUGdfVGFyZ2V0X3ZhbHVlICsgXCIsXCIgKyBQZ19UYXJnZXRfYXJyYXlbal07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIGJyb3dzZXIgPT09ICdjaHJvbWUnIHx8IGJyb3dzZXIgPT09ICdlZGdlJyApIHtcclxuICAgICAgICAgICAgICAgIGlmKCB0eXBlb2YgYXNhUHJlYmlkVmlkZW9JbnN0cmVtQWQgPT09ICd1bmRlZmluZWQnICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciggdmFyIGsgPSAwOyBrIDwgUGdfVGFyZ2V0X21vdmllX2FycmF5Lmxlbmd0aDsgaysrICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiggUGdfVGFyZ2V0X21vdmllX2FycmF5W2tdID09PSBQZ19UYXJnZXRfYXJyYXlbal0gKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuYXNhUHJlYmlkVmlkZW9JbnN0cmVtQWQgPSBcInRhcmdldFwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUGdfVGFyZ2V0X3ZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0UGdLZXl3b3JkVmFsdWUgPSAoKSA9PiB7XHJcbiAgICAvL+OCreODvOODr+ODvOODieWPluW+l1xyXG4gICAgdmFyIFBnX0tleXdvcmRfdmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKCB0eXBlb2YgKCBzY19hc2FfZGlnaV9wcm9wNTMgKSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcclxuICAgICAgICBQZ19LZXl3b3JkX3ZhbHVlID0gXCJcIjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKCBzY19hc2FfZGlnaV9wcm9wNTMgIT09IFwiXCIgKSB7XHJcbiAgICAgICAgICAgIHZhciBQZ19LZXl3b3JkX2FycmF5ID0gc2NfYXNhX2RpZ2lfcHJvcDUzLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgICAgZm9yICggdmFyIGogPSAwOyBqIDwgUGdfS2V5d29yZF9hcnJheS5sZW5ndGg7IGorKyApIHtcclxuICAgICAgICAgICAgICAgIFBnX0tleXdvcmRfYXJyYXlbal0gPSBQZ19LZXl3b3JkX2FycmF5W2pdLnJlcGxhY2UoL1xcKC9nLCAnJykucmVwbGFjZSgvXFwpL2csICcnKS5yZXBsYWNlKC/vvIgvZywgJycpLnJlcGxhY2UoL++8iS9nLCAnJykucmVwbGFjZSgv77yKL2csJycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCBqID09PSAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgIFBnX0tleXdvcmRfdmFsdWUgPSBQZ19LZXl3b3JkX2FycmF5W2pdO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBQZ19LZXl3b3JkX3ZhbHVlID0gUGdfS2V5d29yZF92YWx1ZSArIFwiLFwiICsgUGdfS2V5d29yZF9hcnJheVtqXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBQZ19LZXl3b3JkX3ZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0UGdFbnZWYWx1ZSA9ICgpID0+IHtcclxuICAgIC8v55Kw5aKD5Y+W5b6XIChQbGFzbWE6cCBvciDml6fmnJ3jg4fjgrg6cylcclxuICAgIHZhciBQZ19FbnZfdmFsdWUgPSBcIlwiO1xyXG4gICAgaWYgKCB0eXBlb2YgKCBzY19hc2FfZGlnaV9wcm9wNDggKSA9PT0gXCJ1bmRlZmluZWRcIiApIHtcclxuICAgICAgICBQZ19FbnZfdmFsdWUgPSBcIlwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoIHNjX2FzYV9kaWdpX3Byb3A0OCAhPT0gXCJcIiApIHtcclxuICAgICAgICAgICAgdmFyIFBnX0Vudl92YWx1ZSA9IHNjX2FzYV9kaWdpX3Byb3A0ODtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gUGdfRW52X3ZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0U2l0ZVJlZiA9ICgpID0+IHtcclxuICAgIC8vcmVm44KS5Y+W5b6XXHJcbiAgICB2YXIgZ19zaXRlX3JlZiA9ICcnO1xyXG4gICAgaWYgKCBocmVmLmluZGV4T2YoJ3JlZj15YWhvbycpICE9IC0xICkge1xyXG4gICAgICAgIGdfc2l0ZV9yZWYgPSBcInlhaG9vXCI7XHJcbiAgICB9IGVsc2UgaWYgKCBocmVmLmluZGV4T2YoJ3JlZj1zbWFydG5ld3MnKSAhPSAtMSApIHtcclxuICAgICAgICBnX3NpdGVfcmVmID0gXCJzbWFydG5ld3NcIjtcclxuICAgIH0gZWxzZSBpZiAoIGhyZWYuaW5kZXhPZigncmVmPWxpbmUnKSAhPSAtMSApIHtcclxuICAgICAgICBnX3NpdGVfcmVmID0gXCJsaW5lXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGdfc2l0ZV9yZWYgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGdfc2l0ZV9yZWY7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRBb25lU2VnbWVudCA9ICgpID0+IHtcclxuICAgIC8v44K744Kw44Oh44Oz44OI5YCk5Y+W5b6XXHJcbiAgICB2YXIgZ29BY24gPSBcIkFTQUhJU0VHXCI7XHJcbiAgICB2YXIgZ29BY28gPSBjb29raWU7XHJcbiAgICB2YXIgZ29BcG9zID0gZ29BY28uaW5kZXhPZihnb0FjbiArIFwiPVwiKTtcclxuICAgIHZhciBnb0FzZWcgPSAoIGdvQXBvcyAhPSAtMSkgPyBnb0Fjby5zdWJzdHJpbmcoIGdvQXBvcyArIGdvQWNuLmxlbmd0aCArIDEsICggZ29BY28uaW5kZXhPZiggXCI7IFwiLCBnb0Fwb3MgKSAhPSAtMSApID8gZ29BY28uaW5kZXhPZiggXCI7IFwiLCBnb0Fwb3MgKSA6IGdvQWNvLmxlbmd0aCApIDogbnVsbDtcclxuICAgIGdvQXNlZyA9ICggZ29Bc2VnICkgPyB1bmVzY2FwZSggZ29Bc2VnICkgOiBudWxsO1xyXG4gICAgZ29Bc2VnID0gKCBnb0FzZWcgKSA/ICggZ29Bc2VnIC5zdWJzdHIoLTEpICE9IFwiL1wiKSA/IGdvQXNlZyArIFwiL1wiIDogZ29Bc2VnIDogbnVsbDtcclxuICAgIGdvQXNlZyA9ICggZ29Bc2VnICkgPyBnb0FzZWcgPSBnb0FzZWcucmVwbGFjZSgvPS9nLCBcIiB8XCIpIDogbnVsbDtcclxuICAgIGdvQXNlZyA9ICggZ29Bc2VnICkgPyBnb0FzZWcgPSBnb0FzZWcucmVwbGFjZSgvXFwvL2csIFwifCBcIikgOiBudWxsO1xyXG4gICAgcmV0dXJuIGdvQXNlZztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFBnQXJ0aWNsZUlkID0gKCkgPT4ge1xyXG4gICAgdmFyIFBnX0FydGljbGVJZCA9ICcnO1xyXG4gICAgaWYgKCB0eXBlb2YoIHNjX2FzYV9kaWdpX3Byb3A0MCApID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgUGdfQXJ0aWNsZUlkID0gJyc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIFBnX0FydGljbGVJZCA9IHNjX2FzYV9kaWdpX3Byb3A0MDtcclxuICAgIH1cclxuICAgIHJldHVybiBQZ19BcnRpY2xlSWRcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldEFzYWhpTWVtYmVyVHlwZSA9ICgpID0+IHtcclxuICAgIGlmICggdHlwZW9mIGFzYTEyX21vZGUgPT09IFwidW5kZWZpbmVkXCIgKSB7XHJcbiAgICAgICAgYXNhMTJfbW9kZSA9IFwiMFwiO1xyXG4gICAgfVxyXG4gICAgdmFyIGFzYTEyX21vZGVfdiA9IFwiMFwiO1xyXG4gICAgaWYgKCBhc2ExMl9tb2RlID09IDAgfHwgYXNhMTJfbW9kZSA9PSBudWxsICkge1xyXG4gICAgICAgIGFzYTEyX21vZGVfdiA9IFwiMFwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBhc2ExMl9tb2RlX3YgPSAoIGFzYTEyX21vZGUgKSA/IFN0cmluZyggYXNhMTJfbW9kZSApIDogbnVsbDtcclxuICAgIH1cclxuICAgIC8v5pyd44OH44K444GMM+OCs+ODvOOCueOBq+OBquOCiuS8muWToeaDheWgseOCkue0sOOBi+OBj+itmOWIpeOBmeOCi+OBn+OCgVxyXG4gICAgdmFyIGFzYWhpX2Nvb2tpZXMgPSBjb29raWUuc3BsaXQoJzsgJyk7XHJcbiAgICB2YXIgYXNhZGlnaV9tZW1iZXJfZmxhZyA9IGZhbHNlO1xyXG4gICAgdmFyIGFzYWRpZ2lfbWVtYmVyX3R5cGUgPSAnMCc7XHJcbiAgICBmb3IoIHZhciBpID0gMDsgaSA8IGFzYWhpX2Nvb2tpZXMubGVuZ3RoOyBpKysgKSB7XHJcbiAgICAgIHZhciBhc2FoaV9jb29raWUgPSBhc2FoaV9jb29raWVzW2ldO1xyXG4gICAgICBpZiggL1dXV19TRVNTPS8udGVzdCggYXNhaGlfY29va2llICkgKSB7XHJcbiAgICAgICAgdmFyIGFzYWRpZ2lfbWVtYmVyX3R5cGUgPSBhc2FoaV9jb29raWUucmVwbGFjZSggJ1dXV19TRVNTPScsICcnICkuc3Vic3RyKCAwLCAyNSApLnJlcGxhY2UoIC9fL2csICcnICkucmVwbGFjZSggL1xcZFxcZFxcZFxcZFxcZFxcZFxcZFxcZC8sICdZWVlZTU1ERCcpO1xyXG4gICAgICAgIGFzYWRpZ2lfbWVtYmVyX2ZsYWcgPSB0cnVlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gW2FzYTEyX21vZGVfdixhc2FkaWdpX21lbWJlcl90eXBlXTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldFBQSUQgPSAoKSA9PiB7XHJcbiAgICB2YXIgYXNhaGlfY29va2llcyA9IGNvb2tpZS5zcGxpdCgvOyAqPy8pO1xyXG4gICAgdmFyIHBsYXNtYV91aWQsIHBsYXNtYV9jaWQ7XHJcbiAgICBmb3IoIHZhciBpID0gMDsgaSA8IGFzYWhpX2Nvb2tpZXMubGVuZ3RoOyBpKysgKSB7XHJcbiAgICAgICAgdmFyIGFzYWhpX2Nvb2tpZSA9IGFzYWhpX2Nvb2tpZXNbaV07XHJcbiAgICAgICAgLy8gZGlnaXRhbC5hc2FoaS5jb20g44GoIHd3dy5hc2FoaS5jb20g44GuIEFCIOODhuOCueODiOWvvuixoeiAheOBq+WJsuOCiuaMr+OCieOCjOOBpuOBhOOCi+OCr+ODg+OCreODvCAo55m66KGM5pmC44GL44KJMeW5tOmWk+acieWKuSlcclxuICAgICAgICBpZiggL1BMQVNNQV9VSUQvLnRlc3QoIGFzYWhpX2Nvb2tpZSApICkge1xyXG4gICAgICAgICAgICBwbGFzbWFfdWlkID0gYXNhaGlfY29va2llLnJlcGxhY2UoICdQTEFTTUFfVUlEPScsICcnICkudHJpbSgpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd3d3LmFzYWhpLmNvbSDjga7lhajjgqLjgq/jgrvjgrnjg6bjg7zjgrbjg7zjgavlibLjgormjK/jgonjgozjgabjgYTjgovjgq/jg4Pjgq3jg7wgKOeZuuihjOaZguOBi+OCiTHlubTplpPmnInlirkpXHJcbiAgICAgICAgaWYoIC9QTEFTTUFfQ0lELy50ZXN0KCBhc2FoaV9jb29raWUgKSApIHtcclxuICAgICAgICAgICAgcGxhc21hX2NpZCA9IGFzYWhpX2Nvb2tpZS5yZXBsYWNlKCAnUExBU01BX0NJRD0nLCAnJyApLnRyaW0oKSArICdEQUFtZVJ2UFNzaEgnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwbGFzbWFfdWlkIHx8IHBsYXNtYV9jaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBnZXRBZEtpamluYWthID0gKCkgPT4ge1xyXG4gICAgaWYgKCB0eXBlb2YgYWRfa2lqaW5ha2EgPT09IFwidW5kZWZpbmVkXCIgKSB7XHJcbiAgICAgICAgYWRfa2lqaW5ha2EgPSBcIlwiO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFkX2tpamluYWthO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0RnJlZUFyZWFGb3JBZCA9ICgpID0+IHtcclxuICAgIC8v54Sh5paZ5Z+f44Gq44KJ44OV44Op44KwT05cclxuICAgIHZhciBmcmVlQXJlYUZvckFkID0gJyc7XHJcbiAgICBpZiAoIGhyZWYuaW5kZXhPZiggJ3d3dy5hc2FoaS5jb20nICkgIT0gLTEgfHwgaHJlZi5pbmRleE9mKCAnd3d3Y2RuLmFzYWhpLmNvbScgKSAhPSAtMSB8fCBocmVmLmluZGV4T2YoICd3d3czLmFzYWhpLmNvbScgKSAhPSAtMSkge1xyXG4gICAgICAgIGZyZWVBcmVhRm9yQWQgPSBcIk9OXCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZyZWVBcmVhRm9yQWQgPSBcIlwiO1xyXG4gICAgICAgIGlmICh0eXBlb2YgRU5BQkxFX0ZSRUVfQVJFQV9BRCA9PT0gJ3N0cmluZycgJiYgRU5BQkxFX0ZSRUVfQVJFQV9BRCA9PT0gJ09OJykge1xyXG4gICAgICAgICAgICBmcmVlQXJlYUZvckFkID0gJ09OJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZnJlZUFyZWFGb3JBZDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldEFzYUFkQnJvd3NlcklFID0gKCBicm93c2VyICkgPT4ge1xyXG4gICAgLy8g44OW44Op44Km44K244GMaWXjgYvjganjgYbjgYvliKTlrprvvIhFQkRB6Zmk5aSW55So77yJXHJcbiAgICB2YXIgYXNhQWRCcm93c2VySUUgPSAnJztcclxuICAgIGlmICggYnJvd3NlciA9PT0gJ2llJyApIHtcclxuICAgICAgICBhc2FBZEJyb3dzZXJJRSA9IFwiMVwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBhc2FBZEJyb3dzZXJJRSA9ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFzYUFkQnJvd3NlcklFO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0QXJ0aWNsZUtpbmQgPSAoKSA9PiB7XHJcbiAgICAvL+iomOS6i+OBqOWGmeecn+WPsOW6p+OBruWIpOWIpVxyXG4gICAgdmFyIGFydGljbGVfa2luZCA9ICcnO1xyXG4gICAgaWYgKGhyZWYuaW5kZXhPZihcIi9hcnRpY2xlcy9waG90by9cIikgIT09IC0xKSB7XHJcbiAgICAgICAgYXJ0aWNsZV9raW5kID0gJ3BjX2RhaXphJztcclxuICAgIH0gZWxzZSBpZiAoaHJlZi5pbmRleE9mKFwiL2FydGljbGVzL1wiKSAhPT0gLTEpIHtcclxuICAgICAgICBhcnRpY2xlX2tpbmQgPSAncGNfa2lqaSc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJ0aWNsZV9raW5kO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0SHJlZiA9ICgpID0+IHtcclxuICAgIHJldHVybiBocmVmO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0VXNlckFnZW50ID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIHVzZXJBZ2VudDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNldEdhdGVEZXNpZ24gPSAoKSA9PiB7XHJcbiAgICAvLyBQQ+S4gOiomOS6i+OCsuODvOODiOW6g+WRiuWMlueUqOWun+ijhVxyXG4gICAgdmFyIG5ld1N0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIG5ld1N0eWxlLnR5cGUgPSAndGV4dC9jc3MnO1xyXG4gICAgbmV3U3R5bGUuaW5uZXJUZXh0ID0gJyNIb21ldG9wQWRJbm5lcntwYWRkaW5nOjB9I2dhdGVfbGVmdCwjZ2F0ZV9yaWdodHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDt6LWluZGV4OjE7d2lkdGg6MTQ1cHg7aGVpZ2h0OjczMHB4fSNnYXRlX2xlZnR7bGVmdDowfSNnYXRlX3JpZ2h0e2xlZnQ6MTE0NXB4fSNIZWFkZXJ7Ym9yZGVyOm5vbmU7fSNIZWFkZXIgI0dsb2JhbE5hdnt3aWR0aDoxMDAwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzVBNUE1Mzt9I0hvbWV0b3BBZE91dGVyK2Rpdnt3aWR0aDoxMDAwcHg7bWFyZ2luOmF1dG99QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDoxMjkxcHgpeyNIb21ldG9wQWRPdXRlcntwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMjkwcHh9I0hlYWRlcnt3aWR0aDoxMjkwcHg7bWFyZ2luOmF1dG87fX1AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjEyOTBweCl7Ym9keXt3aWR0aDoxMjkwcHh9I0hvbWV0b3BBZE91dGVye3Bvc2l0aW9uOnN0YXRpY319JztcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdIRUFEJykuaXRlbSgwKS5hcHBlbmRDaGlsZChuZXdTdHlsZSk7IC8vIOOCquODquODs+ODlOODg+OCr+OCsuODvOODiOW6g+WRiueUqOOBruOCv+OCsOaMv+WFpeWIpOWumlxyXG4gIFxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoZXZlbnQpIHtcclxuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdLmlkID0gJ3dyYXAnO1xyXG4gICAgICAgIHZhciBib2FyZF9mcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdIb21ldG9wQWRPdXRlcicpO1xyXG4gICAgICAgIGJvYXJkX2ZyYW1lLmFwcGVuZENoaWxkKG5ld1N0eWxlKTtcclxuICAgICAgICB2YXIgZ2F0ZV9wYXJ0cyA9IFsnZ2F0ZV9sZWZ0JywgJ2dhdGVfcmlnaHQnXTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGdhdGVfcGFydCA9IGdhdGVfcGFydHNbaV07XHJcbiAgICAgICAgICAgIHZhciBnYXRlX2ZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgIGdhdGVfZnJhbWUuc2V0QXR0cmlidXRlKCdpZCcsIGdhdGVfcGFydCk7XHJcbiAgICAgICAgICAgIHZhciBnYXRlX2Rpc3BsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgLy8gZ2F0ZV9kaXNwbGF5LmlubmVySFRNTCA9ICdnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKXtnb29nbGV0YWcuZGlzcGxheShcIicgKyBnYXRlX3BhcnQgKyAnXCIpfSk7J1xyXG4gICAgICAgICAgICBnYXRlX2ZyYW1lLmFwcGVuZENoaWxkKGdhdGVfZGlzcGxheSk7XHJcbiAgICAgICAgICAgIGJvYXJkX2ZyYW1lLmFwcGVuZENoaWxkKGdhdGVfZnJhbWUpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3Qgc2V0TGF6eWxvYWQgPSAoXHJcbiAgICBpblZpZXcsIG9wdF9kaXYsIGdhbVNldHRpbmdGdW5jXHJcbikgPT4ge1xyXG4gICAgY29uc3Qgc2VsZWN0b3IgPSBgIyR7b3B0X2Rpdn1gO1xyXG4gICAgY29uc3QgY2hlY2tJc09wdERpdiA9IHNldEludGVydmFsKCAoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0RWxlbSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIHNlbGVjdG9yICk7XHJcbiAgICAgICAgaWYgKCAhdGFyZ2V0RWxlbSApIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgY29uc29sZS5sb2coICdzZXRMYXp5bG9hZDogZmluZCBkb20nLCBvcHRfZGl2ICk7XHJcbiAgICAgICAgY2xlYXJJbnRlcnZhbCggY2hlY2tJc09wdERpdiApO1xyXG4gICAgICAgIC8vIOODk+ODpeODvOOBq+WFpeOBo+OBpuOBjeOBn+OCieW6g+WRiuOCkuihqOekuuOBmeOCi1xyXG4gICAgICAgIGluVmlldyggc2VsZWN0b3IgKS5vbmNlKCAnZW50ZXInLCAoKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyggJ3NldExhenlsb2FkOiBnb3QgaW4gdmlldycsIG9wdF9kaXYgKTtcclxuICAgICAgICAgIGdhbVNldHRpbmdGdW5jKCk7XHJcbiAgICAgICAgfSApO1xyXG4gICAgICB9LCAxMDAgKTsgICAgICAgIFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0UGFnZUZsYWcgPSAoIGNvbnRlbnRfY2xhc3NlcywgcGFnZV9mbGFncyApID0+IHtcclxuICAgIC8vIOW6g+WRiuaeoOOBruWHuuOBl+WIhuOBkeOBjOW/heimgeOBquODmuODvOOCuOOCkuWIpOWumuOBmeOCi1xyXG4gICAgdmFyIG1ldGFUYWcgPSBkb2N1bWVudC5oZWFkLmNoaWxkcmVuO1xyXG4gICAgdmFyIG1ldGFMZW5ndGggPSBtZXRhVGFnLmxlbmd0aDtcclxuICAgIHZhciBwYWdlX2NsYXNzX2FycmF5ID0gdW5kZWZpbmVkO1xyXG4gICAgZm9yKCB2YXIgaSA9IDA7IGkgPCBtZXRhTGVuZ3RoOyBpKysgKXtcclxuICAgICAgICB2YXIgcHJvcGVyID0gbWV0YVRhZ1tpXS5nZXRBdHRyaWJ1dGUoICduYW1lJyApO1xyXG4gICAgICAgIGlmKCBwcm9wZXIgPT09ICdjWGVuc2VQYXJzZTphc2gtY2F0ZWdvcnktaWQnICl7XHJcbiAgICAgICAgICAgIHZhciBkaXMgPSBtZXRhVGFnW2ldO1xyXG4gICAgICAgICAgICBwYWdlX2NsYXNzX2FycmF5ID0gZGlzLmNvbnRlbnQuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIHBhZ2VfY2xhc3NfYXJyYXkgKSB7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoIGNvbnRlbnRfY2xhc3NlcyApLmZpbmQoICgga2V5ICkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY29udGVudENsYXNzZXNBcnJheSA9IGNvbnRlbnRfY2xhc3Nlc1trZXldO1xyXG4gICAgICAgICAgY29uc3QgRkxBR19LRVkgPSBrZXkuc3BsaXQoICdfQVJFQScgKVswXTtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCBGTEFHX0tFWSApO1xyXG4gICAgICAgICAgcGFnZV9mbGFncy5JU1tGTEFHX0tFWV0gPSBwYWdlX2NsYXNzX2FycmF5LnNvbWUoICggY29udGVudENsYXNzICkgPT5cclxuICAgICAgICAgICAgY29udGVudENsYXNzZXNBcnJheS5pbmNsdWRlcyggY29udGVudENsYXNzIClcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoIHBhZ2VfZmxhZ3MuSVNbRkxBR19LRVldICkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoIEZMQUdfS0VZID09PSAnREVGQVVMVCcgKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfZmxhZ3MuSVMuTk9STUFMID0gdHJ1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBwYWdlX2ZsYWdzLklTLk5PUk1BTCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFnZV9mbGFncztcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGdldENvb2tpZURlcHJlY2F0aW9uTGFiZWwgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB2YXIgY29va2llRGVwcmVjYXRpb25MYWJlbCA9IHVuZGVmaW5lZDtcclxuICAgIGlmICh3aW5kb3cubmF2aWdhdG9yICYmICdjb29raWVEZXByZWNhdGlvbkxhYmVsJyBpbiB3aW5kb3cubmF2aWdhdG9yKSB7XHJcbiAgICAgICAgLy8gUmVxdWVzdCB2YWx1ZSBhbmQgcmVzb2x2ZSBwcm9taXNlXHJcbiAgICAgICAgYXdhaXQgd2luZG93Lm5hdmlnYXRvci5jb29raWVEZXByZWNhdGlvbkxhYmVsLmdldFZhbHVlKCkudGhlbigobGFiZWwpID0+IHtcclxuICAgICAgICAgICAgY29va2llRGVwcmVjYXRpb25MYWJlbCA9IGxhYmVsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvb2tpZURlcHJlY2F0aW9uTGFiZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBtYWtlR3B0VGFnID0gKCkgPT4ge1xyXG4gICAgdmFyIG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaGVhZFwiKTsgXHJcbiAgICB2YXIgciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XHJcbiAgICByLnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xyXG4gICAgci5zZXRBdHRyaWJ1dGUoXCJhc3luY1wiLCBcImFzeW5jXCIpO1xyXG4gICAgci5zcmMgPSBcImh0dHBzOi8vc2VjdXJlcHViYWRzLmcuZG91YmxlY2xpY2submV0L3RhZy9qcy9ncHQuanNcIjtcclxuICAgIG4uYXBwZW5kQ2hpbGQocik7XHJcbn1cclxuIiwiY29uc3Qgc2VydmljZXMgPSBbJ2FkcyddO1xyXG5jb25zdCByZXF1ZXN0TWFuYWdlciA9IHt9O1xyXG5sZXQgbG9jYWxTbG90cyA9IFtdO1xyXG5sZXQgbG9jYWxHb29nbGV0YWc7XHJcblxyXG5leHBvcnQgY29uc3QgaW5pdCA9IChnb29nbGV0YWcsIHR5cGUpID0+IHtcclxuICBsb2NhbEdvb2dsZXRhZyA9IGdvb2dsZXRhZztcclxuICAvLyDlpJbpg6jpgKPmkLrjgrXjg7zjg5PjgrnjgpLmjIflrppcclxuICBpZiAodHlwZSA9PT0gJ2FydGljbGUnKSB7XHJcbiAgICBzZXJ2aWNlcy5wdXNoKCdwaWFubycpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHNldFNlcnZpY2VzID0gKHNlcnZpY2UsIHNsb3RzKSA9PiB7XHJcbiAgICBpZiAoc2VydmljZSA9PT0gJ2FkcycpIHtcclxuICAgICAgbG9jYWxTbG90cy5wdXNoKHNsb3RzKTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmljZSA9PT0gJ3BpYW5vJykge1xyXG4gICAgICAvLyBETyBOT1RISU5HXHJcbiAgICB9XHJcblxyXG4gICAgcmVxdWVzdE1hbmFnZXJbc2VydmljZV0gPSB0cnVlO1xyXG5cclxuICAgIGlmIChhbGxTZXJ2aWNlc0JhY2soKSkge1xyXG4gICAgICBzZW5kQWRzZXJ2ZXJSZXF1ZXN0KCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5jb25zdCBhbGxTZXJ2aWNlc0JhY2sgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gc2VydmljZXMuZXZlcnkoc2VydmljZSA9PiByZXF1ZXN0TWFuYWdlcltzZXJ2aWNlXSk7XHJcbn07XHJcblxyXG5jb25zdCBzZW5kQWRzZXJ2ZXJSZXF1ZXN0ID0gKCkgPT4ge1xyXG4gICAgbG9jYWxHb29nbGV0YWcuY21kLnB1c2goKCkgPT4ge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2FsU2xvdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsb2NhbEdvb2dsZXRhZy5wdWJhZHMoKS5yZWZyZXNoKGxvY2FsU2xvdHNbaV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGxvY2FsU2xvdHMgPSBbXTtcclxuICAgIH0pO1xyXG59O1xyXG4iLCIvLyBUT1BJQ1Pjg6/jg7zjg4nlj5blvpfjg7tLLVbpgIHkv6FcclxuLy8gVG9waWNzSlNPTuOBq+OCv+ODvOOCsuODhuOCo+ODs+OCsOWvvuixoeOBrndvcmTjgYzjgYLjgozjgbDjgr/jg7zjgrLjg4bjgqPjg7PjgrDjgZnjgotcclxuXHJcblxyXG5jb25zdCBSRVFfS1ZfV09SRFMgPSB7XHJcbiAgXCLlg43jgY3mlrnmlLnpnalcIjp7XCJJRFwiOlwiYTFcIn0sXHJcbiAgXCLmlrDlnovjgrPjg63jg4rjgqbjgqTjg6vjgrlcIjp7XCJJRFwiOlwiYTJcIn0sXHJcbiAgXCLmlrDlnovjgrPjg63jg4pcIjp7XCJJRFwiOlwiYTNcIn0sXHJcbiAgXCLmlrDlnovogrrngo5cIjp7XCJJRFwiOlwiYTRcIn0sXHJcbiAgXCLjgrnjg57jg5tcIjp7XCJJRFwiOlwiYTM0XCJ9LFxyXG4gIFwi772J772Q772I772P772O772FXCI6e1wiSURcIjpcImEzNVwifSxcclxuICBcIua4qeWupOWKueaenOOCrOOCuVwiOntcIklEXCI6XCJhMTdcIn0sXHJcbiAgXCLlkajms6LmlbDluK9cIjp7XCJJRFwiOlwiYTM5XCJ9LFxyXG4gIFwi5YaN55Sf5Y+v6IO944Ko44ON44Or44Ku44O8XCI6e1wiSURcIjpcImExOVwifSxcclxuICBcIuawl+WAmeWkieWLlVwiOntcIklEXCI6XCJhMjBcIn0sXHJcbiAgXCLkuozphbjljJbngq3ntKBcIjp7XCJJRFwiOlwiYTIxXCJ9LFxyXG4gIFwi44OX44Ot44Kw44Op44Of44Oz44Kw5pWZ6IKyXCI6e1wiSURcIjpcImE0MFwifSxcclxuICBcIuS4ieiPseWVhuS6i1wiOntcIklEXCI6XCJhNDJcIn0sXHJcbiAgXCLmnInlirnmsYLkurrlgI3njodcIjp7XCJJRFwiOlwiYTI0XCJ9LFxyXG4gIFwi5YaF5a6a546HXCI6e1wiSURcIjpcImEyNVwifSxcclxuICBcIuODquOCr+ODq+ODvOODiFwiOntcIklEXCI6XCJhMjZcIn0sXHJcbiAgXCLpm6LogbfnjodcIjp7XCJJRFwiOlwiYTI3XCJ9LFxyXG4gIFwi5Lq65p2Q57S55LuLXCI6e1wiSURcIjpcImEyOFwifSxcclxuICBcIuWGheWumuWPluOCiua2iOOBl1wiOntcIklEXCI6XCJhMjlcIn0sXHJcbiAgXCLkurrmnZDjg5Djg7Pjgq9cIjp7XCJJRFwiOlwiYTMwXCJ9LFxyXG4gIFwi56ys77yS5paw5Y2SXCI6e1wiSURcIjpcImEzMVwifSxcclxuICBcIuODh+OCo+OCueOCs1wiOntcIklEXCI6XCJhMzJcIn0sXHJcbiAgXCLlsLHogbfmtLvli5VcIjp7XCJJRFwiOlwiYTMzXCJ9LFxyXG4gIFwi44K144OP44Oq44Oz77ySXCI6e1wiSURcIjpcImE0M1wifSxcclxuICBcIuODhuODrOODr+ODvOOCr1wiOntcIklEXCI6XCJhMzhcIn0sXHJcbn07XHJcblxyXG5jb25zdCBwZ1RvcGljc1RhcmdldGluZyA9ICgga2lqaUtleXdvcmRzLCBzZW5kS3ZXb3JkcyA9IE9iamVjdC5rZXlzKFJFUV9LVl9XT1JEUyksIHJlcUt2V29yZHMgPSBSRVFfS1ZfV09SRFMgKSA9PiB7XHJcbiAgLy92YXIgc2VuZEt2V29yZCA9IFtcIuWDjeOBjeaWueaUuemdqVwiLFwi54ax5Lit55eHXCIsXCLmlrDlnovjgrPjg63jg4rjgqbjgqTjg6vjgrlcIixcIuaWsOWei+OCs+ODreODilwiLFwi5paw5Z6L6IK654KOXCIsXCLnjJvmmpHml6VcIixcIuecn+Wkj+aXpVwiLFwi6Kiq5ZWP5LuL6K23XCIsXCLjg5Xjg6njg7Pjg4Hjg6PjgqTjgrpcIixcIuiEseOCteODqVwiLFwi57WC6Lqr6ZuH55SoXCIsXCLpnZ7mraPopo/pm4fnlKhcIixcIuizh+eUo+mBi+eUqFwiLFwi5a6a5bm06YCA6IG3XCIsXCLlrprlubTlu7bplbdcIixcIumbh+OBhOatouOCgVwiLFwi44K744Kr44Oz44OJ44Kt44Oj44Oq44KiXCIsXCLjg5fjg6njgrnjg4Hjg4Pjgq/jgZTjgb9cIixcIue1tua7heWNseaDp+eorlwiLFwi5rip5a6k5Yq55p6c44Ks44K5XCIsXCLlnLDnkIPmuKnmmpbljJZcIixcIuWGjeeUn+WPr+iDveOCqOODjeODq+OCruODvFwiLFwi5rCX5YCZ5aSJ5YuVXCIsXCLkuozphbjljJbngq3ntKBcIixcIuOCq+ODvOODnOODs+ODu+ODi+ODpeODvOODiOODqeODq1wiXSxcclxuICBjb25zdCBwZ1RvcGljc1ZhbHVlTGlzdCA9IFtdO1xyXG4gIGNvbnN0IHBnVG9waWNzV29yZExpc3QgPSBbXTtcclxuXHJcbiAgZm9yICggdmFyIGkgPSAwOyBpIDwga2lqaUtleXdvcmRzLmxlbmd0aDsgaSsrICkge1xyXG4gICAgY29uc3Qga2lqaUtleXdvcmQgPSBraWppS2V5d29yZHNbaV07XHJcbiAgICBpZiAoIHNlbmRLdldvcmRzLmluZGV4T2YoIGtpamlLZXl3b3JkICkgPj0gMCApIHtcclxuICAgICAgcGdUb3BpY3NWYWx1ZUxpc3QucHVzaCgga2lqaUtleXdvcmQgKTtcclxuICAgIH1cclxuICAgIGlmICggcmVxS3ZXb3Jkc1traWppS2V5d29yZF0gKSB7XHJcbiAgICAgIHBnVG9waWNzV29yZExpc3QucHVzaCggcmVxS3ZXb3Jkc1traWppS2V5d29yZF0uSUQgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlmICggcGdUb3BpY3NWYWx1ZUxpc3QubGVuZ3RoID4gMCApIHtcclxuICAgIGdvb2dsZXRhZy5jbWQucHVzaCggZnVuY3Rpb24gKCkge1xyXG4gICAgICBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCAnUGdfVG9waWNzJywgW3BnVG9waWNzVmFsdWVMaXN0LmpvaW4oICcsJyApXSApO1xyXG4gICAgfSApO1xyXG4gIH1cclxuXHJcbiAgaWYgKCBwZ1RvcGljc1dvcmRMaXN0Lmxlbmd0aCA+IDAgKSB7XHJcbiAgICBnb29nbGV0YWcuY21kLnB1c2goICgpID0+IHtcclxuICAgICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggJ0FkX1RvcGljcycsIFtwZ1RvcGljc1dvcmRMaXN0LmpvaW4oICcsJyApXSApO1xyXG4gICAgfSApO1xyXG4gIH1cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCB0b3BpY3NUYXJnZXRpbmcgPSAoIHNlbmRLdldvcmRzID0gT2JqZWN0LmtleXMoUkVRX0tWX1dPUkRTKSwgcmVxS3ZXb3JkcyA9IFJFUV9LVl9XT1JEUyApID0+IHtcclxuICBpZiAoIHR5cGVvZiBBRF9UT1BJQ1NfV09SRFMgIT09ICd1bmRlZmluZWQnICYmIEFEX1RPUElDU19XT1JEUyBpbnN0YW5jZW9mIEFycmF5ICkge1xyXG4gICAgcGdUb3BpY3NUYXJnZXRpbmcoIEFEX1RPUElDU19XT1JEUywgc2VuZEt2V29yZHMsIHJlcUt2V29yZHMgKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG4gIHJlcS5vbnJlYWR5c3RhdGVjaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICAvLyB0b2RvOiBjaGVjayDmnaHku7ZcclxuICAgIGlmICggcmVxLnJlYWR5U3RhdGUgIT09IDQgfHwgcmVxLnN0YXR1cyAhPT0gMjAwICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgICogW1xyXG4gICAgICogICB7XHJcbiAgICAgKiAgICAgdG9waWNzX25vOiAnMTAyMTUzODEnLFxyXG4gICAgICogICAgIHdvcmRzOiAn5paw5Z6L44Kz44Ot44OK44Km44Kk44Or44K5JyxcclxuICAgICAqICAgICB1cmw6ICcvdG9waWNzL3dvcmQv5paw5Z6L6IK654KOLmh0bWwnIFxyXG4gICAgICogICB9XHJcbiAgICAgKiBdXHJcbiAgICAgKi9cclxuICAgIGNvbnN0IHRvcGljc0pzb24gPSBKU09OLnBhcnNlKCByZXEucmVzcG9uc2VUZXh0ICk7XHJcblxyXG4gICAgLy/ml6d0b3BpY3Poqp7lj5blvpflh6bnkIZcclxuICAgIGNvbnN0IHBnVG9waWNzVmFsdWVzID0gdG9waWNzSnNvbi5tYXAoIHZhbHVlID0+IHZhbHVlLndvcmRzICk7XHJcbiAgICBwZ1RvcGljc1RhcmdldGluZyggcGdUb3BpY3NWYWx1ZXMsIHNlbmRLdldvcmRzLCByZXFLdldvcmRzICk7XHJcbiAgfTtcclxuICBjb25zdCBjdXJyZW50RG9tYWluID0gZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgY29uc3QgYXNzZXREb21haW4gPSBbICd3d3cuYXNhaGkuY29tJyAsICd3d3djZG4uYXNhaGkuY29tJyBdLmluY2x1ZGVzKCBjdXJyZW50RG9tYWluICkgPyAnd3d3LmFzYWhpY29tLmpwJyA6IGN1cnJlbnREb21haW47IFxyXG4gIGNvbnN0IGFydGljbGVJZCA9IGRvY3VtZW50LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKCAvKFteL10rKS5odG1sJC8gKVsxXTtcclxuICByZXEub3BlbiggJ0dFVCcsIGBodHRwczovLyR7YXNzZXREb21haW59L3RvcGljcy9saW5rLyR7YXJ0aWNsZUlkfS5qc29uYCwgdHJ1ZSApO1xyXG4gIHJlcS50aW1lb3V0ID0gNTAwO1xyXG4gIHJlcS5zZW5kKCBudWxsICk7XHJcbn07XHJcbiIsIi8vIOOCsOODreODvOODkOODq+WkieaVsOOCkuOBk+OBruODleOCoeOCpOODq+WGheOBp+OBr+S9v+eUqOOBm+OBmuOAgVxyXG4vLyBzaXRlSW5mby5qc+OBq+OBvuOBqOOCgeOCi+OBk+OBqOOBp+WPr+iqreaAp+OCkuS4iuOBkuOCi1xyXG5pbXBvcnQge1xyXG4gIHRvcGljc1RhcmdldGluZyxcclxufSBmcm9tICcuLi9jb21tb24vZnVuY3Rpb25zL3RvcGljc1RhcmdldGluZyc7XHJcbmltcG9ydCAqIGFzIHNpdGVfaW5mbyBmcm9tICcuLi9jb21tb24vZnVuY3Rpb25zL3NpdGVJbmZvJztcclxuaW1wb3J0ICogYXMgdGhpcmRQYXJ0eU1hbmFnZXIgZnJvbSAnLi4vY29tbW9uL2Z1bmN0aW9ucy90aGlyZFBhcnR5TWFuYWdlcic7XHJcbmltcG9ydCAqIGFzIGluVmlldyBmcm9tICdpbi12aWV3JztcclxuaW1wb3J0IHsgZmV0Y2hSZWFkZXJQcmVkaWN0aW9uIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmN0aW9ucy9yZWFkZXJQcmVkaWN0aW9uJztcclxuaW1wb3J0IHtcclxuICBDT05URU5UX0NMQVNTRVMsXHJcbiAgUEFHRV9GTEFHU1xyXG59IGZyb20gJy4uL2NvbW1vbi9jb25zdGFudHMvcGNQYWdlQ2xhc3Nlcyc7XHJcbmltcG9ydCB7XHJcbiAgZ29vZ2xldGFnUmVwbGFjZXJcclxufSBmcm9tICcuLi9jb21tb24vZnVuY3Rpb25zL2dvb2dsZXRhZ1JlcGxhY2VyJztcclxuaW1wb3J0IHsgaW5pdEJpZE1hbmFnZXIsIGluaXRBcHN0YWcsIGZldGNoSGVhZGVyQmlkcywgZ2V0SEJUaW1lb3V0T2JqZWN0LCBzZXRJRDUgfSBmcm9tICcuLi9jb21tb24vZnVuY3Rpb25zL2hlYWRlckJpZE1hbmFnZXInO1xyXG5pbXBvcnQgeyBzZXRQaWFub1NlZ21lbnRzLCBnZXRVc2VyU2VnbWVudElkc0xvY2FsIH0gZnJvbSAnLi4vY29tbW9uL2Z1bmN0aW9ucy9waWFubyc7XHJcbmltcG9ydCB7IG1ha2VHZW9FZGdlVGFnIH0gZnJvbSAgJy4uL2NvbW1vbi9mdW5jdGlvbnMvZ2VvRWRnZSc7XHJcblxyXG4vLyBpblZpZXfnmbrngavlnLDngrnmjIflrppcclxuY29uc3QgaW5pdGlhbF9vZmZzZXQgPSAtMjAwO1xyXG5pblZpZXcub2Zmc2V0KCBpbml0aWFsX29mZnNldCApO1xyXG5cclxuLy8g6KiY5LqL44Oa44O844K4SURcclxudmFyIFBnX0FydGljbGVJZCA9IHNpdGVfaW5mby5nZXRQZ0FydGljbGVJZCgpO1xyXG5cclxuLy8gSUQ16Kit5a6aXHJcbnNldElENSgpO1xyXG5cclxudG9waWNzVGFyZ2V0aW5nKCk7XHJcblxyXG4vLyBnZXQgZ29vZ2xldGFnXHJcbnZhciBnb29nbGV0YWcgPSBzaXRlX2luZm8uZ2V0R29vZ2xldGFnKCk7XHJcblxyXG4vLyDplrLopqfogIXkuojmuKzntZDmnpzjgpJLLVbpgIHkv6FcclxuLy8g5LqL5YmN44Gr44K/44O844Ky44OG44Kj44Oz44Kw44Gr6Kit5a6aXHJcbmlmICggTWF0aC5mbG9vciggTWF0aC5yYW5kb20oKSAqIDIgKSA9PT0gMCApIHtcclxuICBnb29nbGV0YWcuY21kLnB1c2goICgpID0+IHtcclxuICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoICdyZWFkZXJfcHJlZGljdGlvbicsIFsnbm9uZSddICk7XHJcbiAgfSApO1xyXG59IGVsc2Uge1xyXG4gIGdvb2dsZXRhZy5jbWQucHVzaCggKCkgPT4ge1xyXG4gICAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggJ3JlYWRlcl9wcmVkaWN0aW9uJywgWydwcmVwYXJhdGlvbiddICk7XHJcbiAgfSApO1xyXG4gIGZldGNoUmVhZGVyUHJlZGljdGlvbiggUGdfQXJ0aWNsZUlkLCBnb29nbGV0YWcgKTtcclxufVxyXG5cclxuLy8gR2VvRWRnZeOCv+OCsOaMv+WFpVxyXG5tYWtlR2VvRWRnZVRhZygpO1xyXG5cclxuLy/jgr/jgqTjg6DjgqLjgqbjg4jlgKTjga5BQuODhuOCueODiOeUqOOCquODluOCuOOCp+OCr+ODiFxyXG52YXIgdGltZW91dF9hYnRlc3Rfb2JqID0gZ2V0SEJUaW1lb3V0T2JqZWN0KCk7XHJcbnZhciB0aW1lT3V0T2JqID0ge1xyXG4gIGZhaWxTYWZlOiB0aW1lb3V0X2FidGVzdF9vYmpbJ2ZhaWxTYWZlVGltZW91dCddLFxyXG4gIGFwc3RhZ0JpZDogMjAwMCxcclxufTtcclxuXHJcbi8vIEFtYXpvbiBBOSwgUHJlYmlkLmpzIGxvYWQgbGlicmFyeVxyXG52YXIgb3MgPSBzaXRlX2luZm8uZ2V0T1MoKTtcclxudmFyIGJyb3dzZXIgPSBzaXRlX2luZm8uZ2V0QnJvd3NlcigpO1xyXG52YXIgUGdfVGFyZ2V0X3ZhbHVlID0gc2l0ZV9pbmZvLmdldFBnVGFyZ2V0VmFsdWUoIGJyb3dzZXIgKTtcclxudmFyIGRtX3F1ZXJ5X3BhcmFtcyA9IGA/b3M9JHtvc30mYnJvd3Nlcj0ke2Jyb3dzZXJ9YDtcclxudmFyIGNvbnRhaW5zX0EwNyA9IFBnX1RhcmdldF92YWx1ZS5zcGxpdCgnLCcpLnNvbWUodmFsdWUgPT4gdmFsdWUuaW5jbHVkZXMoJ0EwNycpKTtcclxuXHJcbmlmIChjb250YWluc19BMDcpIHtcclxuICAvLyBXcmFwcGVyIFRhcmdldGluZ+OBp+WIqeeUqOOAguS6lOi8quOBq+OCiOOCi1dyYXBwZXLlh7rjgZfliIbjgZHov73liqDjgIJcclxuICBkbV9xdWVyeV9wYXJhbXMgKz0gJyZrZXkxPUEwNyc7XHJcbn0gZWxzZSB7XHJcbiAgdHJ5IHtcclxuICAgIHZhciB0bXBWYWx1ZSA9IFBnX1RhcmdldF92YWx1ZS5zcGxpdCggJywnIClcclxuICAgICAgLmZpbHRlciggZnVuY3Rpb24gKCBpICkge1xyXG4gICAgICAgIHJldHVybiBpLm1hdGNoKCAvXkEvICk7XHJcbiAgICAgIH0gKVxyXG4gICAgICAubWFwKCBmdW5jdGlvbiAoIGogKSB7XHJcbiAgICAgICAgcmV0dXJuIGouc2xpY2UoIDAsIDMgKTtcclxuICAgICAgfSApXHJcbiAgICAgIC5zb3J0KClcclxuICAgICAgLm1hcCggZnVuY3Rpb24gKCBrLCBpbmRleCApIHtcclxuICAgICAgICByZXR1cm4gJ2tleScgKyAoIGluZGV4ICsgMSApICsgJz0nICsgaztcclxuICAgICAgfSApXHJcbiAgICAgIC5yZWR1Y2UoIGZ1bmN0aW9uICggYWNjLCBjdXIgKSB7XHJcbiAgICAgICAgcmV0dXJuIGFjYyArICcmJyArIGN1cjtcclxuICAgICAgfSwgJycgKTtcclxuICAgIGlmICggdG1wVmFsdWUubGVuZ3RoICkge1xyXG4gICAgICBkbV9xdWVyeV9wYXJhbXMgKz0gdG1wVmFsdWU7XHJcbiAgICB9XHJcbiAgfSBjYXRjaCAoZSkge31cclxufVxyXG5cclxuLy8gc2V0IHBpYW5vXHJcbnRoaXJkUGFydHlNYW5hZ2VyLmluaXQoZ29vZ2xldGFnLCAnYXJ0aWNsZScpO1xyXG5zZXRQaWFub1NlZ21lbnRzKGdvb2dsZXRhZywgdGhpcmRQYXJ0eU1hbmFnZXIuc2V0U2VydmljZXMpO1xyXG5cclxuLy8g5bqD5ZGK5p6g44Gu5Ye644GX5YiG44GR44GM5b+F6KaB44Gq44Oa44O844K444KS5Yik5a6a44GZ44KLXHJcbmNvbnN0IFBBR0VfRkxBRyA9IHNpdGVfaW5mby5nZXRQYWdlRmxhZyggQ09OVEVOVF9DTEFTU0VTLCBQQUdFX0ZMQUdTICk7XHJcblxyXG5pbml0QmlkTWFuYWdlciggZ29vZ2xldGFnLCBQQUdFX0ZMQUcsIGRtX3F1ZXJ5X3BhcmFtcywgdGltZU91dE9iaiApO1xyXG5pbml0QXBzdGFnKCk7XHJcblxyXG4vLyBJbml0aXphbGl6ZSB2YXJpYWJsZVxyXG52YXIgaGVhZGVyQmlkZGluZ1Nsb3RzID0gW107XHJcbnZhciBub25IZWFkZXJCaWRkaW5nU2xvdHMgPSBbXTtcclxudmFyIGFwc3RhZ1Nsb3RzID0gW107XHJcblxyXG52YXIgZnJlZUFyZWFGb3JBZCA9IHNpdGVfaW5mby5nZXRGcmVlQXJlYUZvckFkKCk7XHJcbnZhciBhZF9raWppbmFrYSA9IHNpdGVfaW5mby5nZXRBZEtpamluYWthKCk7XHJcbnZhciBnX3NpdGVfcmVmID0gc2l0ZV9pbmZvLmdldFNpdGVSZWYoKTtcclxudmFyIFBnX0tleXdvcmRfdmFsdWUgPSBzaXRlX2luZm8uZ2V0UGdLZXl3b3JkVmFsdWUoKTtcclxudmFyIFBnX0Vudl92YWx1ZSA9IHNpdGVfaW5mby5nZXRQZ0VudlZhbHVlKCk7XHJcbnZhciBnb0FzZWcgPSBzaXRlX2luZm8uZ2V0QW9uZVNlZ21lbnQoKTtcclxudmFyIFthc2ExMl9tb2RlX3YsYXNhZGlnaV9tZW1iZXJfdHlwZV0gPSBzaXRlX2luZm8uZ2V0QXNhaGlNZW1iZXJUeXBlKCk7XHJcbnZhciBhc2FBZFVhTEMgPSBzaXRlX2luZm8uZ2V0VXNlckFnZW50KCk7XHJcbndpbmRvdy5hc2FHdW1HdW1GbGFnID0gMDtcclxuLy8g44Oa44O844K456iu5Yil77yI77yL5LiA6KiY5LqL44Gu5aC05ZCI44Gv6KiY5LqLSUTjgIHjgZ3jga7ku5bjga7loLTlkIjjga/jg5rjg7zjgrjjg5HjgrnvvInlj5blvpdcclxudmFyIFBnX1R5cGUgPSAnYXJ0aWNsZSc7XHJcbnZhciBhc2FBZEJyb3dzZXJJRSA9IHNpdGVfaW5mby5nZXRBc2FBZEJyb3dzZXJJRSggYnJvd3NlciApO1xyXG52YXIgYXJ0aWNsZV9raW5kID0gc2l0ZV9pbmZvLmdldEFydGljbGVLaW5kKCk7XHJcbnZhciBocmVmID0gc2l0ZV9pbmZvLmdldEhyZWYoKTtcclxuLy8gQ2hyb21l44Gu44K144O844OJ44OR44O844OG44KjQ29va2ll5buD5q2i44OG44K544OI5pyf6ZaT5Lit44Gu44Op44OZ44Or5Y+W5b6XXHJcbnZhciBjb29raWVEZXByZWNhdGlvbkxhYmVsID0gYXdhaXQgc2l0ZV9pbmZvLmdldENvb2tpZURlcHJlY2F0aW9uTGFiZWwoKTtcclxuLy8gcGlhbm/nlKjjga7jgrvjgrDjg6Hjg7Pjg4jlj5blvpfplqLmlbBcclxudmFyIHNlZ21lbnRJZHMgPSBnZXRVc2VyU2VnbWVudElkc0xvY2FsKCk7XHJcblxyXG4vLyBQUElE5Y+W5b6XXHJcbmNvbnN0IFBQSUQgPSBzaXRlX2luZm8uZ2V0UFBJRCgpO1xyXG53aW5kb3cuc2NfYXNhX2RpZ2lfcGlkID0gUFBJRCA/IFBQSUQgOiAnJztcclxuXHJcbi8vR29vZ2xlIEFkIE1hbmFnZXLlrprnvqlcclxuZ29vZ2xldGFnLmNtZC5wdXNoKCBmdW5jdGlvbiAoKSB7XHJcbiAgaWYgKCBmcmVlQXJlYUZvckFkID09PSBcIk9OXCIgKSB7XHJcbiAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9ib2FyZCcsIFtbMSwgMV0sIFs5NzAsIDYwXSwgWzk3MCwgMjUwXSwgWzcyOCwgOTBdLCBbOTcwLCAzMDBdXSwgJ2Rpdi1ncHQtYWQtMTU4MTMwODEyMzc3Ni0wJykuYWRkU2VydmljZShnb29nbGV0YWcucHViYWRzKCkpKTtcclxuICB9XHJcbiAgaWYgKCBQQUdFX0ZMQUcuSVMuTk9STUFMICkge1xyXG4gICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS8xc3RfcmVjdCcsIFtbMzAwLCA2MDBdLCBbMzAwLCAyNTBdXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiICkge1xyXG4gICAgICAvLyBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9hZHRlc3QvUEMtUmVjdC1LaWppbmFrYV8wMScsIFtbMzAwLCAyNTBdLCBbMSwxXV0sICdraWppbmFrYV9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUva2lqaW5ha2FfcmVjdCcsIFtbMzAwLCAyNTBdLCBbMSwxXV0sICdraWppbmFrYV9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICB9XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT09IFwiT05cIiApIHtcclxuICAgICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvd2VicHVzaCcsIFsxLCAxXSwgJ2Rpdi1ncHQtYWQtMTU3MzYxOTg3NTAwNC0wJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL1ZpZGVvX0luUmVhZCcsIFtbMSwgMV0sICdmbHVpZCddLCAnZGl2LWdwdC1hZC0xNDkyNDE3NDc1MjI1LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKCBQQUdFX0ZMQUcuSVMuQVBJVEFMICkge1xyXG4gICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXBpdGFsLzFzdF9yZWN0JywgW1szMDAsIDI1MF0sIFszMDAsIDYwMF1dLCAnMXN0X3JlY3QnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXBpdGFsL2tpamluYWthX3JlY3QnLCAgW1szMDAsIDI1MF0sIFsxLDFdXSwgJ2tpamluYWthX3JlY3QnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIGlmICggZnJlZUFyZWFGb3JBZCA9PT0gXCJPTlwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy93ZWJwdXNoJywgWzEsIDFdLCAnZGl2LWdwdC1hZC0xNTczNjE5ODc1MDA0LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvVmlkZW9fSW5SZWFkJywgW1sxLCAxXSwgJ2ZsdWlkJ10sICdkaXYtZ3B0LWFkLTE0OTI0MTc0NzUyMjUtMCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgfVxyXG4gIH0gZWxzZSBpZiAoIFBBR0VfRkxBRy5JUy5TT0NDRVIgKSB7XHJcbiAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3NvY2Nlci8xc3RfcmVjdCcsIFtbMzAwLCAyNTBdLCBbMzAwLCA2MDBdXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3NvY2Nlci9raWppbmFrYV9yZWN0JywgW1szMDAsIDI1MF0sIFsxLDFdXSwgJ2tpamluYWthX3JlY3QnICkuYWRkU2VydmljZShnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgfVxyXG4gICAgaWYgKCBmcmVlQXJlYUZvckFkID09PSBcIk9OXCIgKSB7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3dlYnB1c2gnLCBbMSwgMV0sICdkaXYtZ3B0LWFkLTE1NzM2MTk4NzUwMDQtMCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9WaWRlb19JblJlYWQnLCBbWzEsIDFdLCAnZmx1aWQnXSwgJ2Rpdi1ncHQtYWQtMTQ5MjQxNzQ3NTIyNS0wJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICggUEFHRV9GTEFHLklTLlJFTElGRSApIHtcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3JlbGlmZS8xc3RfcmVjdCcsIFtbMzAwLCA2MDBdLCBbMzAwLCAyNTBdXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlL2tpamluYWthX3JlY3QnLCBbWzMwMCwgMjUwXSwgWzEsMV1dLCAna2lqaW5ha2FfcmVjdCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgfVxyXG4gICAgaWYgKCBmcmVlQXJlYUZvckFkID09PSBcIk9OXCIgKSB7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvd2VicHVzaCcsIFsxLCAxXSwgJ2Rpdi1ncHQtYWQtMTU3MzYxOTg3NTAwNC0wJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL1ZpZGVvX0luUmVhZCcsIFtbMSwgMV0sICdmbHVpZCddLCAnZGl2LWdwdC1hZC0xNDkyNDE3NDc1MjI1LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKCBQQUdFX0ZMQUcuSVMuRURVICkge1xyXG4gICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS8xc3RfcmVjdCcsIFtbMzAwLCA2MDBdLCBbMzAwLCAyNTBdXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlL2tpamluYWthX3JlY3QnLCAgW1szMDAsIDI1MF0sIFsxLDFdXSwgJ2tpamluYWthX3JlY3QnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIH1cclxuICAgIGlmICggZnJlZUFyZWFGb3JBZCA9PT0gXCJPTlwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy93ZWJwdXNoJywgWzEsIDFdLCAnZGl2LWdwdC1hZC0xNTczNjE5ODc1MDA0LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvVmlkZW9fSW5SZWFkJywgW1sxLCAxXSwgJ2ZsdWlkJ10sICdkaXYtZ3B0LWFkLTE0OTI0MTc0NzUyMjUtMCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgfVxyXG4gICAgLy8gUFLmg4XloLHvvIjmlZnogrLvvIlcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8xJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzEnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8yJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzInICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8zJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzMnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF80JywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzQnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF81JywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzUnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICB9IGVsc2UgaWYgKCBQQUdFX0ZMQUcuSVMuVE9LWU9fMjAyMCApIHtcclxuICAgIGlmICggKCBhc2FBZFVhTEMuaW5kZXhPZignd2luZG93cycpICE9PSAtMSApICYmICggYXNhQWRVYUxDLmluZGV4T2YoICd3aW5kb3dzIG50IDYuMicgKSA9PT0gLTEgKSAmJiAoIGFzYUFkVWFMQy5pbmRleE9mKCAnd2luZG93cyBudCA2LjMnICkgPT09IC0xICkgJiYgKCBhc2FBZFVhTEMuaW5kZXhPZiggJ3dpbmRvd3MgbnQgMTAuMCcgKSA9PT0gLTEgKSApIHtcclxuICAgICAgLy8gMzAweDYwMOOBquOBl1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlLzFzdF9yZWN0JywgWzMwMCwgMjUwXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyAzMDB4NjAw44GC44KKKOmAmuW4uClcclxuICAgICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS8xc3RfcmVjdCcsIFtbMzAwLCA2MDBdLCBbMzAwLCAyNTBdXSwgJzFzdF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICB9XHJcbiAgICBpZiAoIGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiICkge1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlL2tpamluYWthX3JlY3QnLCBbWzMwMCwgMjUwXSwgWzEsMV1dLCAna2lqaW5ha2FfcmVjdCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgfVxyXG4gICAgaWYgKCBmcmVlQXJlYUZvckFkID09PSBcIk9OXCIgKSB7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3dlYnB1c2gnLCBbMSwgMV0sICdkaXYtZ3B0LWFkLTE1NzM2MTk4NzUwMDQtMCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9WaWRlb19JblJlYWQnLCBbWzEsIDFdLCAnZmx1aWQnXSwgJ2Rpdi1ncHQtYWQtMTQ5MjQxNzQ3NTIyNS0wJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIGlmICggUEFHRV9GTEFHLklTLk5BVCApIHtcclxuICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUvMXN0X3JlY3QnLCBbWzMwMCwgNjAwXSwgWzMwMCwgMjUwXV0sICcxc3RfcmVjdCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gICAgaWYgKCBmcmVlQXJlYUZvckFkID09IFwiT05cIiAmJiBhZF9raWppbmFrYSA9PSBcIllcIiApIHtcclxuICAgICAgaGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9raWppbmFrYV9yZWN0JywgW1szMDAsIDI1MF0sIFsxLDFdXSwgJ2tpamluYWthX3JlY3QnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAgIH1cclxuICB9IGVsc2UgaWYgKCBQQUdFX0ZMQUcuSVMuQ0VOVEVSX0VYQU0pIHtcclxuICAgIGNvbnNvbGUuZGVidWcoJ3Rlc3QnKTtcclxuICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKGdvb2dsZXRhZy5kZWZpbmVTbG90KCcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlLzFzdF9yZWN0JywgW1szMDAsIDYwMF0sIFszMDAsIDI1MF1dLCAnMXN0X3JlY3QnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgaWYgKGZyZWVBcmVhRm9yQWQgPT0gXCJPTlwiICYmIGFkX2tpamluYWthID09IFwiWVwiKSB7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKGdvb2dsZXRhZy5kZWZpbmVTbG90KCcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlL2tpamluYWthX3JlY3QnLCBbMzAwLCAyNTBdLCAna2lqaW5ha2FfcmVjdCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoZnJlZUFyZWFGb3JBZCA9PT0gXCJPTlwiKSB7XHJcbiAgICAgIGhlYWRlckJpZGRpbmdTbG90cy5wdXNoKGdvb2dsZXRhZy5kZWZpbmVTbG90KCcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy93ZWJwdXNoJywgWzEsIDFdLCAnZGl2LWdwdC1hZC0xNTczNjE5ODc1MDA0LTAnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvVmlkZW9fSW5SZWFkJywgW1sxLCAxXSwgJ2ZsdWlkJ10sICdkaXYtZ3B0LWFkLTE0OTI0MTc0NzUyMjUtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICB9XHJcbiAgICAvLyDlpKflrablhaXlrablhbHpgJrjg4bjgrnjg4gg44OT44OD44Kw44Oc44K/44OzXHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL2JpZ19idG4nLCBbMzAwLCA5MF0sICdkaXYtZ3B0LWFkLTE1MzY1NjE1Mjk0MTktMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICAvLyDlpKflrablhaXlrablhbHpgJrjg4bjgrnjg4gg44K144Kk44OJ44Oc44K/44OzXHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzEnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk1Nzc0NDEtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzInLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk2NDI3MDQtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzMnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk3MzM0MzYtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzQnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk3NjgwODctMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzUnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk4MDEwNDEtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzYnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk4MzQyMzQtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzcnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk4NzU0OTItMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICBub25IZWFkZXJCaWRkaW5nU2xvdHMucHVzaChnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYy1leGFtL3NpZGVfYnRuXzgnLCBbMzAwLCA1NV0sICdkaXYtZ3B0LWFkLTE1NjY1Mzk5MDcyNTAtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKSk7XHJcbiAgICAvLyBQUuaDheWgse+8iOaVmeiCsu+8iVxyXG4gICAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8xJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzEnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8yJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzInKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF8zJywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzMnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF80JywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzQnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goZ29vZ2xldGFnLmRlZmluZVNsb3QoJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2VkdS9lZHVfdGV4dF81JywgWzY2MCwgMjddLCdkaXYtZ3B0LWFkLWVkdV90ZXh0XzUnKS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkpO1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBnb29nbGV0YWdSZXBsYWNlci5kZWZpbmUoICdraWppbmFrYV9yZWN0JywgJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUva2lqaW5ha2FfcmVjdDInLCBbWzMwMCwgMjUwXSwgWzEsMV1dLCAna2lqaW5ha2FfcmVjdF8yJyApO1xyXG4gIC8vIGdvb2dsZXRhZ1JlcGxhY2VyLmRlZmluZSggJ2tpamluYWthX3JlY3QnLCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vYWR0ZXN0L1BDLVJlY3QtS2lqaW5ha2FfMDEnLCBbWzMwMCwgMjUwXSwgWzEsMV1dLCAna2lqaW5ha2FfcmVjdF8yJyApO1xyXG4gIGdvb2dsZXRhZy5wdWJhZHMoKS5hZGRFdmVudExpc3RlbmVyKCAnc2xvdFJlbmRlckVuZGVkJywgZnVuY3Rpb24gKCBlICkge1xyXG4gICAgZ29vZ2xldGFnUmVwbGFjZXIub25TbG90UmVuZGVyRW5kZWQoIGUgKTtcclxuICB9KTtcclxuXHJcbiAgZ29vZ2xldGFnLnB1YmFkcygpLmFkZEV2ZW50TGlzdGVuZXIoICdpbXByZXNzaW9uVmlld2FibGUnLCBmdW5jdGlvbiAoIGUgKSB7XHJcbiAgICBnb29nbGV0YWdSZXBsYWNlci5vbkltcHJlc3Npb25WaWV3YWJsZSggZS5zbG90ICk7XHJcbiAgfSk7XHJcblxyXG4gIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUvcmVsbGluaycsIFtbMSwgMV0sICdmbHVpZCddLCAnZGl2LWdwdC1hZC0xNjAyNzkyMDIzOTc1LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICBoZWFkZXJCaWRkaW5nU2xvdHMucHVzaCggZ29vZ2xldGFnLmRlZmluZVNsb3QoICcvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy9hcnRpY2xlLzJuZF9yZWN0JywgWzMwMCwgMjUwXSwgJzJuZF9yZWN0JyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgLy8g5rOo55uu5oOF5aCxXHJcbiAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9jaHVtb2t1MTEnLCBbMzAwLCA4MF0sJ2Rpdi1ncHQtYWQtcGNfY2h1bW9rdTExJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9jaHVtb2t1MTInLCBbMzAwLCA4MF0sJ2Rpdi1ncHQtYWQtcGNfY2h1bW9rdTEyJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9jaHVtb2t1MTMnLCBbMzAwLCA4MF0sJ2Rpdi1ncHQtYWQtcGNfY2h1bW9rdTEzJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgLy8gUEPjgqTjg7Pjg5XjgqPjg7zjg4lsYXp5bG9hZOeUqOmWouaVsFxyXG4gIGZ1bmN0aW9uIGRlZmluZVBDSW5mZWVkKCB0YXJnZXRfZWxtZW50X2lkX25hbWUsIGluZmVlZF9pbmRleHMgKSB7XHJcbiAgICBnb29nbGV0YWcuY21kLnB1c2goIGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHNsb3RzID0gW107XHJcbiAgICAgIHZhciBvcHRfZGl2cyA9IFtdO1xyXG4gICAgICBpbmZlZWRfaW5kZXhzLmZvckVhY2goIGluZmVlZF9pbmRleCA9PiB7XHJcbiAgICAgICAgdmFyIG9wdF9kaXYgPSBgZGl2LWdwdC1hZC1wY19pbmZlZWRfJHtpbmZlZWRfaW5kZXh9YFxyXG4gICAgICAgIHZhciBhZF91bml0X25hbWUgPSBgLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9wX2luZmVlZF8ke2luZmVlZF9pbmRleH1gO1xyXG4gICAgICAgIHZhciBzbG90ID0gZ29vZ2xldGFnLmRlZmluZVNsb3QoIGFkX3VuaXRfbmFtZSwgWydmbHVpZCcsIFsxLCAxXV0sIG9wdF9kaXYgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKTtcclxuICAgICAgICBzbG90LnNldFRhcmdldGluZyggJ2xhenlfaW5kZXgnLCBgYV8ke2luZmVlZF9pbmRleH1gICk7XHJcbiAgICAgICAgc2xvdHMucHVzaCggc2xvdCApO1xyXG4gICAgICAgIG9wdF9kaXZzLnB1c2goIG9wdF9kaXYgKTtcclxuICAgICAgfSApO1xyXG4gICAgICB0aGlyZFBhcnR5TWFuYWdlci5zZXRTZXJ2aWNlcygnYWRzJywgc2xvdHMpO1xyXG4gICAgICBvcHRfZGl2cy5mb3JFYWNoKCBvcHRfZGl2ID0+IHtcclxuICAgICAgICBnb29nbGV0YWcuZGlzcGxheSggb3B0X2RpdiApO1xyXG4gICAgICB9ICk7XHJcbiAgICB9ICk7XHJcbiAgICAvLyBzaXRlX2luZm8uc2V0TGF6eWxvYWQoIGluVmlldywgdGFyZ2V0X2VsbWVudF9pZF9uYW1lLCAoKSA9PiB7XHJcbiAgICAvLyAgIGdvb2dsZXRhZy5jbWQucHVzaCggZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gICAgIHZhciBzbG90cyA9IFtdO1xyXG4gICAgLy8gICAgIHZhciBvcHRfZGl2cyA9IFtdO1xyXG4gICAgLy8gICAgIGluZmVlZF9pbmRleHMuZm9yRWFjaCggaW5mZWVkX2luZGV4ID0+IHtcclxuICAgIC8vICAgICAgIHZhciBvcHRfZGl2ID0gYGRpdi1ncHQtYWQtcGNfaW5mZWVkXyR7aW5mZWVkX2luZGV4fWBcclxuICAgIC8vICAgICAgIHZhciBhZF91bml0X25hbWUgPSBgLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9wX2luZmVlZF8ke2luZmVlZF9pbmRleH1gO1xyXG4gICAgLy8gICAgICAgdmFyIHNsb3QgPSBnb29nbGV0YWcuZGVmaW5lU2xvdCggYWRfdW5pdF9uYW1lLCBbJ2ZsdWlkJywgWzEsIDFdXSwgb3B0X2RpdiApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApO1xyXG4gICAgLy8gICAgICAgc2xvdC5zZXRUYXJnZXRpbmcoICdsYXp5X2luZGV4JywgYGFfJHtpbmZlZWRfaW5kZXh9YCApO1xyXG4gICAgLy8gICAgICAgc2xvdHMucHVzaCggc2xvdCApO1xyXG4gICAgLy8gICAgICAgb3B0X2RpdnMucHVzaCggb3B0X2RpdiApO1xyXG4gICAgLy8gICAgIH0gKTtcclxuICAgIC8vICAgICBnb29nbGV0YWcucHViYWRzKCkucmVmcmVzaCggc2xvdHMgKTtcclxuICAgIC8vICAgICBvcHRfZGl2cy5mb3JFYWNoKCBvcHRfZGl2ID0+IHtcclxuICAgIC8vICAgICAgIGdvb2dsZXRhZy5kaXNwbGF5KCBvcHRfZGl2ICk7XHJcbiAgICAvLyAgICAgfSApO1xyXG4gICAgLy8gICB9ICk7XHJcbiAgICAvLyB9ICk7XHJcbiAgfVxyXG4gIC8v77yG44CBVEpBUEFO6KqY5bCO5p6gXHJcbiAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9wY19hcnRpY2xlX3l1ZG9fdGphcGFuJywgW1sxLCAxXSwgJ2ZsdWlkJ10sICdkaXYtZ3B0LWFkLTE1OTgzOTgzOTkzMDItMCcgKS5hZGRTZXJ2aWNlKCBnb29nbGV0YWcucHViYWRzKCkgKSApO1xyXG4gIG5vbkhlYWRlckJpZGRpbmdTbG90cy5wdXNoKCBnb29nbGV0YWcuZGVmaW5lU2xvdCggJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUvcGNfYXJ0aWNsZV95dWRvX2FuZGluZmVlZDEnLCBbWzEsIDFdLCAnZmx1aWQnXSwgJ2Rpdi1ncHQtYWQtMTU5ODM5ODM5OTMwMy0wJyApLmFkZFNlcnZpY2UoIGdvb2dsZXRhZy5wdWJhZHMoKSApICk7XHJcbiAgbm9uSGVhZGVyQmlkZGluZ1Nsb3RzLnB1c2goIGdvb2dsZXRhZy5kZWZpbmVTbG90KCAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9wY19hcnRpY2xlX3l1ZG9fYW5kaW5mZWVkMicsIFtbMSwgMV0sICdmbHVpZCddLCAnZGl2LWdwdC1hZC0xNTk4Mzk4Mzk5MzA0LTAnICkuYWRkU2VydmljZSggZ29vZ2xldGFnLnB1YmFkcygpICkgKTtcclxuICAvL+WPluW+l+OBl+OBn+WApOOCu+ODg+ODiFxyXG4gICggZ19zaXRlX3JlZiApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJzaXRlX3JlZlwiLCBnX3NpdGVfcmVmICkgOiBudWxsO1xyXG4gICggUGdfVGFyZ2V0X3ZhbHVlICkgPyBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCBcIlBnX1RhcmdldFwiLCBbUGdfVGFyZ2V0X3ZhbHVlXSApIDogbnVsbDtcclxuICAoIFBnX0tleXdvcmRfdmFsdWUgKSA/IGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoIFwiUGdfS2V5d29yZFwiLCBbUGdfS2V5d29yZF92YWx1ZV0gKSA6IG51bGw7XHJcbiAgKCBQZ19FbnZfdmFsdWUgKSA/IGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoIFwiUGdfRW52XCIsIFBnX0Vudl92YWx1ZSApIDogbnVsbDtcclxuICAoIGdvQXNlZyApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJBU0FISVNFR1wiLCBnb0FzZWcgKSA6IG51bGw7XHJcbiAgKCBhc2ExMl9tb2RlX3YgKSA/IGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoIFwiYXNhMTJfbW9kZVwiLCBhc2ExMl9tb2RlX3YgKSA6IG51bGw7XHJcbiAgKCBQZ19UeXBlICkgPyBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCBcIlBnX1R5cGVcIiwgUGdfVHlwZSApIDogbnVsbDtcclxuICAoIFBnX0FydGljbGVJZCApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJQZ19BcnRpY2xlSWRcIiwgUGdfQXJ0aWNsZUlkICkgOiBudWxsO1xyXG4gICggYXNhQWRCcm93c2VySUUgKSA/IGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoIFwiQnJvd3Nlcl9JRVwiLCBhc2FBZEJyb3dzZXJJRSApIDogbnVsbDtcclxuICAoIGFydGljbGVfa2luZCApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJhcnRpY2xlX2tpbmRcIiwgYXJ0aWNsZV9raW5kICkgOiBudWxsO1xyXG4gICggYXNhZGlnaV9tZW1iZXJfdHlwZSApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJhc2FkaWdpX21lbWJlcl90eXBlXCIsIGFzYWRpZ2lfbWVtYmVyX3R5cGUgKSA6IG51bGw7XHJcbiAgKCBjb29raWVEZXByZWNhdGlvbkxhYmVsICkgPyBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCBcImNocm9tZV9sYWJlbFwiICwgY29va2llRGVwcmVjYXRpb25MYWJlbCApIDogbnVsbDtcclxuICAvLyBwaWFub+eUqGstdlxyXG4gICggc2VnbWVudElkcyApID8gZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJDeFNlZ21lbnRzXCIgLCBzZWdtZW50SWRzICkgOiBudWxsO1xyXG4gIHdpbmRvd1snc2NfYXNhX2RpZ2lfcHJvcDY3J10gPyBnb29nbGV0YWcucHViYWRzKCkuc2V0VGFyZ2V0aW5nKCAnYWJfdGVzdF8wMycgLCAnYXJ0aWNsZScgKSA6ICcnO1xyXG5cclxuICAvLyBBQuODhuOCueODiOeUqFxyXG4gIGxldCBhYl90ZXN0XzAyID0gbmV3IEFycmF5KDgpLmZpbGwoJ3NvZnRmbG9vcl9BJyk7XHJcbiAgYWJfdGVzdF8wMi5wdXNoKCAnc29mdGZsb29yX0InLCAnc29mdGZsb29yX0MnICk7XHJcbiAgZ29vZ2xldGFnLnB1YmFkcygpLnNldFRhcmdldGluZyggXCJhYl90ZXN0XzAyXCIgLCBhYl90ZXN0XzAyW01hdGguZmxvb3IoIE1hdGgucmFuZG9tKCkgKiBhYl90ZXN0XzAyLmxlbmd0aCApXSApXHJcblxyXG4gIGlmICggUFBJRCApIHtcclxuICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5zZXRQdWJsaXNoZXJQcm92aWRlZElkKCBQUElEICk7XHJcbiAgfVxyXG4gIFxyXG4gIGdvb2dsZXRhZy5wdWJhZHMoKS5kaXNhYmxlSW5pdGlhbExvYWQoKTtcclxuICBnb29nbGV0YWcucHViYWRzKCkuZW5hYmxlU2luZ2xlUmVxdWVzdCgpO1xyXG4gIGdvb2dsZXRhZy5wdWJhZHMoKS5jb2xsYXBzZUVtcHR5RGl2cygpO1xyXG4gIGdvb2dsZXRhZy5lbmFibGVTZXJ2aWNlcygpO1xyXG5cclxuICBpZiAoIG5vbkhlYWRlckJpZGRpbmdTbG90cy5sZW5ndGggPiAwICkge1xyXG4gICAgdGhpcmRQYXJ0eU1hbmFnZXIuc2V0U2VydmljZXMoJ2FkcycsIG5vbkhlYWRlckJpZGRpbmdTbG90cyk7XHJcbiAgfVxyXG4gIC8vIOOBk+OCk+OBqueJuembhuOCglxyXG4gIGRlZmluZVBDSW5mZWVkKCAnRGZwWXVkbzEnLCBbMSwyLDMsNCw1LDZdICk7XHJcbiAvLyDoqJjkuovkuIvluoPlkYpcclxuICBpZiAoZnJlZUFyZWFGb3JBZCA9PT0gXCJPTlwiKSB7XHJcbiAgICBkZWZpbmVQQ0luZmVlZCggJ0RmcFl1ZG8yJywgWzcsOCw5LDEwLDExLDEyXSApO1xyXG4gIH1cclxufSApO1xyXG5cclxuLy8gQTkgYWRTbG90cyDlrprnvqlcclxudmFyIFBnX0NhdGVnb3J5ID0gUEFHRV9GTEFHLklTLkFQSVRBTCA/ICdhcGl0YWwnXHJcbiAgOiBQQUdFX0ZMQUcuSVMuUkVMSUZFID8gJ3JlbGlmZSdcclxuICA6IFBBR0VfRkxBRy5JUy5TT0NDRVIgPyAnc29jY2VyJ1xyXG4gIDogJ2FydGljbGUnO1xyXG52YXIgYXBzdGFnU2xvdHMgPSBbXHJcbiAge1xyXG4gICAgc2xvdElEOiAnMXN0X3JlY3QnLFxyXG4gICAgc2xvdE5hbWU6IGAvNTc0NjUyMTMvd3d3LmFzYWhpLmNvbS9QQy8ke1BnX0NhdGVnb3J5fS8xc3RfcmVjdGAsXHJcbiAgICBzaXplczogW1szMDAsIDI1MF0sIFszMDAsIDYwMF1dXHJcbiAgfSxcclxuICB7XHJcbiAgICBzbG90SUQ6ICcybmRfcmVjdCcsXHJcbiAgICBzbG90TmFtZTogJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUvMm5kX3JlY3QnLFxyXG4gICAgc2l6ZXM6IFtbMzAwLCAyNTBdXVxyXG4gIH1cclxuXTtcclxuaWYgKCBmcmVlQXJlYUZvckFkID09PSBcIk9OXCIgJiYgYWRfa2lqaW5ha2EgPT0gXCJZXCIgKSB7XHJcbiAgICAvLyBhcHN0YWdTbG90cy5wdXNoKHtcclxuICAgIC8vICAgICBzbG90SUQ6ICdraWppbmFrYV9yZWN0JyxcclxuICAgIC8vICAgICBzbG90TmFtZTogJy81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL2FydGljbGUva2lqaW5ha2FfcmVjdCcsXHJcbiAgICAvLyAgICAgc2l6ZXM6IFtbMzAwLCAyNTBdXVxyXG4gICAgLy8gfSk7XHJcbiAgICAvLyBhcHN0YWdTbG90cy5wdXNoKHtcclxuICAgIC8vICAgc2xvdElEOiAna2lqaW5ha2FfcmVjdCcsXHJcbiAgICAvLyAgIG1lZGlhVHlwZTondmlkZW8nXHJcbiAgICAvLyB9KTtcclxuICAgIGFwc3RhZ1Nsb3RzLnB1c2goIHtcclxuICAgICAgc2xvdElEOiAna2lqaW5ha2FfcmVjdCcsXHJcbiAgICAgIHNsb3ROYW1lOiAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvYXJ0aWNsZS9raWppbmFrYV9yZWN0JyxcclxuICAgICAgbWVkaWFUeXBlOiAnbXVsdGktZm9ybWF0JyxcclxuICAgICAgbXVsdGlGb3JtYXRQcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgZGlzcGxheToge1xyXG4gICAgICAgICAgc2l6ZXM6IFtbMzAwLCAyNTBdXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHZpZGVvOiB7XHJcbiAgICAgICAgICBzaXplczogW1szMDAsIDI1MF1dLFxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSApO1xyXG59XHJcbmlmICggZnJlZUFyZWFGb3JBZCA9PT0gXCJPTlwiICkge1xyXG4gICAgLy9UQU0gLSBHdW1HdW0o5p2x5Lqs5LqU6Lyq44Gu44G/5a++6LGhKeKAu2llMTHjga/lr77osaHlpJZcclxuICAgIGlmICggUEFHRV9GTEFHLklTLlRPS1lPXzIwMjAgJiYgYXNhQWRVYUxDLmluZGV4T2YoJ3RyaWRlbnQvNycpID09IC0xICkge1xyXG4gICAgICBhcHN0YWdTbG90cy5wdXNoKCB7XHJcbiAgICAgICAgc2xvdElEOiAnZGl2LWdwdC1hZC0xNTczNjE5ODc1MDA0LTAnLFxyXG4gICAgICAgIHNsb3ROYW1lOiAnLzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvd2VicHVzaCcsXHJcbiAgICAgICAgc2l6ZXM6IFtbMSwgMV1dXHJcbiAgICAgIH0gKTtcclxuICAgIH1cclxufVxyXG5cclxuZ29vZ2xldGFnLmNtZC5wdXNoKCBmdW5jdGlvbiAoKSB7XHJcbiAgZmV0Y2hIZWFkZXJCaWRzKGFwc3RhZ1Nsb3RzLCBoZWFkZXJCaWRkaW5nU2xvdHMsIHRoaXJkUGFydHlNYW5hZ2VyLnNldFNlcnZpY2VzKTtcclxufSApO1xyXG5cclxuLy8gZnVuY3Rpb24gZ2V0UHJlYmlkSW5zdHJlYW1BZFVybChjYWxsYmFjaykge1xyXG53aW5kb3cuZ2V0UHJlYmlkSW5zdHJlYW1BZFVybCA9ICggY2FsbGJhY2sgKSA9PiB7XHJcblxyXG4gIHZhciBkZXNjcmlwdGlvblVybCA9IGhyZWYuc3BsaXQoIC9bPyNdLyApWzBdO1xyXG5cclxuICBpZiAoIHR5cGVvZiBhc2ExMl9tb2RlX3YgPT09IFwidW5kZWZpbmVkXCIgKSB7XHJcbiAgICB2YXIgYXNhMTJfbW9kZSA9IFwiXCI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciBhc2ExMl9tb2RlID0gYXNhMTJfbW9kZV92O1xyXG4gIH1cclxuXHJcbiAgaWYgKCB0eXBlb2YgUGdfVGFyZ2V0X3ZhbHVlID09PSBcInVuZGVmaW5lZFwiICkge1xyXG4gICAgdmFyIFBnX1RhcmdldCA9IFwiXCI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciBQZ19UYXJnZXQgPSBQZ19UYXJnZXRfdmFsdWU7XHJcbiAgfVxyXG5cclxuICBpZiAoIHR5cGVvZiBQZ19LZXl3b3JkX3ZhbHVlID09PSBcInVuZGVmaW5lZFwiICkge1xyXG4gICAgdmFyIFBnX0tleXdvcmQgPSBcIlwiO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB2YXIgUGdfS2V5d29yZCA9IFBnX0tleXdvcmRfdmFsdWU7XHJcbiAgfVxyXG5cclxuICB2YXIgZGVmYXVsdFZpZGVvQWRVcmwgPSBcImh0dHBzOi8vcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dhbXBhZC9hZHM/XCJcclxuICAgICsgXCJzej02NDB4MzYwJlwiXHJcbiAgICArIFwiaXU9LzU3NDY1MjEzL3d3dy5hc2FoaS5jb20vUEMvdmlkZW8mXCJcclxuICAgICsgXCJpbXBsPXMmXCJcclxuICAgICsgXCJnZGZwX3JlcT0xJlwiXHJcbiAgICArIFwiZW52PXZwJlwiXHJcbiAgICArIFwib3V0cHV0PXZhc3QmXCJcclxuICAgICsgXCJ1bnZpZXdlZF9wb3NpdGlvbl9zdGFydD0xJlwiXHJcbiAgICArIFwidXJsPVtyZWZlcnJlcl91cmxdJlwiXHJcbiAgICArIFwiZGVzY3JpcHRpb25fdXJsPVwiICsgZGVzY3JpcHRpb25VcmwgKyBcIiZcIlxyXG4gICAgKyBcImNvcnJlbGF0b3I9W3RpbWVzdGFtcF0mXCJcclxuICAgICsgXCJjdXN0X3BhcmFtcz1QZ19UYXJnZXQlM0R7cGFnZVZhcmlhYmxlLlBnX1RhcmdldF92YWx1ZX0lMjZQZ19LZXl3b3JkJTNEe3BhZ2VWYXJpYWJsZS5QZ19LZXl3b3JkX3ZhbHVlfSUyNmFzYTEyX21vZGUlM0R7cGFnZVZhcmlhYmxlLmFzYTEyX21vZGVfdn1cIjtcclxuXHJcbiAgdmFyIGFkc2VydmVyUmVxdWVzdFNlbnQgPSBmYWxzZTtcclxuICB2YXIgbXlDYWxsYmFjayA9IGZ1bmN0aW9uKCB2aWRlb0JpZFJlc3VsdCApIHtcclxuICAgIGlmICggYWRzZXJ2ZXJSZXF1ZXN0U2VudCApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYWRzZXJ2ZXJSZXF1ZXN0U2VudCA9IHRydWU7XHJcblxyXG4gICAgdmFyIHZpZGVvVVJMO1xyXG4gICAgaWYgKCAoIHR5cGVvZiB2aWRlb0JpZFJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcgKSAmJiAoIHR5cGVvZiB2aWRlb0JpZFJlc3VsdC5hZFRhZ1VybCAhPT0gJ3VuZGVmaW5lZCcgKSApIHtcclxuICAgICAgdmlkZW9VUkwgPSB2aWRlb0JpZFJlc3VsdC5hZFRhZ1VybCArIFwiJTI2UGdfVGFyZ2V0JTNEXCIgKyBQZ19UYXJnZXQgKyBcIiUyNlBnX0tleXdvcmQlM0RcIiArIFBnX0tleXdvcmQgKyBcIiUyNmFzYTEyX21vZGUlM0RcIiArIGFzYTEyX21vZGUgKyBcIiZkZXNjcmlwdGlvbl91cmw9XCIgKyBkZXNjcmlwdGlvblVybDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZpZGVvVVJMID0gZGVmYXVsdFZpZGVvQWRVcmw7XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayggdmlkZW9VUkwgKTtcclxuICB9O1xyXG5cclxuICBwYmpzLnF1ZS5wdXNoKCBmdW5jdGlvbigpIHtcclxuICAgIHBianMucnAucmVxdWVzdFZpZGVvQmlkcygge1xyXG4gICAgICBhZFNsb3ROYW1lOiBcIi81NzQ2NTIxMy93d3cuYXNhaGkuY29tL1BDL3ZpZGVvXCIsXHJcbiAgICAgIHBsYXllclNpemU6IFs2NDAsIDM2MF0sXHJcbiAgICAgIGNhbGxiYWNrOiBteUNhbGxiYWNrLFxyXG4gICAgICBkYXRhOiB7fVxyXG4gICAgfSApO1xyXG4gIH0gKTtcclxuXHJcbiAgLy8gZnVuY3Rpb24gdGltZW91dFxyXG4gIHdpbmRvdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XHJcbiAgICBteUNhbGxiYWNrKCk7XHJcbiAgfSwgNDUwMCApO1xyXG59XHJcblxyXG4iLCIvKiFcbiAqIGluLXZpZXcgMC42LjEgLSBHZXQgbm90aWZpZWQgd2hlbiBhIERPTSBlbGVtZW50IGVudGVycyBvciBleGl0cyB0aGUgdmlld3BvcnQuXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgQ2FtIFdpZWdlcnQgPGNhbUBjYW13aWVnZXJ0LmNvbT4gLSBodHRwczovL2NhbXdpZWdlcnQuZ2l0aHViLmlvL2luLXZpZXdcbiAqIExpY2Vuc2U6IE1JVFxuICovXG4hZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLmluVmlldz1lKCk6dC5pblZpZXc9ZSgpfSh0aGlzLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUocil7aWYobltyXSlyZXR1cm4gbltyXS5leHBvcnRzO3ZhciBpPW5bcl09e2V4cG9ydHM6e30saWQ6cixsb2FkZWQ6ITF9O3JldHVybiB0W3JdLmNhbGwoaS5leHBvcnRzLGksaS5leHBvcnRzLGUpLGkubG9hZGVkPSEwLGkuZXhwb3J0c312YXIgbj17fTtyZXR1cm4gZS5tPXQsZS5jPW4sZS5wPVwiXCIsZSgwKX0oW2Z1bmN0aW9uKHQsZSxuKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQpe3JldHVybiB0JiZ0Ll9fZXNNb2R1bGU/dDp7XCJkZWZhdWx0XCI6dH19dmFyIGk9bigyKSxvPXIoaSk7dC5leHBvcnRzPW9bXCJkZWZhdWx0XCJdfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJihcIm9iamVjdFwiPT1lfHxcImZ1bmN0aW9uXCI9PWUpfXQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsbil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6e1wiZGVmYXVsdFwiOnR9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBpPW4oOSksbz1yKGkpLHU9bigzKSxmPXIodSkscz1uKDQpLGM9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXt2YXIgdD0xMDAsZT1bXCJzY3JvbGxcIixcInJlc2l6ZVwiLFwibG9hZFwiXSxuPXtoaXN0b3J5OltdfSxyPXtvZmZzZXQ6e30sdGhyZXNob2xkOjAsdGVzdDpzLmluVmlld3BvcnR9LGk9KDAsb1tcImRlZmF1bHRcIl0pKGZ1bmN0aW9uKCl7bi5oaXN0b3J5LmZvckVhY2goZnVuY3Rpb24odCl7blt0XS5jaGVjaygpfSl9LHQpO2UuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gYWRkRXZlbnRMaXN0ZW5lcih0LGkpfSksd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXImJmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsZnVuY3Rpb24oKXtuZXcgTXV0YXRpb25PYnNlcnZlcihpKS5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX0pO3ZhciB1PWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXt2YXIgZT1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCkpO3JldHVybiBuLmhpc3RvcnkuaW5kZXhPZih0KT4tMT9uW3RdLmVsZW1lbnRzPWU6KG5bdF09KDAsZltcImRlZmF1bHRcIl0pKGUsciksbi5oaXN0b3J5LnB1c2godCkpLG5bdF19fTtyZXR1cm4gdS5vZmZzZXQ9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gci5vZmZzZXQ7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIHR9O3JldHVybltcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwibGVmdFwiXS5mb3JFYWNoKGUodCk/ZnVuY3Rpb24oZSl7cmV0dXJuIHIub2Zmc2V0W2VdPXR9OmZ1bmN0aW9uKG4pe3JldHVybiBlKHRbbl0pP3Iub2Zmc2V0W25dPXRbbl06bnVsbH0pLHIub2Zmc2V0fSx1LnRocmVzaG9sZD1mdW5jdGlvbih0KXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgdCYmdD49MCYmdDw9MT9yLnRocmVzaG9sZD10OnIudGhyZXNob2xkfSx1LnRlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD9yLnRlc3Q9dDpyLnRlc3R9LHUuaXM9ZnVuY3Rpb24odCl7cmV0dXJuIHIudGVzdCh0LHIpfSx1Lm9mZnNldCgwKSx1fX07ZVtcImRlZmF1bHRcIl09YygpfSxmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gbiYmdChlLnByb3RvdHlwZSxuKSxyJiZ0KGUsciksZX19KCksaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyKXtuKHRoaXMsdCksdGhpcy5vcHRpb25zPXIsdGhpcy5lbGVtZW50cz1lLHRoaXMuY3VycmVudD1bXSx0aGlzLmhhbmRsZXJzPXtlbnRlcjpbXSxleGl0OltdfSx0aGlzLnNpbmdsZXM9e2VudGVyOltdLGV4aXQ6W119fXJldHVybiByKHQsW3trZXk6XCJjaGVja1wiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5lbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPXQub3B0aW9ucy50ZXN0KGUsdC5vcHRpb25zKSxyPXQuY3VycmVudC5pbmRleE9mKGUpLGk9cj4tMSxvPW4mJiFpLHU9IW4mJmk7byYmKHQuY3VycmVudC5wdXNoKGUpLHQuZW1pdChcImVudGVyXCIsZSkpLHUmJih0LmN1cnJlbnQuc3BsaWNlKHIsMSksdC5lbWl0KFwiZXhpdFwiLGUpKX0pLHRoaXN9fSx7a2V5Olwib25cIix2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmhhbmRsZXJzW3RdLnB1c2goZSksdGhpc319LHtrZXk6XCJvbmNlXCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5zaW5nbGVzW3RdLnVuc2hpZnQoZSksdGhpc319LHtrZXk6XCJlbWl0XCIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IoO3RoaXMuc2luZ2xlc1t0XS5sZW5ndGg7KXRoaXMuc2luZ2xlc1t0XS5wb3AoKShlKTtmb3IodmFyIG49dGhpcy5oYW5kbGVyc1t0XS5sZW5ndGg7LS1uPi0xOyl0aGlzLmhhbmRsZXJzW3RdW25dKGUpO3JldHVybiB0aGlzfX1dKSx0fSgpO2VbXCJkZWZhdWx0XCJdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBpKHQsZSl9fSxmdW5jdGlvbih0LGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIG4odCxlKXt2YXIgbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9bi50b3AsaT1uLnJpZ2h0LG89bi5ib3R0b20sdT1uLmxlZnQsZj1uLndpZHRoLHM9bi5oZWlnaHQsYz17dDpvLHI6d2luZG93LmlubmVyV2lkdGgtdSxiOndpbmRvdy5pbm5lckhlaWdodC1yLGw6aX0sYT17eDplLnRocmVzaG9sZCpmLHk6ZS50aHJlc2hvbGQqc307cmV0dXJuIGMudD5lLm9mZnNldC50b3ArYS55JiZjLnI+ZS5vZmZzZXQucmlnaHQrYS54JiZjLmI+ZS5vZmZzZXQuYm90dG9tK2EueSYmYy5sPmUub2Zmc2V0LmxlZnQrYS54fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLGUuaW5WaWV3cG9ydD1ufSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihlKXt2YXIgbj1cIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmZS5PYmplY3Q9PT1PYmplY3QmJmU7dC5leHBvcnRzPW59KS5jYWxsKGUsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKDUpLGk9XCJvYmplY3RcIj09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLG89cnx8aXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO3QuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gcih0LGUsbil7ZnVuY3Rpb24gcihlKXt2YXIgbj14LHI9bTtyZXR1cm4geD1tPXZvaWQgMCxFPWUsdz10LmFwcGx5KHIsbil9ZnVuY3Rpb24gYSh0KXtyZXR1cm4gRT10LGo9c2V0VGltZW91dChoLGUpLE0/cih0KTp3fWZ1bmN0aW9uIGwodCl7dmFyIG49dC1PLHI9dC1FLGk9ZS1uO3JldHVybiBfP2MoaSxnLXIpOml9ZnVuY3Rpb24gZCh0KXt2YXIgbj10LU8scj10LUU7cmV0dXJuIHZvaWQgMD09PU98fG4+PWV8fG48MHx8XyYmcj49Z31mdW5jdGlvbiBoKCl7dmFyIHQ9bygpO3JldHVybiBkKHQpP3AodCk6dm9pZChqPXNldFRpbWVvdXQoaCxsKHQpKSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gaj12b2lkIDAsVCYmeD9yKHQpOih4PW09dm9pZCAwLHcpfWZ1bmN0aW9uIHYoKXt2b2lkIDAhPT1qJiZjbGVhclRpbWVvdXQoaiksRT0wLHg9Tz1tPWo9dm9pZCAwfWZ1bmN0aW9uIHkoKXtyZXR1cm4gdm9pZCAwPT09aj93OnAobygpKX1mdW5jdGlvbiBiKCl7dmFyIHQ9bygpLG49ZCh0KTtpZih4PWFyZ3VtZW50cyxtPXRoaXMsTz10LG4pe2lmKHZvaWQgMD09PWopcmV0dXJuIGEoTyk7aWYoXylyZXR1cm4gaj1zZXRUaW1lb3V0KGgsZSkscihPKX1yZXR1cm4gdm9pZCAwPT09aiYmKGo9c2V0VGltZW91dChoLGUpKSx3fXZhciB4LG0sZyx3LGosTyxFPTAsTT0hMSxfPSExLFQ9ITA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKGYpO3JldHVybiBlPXUoZSl8fDAsaShuKSYmKE09ISFuLmxlYWRpbmcsXz1cIm1heFdhaXRcImluIG4sZz1fP3ModShuLm1heFdhaXQpfHwwLGUpOmcsVD1cInRyYWlsaW5nXCJpbiBuPyEhbi50cmFpbGluZzpUKSxiLmNhbmNlbD12LGIuZmx1c2g9eSxifXZhciBpPW4oMSksbz1uKDgpLHU9bigxMCksZj1cIkV4cGVjdGVkIGEgZnVuY3Rpb25cIixzPU1hdGgubWF4LGM9TWF0aC5taW47dC5leHBvcnRzPXJ9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1uKDYpLGk9ZnVuY3Rpb24oKXtyZXR1cm4gci5EYXRlLm5vdygpfTt0LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIHIodCxlLG4pe3ZhciByPSEwLGY9ITA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKHUpO3JldHVybiBvKG4pJiYocj1cImxlYWRpbmdcImluIG4/ISFuLmxlYWRpbmc6cixmPVwidHJhaWxpbmdcImluIG4/ISFuLnRyYWlsaW5nOmYpLGkodCxlLHtsZWFkaW5nOnIsbWF4V2FpdDplLHRyYWlsaW5nOmZ9KX12YXIgaT1uKDcpLG89bigxKSx1PVwiRXhwZWN0ZWQgYSBmdW5jdGlvblwiO3QuZXhwb3J0cz1yfSxmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHR9dC5leHBvcnRzPW59XSl9KTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSB1c2VkICdtb2R1bGUnIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MDgpO1xuIl0sIm5hbWVzIjpbIndlYnBhY2tRdWV1ZXMiLCJ3ZWJwYWNrRXhwb3J0cyIsIndlYnBhY2tFcnJvciIsInJlc29sdmVRdWV1ZSIsInVzZXJBZ2VudCIsIndpbmRvdyIsIm5hdmlnYXRvciIsInRvTG93ZXJDYXNlIiwiaHJlZiIsImRvY3VtZW50IiwibG9jYXRpb24iLCJjb29raWUiLCJzY19hc2FfZGlnaV9saXN0MiIsImFzYVByZWJpZFZpZGVvSW5zdHJlbUFkIiwic2NfYXNhX2RpZ2lfcHJvcDUzIiwic2NfYXNhX2RpZ2lfcHJvcDQ4Iiwic2NfYXNhX2RpZ2lfcHJvcDQwIiwiYXNhMTJfbW9kZSIsImFkX2tpamluYWthIiwiRU5BQkxFX0ZSRUVfQVJFQV9BRCIsInBhcmVudCIsImNvbmZpZ0lkIiwiQ09OVEVOVF9DTEFTU0VTIiwiX2RlZmluZVByb3BlcnR5IiwiX0NPTlRFTlRfQ0xBU1NFUyIsIk5BVF9BUkVBMSIsIkNFTlRFUl9FWEFNX0FSRUExIiwiVE9LWU9fMjAyMF9BUkVBMSIsIlJFTElGRV9BUkVBMSIsIk5PUk1BTF9BUkVBMSIsIkFQSVRBTF9BUkVBMSIsIk5PUk1BTF9BUkVBMiIsIlNPQ0NFUl9BUkVBMSIsIk5PUk1BTF9BUkVBMyIsIkVEVV9BUkVBMSIsIk5PUk1BTF9BUkVBNCIsIk5BVF9BUkVBMiIsIk5PUk1BTF9BUkVBNSIsIlBBR0VfRkxBR1MiLCJJUyIsIkNFTlRFUl9FWEFNIiwiVE9LWU9fMjAyMCIsIlJFTElGRSIsIk5PUk1BTCIsIkFQSVRBTCIsIlNPQ0NFUiIsIkVEVSIsIk5BVCIsIm1ha2VHZW9FZGdlVGFnIiwiZ3J1bWkiLCJjZmciLCJhZHZzIiwicHViSWRzIiwia2V5IiwiZ2VvZWRnZV9lbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJhc3luYyIsInNyYyIsImdlb2VkZ2VfdGFyZ2V0X2VsZW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImluc2VydEJlZm9yZSIsImZpcnN0Q2hpbGQiLCJnb29nbGV0YWdSZXBsYWNlciIsImFkdmVydGlzZXJJZHMiLCJnZXRTY3JvbGxUb3AiLCJzY3JvbGxZIiwicHJldmlvdXNUaW1lU3RhbXAiLCJwcmV2aW91c1Njcm9sbFRvcCIsInJlcGxhY2VyQ29uZmlnTWFwIiwicmVwbGFjaW5nTWFwIiwicmVwbGFjZSIsIm9yaWdpbmFsSWQiLCJjb25maWciLCJhY3RpdmUiLCJlbGVtZW50Iiwib3JpZ2luYWxHcHRTbG90IiwicmVwbGFjZXJFbGVtZW50Iiwic2V0QXR0cmlidXRlIiwicmVwbGFjZXIiLCJpZCIsImNsYXNzQXR0ciIsImdldEF0dHJpYnV0ZSIsInN0eWxlQXR0ciIsInN0eWxlIiwiZGlzcGxheSIsInBvc2l0aW9uIiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50Iiwib3JpZ2luYWxFbGVtZW50IiwiZ29vZ2xldGFnIiwiY21kIiwicHVzaCIsInNsb3QiLCJkZWZpbmVTbG90IiwiYWRVbml0UGF0aCIsInNpemUiLCJhZGRTZXJ2aWNlIiwicHViYWRzIiwicmVmcmVzaCIsImRlZmluZSIsInJlcGxhY2VySWQiLCJvblNsb3RSZW5kZXJFbmRlZCIsImUiLCJnZXRTbG90RWxlbWVudElkIiwicmVwbGFjaW5nIiwiaXNFbXB0eSIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsImNsZWFyIiwiY29uc29sZSIsImVycm9yIiwib25SZXBsYWNlclJlbmRlckVuZGVkIiwiZXZlbnQiLCJyZXNwb25zZUluZm8iLCJnZXRSZXNwb25zZUluZm9ybWF0aW9uIiwiaW5jbHVkZXMiLCJhZHZlcnRpc2VySWQiLCJnZXRFbGVtZW50QnlJZCIsInNldHVwIiwib25JbXByZXNzaW9uVmlld2FibGUiLCJncHRTbG90IiwiZWxlbWVudElkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2hlY2siLCJ0aW1lc3RhbXAiLCJ1bmRlZmluZWQiLCJ0aW1lRGlmZiIsInNwZWVkIiwia2V5cyIsIk9iamVjdCIsImkiLCJsZW5ndGgiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwidGhyZXNob2xkIiwiTWF0aCIsImxvZyIsImhlaWdodCIsImFicyIsInRvcCIsImJvdHRvbSIsInNldFRpbWVvdXQiLCJsb2FkUHJlYmlkIiwiZG1fcXVlcnlfcGFyYW1zIiwicGJqc0VsIiwicGJqc1RhcmdldEVsIiwiYW1hem9uQTkiLCJhOSIsImEiLCJwIiwicyIsInQiLCJBIiwiZyIsInEiLCJjIiwiciIsIl9RIiwiaW5pdCIsImFyZ3VtZW50cyIsImZldGNoQmlkcyIsInNldERpc3BsYXlCaWRzIiwidGFyZ2V0aW5nS2V5cyIsInBhZ2VGbGFnIiwiZG1RdWVyeVBhcmFtcyIsInBianMiLCJnZXRBcHN0YWciLCJhcHN0YWdQdWJJZCIsInRpbWVPdXRPYmoiLCJhcHN0YWdCaWQiLCJmYWlsU2FmZSIsImluaXRCaWRNYW5hZ2VyIiwiaW5pdEdvb2dsZXRhZyIsImluaXRQYWdlRmxhZyIsImluaXREbVF1ZXJ5UGFyYW1zIiwiX2luaXRUaW1lb3V0T2JqJGZhaWxTIiwiX2luaXRUaW1lb3V0T2JqJGFwc3RhIiwiaW5pdFRpbWVvdXRPYmoiLCJhcHN0YWciLCJxdWUiLCJpbml0QXBzdGFnIiwiX29iamVjdFNwcmVhZCIsInB1YklEIiwiYWRTZXJ2ZXIiLCJiaWRUaW1lb3V0IiwidmlkZW9BZFNlcnZlciIsIl91bnVzZWQiLCJmZXRjaEhlYWRlckJpZHMiLCJhcHN0YWdTbG90cyIsImhlYWRlckJpZGRpbmdTbG90cyIsInNldFNlcnZpY2VzIiwiYmlkZGVycyIsInJlcXVlc3RNYW5hZ2VyIiwiYWRzZXJ2ZXJSZXF1ZXN0U2VudCIsImZvckVhY2giLCJiaWRkZXIiLCJoZWFkZXJCaWRkZXJCYWNrIiwiYWxsQmlkZGVyc0JhY2siLCJzZW5kQWRzZXJ2ZXJSZXF1ZXN0IiwiZXZlcnkiLCJzbG90cyIsImJpZHMiLCJfcGFnZUZsYWciLCJfc3RlcCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibiIsImRvbmUiLCJiaWQiLCJ2YWx1ZSIsImFzYUd1bUd1bUZsYWciLCJlcnIiLCJmIiwicnAiLCJyZXF1ZXN0QmlkcyIsImNhbGxiYWNrIiwiZ3B0U2xvdE9iamVjdHMiLCJnZXRIQlRpbWVvdXRPYmplY3QiLCJ0aW1lb3V0X2FycmF5IiwiZmFpbFNhZmVUaW1lb3V0IiwicHJlYmlkX3dyYXBwZXJfa2V5Iiwic2V0SUQ1IiwiSUQ1RXNwQ29uZmlnIiwicGFydG5lcklkIiwiY3hDb250ZXh0dWFsSWRzIiwic2V0UGlhbm9TZWdtZW50cyIsImNYIiwiY2FsbFF1ZXVlIiwidGltZW91dElkIiwiZ2V0U2VnbWVudHMiLCJzZWdtZW50cyIsImZpbHRlciIsIm1hcCIsInNob3J0SWQiLCJzZXRUYXJnZXRpbmciLCJjbGVhclRpbWVvdXQiLCJnZXRVc2VyU2VnbWVudElkc0xvY2FsIiwiX3R5cGVvZiIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJzcGxpdCIsImZldGNoUmVhZGVyUHJlZGljdGlvbiIsInBnQXJ0aWNsZUlkIiwicmVxIiwiWE1MSHR0cFJlcXVlc3QiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwic3RhdHVzIiwib2JqIiwiYWdlVmFsdWVzIiwiZ2VuZGVyVmFsdWVzIiwiam9iVmFsdWVzIiwiayIsInZhbCIsImdldE1heEtleSIsImFyciIsInJlZHVjZSIsImFjYyIsImN1ciIsInByZWRpY3Rpb25WYWx1ZXMiLCJCb29sZWFuIiwiam9pbiIsImV4ZWN1dGVSZWFkZXJQcmVkaWN0aW9uIiwiSlNPTiIsInBhcnNlIiwicmVzcG9uc2VUZXh0Iiwib3BlbiIsImNvbmNhdCIsInRpbWVvdXQiLCJzZW5kIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImV4cG9ydHMiLCJPcCIsInByb3RvdHlwZSIsImhhc093biIsImhhc093blByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJkZXNjIiwiJFN5bWJvbCIsIlN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiaXRlcmF0b3IiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwidG9TdHJpbmdUYWciLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJzZWxmIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsImNyZWF0ZSIsImNvbnRleHQiLCJDb250ZXh0IiwibWFrZUludm9rZU1ldGhvZCIsInRyeUNhdGNoIiwiZm4iLCJhcmciLCJjYWxsIiwiQ29udGludWVTZW50aW5lbCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiZ2V0UHJvdG90eXBlT2YiLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfX2F3YWl0IiwidGhlbiIsInVud3JhcHBlZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwic3RhdGUiLCJFcnJvciIsImRvbmVSZXN1bHQiLCJkZWxlZ2F0ZSIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwibWV0aG9kTmFtZSIsIlR5cGVFcnJvciIsImluZm8iLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXRlcmFibGUiLCJpdGVyYXRvck1ldGhvZCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiZ2VuRnVuIiwiY3RvciIsImNvbnN0cnVjdG9yIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiUHJvbWlzZSIsIml0ZXIiLCJvYmplY3QiLCJyZXZlcnNlIiwicG9wIiwic2tpcFRlbXBSZXNldCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsIl9uZXh0IiwiX3Rocm93IiwiZ2V0R29vZ2xldGFnIiwiZ2V0T1MiLCJpbmRleE9mIiwiZ2V0QnJvd3NlciIsImdldFBnVGFyZ2V0VmFsdWUiLCJicm93c2VyIiwiUGdfVGFyZ2V0X21vdmllX2FycmF5IiwiUGdfVGFyZ2V0X3ZhbHVlIiwiUGdfVGFyZ2V0X2FycmF5IiwiaiIsImdldFBnS2V5d29yZFZhbHVlIiwiUGdfS2V5d29yZF92YWx1ZSIsIlBnX0tleXdvcmRfYXJyYXkiLCJnZXRQZ0VudlZhbHVlIiwiUGdfRW52X3ZhbHVlIiwiZ2V0U2l0ZVJlZiIsImdldEFvbmVTZWdtZW50IiwiZ29BY24iLCJnb0FjbyIsImdvQXBvcyIsImdvQXNlZyIsInN1YnN0cmluZyIsInVuZXNjYXBlIiwic3Vic3RyIiwiZ2V0UGdBcnRpY2xlSWQiLCJnZXRBc2FoaU1lbWJlclR5cGUiLCJhc2ExMl9tb2RlX3YiLCJTdHJpbmciLCJhc2FoaV9jb29raWVzIiwiYXNhZGlnaV9tZW1iZXJfdHlwZSIsImFzYWhpX2Nvb2tpZSIsInRlc3QiLCJnZXRQUElEIiwicGxhc21hX3VpZCIsInBsYXNtYV9jaWQiLCJ0cmltIiwiZ2V0QWRLaWppbmFrYSIsImdldEZyZWVBcmVhRm9yQWQiLCJmcmVlQXJlYUZvckFkIiwiZ2V0QXNhQWRCcm93c2VySUUiLCJnZXRBcnRpY2xlS2luZCIsImFydGljbGVfa2luZCIsImdldEhyZWYiLCJnZXRVc2VyQWdlbnQiLCJnZXRQYWdlRmxhZyIsImNvbnRlbnRfY2xhc3NlcyIsInBhZ2VfZmxhZ3MiLCJtZXRhVGFnIiwiaGVhZCIsImNoaWxkcmVuIiwibWV0YUxlbmd0aCIsInBhZ2VfY2xhc3NfYXJyYXkiLCJkaXMiLCJjb250ZW50IiwiZmluZCIsImNvbnRlbnRDbGFzc2VzQXJyYXkiLCJGTEFHX0tFWSIsInNvbWUiLCJjb250ZW50Q2xhc3MiLCJnZXRDb29raWVEZXByZWNhdGlvbkxhYmVsIiwiX3JlZiIsIl9jYWxsZWUiLCJjb29raWVEZXByZWNhdGlvbkxhYmVsIiwiX2NvbnRleHQiLCJnZXRWYWx1ZSIsImxhYmVsIiwiYXJncyIsImFwcGx5IiwibG9jYWxHb29nbGV0YWciLCJzZXJ2aWNlcyIsImxvY2FsU2xvdHMiLCJzZXJ2aWNlIiwiYWxsU2VydmljZXNCYWNrIiwiUkVRX0tWX1dPUkRTIiwicGdUb3BpY3NUYXJnZXRpbmciLCJraWppS2V5d29yZHMiLCJzZW5kS3ZXb3JkcyIsInJlcUt2V29yZHMiLCJwZ1RvcGljc1ZhbHVlTGlzdCIsInBnVG9waWNzV29yZExpc3QiLCJraWppS2V5d29yZCIsIklEIiwidG9waWNzVGFyZ2V0aW5nIiwiQURfVE9QSUNTX1dPUkRTIiwiQXJyYXkiLCJwZ1RvcGljc1ZhbHVlcyIsIndvcmRzIiwiY3VycmVudERvbWFpbiIsImhvc3RuYW1lIiwiYXNzZXREb21haW4iLCJhcnRpY2xlSWQiLCJwYXRobmFtZSIsIm1hdGNoIiwiaW5WaWV3IiwiUGdfQXJ0aWNsZUlkIiwic2l0ZV9pbmZvIiwiZmxvb3IiLCJyYW5kb20iLCJvcyIsInRtcFZhbHVlIiwic29ydCIsImluZGV4IiwidGhpcmRQYXJ0eU1hbmFnZXIiLCJQQUdFX0ZMQUciLCJub25IZWFkZXJCaWRkaW5nU2xvdHMiLCJnX3NpdGVfcmVmIiwiX3NpdGVfaW5mbyRnZXRBc2FoaU1lMiIsIl9zbGljZWRUb0FycmF5IiwiYXNhQWRVYUxDIiwiUGdfVHlwZSIsImFzYUFkQnJvd3NlcklFIiwic2VnbWVudElkcyIsIlBQSUQiLCJzY19hc2FfZGlnaV9waWQiLCJkZWZpbmVQQ0luZmVlZCIsInRhcmdldF9lbG1lbnRfaWRfbmFtZSIsImluZmVlZF9pbmRleHMiLCJvcHRfZGl2cyIsImluZmVlZF9pbmRleCIsIm9wdF9kaXYiLCJhZF91bml0X25hbWUiLCJkZWJ1ZyIsImFkZEV2ZW50TGlzdGVuZXIiLCJhYl90ZXN0XzAyIiwiZmlsbCIsInNldFB1Ymxpc2hlclByb3ZpZGVkSWQiLCJkaXNhYmxlSW5pdGlhbExvYWQiLCJlbmFibGVTaW5nbGVSZXF1ZXN0IiwiY29sbGFwc2VFbXB0eURpdnMiLCJlbmFibGVTZXJ2aWNlcyIsIlBnX0NhdGVnb3J5Iiwic2xvdElEIiwic2xvdE5hbWUiLCJzaXplcyIsIm1lZGlhVHlwZSIsIm11bHRpRm9ybWF0UHJvcGVydGllcyIsInZpZGVvIiwiZ2V0UHJlYmlkSW5zdHJlYW1BZFVybCIsImRlc2NyaXB0aW9uVXJsIiwiUGdfVGFyZ2V0IiwiUGdfS2V5d29yZCIsImRlZmF1bHRWaWRlb0FkVXJsIiwibXlDYWxsYmFjayIsInZpZGVvQmlkUmVzdWx0IiwidmlkZW9VUkwiLCJhZFRhZ1VybCIsInJlcXVlc3RWaWRlb0JpZHMiLCJhZFNsb3ROYW1lIiwicGxheWVyU2l6ZSIsImRhdGEiLCJtb2R1bGUiLCJsb2FkZWQiLCJtIiwiX19lc01vZHVsZSIsIm8iLCJoaXN0b3J5Iiwib2Zmc2V0IiwiaW5WaWV3cG9ydCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwiYm9keSIsImF0dHJpYnV0ZXMiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwidSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJlbGVtZW50cyIsImlzIiwidGhpcyIsIm9wdGlvbnMiLCJjdXJyZW50IiwiaGFuZGxlcnMiLCJlbnRlciIsImV4aXQiLCJzaW5nbGVzIiwiZW1pdCIsInNwbGljZSIsInVuc2hpZnQiLCJyaWdodCIsImxlZnQiLCJ3aWR0aCIsImlubmVyV2lkdGgiLCJiIiwiaW5uZXJIZWlnaHQiLCJsIiwieCIsInkiLCJGdW5jdGlvbiIsIkUiLCJ3IiwiaCIsIk0iLCJPIiwiXyIsImQiLCJUIiwidiIsImxlYWRpbmciLCJtYXhXYWl0IiwidHJhaWxpbmciLCJjYW5jZWwiLCJmbHVzaCIsIm1heCIsIm1pbiIsIkRhdGUiLCJub3ciLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwicXVldWUiLCJoYXNBd2FpdCIsImN1cnJlbnREZXBzIiwib3V0ZXJSZXNvbHZlIiwiZGVwUXVldWVzIiwiU2V0IiwicHJvbWlzZSIsInJlaiIsImRlcHMiLCJkZXAiLCJyZXQiLCJ3cmFwRGVwcyIsImdldFJlc3VsdCIsImZuUXVldWUiLCJoYXMiLCJhZGQiLCJnZXR0ZXIiLCJkZWZpbml0aW9uIiwiZ2V0IiwicHJvcCJdLCJzb3VyY2VSb290IjoiIn0=