weboffice-js-sdk 2.0.5-beta.12 → 2.0.5-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebOfficeJSSDK=t():e.WebOfficeJSSDK=t()}(self,(()=>(()=>{var e={1121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this.alphabet=e,this.lookup=this.createLookupTable()}return e.getBytes=function(e){for(var t=[],r=0;r<e.length;r++){var n=e.charCodeAt(r);t.push(255&n)}return t},e.getString=function(e){return String.fromCharCode.apply(this,e)},e.createInstance=function(){return this.createInstanceWithGmpCharacterSet()},e.createInstanceWithGmpCharacterSet=function(){return new e(e.CharacterSets.GMP)},e.createInstanceWithInvertedCharacterSet=function(){return new e(e.CharacterSets.INVERTED)},e.translate=function(e,t){for(var r=[],n=0,o=e;n<o.length;n++){var i=o[n];r.push(t[i])}return r},e.convert=function(e,t,r){for(var n=[],o=e;o.length>0;){for(var i=[],a=0,s=0,c=o;s<c.length;s++){var u=(255&c[s])+a*t,l=(u-u%r)/r;a=u%r,(i.length>0||l>0)&&i.push(l)}n.push(a),o=i}for(var d=0;d<e.length-1&&0===e[d];d++)n.push(0);return n.reverse()},e.prototype.encode=function(t){var r=e.convert(t,e.STANDARD_BASE,e.TARGET_BASE);return e.translate(r,this.alphabet)},e.prototype.decode=function(t){var r=e.translate(t,this.lookup);return e.convert(r,e.TARGET_BASE,e.STANDARD_BASE)},e.prototype.encodeStr=function(t){return e.getString(this.encode(e.getBytes(t)))},e.prototype.decodeStr=function(t){return e.getString(this.decode(e.getBytes(t)))},e.prototype.createLookupTable=function(){for(var e=new Array(256),t=0;t<256;t++)e[this.alphabet[t]]=255&t;return e},e.CharacterSets={GMP:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0)],INVERTED:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0)]},e.STANDARD_BASE=256,e.TARGET_BASE=62,e}();t.default=r},1582:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.timeout=e,this.db=new Map,this.nextGc=null,this.gcDelay=t||5}get size(){return this.db.size}get all(){const e=new Set;return this.db.forEach(((t,r)=>{e.add(r)})),e}add(e){return this.db.set(e,Date.now()+this.timeout),this.scheduleGc(),this}has(e){return this.db.has(e)}delete(e){return this.db.has(e)&&(this.db.delete(e),this.scheduleGc(!0)),this}gc(){const e=Date.now();this.db.forEach(((t,r)=>{t<e&&this.db.delete(r)})),this.nextGc=null,this.scheduleGc()}scheduleGc(e=!1){if(e&&this.nextGc&&(clearTimeout(this.nextGc),this.nextGc=null),null!==this.nextGc||0===this.db.size)return;let t=-1;this.db.forEach((e=>{(-1===t||e<t)&&(t=e)})),-1===t&&(t=Date.now());const r=t-Date.now()+this.gcDelay;this.nextGc=setTimeout(this.gc.bind(this),r)}}t.default=r,e.exports=r,e.exports.default=r},7820:e=>{"use strict";"undefined"!=typeof self?e.exports=self:"undefined"!=typeof window?e.exports=window:e.exports=Function("return this")()},5323:(e,t,r)=>{"use strict";var n=r(7820);e.exports=function(){return"object"==typeof r.g&&r.g&&r.g.Math===Math&&r.g.Array===Array?r.g:n}},1436:e=>{var t;self,t=()=>(()=>{var e={318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8:e=>{function t(r){return e.exports=t="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},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},991:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OPEN_BROADCAST_CHANNELS=t.BroadcastChannel=void 0,t.clearNodeFolder=function(e){e=(0,i.fillOptionsWithDefaults)(e);var t=(0,o.chooseMethod)(e);return"node"===t.type?t.clearNodeFolder().then((function(){return!0})):n.PROMISE_RESOLVED_FALSE},t.enforceOptions=function(e){s=e};var n=r(202),o=r(632),i=r(423),a=new Set;t.OPEN_BROADCAST_CHANNELS=a;var s,c=0,u=function(e,t){var r,u;this.id=c++,a.add(this),this.name=e,s&&(t=s),this.options=(0,i.fillOptionsWithDefaults)(t),this.method=(0,o.chooseMethod)(this.options),this._iL=!1,this._onML=null,this._addEL={message:[],internal:[]},this._uMP=new Set,this._befC=[],this._prepP=null,u=(r=this).method.create(r.name,r.options),(0,n.isPromise)(u)?(r._prepP=u,u.then((function(e){r._state=e}))):r._state=u};function l(e,t,r){var o={time:e.method.microSeconds(),type:t,data:r};return(e._prepP?e._prepP:n.PROMISE_RESOLVED_VOID).then((function(){var t=e.method.postMessage(e._state,o);return e._uMP.add(t),t.catch().then((function(){return e._uMP.delete(t)})),t}))}function d(e){return e._addEL.message.length>0||e._addEL.internal.length>0}function f(e,t,r){e._addEL[t].push(r),function(e){if(!e._iL&&d(e)){var t=function(t){e._addEL[t.type].forEach((function(e){var r=e.time-1e5;t.time>=r&&e.fn(t.data)}))},r=e.method.microSeconds();e._prepP?e._prepP.then((function(){e._iL=!0,e.method.onMessage(e._state,t,r)})):(e._iL=!0,e.method.onMessage(e._state,t,r))}}(e)}function h(e,t,r){e._addEL[t]=e._addEL[t].filter((function(e){return e!==r})),function(e){if(e._iL&&!d(e)){e._iL=!1;var t=e.method.microSeconds();e.method.onMessage(e._state,null,t)}}(e)}t.BroadcastChannel=u,u._pubkey=!0,u.prototype={postMessage:function(e){if(this.closed)throw new Error("BroadcastChannel.postMessage(): Cannot post message after channel has closed "+JSON.stringify(e));return l(this,"message",e)},postInternal:function(e){return l(this,"internal",e)},set onmessage(e){var t={time:this.method.microSeconds(),fn:e};h(this,"message",this._onML),e&&"function"==typeof e?(this._onML=t,f(this,"message",t)):this._onML=null},addEventListener:function(e,t){f(this,e,{time:this.method.microSeconds(),fn:t})},removeEventListener:function(e,t){h(this,e,this._addEL[e].find((function(e){return e.fn===t})))},close:function(){var e=this;if(!this.closed){a.delete(this),this.closed=!0;var t=this._prepP?this._prepP:n.PROMISE_RESOLVED_VOID;return this._onML=null,this._addEL.message=[],t.then((function(){return Promise.all(Array.from(e._uMP))})).then((function(){return Promise.all(e._befC.map((function(e){return e()})))})).then((function(){return e.method.close(e._state)}))}},get type(){return this.method.type},get isClosed(){return this.closed}}},437:(e,t,r)=>{"use strict";var n=r(585);e.exports={BroadcastChannel:n.BroadcastChannel,createLeaderElection:n.createLeaderElection,clearNodeFolder:n.clearNodeFolder,enforceOptions:n.enforceOptions,beLeader:n.beLeader}},585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BroadcastChannel",{enumerable:!0,get:function(){return n.BroadcastChannel}}),Object.defineProperty(t,"OPEN_BROADCAST_CHANNELS",{enumerable:!0,get:function(){return n.OPEN_BROADCAST_CHANNELS}}),Object.defineProperty(t,"beLeader",{enumerable:!0,get:function(){return o.beLeader}}),Object.defineProperty(t,"clearNodeFolder",{enumerable:!0,get:function(){return n.clearNodeFolder}}),Object.defineProperty(t,"createLeaderElection",{enumerable:!0,get:function(){return o.createLeaderElection}}),Object.defineProperty(t,"enforceOptions",{enumerable:!0,get:function(){return n.enforceOptions}});var n=r(991),o=r(550)},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.beLeader=s,t.createLeaderElection=function(e,t){if(e._leaderElector)throw new Error("BroadcastChannel already has a leader-elector");t=function(e,t){return e||(e={}),(e=JSON.parse(JSON.stringify(e))).fallbackInterval||(e.fallbackInterval=3e3),e.responseTime||(e.responseTime=t.method.averageResponseTime(t.options)),e}(t,e);var r=new i(e,t);return e._befC.push((function(){return r.die()})),e._leaderElector=r,r};var n=r(202),o=r(499),i=function(e,t){var r=this;this.broadcastChannel=e,this._options=t,this.isLeader=!1,this.hasLeader=!1,this.isDead=!1,this.token=(0,n.randomToken)(),this._aplQ=n.PROMISE_RESOLVED_VOID,this._aplQC=0,this._unl=[],this._lstns=[],this._dpL=function(){},this._dpLC=!1;var o=function(e){"leader"===e.context&&("death"===e.action&&(r.hasLeader=!1),"tell"===e.action&&(r.hasLeader=!0))};this.broadcastChannel.addEventListener("internal",o),this._lstns.push(o)};function a(e,t){var r={context:"leader",action:t,token:e.token};return e.broadcastChannel.postInternal(r)}function s(e){e.isLeader=!0,e.hasLeader=!0;var t=(0,o.add)((function(){return e.die()}));e._unl.push(t);var r=function(t){"leader"===t.context&&"apply"===t.action&&a(e,"tell"),"leader"!==t.context||"tell"!==t.action||e._dpLC||(e._dpLC=!0,e._dpL(),a(e,"tell"))};return e.broadcastChannel.addEventListener("internal",r),e._lstns.push(r),a(e,"tell")}i.prototype={applyOnce:function(e){var t=this;return this.isLeader?(0,n.sleep)(0,!0):this.isDead?(0,n.sleep)(0,!1):this._aplQC>1?this._aplQ:(this._aplQC=this._aplQC+1,this._aplQ=this._aplQ.then((function(){return function(){if(t.isLeader)return n.PROMISE_RESOLVED_TRUE;var r,o=!1,i=new Promise((function(e){r=function(){o=!0,e()}})),c=[],u=function(e){"leader"===e.context&&e.token!=t.token&&(c.push(e),"apply"===e.action&&e.token>t.token&&r(),"tell"===e.action&&(r(),t.hasLeader=!0))};t.broadcastChannel.addEventListener("internal",u);var l=e?4*t._options.responseTime:t._options.responseTime;return a(t,"apply").then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).then((function(){return a(t,"apply")})).then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).catch((function(){})).then((function(){return t.broadcastChannel.removeEventListener("internal",u),!o&&s(t).then((function(){return!0}))}))}()})).then((function(){t._aplQC=t._aplQC-1})),this._aplQ.then((function(){return t.isLeader})))},awaitLeadership:function(){return this._aLP||(this._aLP=(e=this).isLeader?n.PROMISE_RESOLVED_VOID:new Promise((function(t){var r=!1;function o(){r||(r=!0,e.broadcastChannel.removeEventListener("internal",i),t(!0))}e.applyOnce().then((function(){e.isLeader&&o()})),function t(){return(0,n.sleep)(e._options.fallbackInterval).then((function(){if(!e.isDead&&!r)return e.isLeader?void o():e.applyOnce(!0).then((function(){e.isLeader?o():t()}))}))}();var i=function(t){"leader"===t.context&&"death"===t.action&&(e.hasLeader=!1,e.applyOnce().then((function(){e.isLeader&&o()})))};e.broadcastChannel.addEventListener("internal",i),e._lstns.push(i)}))),this._aLP;var e},set onduplicate(e){this._dpL=e},die:function(){var e=this;return this._lstns.forEach((function(t){return e.broadcastChannel.removeEventListener("internal",t)})),this._lstns=[],this._unl.forEach((function(e){return e.remove()})),this._unl=[],this.isLeader&&(this.hasLeader=!1,this.isLeader=!1),this.isDead=!0,a(this,"death")}}},632:(e,t,r)=>{"use strict";var n=r(318);r(8),Object.defineProperty(t,"__esModule",{value:!0}),t.chooseMethod=function(e){var t=[].concat(e.methods,u).filter(Boolean);if(e.type){if("simulate"===e.type)return s.default;var r=t.find((function(t){return t.type===e.type}));if(r)return r;throw new Error("method-type "+e.type+" not found")}e.webWorkerSupport||c.isNode||(t=t.filter((function(e){return"idb"!==e.type})));var n=t.find((function(e){return e.canBeUsed()}));if(n)return n;throw new Error("No useable method found in "+JSON.stringify(u.map((function(e){return e.type}))))};var o=n(r(115)),i=n(r(122)),a=n(r(924)),s=n(r(574)),c=r(202),u=[o.default,i.default,a.default]},122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=C,t.canBeUsed=E,t.cleanOldMessages=p,t.close=y,t.create=v,t.createDatabase=u,t.default=void 0,t.getAllMessages=function(e){var t=e.transaction(s).objectStore(s),r=[];return new Promise((function(e){t.openCursor().onsuccess=function(t){var n=t.target.result;n?(r.push(n.value),n.continue()):e(r)}}))},t.getIdb=c,t.getMessagesHigherThan=d,t.getOldMessages=h,t.microSeconds=void 0,t.onMessage=w,t.postMessage=b,t.removeMessageById=f,t.type=void 0,t.writeMessage=l;var n=r(202),o=r(151),i=r(423),a=n.microSeconds;t.microSeconds=a;var s="messages";function c(){if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof window){if(void 0!==window.mozIndexedDB)return window.mozIndexedDB;if(void 0!==window.webkitIndexedDB)return window.webkitIndexedDB;if(void 0!==window.msIndexedDB)return window.msIndexedDB}return!1}function u(e){var t="pubkey.broadcast-channel-0-"+e,r=c().open(t,1);return r.onupgradeneeded=function(e){e.target.result.createObjectStore(s,{keyPath:"id",autoIncrement:!0})},new Promise((function(e,t){r.onerror=function(e){return t(e)},r.onsuccess=function(){e(r.result)}}))}function l(e,t,r){var n={uuid:t,time:(new Date).getTime(),data:r},o=e.transaction([s],"readwrite");return new Promise((function(e,t){o.oncomplete=function(){return e()},o.onerror=function(e){return t(e)},o.objectStore(s).add(n)}))}function d(e,t){var r=e.transaction(s).objectStore(s),n=[];return new Promise((function(e){(function(){try{var e=IDBKeyRange.bound(t+1,1/0);return r.openCursor(e)}catch(e){return r.openCursor()}}()).onsuccess=function(r){var o=r.target.result;o?o.value.id<t+1?o.continue(t+1):(n.push(o.value),o.continue()):e(n)}}))}function f(e,t){var r=e.transaction([s],"readwrite").objectStore(s).delete(t);return new Promise((function(e){r.onsuccess=function(){return e()}}))}function h(e,t){var r=(new Date).getTime()-t,n=e.transaction(s).objectStore(s),o=[];return new Promise((function(e){n.openCursor().onsuccess=function(t){var n=t.target.result;if(n){var i=n.value;if(!(i.time<r))return void e(o);o.push(i),n.continue()}else e(o)}}))}function p(e,t){return h(e,t).then((function(t){return Promise.all(t.map((function(t){return f(e,t.id)})))}))}function v(e,t){return t=(0,i.fillOptionsWithDefaults)(t),u(e).then((function(r){var i={closed:!1,lastCursorId:0,channelName:e,options:t,uuid:(0,n.randomToken)(),eMIs:new o.ObliviousSet(2*t.idb.ttl),writeBlockPromise:n.PROMISE_RESOLVED_VOID,messagesCallback:null,readQueuePromises:[],db:r};return r.onclose=function(){i.closed=!0,t.idb.onclose&&t.idb.onclose()},g(i),i}))}function g(e){e.closed||m(e).then((function(){return(0,n.sleep)(e.options.idb.fallbackInterval)})).then((function(){return g(e)}))}function m(e){return e.closed?n.PROMISE_RESOLVED_VOID:e.messagesCallback?d(e.db,e.lastCursorId).then((function(t){var r=t.filter((function(e){return!!e})).map((function(t){return t.id>e.lastCursorId&&(e.lastCursorId=t.id),t})).filter((function(t){return function(e,t){return!(e.uuid===t.uuid||t.eMIs.has(e.id)||e.data.time<t.messagesCallbackTime)}(t,e)})).sort((function(e,t){return e.time-t.time}));return r.forEach((function(t){e.messagesCallback&&(e.eMIs.add(t.id),e.messagesCallback(t.data))})),n.PROMISE_RESOLVED_VOID})):n.PROMISE_RESOLVED_VOID}function y(e){e.closed=!0,e.db.close()}function b(e,t){return e.writeBlockPromise=e.writeBlockPromise.then((function(){return l(e.db,e.uuid,t)})).then((function(){0===(0,n.randomInt)(0,10)&&p(e.db,e.options.idb.ttl)})),e.writeBlockPromise}function w(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t,m(e)}function E(){return!n.isNode&&!!c()}function C(e){return 2*e.idb.fallbackInterval}t.type="idb";var S={create:v,close:y,onMessage:w,postMessage:b,canBeUsed:E,type:"idb",averageResponseTime:C,microSeconds:a};t.default=S},924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addStorageEventListener=d,t.averageResponseTime=m,t.canBeUsed=g,t.close=p,t.create=h,t.default=void 0,t.getLocalStorage=c,t.microSeconds=void 0,t.onMessage=v,t.postMessage=l,t.removeStorageEventListener=f,t.storageKey=u,t.type=void 0;var n=r(151),o=r(423),i=r(202),a=i.microSeconds;t.microSeconds=a;var s="localstorage";function c(){var e;if("undefined"==typeof window)return null;try{e=window.localStorage,e=window["ie8-eventlistener/storage"]||window.localStorage}catch(e){}return e}function u(e){return"pubkey.broadcastChannel-"+e}function l(e,t){return new Promise((function(r){(0,i.sleep)().then((function(){var n=u(e.channelName),o={token:(0,i.randomToken)(),time:(new Date).getTime(),data:t,uuid:e.uuid},a=JSON.stringify(o);c().setItem(n,a);var s=document.createEvent("Event");s.initEvent("storage",!0,!0),s.key=n,s.newValue=a,window.dispatchEvent(s),r()}))}))}function d(e,t){var r=u(e),n=function(e){e.key===r&&t(JSON.parse(e.newValue))};return window.addEventListener("storage",n),n}function f(e){window.removeEventListener("storage",e)}function h(e,t){if(t=(0,o.fillOptionsWithDefaults)(t),!g())throw new Error("BroadcastChannel: localstorage cannot be used");var r=(0,i.randomToken)(),a=new n.ObliviousSet(t.localstorage.removeTimeout),s={channelName:e,uuid:r,eMIs:a};return s.listener=d(e,(function(e){s.messagesCallback&&e.uuid!==r&&e.token&&!a.has(e.token)&&(e.data.time&&e.data.time<s.messagesCallbackTime||(a.add(e.token),s.messagesCallback(e.data)))})),s}function p(e){f(e.listener)}function v(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t}function g(){if(i.isNode)return!1;var e=c();if(!e)return!1;try{var t="__broadcastchannel_check";e.setItem(t,"works"),e.removeItem(t)}catch(e){return!1}return!0}function m(){var e=navigator.userAgent.toLowerCase();return e.includes("safari")&&!e.includes("chrome")?240:120}t.type=s;var y={create:h,close:p,onMessage:v,postMessage:l,canBeUsed:g,type:s,averageResponseTime:m,microSeconds:a};t.default=y},115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202),o=n.microSeconds;t.microSeconds=o;var i="native";function a(e){var t={messagesCallback:null,bc:new BroadcastChannel(e),subFns:[]};return t.bc.onmessage=function(e){t.messagesCallback&&t.messagesCallback(e.data)},t}function s(e){e.bc.close(),e.subFns=[]}function c(e,t){try{return e.bc.postMessage(t,!1),n.PROMISE_RESOLVED_VOID}catch(e){return Promise.reject(e)}}function u(e,t){e.messagesCallback=t}function l(){if(n.isNode&&"undefined"==typeof window)return!1;if("function"==typeof BroadcastChannel){if(BroadcastChannel._pubkey)throw new Error("BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill");return!0}return!1}function d(){return 150}t.type=i;var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:i,averageResponseTime:d,microSeconds:o};t.default=f},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202).microSeconds;t.microSeconds=n;var o="simulate";t.type=o;var i=new Set;function a(e){var t={name:e,messagesCallback:null};return i.add(t),t}function s(e){i.delete(e)}function c(e,t){return new Promise((function(r){return setTimeout((function(){Array.from(i).filter((function(t){return t.name===e.name})).filter((function(t){return t!==e})).filter((function(e){return!!e.messagesCallback})).forEach((function(e){return e.messagesCallback(t)})),r()}),5)}))}function u(e,t){e.messagesCallback=t}function l(){return!0}function d(){return 5}var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:o,averageResponseTime:d,microSeconds:n};t.default=f},423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fillOptionsWithDefaults=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=JSON.parse(JSON.stringify(e));return void 0===t.webWorkerSupport&&(t.webWorkerSupport=!0),t.idb||(t.idb={}),t.idb.ttl||(t.idb.ttl=45e3),t.idb.fallbackInterval||(t.idb.fallbackInterval=150),e.idb&&"function"==typeof e.idb.onclose&&(t.idb.onclose=e.idb.onclose),t.localstorage||(t.localstorage={}),t.localstorage.removeTimeout||(t.localstorage.removeTimeout=6e4),e.methods&&(t.methods=e.methods),t.node||(t.node={}),t.node.ttl||(t.node.ttl=12e4),t.node.maxParallelWrites||(t.node.maxParallelWrites=2048),void 0===t.node.useFastPath&&(t.node.useFastPath=!0),t}},202:(e,t,r)=>{"use strict";var n=r(155);Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=t.PROMISE_RESOLVED_VOID=t.PROMISE_RESOLVED_TRUE=t.PROMISE_RESOLVED_FALSE=void 0,t.isPromise=function(e){return!(!e||"function"!=typeof e.then)},t.microSeconds=function(){var e=(new Date).getTime();return e===s?1e3*e+ ++c:(s=e,c=0,1e3*e)},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.randomToken=function(){return Math.random().toString(36).substring(2)},t.sleep=function(e,t){return e||(e=0),new Promise((function(r){return setTimeout((function(){return r(t)}),e)}))};var o=Promise.resolve(!1);t.PROMISE_RESOLVED_FALSE=o;var i=Promise.resolve(!0);t.PROMISE_RESOLVED_TRUE=i;var a=Promise.resolve();t.PROMISE_RESOLVED_VOID=a;var s=0,c=0,u="[object process]"===Object.prototype.toString.call(void 0!==n?n:0);t.isNode=u},227:(e,t,r)=>{var n=r(155);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,i,a=null;function s(...e){if(!s.enabled)return;const n=s,o=Number(new Date),i=o-(r||o);n.diff=i,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";a++;const i=t.formatters[o];if("function"==typeof i){const t=e[a];r=i.call(n,t),e.splice(a,1),a--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(o!==t.namespaces&&(o=t.namespaces,i=t.enabled(e)),i),set:e=>{a=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r<o;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(824),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},643:e=>{e.exports=!1},824:e=>{var t=1e3,r=60*t,n=60*r,o=24*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,a){a=a||{};var s,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(i){var a=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===u&&isFinite(e))return a.long?(s=e,(c=Math.abs(s))>=o?i(s,c,o,"day"):c>=n?i(s,c,n,"hour"):c>=r?i(s,c,r,"minute"):c>=t?i(s,c,t,"second"):s+" ms"):function(e){var i=Math.abs(e);return i>=o?Math.round(e/o)+"d":i>=n?Math.round(e/n)+"h":i>=r?Math.round(e/r)+"m":i>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},151:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ObliviousSet:()=>n,now:()=>i,removeTooOldValues:()=>o});var n=function(){function e(e){this.ttl=e,this.set=new Set,this.timeMap=new Map}return e.prototype.has=function(e){return this.set.has(e)},e.prototype.add=function(e){var t=this;this.timeMap.set(e,i()),this.set.add(e),setTimeout((function(){o(t)}),0)},e.prototype.clear=function(){this.set.clear(),this.timeMap.clear()},e}();function o(e){for(var t=i()-e.ttl,r=e.set[Symbol.iterator]();;){var n=r.next().value;if(!n)return;if(!(e.timeMap.get(n)<t))return;e.timeMap.delete(n),e.set.delete(n)}}function i(){return(new Date).getTime()}},155:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},279:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},797:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.assert=t.AssertError=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Error);t.AssertError=o,t.assert=function(e,t,r){if(t(e))return e;throw new o(r)}},601:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SOURCE_NAMESPACE=void 0,t.SOURCE_NAMESPACE="OfficeSDKBroadcastChannel"},758:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvokeError=t.MessageTimeoutError=t.MessageError=void 0;var o=function(e){function t(t){var r=e.call(this,t)||this;return r.name="MessageError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.MessageError=o;var i=function(e){function t(r){var n=e.call(this,r)||this;return n.name="MessageTimeoutError",Object.setPrototypeOf(n,t.prototype),n}return n(t,e),t}(Error);t.MessageTimeoutError=i;var a=function(e){function t(t){var r=e.call(this,t)||this;return r.name="InvokeError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.InvokeError=a},607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OfficeSDKMessageEvent=t.isOfficeSDKMessageEventLike=t.OfficeSDKBroadcastChannel=void 0;var a=i(r(623));t.OfficeSDKBroadcastChannel=a.default;var s=r(928);Object.defineProperty(t,"isOfficeSDKMessageEventLike",{enumerable:!0,get:function(){return s.isOfficeSDKMessageEventLike}}),Object.defineProperty(t,"OfficeSDKMessageEvent",{enumerable:!0,get:function(){return s.OfficeSDKMessageEvent}}),o(r(928),t),o(r(623),t),o(r(758),t),o(r(86),t),o(r(601),t)},928:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOfficeSDKMessageEventLike=t.OfficeSDKMessageEvent=void 0;var n=r(131),o=r(797),i=r(601),a=function(e){var t=e.data,r=e.context,a=e.time,s=e.origin,c=e.emitter,u=e.channelId,l=Object.assign({},r,{channelId:u});"string"==typeof l.messageId&&""!==l.messageId.trim()||(l.messageId=(0,n.uuid)()),Object.defineProperties(this,{data:{enumerable:!0,value:t},context:{enumerable:!0,value:l},time:{enumerable:!0,value:null!=a?a:Date.now()},id:{enumerable:!0,get:function(){return l.messageId}},source:{enumerable:!0,value:i.SOURCE_NAMESPACE},origin:{enumerable:!0,value:s},emitter:{enumerable:!0,value:c},channelId:{enumerable:!0,get:function(){return l.channelId}}}),(0,o.assert)(this.context.channelId,(function(e){return"string"==typeof e&&e.length>0}),"channel id must be a non-empty string"),(0,o.assert)(this.id,(function(e){return"string"==typeof e&&e.length>0}),"id must be a non-empty string"),(0,o.assert)(this.time,(function(e){return"number"==typeof e&&e>=0}),"time must be a positive number")};t.OfficeSDKMessageEvent=a,t.isOfficeSDKMessageEventLike=function(e){if(e instanceof a)return!0;if("object"==typeof e&&null!=e){var t=e;return t.source===i.SOURCE_NAMESPACE&&"string"==typeof t.channelId&&t.channelId.length>0&&null!=t.context}return!1}},623:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ContextType=t.DEBUG_NAMESPACE=t.INVOKE_DEFAUTL_TIMEOUT=void 0;var s=r(437),c=r(279),u=r(797),l=r(758),d=r(928),f=r(86),h=a(r(227)),p=a(r(675)),v=r(131);t.INVOKE_DEFAUTL_TIMEOUT=6e4,t.DEBUG_NAMESPACE="SM_CHAN";var g,m=function(){function e(e){var r,i=this;this.invokeHandlers=new Map,this.eventHandlers=new Map,this.emitterId=(0,v.uuid)(),this._debugNamespace=t.DEBUG_NAMESPACE,this.debug=!0===e.debug,this.debugNamespace=null!==(r=e.debugNamespace)&&void 0!==r?r:t.DEBUG_NAMESPACE,this.autoStructuredClone=!0===e.autoStructuredClone,Object.defineProperty(this,"id",{enumerable:!0,value:"string"==typeof e.channelId?(0,u.assert)(e.channelId.trim(),(function(e){return e.length>0}),"channelId must be a non-empty string"):(0,v.uuid)()}),this.emitter=new c.TinyEmitter;var a=new s.BroadcastChannel(this.id,e.broadcastChannelOptions);a.addEventListener("message",(function(e){n(i,void 0,void 0,(function(){var t,r,n;return o(this,(function(o){switch(o.label){case 0:try{t=this.initMessageEvent(e)}catch(t){return(r=new l.MessageError(null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"message cannot be handled")).originMessage=e.data,this.emit("messageError",r),[2]}return[4,this.distributeMessage(t)];case 1:return o.sent(),[2]}}))})).catch((function(e){return n(i,void 0,void 0,(function(){return o(this,(function(t){return this.emit("error",e),[2]}))}))}))})),this.channel=a}return e.prototype.initMessageEvent=function(e){var t=Object.assign({emitter:this.emitterId},e,{channelId:this.id});return"string"!=typeof t.origin&&(t.origin=location.origin),new d.OfficeSDKMessageEvent(t)},e.prototype.structuredClone=function(e){return this.autoStructuredClone?(0,f.structuredClone)(e,{replacer:function(){}}):e},e.prototype.addEventListener=function(e,t,r){var n=this.eventHandlers.get(e);Array.isArray(n)||(n=[]),n.push([t,r]),this.eventHandlers.set(e,n)},e.prototype.on=function(e,t,r){var n=this;return this.addEventListener(e,t,r),function(){n.off(e,t,r)}},e.prototype.once=function(e,t,r){var n=this,o=function(r,o){n.off(e,t,o),t(r,o)};return o.handler=t,this.addEventListener(e,o,r),function(){n.off(e,t,r)}},e.prototype.off=function(e,t,r){if(1===arguments.length)this.eventHandlers.delete(e);else{var n=this.eventHandlers.get(e);Array.isArray(n)&&("*"===(null==r?void 0:r.audience)?this.eventHandlers.delete(e):this.eventHandlers.set(e,n.filter((function(e){var n=e[0],o=e[1];return n!==t&&n.handler!==t||(null==o?void 0:o.audience)===(null==r?void 0:r.audience)}))))}},e.prototype.emit=function(e,t,r){var n=this.eventHandlers.get(e);if(this.log("emit event",{name:e,data:t,context:r,handlers:n}),Array.isArray(n))for(var o=0,i=n;o<i.length;o++){var a=i[o],s=a[0];y(a[1],r)&&s(t,r)}},e.prototype.postMessage=function(e,t){return n(this,void 0,void 0,(function(){var r,n,i,a;return o(this,(function(o){switch(o.label){case 0:try{n=this.structuredClone(e),r=(0,d.isOfficeSDKMessageEventLike)(n)?this.initMessageEvent(n):this.initMessageEvent({data:n,context:null!=t?this.mergeContexts([t]):t})}catch(t){throw this.log("message invalid",e,t),(a=new l.MessageError(null==t?void 0:t.message)).originMessage=n,a}o.label=1;case 1:return o.trys.push([1,3,,4]),this.log("pre postMessage",{message:n,origin:e,context:t,structuredCloned:this.autoStructuredClone}),[4,this.channel.postMessage(r)];case 2:return o.sent(),this.emit("postMessage",r,r.context),this.log("postMessage success",r),[3,4];case 3:throw i=o.sent(),this.log("post message error",i),(a=new l.MessageError(null==i?void 0:i.message)).originMessage=e,a;case 4:return[2]}}))}))},e.prototype.distributeMessage=function(e){var t,r,i;return n(this,void 0,void 0,(function(){var n,a;return o(this,(function(o){switch(o.label){case 0:return(null===(t=(n=e).context)||void 0===t?void 0:t.channelId)!==this.id||n.emitter===this.emitterId?(this.log("discard message",n),[2]):"function"!=typeof this.onMessageArrive?[3,2]:[4,this.onMessageArrive(n)];case 1:if(!((a=o.sent())instanceof d.OfficeSDKMessageEvent))return this.log("skip distributing message by `onMessageArrive`",{message:a,origin:e}),[2];n=a,o.label=2;case 2:return this.log("distribute message",{message:n,origin:e}),(null===(r=n.context)||void 0===r?void 0:r.type)!==g.InvokeRequest?[3,4]:[4,this.handleInvokeRequest(n)];case 3:return o.sent(),[2];case 4:return(null===(i=n.context)||void 0===i?void 0:i.type)===g.InvokeResponse?(this.handleInvokeResponse(n),[2]):(this.emit("message",n,n.context),[2])}}))}))},e.prototype.handleInvokeRequest=function(e){return n(this,void 0,void 0,(function(){var t,r,n,i,a,s,c,u,l,d,f;return o(this,(function(o){switch(o.label){case 0:if(!(0,p.default)(e.data))throw this.log("invalid invoke request",e),new Error("InvokeRequest data must be an object");if(t=e.data,r=t.name,n=t.args,i=this.invokeHandlers.get(r),this.log("handle invoke request",{message:e,handlers:i}),a=e.context,!Array.isArray(i)||0===i.length)return this.log("no invoke handlers",r),[2];s=0,c=i,o.label=1;case 1:if(!(s<c.length))return[3,8];if(!y((u=c[s]).context,a))return[3,7];l={data:void 0},o.label=2;case 2:return o.trys.push([2,4,,5]),d=l,[4,u.handler.apply(u,n)];case 3:return d.data=o.sent(),[3,5];case 4:return f=o.sent(),l.error=f,[3,5];case 5:return[4,this.postMessage(l,Object.assign({},a,{type:g.InvokeResponse}))];case 6:return o.sent(),[2];case 7:return s++,[3,1];case 8:return this.log("no invoke handler found",r),[2]}}))}))},e.prototype.handleInvokeResponse=function(e){if(this.log("handle invoke response",e),"string"!=typeof e.id)throw new l.InvokeError("Invoke response context id is invalid");this.emitter.emit(e.id,e.data)},e.prototype.mergeContexts=function(e){return Object.assign.apply(Object,i([{channelId:this.id}],e,!1))},e.prototype.invoke=function(e,r,i){return n(this,void 0,void 0,(function(){var n,a,s,c,u,d=this;return o(this,(function(o){switch(o.label){case 0:return n={name:e,args:r},a="number"==typeof(null==i?void 0:i.timeout)&&(null==i?void 0:i.timeout)>0?null==i?void 0:i.timeout:t.INVOKE_DEFAUTL_TIMEOUT,s=(0,v.uuid)(),c=new Promise((function(t,n){d.emitter.once(s,(function(o){if(o.error instanceof l.InvokeError)n(o.error);else if(null!=o.error){var i=new l.InvokeError("string"==typeof o.error?o.error:o.error.message);i.method=e,i.arguments=r,n(i)}else t(o.data)})),setTimeout((function(){d.emitter.off(s),n(new l.MessageTimeoutError("".concat(e," invoke timeout")))}),a)})),[4,this.postMessage(n,Object.assign({},i,{messageId:s,timeout:a,type:g.InvokeRequest}))];case 1:o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,c];case 3:return[2,o.sent()];case 4:throw u=o.sent(),this.log("invoke error",{id:s,name:e,args:r,payload:n,error:u}),u;case 5:return[2]}}))}))},e.prototype.addInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)||(n=[]),n.push({handler:t,context:r}),this.invokeHandlers.set(e,n)},e.prototype.removeInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)&&this.invokeHandlers.set(e,n.filter((function(e){var n;return e.handler!==t||(null===(n=e.context)||void 0===n?void 0:n.audience)!==(null==r?void 0:r.audience)})))},Object.defineProperty(e.prototype,"debug",{get:function(){return h.default.enabled(this._debugNamespace)},set:function(e){h.default.enable(e?this._debugNamespace:"-".concat(this._debugNamespace))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"debugNamespace",{get:function(){return this._debugNamespace},set:function(e){var t=this.debug;h.default.enable("-".concat(this._debugNamespace)),this.log=(0,h.default)(e),this._debugNamespace=e,t&&h.default.enable(e)},enumerable:!1,configurable:!0}),e}();function y(e,t){var r=null==e?void 0:e.audience,n=null==t?void 0:t.audience;return r===n||"*"===r||"*"===n}t.default=m,function(e){e[e.InvokeRequest=0]="InvokeRequest",e[e.InvokeResponse=1]="InvokeResponse"}(g=t.ContextType||(t.ContextType={}))},86:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.structuredClone=void 0;var o=n(r(675)),i=r(928);function a(e,t){try{return e instanceof t}catch(e){return!1}}t.structuredClone=function e(t,r){if(void 0===r&&(r={}),"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null==t||t instanceof Date||t instanceof RegExp||t instanceof Boolean||t instanceof String||t instanceof i.OfficeSDKMessageEvent)return t;try{for(var n=0,s=[window.ArrayBuffer,window.Map,window.Set,window.DataView,window.File,window.FileList,window.Blob,window.ImageBitmap,window.ImageData];n<s.length;n++)if(a(t,s[n]))return t}catch(e){}if((0,o.default)(t)){var c=t,u={};for(var l in c)!0===Object.prototype.hasOwnProperty.call(c,l)&&(u[l]=e(c[l],r));return u}if(Array.isArray(t))return t.map((function(t){return e(t,r)}));if(t instanceof Error)return t.message;try{if(t instanceof Object.getPrototypeOf(Uint8Array))return t}catch(e){}if("function"==typeof r.replacer){var d=Object.assign({},r);return d.replacer=void 0,e(r.replacer(t),d)}throw new Error("".concat(String(t)," could not be cloned"))}},131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uuid=void 0,t.uuid=function(){for(var e,t=[],r=(null!==(e=window.crypto)&&void 0!==e?e:window.msCrypto).getRandomValues(new Uint8Array(20)),n=0;n<r.length;n++)t.push(r[n].toString(16).padStart(2,"0"));for(var o=0,i=[4,7,10,13];o<i.length;o++)t[i[o]]="-";return t.join("")}},499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{add:()=>d,getSize:()=>p,removeAll:()=>h,runAll:()=>f});var n=r(643),o=r.n(n);const i={add:function(e){if("function"==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope);else{if("function"!=typeof window.addEventListener)return;window.addEventListener("beforeunload",(function(){e()}),!0),window.addEventListener("unload",(function(){e()}),!0)}}};var a=r(199),s=r.n(a),c=o()?s():i,u=new Set,l=!1;function d(e){if(l||(l=!0,c.add(f)),"function"!=typeof e)throw new Error("Listener is no function");return u.add(e),{remove:function(){return u.delete(e)},run:function(){return u.delete(e),e()}}}function f(){var e=[];return u.forEach((function(t){e.push(t()),u.delete(t)})),Promise.all(e)}function h(){u.clear()}function p(){return u.size}},199:()=>{},675:(e,t,r)=>{"use strict";function n(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}r.r(t),r.d(t,{default:()=>n})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(607)})(),e.exports=t()},5606:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},6532:(e,t,r)=>{"use strict";var n,o=r(5606);(n=void 0!==o&&"[object process]"==={}.toString.call(o)||"undefined"!=typeof navigator&&"ReactNative"===navigator.product?r.g:self).Proxy||(n.Proxy=r(7780)(),n.Proxy.revocable=n.Proxy.revocable)},7780:e=>{e.exports=function(){let e,t=null;function r(e){return!!e&&("object"==typeof e||"function"==typeof e)}function n(e){if(null!==e&&!r(e))throw new TypeError("Object prototype may only be an Object or null: "+e)}const o=Object,i=Boolean(o.create)||!({__proto__:null}instanceof o),a=o.create||(i?function(e){return n(e),{__proto__:e}}:function(e){if(n(e),null===e)throw new SyntaxError("Native Object.create is required to create objects with null prototype");var t=function(){};return t.prototype=e,new t}),s=function(){return null},c=o.getPrototypeOf||([].__proto__===Array.prototype?function(e){const t=e.__proto__;return r(t)?t:null}:s);return e=function(u,l){if(void 0===(this&&this instanceof e?this.constructor:void 0))throw new TypeError("Constructor Proxy requires 'new'");if(!r(u)||!r(l))throw new TypeError("Cannot create proxy with a non-object as target or handler");let d=function(){};t=function(){u=null,d=function(e){throw new TypeError(`Cannot perform '${e}' on a proxy that has been revoked`)}},setTimeout((function(){t=null}),0);const f=l;l={get:null,set:null,apply:null,construct:null};for(let e in f){if(!(e in l))throw new TypeError(`Proxy polyfill does not support trap '${e}'`);l[e]=f[e]}"function"==typeof f&&(l.apply=f.apply.bind(f));const h=c(u);let p,v=!1,g=!1;"function"==typeof u?(p=function(){const e=this&&this.constructor===p,t=Array.prototype.slice.call(arguments);return d(e?"construct":"apply"),e&&l.construct?l.construct.call(this,u,t):!e&&l.apply?l.apply(u,this,t):e?(t.unshift(u),new(u.bind.apply(u,t))):u.apply(this,t)},v=!0):u instanceof Array?(p=[],g=!0):p=i||null!==h?a(h):{};const m=l.get?function(e){return d("get"),l.get(this,e,p)}:function(e){return d("get"),this[e]},y=l.set?function(e,t){d("set"),l.set(this,e,t,p)}:function(e,t){d("set"),this[e]=t},b=o.getOwnPropertyNames(u),w={};b.forEach((function(e){if((v||g)&&e in p)return;const t=o.getOwnPropertyDescriptor(u,e),r={enumerable:Boolean(t.enumerable),get:m.bind(u,e),set:y.bind(u,e)};o.defineProperty(p,e,r),w[e]=!0}));let E=!0;if(v||g){const e=o.setPrototypeOf||([].__proto__===Array.prototype?function(e,t){return n(t),e.__proto__=t,e}:s);h&&e(p,h)||(E=!1)}if(l.get||!E)for(let e in u)w[e]||o.defineProperty(p,e,{get:m.bind(u,e)});return o.seal(u),o.seal(p),p},e.revocable=function(r,n){return{proxy:new e(r,n),revoke:t}},e}},1504:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},2694:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildRootFacadeState=void 0;var i=r(4057);function a(e,t){return t?e.createValueObjectFacade("selection.range",t,{start:t.start,end:t.end,isCaret:t.start===t.end}):null}function s(e,t){var r=this;return e.createValueObjectFacade("tables.item",t,{tableId:t.tableId,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getCell",[t,i,a])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.cell",r,{tableId:r.tableId,row:r.row,column:r.column})]:[2,null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getRange",[t,i])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.range",r,{tableId:r.tableId,selection:r.selection})]:[2,null]}}))}))}})}function c(e,t){return t?e.createValueObjectFacade("sheet.range",t,t):null}function u(e,t){return t?e.createValueObjectFacade("sheet.cell",t,t):null}function l(e,t){var r=this;return e.createValueObjectFacade("sheet.worksheet",t,{id:t.id,name:t.name,getSelections:function(){return n(r,void 0,void 0,(function(){var r,i;return o(this,(function(a){switch(a.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getSelections",[t])];case 1:return r=a.sent(),[2,null!==(i=null==r?void 0:r.map((function(t){return function(e,t){var r=this;return e.createValueObjectFacade("sheet.selection",t,{id:t.selectionId,getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.selection.getRange",void 0===i?[t]:[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},setRange:function(i){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("sheet.selection.setRange",[t,i])];case 1:return r.sent(),[2]}}))}))}})}(e,t)})))&&void 0!==i?i:null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getRange",[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getCell",[t,i,a])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))},getActiveCell:function(){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getActiveCell",[t])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))}})}function d(e,t){return t?e.createValueObjectFacade("selection.textRange",t,{start:t.start,end:t.end}):null}function f(e,t){if(!t)return null;var r={id:t.shapeId,name:t.name,type:t.type,textContent:t.textContent};return e.createValueObjectFacade("slides.slide.shape",t,r)}function h(e,t){return t?e.createValueObjectFacade("slides.slide.table.cell",t,{}):null}function p(e,t){return t?e.createValueObjectFacade("slides.slide.table.range",t,{}):null}function v(e,t){var r=this;return e.createValueObjectFacade("slides.slide.table",t,{id:t.id,rowCount:t.rowCount,columnCount:t.columnCount,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.table.getCell",[t,i,a])];case 1:return r=n.sent(),[2,h(e,r)]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.table.getRange",[t,i])];case 1:return r=n.sent(),[2,p(e,r)]}}))}))}})}function g(e,t){var r=this;return e.createValueObjectFacade("slides.slide",t,{id:t.slideId,getShapes:function(){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.slide.getShapes",[t])];case 1:return[2,r.sent().map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]}}))}))},getTables:function(){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.slide.getTables",[t])];case 1:return[2,r.sent().map((function(t){return v(e,t)}))]}}))}))},insertShape:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertShape",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation shape not found");return[2,n]}}))}))},insertTextBox:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertTextBox",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation text shape not found");return[2,n]}}))}))},insertTable:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertTable",[t,i])];case 1:return r=n.sent(),[2,v(e,r)]}}))}))}})}function m(e){var t=this;return{start:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start","number"==typeof r?[r]:[])];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))},startFromCurrent:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startFromCurrent")];case 1:return t.sent(),[2]}}))}))},startRemoteLive:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startRemoteLive")];case 1:return t.sent(),[2]}}))}))},startSpeakerView:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startSpeakerView")];case 1:return t.sent(),[2]}}))}))},addChangeListener:function(t){return e.registerEditorFacadeListener("presentation.addChangeListener",t)}}}function y(e){var t=this;return{start:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start")];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))}}}function b(e){var t=this;return{start:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("startDemonstration")];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("endDemonstration")];case 1:return t.sent(),[2]}}))}))}}}t.buildRootFacadeState=function(e){var t=this,r={addChangedListener:function(t){return e.listenEditorEvent("titleChange",t)},setTitle:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("title.setTitle",[r])];case 1:return t.sent(),[2]}}))}))}},c={show:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.show",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))},hide:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.hide",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))}},u={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.hide")];case 1:return t.sent(),[2]}}))}))}},h={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.hide")];case 1:return t.sent(),[2]}}))}))}},p={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.hide")];case 1:return t.sent(),[2]}}))}))}},v={insert:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("insertExternalApp",[r,i])];case 1:return[2,t.sent()]}}))}))}},w={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.hide")];case 1:return t.sent(),[2]}}))}))},addRangeLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addRangeLock",[r])];case 1:return t.sent(),[2]}}))}))},addSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addSheetLock",[r])];case 1:return t.sent(),[2]}}))}))},removeRangeLocksInRanges:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeRangeLocksInRanges",[r])];case 1:return t.sent(),[2]}}))}))},removeSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeSheetLock",[r])];case 1:return t.sent(),[2]}}))}))}},E={locateCellByGuid:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("mention.locateCellByGuid",[r,i])];case 1:return t.sent(),[2]}}))}))}},C={setContent:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("content.setContent",[r])];case 1:return t.sent(),[2]}}))}))}},S={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.hide")];case 1:return t.sent(),[2]}}))}))},createRevision:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.createRevision",[r])];case 1:return t.sent(),[2,void 0]}}))}))}},O=function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:t=e.registerEditorFacadeCallback(r),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,e.invokeEditorFacade("batchChanges",[t])];case 2:return[2,n.sent()];case 3:return e.unregisterEditorFacadeCallback(t),[7];case 4:return[2]}}))}))},_=function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("print")];case 1:return t.sent(),[2]}}))}))},k=function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("export",[r])];case 1:return t.sent(),[2]}}))}))},P=e.createEditorFacadeModule("selection",{getRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,a(e,t)]}}))}))},getWholeRange:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("selection.getWholeRange")];case 1:return t=r.sent(),[2,a(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)}}),A=e.createEditorFacadeModule("tables",{getAll:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("tables.getAll")];case 1:return[2,t.sent().map((function(t){return s(e,t)}))]}}))}))},getOne:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.getOne",[r])];case 1:return[2,(t=n.sent())?s(e,t):null]}}))}))}}),M=e.createEditorFacadeModule("workbook",{getWorksheets:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheets")];case 1:return[2,t.sent().map((function(t){return l(e,t)}))]}}))}))},getWorksheetById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheetById",[r])];case 1:return[2,(t=n.sent())?l(e,t):null]}}))}))},getActiveWorksheet:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("workbook.getActiveWorksheet")];case 1:return t=r.sent(),[2,l(e,t)]}}))}))}}),T=e.createEditorFacadeModule("slides",{getCurrentSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.getCurrentSlide")];case 1:return t=r.sent(),[2,g(e,t)]}}))}))},getSlides:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSlides")];case 1:return[2,t.sent().map((function(t){return g(e,t)}))]}}))}))},getSlideById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.getSlideById",[r])];case 1:return[2,(t=n.sent())?g(e,t):null]}}))}))},getSelectedSlides:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSelectedSlides",void 0===r?[]:[r])];case 1:return[2,t.sent().map((function(t){return g(e,t)}))]}}))}))},addSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.addSlide")];case 1:return t=r.sent(),[2,g(e,t)]}}))}))},duplicateSlide:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.duplicateSlide",[r])];case 1:return t=n.sent(),[2,g(e,t)]}}))}))}}),x=e.createEditorFacadeModule("selection",{getTextRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getTextRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,d(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)},getSelectedShapes:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getSelectedShapes",void 0===r?[]:[r])];case 1:return(t=n.sent())?[2,t.map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]:[2,null]}}))}))}}),R={addErrorListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addErrorListener",t)},addLoadedListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addLoadedListener",t)}},L=e.createEditorFacadeModule("outline",{show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!0])];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!1])];case 1:return t.sent(),[2]}}))}))}});switch(e.fileType){case i.FileType.Document:return{title:r,history:u,comments:c,discussion:h,collaborator:p,externalApp:v,version:S,presentation:y(e),selection:P,settings:e.createEditorFacadeModule("settings",{}),search:e.createEditorFacadeModule("search",{}),outline:L,sidebar:e.createEditorFacadeModule("sidebar",{}),tables:A,batchChanges:O,print:_};case i.FileType.Spreadsheet:return{history:u,comments:c,locks:w,mention:E,content:C,version:S,presentation:b(e),workbook:M,activeSheet:l(e,{active:!0}),charts:e.createEditorFacadeModule("charts",{}),selections:e.createEditorFacadeModule("selections",{}),batchChanges:O,print:_,export:k,setFocus:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("setFocus",[r])];case 1:return t.sent(),[2]}}))}))}};case i.FileType.Presentation:return{history:u,comments:c,version:S,presentation:m(e),slides:T,selection:x,text:e.createEditorFacadeModule("text",{}),zoom:e.createEditorFacadeModule("zoom",{}),eventSubscription:R,batchChanges:O,print:_,export:k};default:return{}}}},3129:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MentionTypes=t.PermissionLevel=t.SheetRangeType=t.EditorSaveStatus=void 0,(i=t.EditorSaveStatus||(t.EditorSaveStatus={}))[i.NoChange=0]="NoChange",i[i.Success=1]="Success",i[i.Fail=2]="Fail",(o=t.SheetRangeType||(t.SheetRangeType={})).Cells="cells",o.Rows="rows",o.Columns="columns",o.Sheet="sheet",(n=t.PermissionLevel||(t.PermissionLevel={}))[n.Editable=0]="Editable",n[n.ReadOnly=1]="ReadOnly",n[n.Private=2]="Private",(r=t.MentionTypes||(t.MentionTypes={})).Comment="comment",r.Mention="mention_at",r.DateMention="date_mention"},799:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},a=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.subscribeHeaderBarsTitleChange=t.getHeaderBarsCommandRef=t.setHeaderBarsVisible=t.syncHeaderBarsVisible=t.applyHeaderBarsChanged=t.syncHeaderBarsCommands=t.ensureHeaderBarsTitleChangeSubscription=t.initHeaderBarsFacade=t.HEADER_BARS_CHANGED_EVENT=t.HEADER_BARS_METHOD=void 0;var s=r(4057);function c(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(e.isTitleSubscribed())return[2];e.setTitleSubscribed(!0),e.onInternalTitleChange((function(t){var r;"string"==typeof t&&(null===(r=e.getTitleHandler())||void 0===r||r(t))})),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e.subscribeEditorTitleChange()];case 2:return r.sent(),[3,4];case 3:throw t=r.sent(),e.setTitleSubscribed(!1),t;case 4:return[2]}}))}))}function u(e,t){var r=e.getCommandsMap();r.clear();for(var n=0,o=t;n<o.length;n++){var i=o[n];r.set(i.id,i)}}function l(e){return o(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.getVisible)];case 1:return r=n.sent(),e.setVisibleState(r.visible),[2,e.getVisibleState()]}}))}))}function d(e,r){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return e.setVisibleState(r),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setVisible,{visible:r})];case 1:return n.sent(),[2]}}))}))}function f(e,r){var o=e.getRefsMap(),i=o.get(r);if(i)return i;var a=e.getCommandsMap();a.has(r)||e.invokeHeaderBars(t.HEADER_BARS_METHOD.getCommand,{id:r}).then((function(e){e.command&&a.set(r,e.command)})).catch((function(t){e.emitHeaderBarsError("fetch headerBars command failed",t)}));var s={id:r,visible:!0,disabled:!1,active:!1,src:void 0,label:void 0,editable:void 0,onCommandClick:void 0,getState:function(){return a.get(r)}};return Object.defineProperties(s,{visible:{configurable:!0,enumerable:!0,get:function(){var e;return!1!==(null===(e=a.get(r))||void 0===e?void 0:e.visible)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{visible:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandVisible,{id:r,visible:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command visible failed",t)}))}},disabled:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.disabled)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{disabled:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandDisabled,{id:r,disabled:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command disabled failed",t)}))}},active:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.active)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{active:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandActive,{id:r,active:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command active failed",t)}))}},src:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.src},set:function(o){if("string"==typeof o){var i=a.get(r);i&&a.set(r,n(n({},i),{src:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandSrc,{id:r,src:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command src failed",t)}))}}},label:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.label},set:function(o){if("string"==typeof o&&"title"!==r&&"save-status"!==r){var i=a.get(r);i&&a.set(r,n(n({},i),{label:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandLabel,{id:r,label:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command label failed",t)}))}}},editable:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.editable},set:function(o){if("title"===r){var i=a.get(r);i&&a.set(r,n(n({},i),{editable:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandEditable,{id:r,editable:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command editable failed",t)}))}else e.emitHeaderBarsError("headerBars command editable is only supported for title",new Error("headerBars command editable is only supported for title"))}},onCommandClick:{configurable:!0,enumerable:!0,get:function(){return e.getOverridesMap().get(r)},set:function(n){e.getOverridesMap().set(r,n),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:r,enabled:"function"==typeof n}).catch((function(t){e.emitHeaderBarsError("set headerBars command callback failed",t)}))}}}),o.set(r,s),s}t.HEADER_BARS_METHOD={getVisible:"headerBars.getVisible",setVisible:"headerBars.setVisible",addCommand:"headerBars.addCommand",getCommand:"headerBars.getCommand",setCommandVisible:"headerBars.setCommandVisible",setCommandDisabled:"headerBars.setCommandDisabled",setCommandActive:"headerBars.setCommandActive",setCommandSrc:"headerBars.setCommandSrc",setCommandLabel:"headerBars.setCommandLabel",setCommandEditable:"headerBars.setCommandEditable",setCommandCallbackEnabled:"headerBars.setCommandCallbackEnabled",listViewCommands:"headerBars.listViewCommands",handleCommandClick:"headerBars.handleCommandClick"},t.HEADER_BARS_CHANGED_EVENT="headerBars:changed",t.initHeaderBarsFacade=function(e){var r=this,n={visible:!1,onTitleChange:void 0,getVisible:function(){return o(r,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,l(e)];case 1:return[2,t.sent()]}}))}))},setVisible:function(t){return o(r,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,d(e,t)];case 1:return r.sent(),[2]}}))}))},addCommand:function(n,s,c){return void 0===c&&(c="after"),o(r,void 0,void 0,(function(){var r,o,u,l;return i(this,(function(i){switch(i.label){case 0:return r=n.onClick,o=a(n,["onClick"]),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.addCommand,{command:o,posCommand:s,pos:c})];case 1:return u=i.sent(),l=r,u&&"function"==typeof l?(e.getOverridesMap().set(n.id,l),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:n.id,enabled:!0})]):[3,3];case 2:i.sent(),i.label=3;case 3:return[2,u]}}))}))},getCommand:function(t){return f(e,t)},listViewCommands:function(){return o(r,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.listViewCommands)];case 1:return r=n.sent(),u(e,r),[2,r]}}))}))}};return Object.defineProperty(n,"visible",{configurable:!0,enumerable:!0,get:function(){return e.getVisibleState()},set:function(t){d(e,t).catch((function(t){e.emitHeaderBarsError("set headerBars.visible failed",t)}))}}),Object.defineProperty(n,"onTitleChange",{configurable:!0,enumerable:!0,get:function(){return e.getTitleHandler()},set:function(t){e.setTitleHandler(t),"function"==typeof t&&c(e).catch((function(t){e.emitHeaderBarsError("subscribe headerBars titleChange failed",t)}))}}),n},t.ensureHeaderBarsTitleChangeSubscription=c,t.syncHeaderBarsCommands=u,t.applyHeaderBarsChanged=function(e,t){var r=null==t?void 0:t.snapshot;r&&(e.setVisibleState(r.visible),u(e,r.commands))},t.syncHeaderBarsVisible=l,t.setHeaderBarsVisible=d,t.getHeaderBarsCommandRef=f,t.subscribeHeaderBarsTitleChange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,e(s.InvokeMethod.ListenEditorEvent,["titleChange"])];case 1:return t.sent(),[2]}}))}))}},4780:function(e,t,r){"use strict";var n,o=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)},a=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)},c=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},l=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},d=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_RENDERED_EVENT=t.Event=t.OfficeSDK=t.MessageEvent=void 0,r(5781),r(2701),r(2288),r(7782),r(6532);var f=r(1436),h=r(4339),p=r(611),v=r(1504),g=d(r(5323)),m=r(4057),y=d(r(1582)),b=r(9368),w=r(2560),E=r(8213),C=r(799),S=r(2694);s(r(3129),t),s(r(799),t);var O=(0,g.default)(),_="smjssdk",k="smParams",P={en:"en-US",ja:"ja-JP"},A=["zh-CN","zh-TW","en-US","ja-JP","ko-KR","es-ES","pt-PT","de-DE","fr-FR","it-IT","ru-RU","id-ID","vi-VN","th-TH","ms-MY","ar-SA"],M="SDK_PRELOAD_ERROR",T="SDK_PRELOAD_CREDENTIALS_RESPONSE",x=new Set(["then","catch","finally","toJSON"]);function R(e){return x.has(e)}t.MessageEvent=m.InvokeMethod;var L=function(e){function r(t,r){var n,o,i,a=this;(a=e.call(this)||this)._fileType=m.FileType.Unknown,a.messageHandler=function(){},a.emitter=new v.TinyEmitter,a._readyState=m.ReadyState.Loading,a.collaborators=[],a.headerBarsVisible=!0,a.headerBarsCommands=new Map,a.headerBarsCommandOverrides=new Map,a.slashMenuCallbacks=new Map,a.editorFacadeCallbacks=new Map,a.headerBarsCommandRefs=new Map,a.headerBarsTitleChangeSubscribed=!1,a.disconnected=!1,a.preloadAckTimeoutMs=2e3,a.preloadDoneTimeoutMs=8e3,a.preloadReadyTimeoutMs=3e3,a.connectOptions=t,a.contentVersion=r,a.uuid=(0,p.v4)(),a.userUuid=t.userUuid,a.normalizedEmptyPage=(0,w.normalizeEmptyPageOptions)(t.emptyPage),(0,b.assert)(t.container,(function(e){return e instanceof HTMLElement}),'container is not an HTMLElement: "'.concat(String(t.container),'"')),(0,b.assert)(t.container,(function(e){return!["iframe","frame","embed","object"].includes(e.tagName.toLowerCase())}),'invalid container element type: "'.concat(t.container.tagName,'",DIV are recommended.'));try{a.endpoint=new URL(t.endpoint)}catch(e){throw new Error('invalid endpoint: "'.concat(t.endpoint,'"'))}a.sameOrigin=a.endpoint.origin===O.location.origin,!1===/\/sdk\/v2\/*/i.test(a.endpoint.pathname)&&console.warn('Generally the endpoint should end with "/sdk/v2", please make sure it is correct: "'.concat(a.endpoint.toString(),'"')),a.apiAdaptor=t.apiAdaptor?t.apiAdaptor.toString():"",a.apiAdaptorContext=t.apiAdaptorContext?JSON.stringify(t.apiAdaptorContext):"";try{a.startParams=new h.StartParams(null!==(i=null!==(n=t.smParams)&&void 0!==n?n:new URLSearchParams(null===(o=O.location)||void 0===o?void 0:o.search).get(k))&&void 0!==i?i:"")}catch(e){a.startParams=new h.StartParams}"boolean"==typeof t.debug&&(a.startParams.debug=a.connectOptions.debug),a.onViewportResize=function(){c(a,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.postMessage({event:m.SDKEvent.ViewportResize,payload:this.getContainerRect()})];case 1:return e.sent(),[2]}}))})).catch((function(e){a.emit("error",new Error("Failed to emit resize event: ".concat(String(e))))}))},a.initChannel(),a.preloadCredentialsMessageHandler=function(e){a.handlePreloadMessage(e)},a.headerBars=a.initHeaderBarsFacade();var s=t.messageExpires;return"number"!=typeof s&&(s=3e5),a.messageExpires=(0,b.assert)(s,(function(e){return!isNaN(e)&&e>0}),'"messageExpires" is not an valid number: "'.concat(s,'"')),a.handledMessageCache=new y.default(s),a.sameOrigin||(a.messageHandler=function(e){var t=e.data;(0,f.isOfficeSDKMessageEventLike)(t)&&a.shouldHandleMessage(t)&&(a.handledMessageCache.add(t.id),a.channel.distributeMessage(e.data).catch((function(e){a.emit("error",e)})))}),a}return o(r,e),Object.defineProperty(r.prototype,"fileType",{get:function(){return this._fileType},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"readyState",{get:function(){return this._readyState},enumerable:!1,configurable:!0}),r.prototype.shouldExposeSlashMenu=function(){if(!this.connectOptions.slashMenu)return!1;if(this.fileType===m.FileType.Document)return!0;if(this.fileType!==m.FileType.Unknown)return!1;var e=this.getSlashMenuTypeHint();return"string"!=typeof e||["doc","docs","document"].includes(e)},r.prototype.getSlashMenuTypeHint=function(){var e=this.startParams.type;if("string"==typeof e)return e.trim().toLowerCase()||void 0},r.prototype.createSerializedSlashMenu=function(){if(this.slashMenuCallbacks.clear(),this.shouldExposeSlashMenu()){var e=this.connectOptions.slashMenu;if(e&&Array.isArray(e.entries))return{entries:this.serializeSlashMenuItems(e.entries,["entries"])}}},r.prototype.serializeSlashMenuItems=function(e,t){var r=this;return e.map((function(e,n){var o=l(l([],t,!0),["".concat(n),e.name],!1);if(function(e){return"entry"===e.type}(e))return i(i({},e),{children:e.children?r.serializeSlashMenuItems(e.children,o):void 0});var a=r.registerSlashMenuCallback(o,e.callback),s={name:e.name,type:e.type,disabled:e.disabled,label:e.label,icon:e.icon};return a&&(s.callbackId=a),s}))},r.prototype.registerSlashMenuCallback=function(e,t){if("function"==typeof t){var r="slash-menu:".concat(e.join(":"));return this.slashMenuCallbacks.set(r,t),r}},r.prototype.getEditor=function(){return this.editor},r.prototype.setCredentials=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[e],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.setSignature=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{signature:e}],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.setToken=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{token:e}],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.getPerformanceEntries=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.RequestPerformanceEntries,[],{audience:_})];case 1:return[2,e.sent()]}}))}))},r.prototype.disconnect=function(){var e;this.disconnected=!0,this.pendingInitializationErrorHandler=void 0,this.pendingInitializationError=void 0,this.preloadCredentialsPromise=void 0,this.slashMenuCallbacks.clear(),this.editorFacadeCallbacks.clear(),(null===(e=this.element)||void 0===e?void 0:e.parentElement)instanceof HTMLElement&&this.element.parentElement.removeChild(this.element),window.removeEventListener("message",this.messageHandler),window.removeEventListener("message",this.preloadCredentialsMessageHandler),window.visualViewport?window.visualViewport.removeEventListener("resize",this.onViewportResize):window.removeEventListener("resize",this.onViewportResize)},r.prototype.init=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this._readyState!==m.ReadyState.Loading?[2]:(this._readyState=m.ReadyState.LoadingEditor,this.sameOrigin||window.addEventListener("message",this.messageHandler),this.connectOptions.type&&window.addEventListener("message",this.preloadCredentialsMessageHandler),e=this,[4,this.initIframe()]);case 1:return e.element=r.sent(),this.connectOptions.container.appendChild(this.element),[4,this.runPreloadHandshake()];case 2:return r.sent(),this.editor=this.initEditor(),[4,new Promise((function(e,r){var n=!1,o=function(i){var a=i.state,s=i.error,c=i.fileType;t._readyState=a,c&&t._fileType===m.FileType.Unknown&&(t._fileType=c),s?(n=!0,r("string"==typeof s?new Error(s):s)):a===m.ReadyState.Ready&&(n=!0,e()),n&&(t.off(j.ReadyState,o),t.pendingInitializationErrorHandler=void 0)};if(t.pendingInitializationErrorHandler=function(e){n=!0,t.off(j.ReadyState,o),t.pendingInitializationErrorHandler=void 0,r(e)},t.pendingInitializationError){var i=t.pendingInitializationError;return t.pendingInitializationError=void 0,void t.pendingInitializationErrorHandler(i)}t.on(j.ReadyState,o)}))];case 3:switch(r.sent(),this.fileType){case m.FileType.Document:this.document=this.editor;break;case m.FileType.DocumentPro:this.documentPro=this.editor;break;case m.FileType.Spreadsheet:this.spreadsheet=this.editor;break;case m.FileType.Table:this.table=this.editor;break;case m.FileType.Form:this.form=this.editor;break;case m.FileType.Flowchart:this.flowchart=this.editor}return this.installRootFacade(),window.removeEventListener("message",this.preloadCredentialsMessageHandler),[2]}}))}))},r.prototype.ready=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return this.readyState===m.ReadyState.Ready?[2]:[4,this.init()];case 1:return e.sent(),[2]}}))}))},r.prototype.initIframe=function(){var e;return c(this,void 0,void 0,(function(){var t,r,n,o,i;return u(this,(function(a){return t=this.connectOptions,(r=document.createElement("iframe")).style.border="none",r.style.overflow="hidden",r.style.width="100%",r.style.height="100%",r.style.display="block","allow"in r?r.allow=null!==(e=this.connectOptions.allowPolicy)&&void 0!==e?e:"fullscreen *;clipboard-read *;clipboard-write *;":r.allowFullscreen=!0,(n=this.endpoint).pathname="".concat(n.pathname,"/api/").concat((0,b.assert)(t.fileId,F,'"fileId" is missing or empty: '.concat(t.fileId)),"/preload").replace(/\/+/g,"/"),(o=t.params)&&Object.keys(o).forEach((function(e){n.searchParams.set(e,o[e])})),"string"==typeof t.deviceMode&&n.searchParams.set("deviceMode",t.deviceMode.trim()),n.searchParams.set(k,this.startParams.toString()),(t.showLoadingEffect||t.showLoading)&&(n.searchParams.set("loadingEffect","true"),t.loadingOptions&&n.searchParams.set("loadingOptions",JSON.stringify(t.loadingOptions))),"string"==typeof t.lang&&(i=function(e){var t,r=null!==(t=P[e])&&void 0!==t?t:e;if(A.includes(r))return r}(t.lang),i&&n.searchParams.set("lang",i)),n.searchParams.set("jsver",null!=="2.0.5-beta.12"?"2.0.5-beta.12":""),(0,b.assert)(t.token,F,'"token" is missing or empty: "'.concat(t.token,'"')),(0,b.assert)(t.signature,F,'"signature" is missing or empty: "'.concat(t.signature,'"')),n.searchParams.set("uuid",this.uuid),this.userUuid&&n.searchParams.set("userUuid",this.userUuid),r.src=n.toString(),[2,r]}))}))},r.prototype.handlePreloadMessage=function(e){var t,r;return c(this,void 0,void 0,(function(){var n,o,i,a,s,c;return u(this,(function(u){switch(u.label){case 0:if(this.disconnected)return[2];if(!(n=null===(t=this.element)||void 0===t?void 0:t.contentWindow)||e.source!==n)return[2];if(e.origin&&e.origin!==this.endpoint.origin)return[2];if(!(o=e.data)||"string"!=typeof o.type)return[2];if(o.type===M)return i=null===(r=e.data.error)||void 0===r?void 0:r.message,a=new Error(i||"iframe initialization failed"),this.pendingInitializationErrorHandler?this.pendingInitializationErrorHandler(a):this.pendingInitializationError=a,[2];if("SDK_PRELOAD_CREDENTIALS_REQUEST"!==o.type||"string"!=typeof o.requestId||0===o.requestId.length)return[2];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,this.getPreloadCredentials()];case 2:return s=u.sent(),this.disconnected?[2]:(n.postMessage({type:T,requestId:o.requestId,ts:Date.now(),payload:s},e.origin||this.endpoint.origin),[3,4]);case 3:return c=u.sent(),n.postMessage({type:T,requestId:o.requestId,ts:Date.now(),error:{code:"CREDENTIALS_FAILED",message:c instanceof Error?c.message:String(c)}},e.origin||this.endpoint.origin),[3,4];case 4:return[2]}}))}))},r.prototype.getPreloadCredentials=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this.preloadCredentialsPromise?[4,this.preloadCredentialsPromise]:[3,2];case 1:return[2,r.sent()];case 2:e=c(t,void 0,void 0,(function(){var e,t,r,n;return u(this,(function(o){switch(o.label){case 0:return[4,null===(r=(t=this.connectOptions).getCredentials)||void 0===r?void 0:r.call(t)];case 1:if(!(e=null!==(n=o.sent())&&void 0!==n?n:{token:this.connectOptions.token,signature:this.connectOptions.signature})||"string"!=typeof e.token||0===e.token.length||"string"!=typeof e.signature||0===e.signature.length)throw new Error("invalid credentials returned by getCredentials");return[2,e]}}))})),this.preloadCredentialsPromise=e,r.label=3;case 3:return r.trys.push([3,,5,6]),[4,e];case 4:return[2,r.sent()];case 5:return this.preloadCredentialsPromise===e&&(this.preloadCredentialsPromise=void 0),[7];case 6:return[2]}}))}))},r.prototype.runPreloadHandshake=function(){return c(this,void 0,void 0,(function(){var e,t,r,n,o,i,a,s,c,l=this;return u(this,(function(u){switch(u.label){case 0:return e=this.connectOptions.token,t=this.connectOptions.signature,r=this.connectOptions.fileId,n=(0,p.v4)(),o=!1,i=!1,a=!1,s=null,c=null,[4,new Promise((function(u,d){var f=function(){s&&(clearTimeout(s),s=null),c&&(clearTimeout(c),c=null),window.removeEventListener("message",p)},h=function(){var o,i,a=(0,E.createPreloadInitPayload)({token:e,signature:t,fileGuid:r,mode:l.connectOptions.mode,type:l.connectOptions.type,contentVersion:l.contentVersion});null===(i=null===(o=l.element)||void 0===o?void 0:o.contentWindow)||void 0===i||i.postMessage({type:"SDK_PRELOAD_INIT",requestId:n,ts:Date.now(),payload:a},"*")},p=function(e){var t,r,p=e.data;if(p&&"object"==typeof p&&"string"==typeof p.type){if("SDK_PRELOAD_READY"===p.type&&!o)return o=!0,h(),void(s=setTimeout((function(){h(),c=setTimeout((function(){f(),d(new Error("preload init timeout"))}),l.preloadDoneTimeoutMs)}),l.preloadAckTimeoutMs));if(p.requestId===n)return"SDK_PRELOAD_ACK"===p.type?(i=!0,s&&(clearTimeout(s),s=null),void(c||(c=setTimeout((function(){f(),d(new Error("preload done timeout"))}),l.preloadDoneTimeoutMs)))):"SDK_PRELOAD_DONE"===p.type?(a=!0,f(),void u()):void(p.type===M&&(f(),d(new Error((null===(t=p.error)||void 0===t?void 0:t.message)||(null===(r=p.error)||void 0===r?void 0:r.code)||"preload init failed"))))}};window.addEventListener("message",p),setTimeout((function(){o||i||a||(f(),d(new Error("preload ready timeout")))}),l.preloadReadyTimeoutMs)}))];case 1:return u.sent(),[2]}}))}))},r.prototype.initChannel=function(){var e=this,r=this.channel=new f.OfficeSDKBroadcastChannel({channelId:this.startParams.channelId,debug:this.connectOptions.debug,autoStructuredClone:!0,debugNamespace:"SM_SDK_CHAN"});this.startParams.channelId||(this.startParams.channelId=r.id),r.on("error",(function(t){e.emit("error",t)})),r.on("messageError",(function(t){e.emit("error",t)})),this.sameOrigin||r.on("postMessage",(function(t){var r,n;null===(n=null===(r=e.element)||void 0===r?void 0:r.contentWindow)||void 0===n||n.postMessage(t,"*")}),{audience:"*"}),r.on("message",(function(r){var n=r.data;(null==n?void 0:n.event)===m.InvokeMethod.ReadyState?e.emit(j.ReadyState,n.payload):(null==n?void 0:n.event)===t.EDITOR_RENDERED_EVENT&&e.emit(j.EditorRendered,n.payload)}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.Error,(function(t){e.emit(j.Error,t)}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.SDKInit,(function(){return c(e,void 0,void 0,(function(){var e,t,r=this;return u(this,(function(n){return e={},Object.keys(this.connectOptions).forEach((function(t){if("slashMenu"!==t){var n=r.connectOptions[t];e[t]=n,"function"==typeof n&&(e["has".concat(t[0].toUpperCase()).concat(t.slice(1))]=!0)}})),(t=this.createSerializedSlashMenu())&&(e.slashMenu=t),e.apiAdaptor=this.apiAdaptor,e.apiAdaptorContext=this.apiAdaptorContext,e.emptyPage=this.normalizedEmptyPage,[2,i(i({},e),{uuid:this.uuid})]}))}))}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.DispatchSDKEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return t===C.HEADER_BARS_CHANGED_EVENT&&this.applyHeaderBarsChanged(r[0]),this.emit.apply(this,l([t],r,!1)),[2]}))}))}),{audience:_}),r.addInvokeHandler(C.HEADER_BARS_METHOD.handleCommandClick,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.headerBarsCommandOverrides.get(t))?[2,!1]:[4,e()];case 1:return r.sent(),[2,!0]}}))}))}),{audience:_}),r.addInvokeHandler("slashMenu.handleButtonClick",(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.slashMenuCallbacks.get(t))?(console.error("[slashMenu] callback not found: ".concat(String(t))),[2,!1]):[4,Promise.resolve(e())];case 1:return r.sent(),[2,!0]}}))}))}),{audience:_}),r.addInvokeHandler("editorFacade.handleCallback",(function(t,r){return void 0===r&&(r=[]),c(e,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return"function"!=typeof(e=this.editorFacadeCallbacks.get(t))?(console.error("[editorFacade] callback not found: ".concat(String(t))),[2,void 0]):[4,Promise.resolve(e.apply(void 0,r))];case 1:return[2,n.sent()]}}))}))}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.DispatchEditorEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return"collaboratorsChanged"===t&&this.updateCollaborators(r),function(e){return I.has(e)}(t)&&this.emit(t,r),this.emitter.emit(t,r),[2]}))}))}),{audience:_}),this.bindContainerMethodHandlers(),window.visualViewport?window.visualViewport.addEventListener("resize",this.onViewportResize):window.addEventListener("resize",this.onViewportResize)},r.prototype.bindContainerMethodHandlers=function(){var e=this,t=this.channel;t.addInvokeHandler(m.ContainerMethod.GenerateUrl,(function(t,r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.generateUrl)throw new Error('"'.concat(m.ContainerMethod.GenerateUrl,'" not found'));return[4,Promise.resolve(this.connectOptions.generateUrl(t,r,n))];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.HandleCustomTask,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.handleCustomTask)throw new Error('"'.concat(m.ContainerMethod.HandleCustomTask,'" not found'));return[4,Promise.resolve(this.connectOptions.handleCustomTask(t))];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.OpenLink,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){if("function"!=typeof this.connectOptions.openLink)throw new Error('"'.concat(m.ContainerMethod.OpenLink,'" not found'));return this.connectOptions.openLink(t,r),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetFileInfoFromUrl,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.getFileInfoFromUrl)throw new Error('"'.concat(m.ContainerMethod.GetFileInfoFromUrl,'" not a function'));return[4,this.connectOptions.getFileInfoFromUrl(t)];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.MentionClickHandlerForMobile,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){if("function"!=typeof this.connectOptions.mentionClickHandlerForMobile)throw new Error('"'.concat(m.ContainerMethod.MentionClickHandlerForMobile,'" not found'));return"object"==typeof t&&null!=t&&(e=this.element.getBoundingClientRect(),t.x+=e.x,t.y+=e.y,t.isMention&&(t.mentionInfo.left+=e.x,t.mentionInfo.top+=e.y)),this.connectOptions.mentionClickHandlerForMobile(t),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetContainerRect,(function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){return[2,this.getContainerRect()]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.ShowToast,(function(t){return c(e,void 0,void 0,(function(){var e,r;return u(this,(function(n){return null===(r=(e=this.connectOptions).showToast)||void 0===r||r.call(e,t),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetCredentials,(function(){return c(e,void 0,void 0,(function(){var e,t;return u(this,(function(r){switch(r.label){case 0:return[4,null===(t=(e=this.connectOptions).getCredentials)||void 0===t?void 0:t.call(e)];case 1:return[2,r.sent()]}}))}))}),{audience:_})},r.prototype.initHeaderBarsFacade=function(){var e=this;return(0,C.initHeaderBarsFacade)({getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(j.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:_})];case 1:return e.sent(),[2]}}))}))}})},r.prototype.ensureHeaderBarsTitleChangeSubscription=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,C.ensureHeaderBarsTitleChangeSubscription)(this.createHeaderBarsHost())];case 1:return e.sent(),[2]}}))}))},r.prototype.invokeHeaderBars=function(e,t){return c(this,void 0,void 0,(function(){var r;return u(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:_})];case 1:return[2,n.sent()]}}))}))},r.prototype.syncHeaderBarsCommands=function(e){(0,C.syncHeaderBarsCommands)(this.createHeaderBarsHost(),e)},r.prototype.createHeaderBarsHost=function(){var e=this;return{getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(j.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:_})];case 1:return e.sent(),[2]}}))}))}}},r.prototype.applyHeaderBarsChanged=function(e){(0,C.applyHeaderBarsChanged)(this.createHeaderBarsHost(),e)},r.prototype.syncHeaderBarsVisible=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,C.syncHeaderBarsVisible)(this.createHeaderBarsHost())];case 1:return[2,e.sent()]}}))}))},r.prototype.setHeaderBarsVisible=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,(0,C.setHeaderBarsVisible)(this.createHeaderBarsHost(),e)];case 1:return t.sent(),[2]}}))}))},r.prototype.getHeaderBarsCommandRef=function(e){return(0,C.getHeaderBarsCommandRef)(this.createHeaderBarsHost(),e)},r.prototype.registerEditorFacadeCallback=function(e){var t="editor-facade:".concat((0,p.v4)());return this.editorFacadeCallbacks.set(t,e),t},r.prototype.unregisterEditorFacadeCallback=function(e){this.editorFacadeCallbacks.delete(e)},r.prototype.createEditorFacadeModule=function(e,t){var r=this;return new Proxy(t,{get:function(t,n){if("string"==typeof n&&!R(n))return Object.prototype.hasOwnProperty.call(t,n)?t[n]:function(){for(var t=[],o=0;o<arguments.length;o++)t[o]=arguments[o];return c(r,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(n),t)];case 1:return[2,r.sent()]}}))}))}}})},r.prototype.createValueObjectFacade=function(e,t,r){var n=this;return new Proxy(r,{get:function(r,o){if("string"==typeof o&&!R(o))return Object.prototype.hasOwnProperty.call(r,o)?r[o]:function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];return c(n,void 0,void 0,(function(){return u(this,(function(n){switch(n.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(o),l([t],r,!0))];case 1:return[2,n.sent()]}}))}))}}})},r.prototype.registerEditorFacadeListener=function(e,t){var r=this,n=this.registerEditorFacadeCallback((function(e){return c(r,void 0,void 0,(function(){return u(this,(function(r){return[2,t(e)]}))}))}));return this.invokeEditorFacade(e,[n]).catch((function(e){r.emit(j.Error,e instanceof Error?e:new Error("register editor facade listener failed: ".concat(String(e))))})),function(){r.unregisterEditorFacadeCallback(n)}},r.prototype.installRootFacade=function(){this.clearRootFacade(),Object.assign(this,(0,S.buildRootFacadeState)({fileType:this.fileType,invokeEditorFacade:this.invokeEditorFacade.bind(this),listenEditorEvent:this.listenEditorEvent.bind(this),createEditorFacadeModule:this.createEditorFacadeModule.bind(this),createValueObjectFacade:this.createValueObjectFacade.bind(this),registerEditorFacadeListener:this.registerEditorFacadeListener.bind(this),registerEditorFacadeCallback:this.registerEditorFacadeCallback.bind(this),unregisterEditorFacadeCallback:this.unregisterEditorFacadeCallback.bind(this)}))},r.prototype.clearRootFacade=function(){this.title=void 0,this.history=void 0,this.comments=void 0,this.locks=void 0,this.mention=void 0,this.content=void 0,this.version=void 0,this.presentation=void 0,this.selection=void 0,this.search=void 0,this.outline=void 0,this.sidebar=void 0,this.tables=void 0,this.settings=void 0,this.workbook=void 0,this.activeSheet=void 0,this.charts=void 0,this.selections=void 0,this.slides=void 0,this.text=void 0,this.zoom=void 0,this.eventSubscription=void 0,this.batchChanges=void 0,this.export=void 0,this.print=void 0,this.setFocus=void 0},r.prototype.invokeEditorFacade=function(e,t){return void 0===t&&(t=[]),c(this,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[e,t],{audience:_})];case 1:return[2,r.sent()]}}))}))},r.prototype.listenEditorEvent=function(e,t){var r=this;return this.emitter.on(e,t),this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[e],{audience:_}).catch((function(e){r.emit(j.Error,e instanceof Error?e:new Error("listen editor event failed: ".concat(String(e))))})),function(){r.emitter.off(e,t)}},r.prototype.initEditor=function(){var e=this,t=function(e){return"saveStatusDidChange"===e?"saveStatusChanged":e},r={on:function(r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return r=t(r),this.emitter.on(r,n),[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[r],{audience:_})];case 1:return e.sent(),[2]}}))}))},off:function(r,n){r=t(r),e.emitter.off(r,n)},getCollaborators:function(){return l([],e.collaborators,!0)}},n=function(t){return void 0===t&&(t=[]),new Proxy((function(){}),{get:function(e,o){if("string"!=typeof o||!R(o))return 0===t.length&&Object.prototype.hasOwnProperty.call(r,o)?r[o]:"string"==typeof o&&["call","apply","bind"].includes(o)?e[o]:"string"==typeof o?n(l(l([],t,!0),[o],!1)):void 0},apply:function(r,n,o){if(t.length>0)return e.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[t.join("."),o],{audience:_})}})};return n()},r.prototype.shouldHandleMessage=function(e){return!(e.channelId!==this.channel.id||e.time+this.messageExpires<Date.now()||this.handledMessageCache.has(e.context.messageId))},r.prototype.getContainerRect=function(){var e,t=this.element.getBoundingClientRect(),r={viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,top:t.top,left:t.left,bottom:t.bottom,right:t.right,scrollTop:null===(e=document.scrollingElement)||void 0===e?void 0:e.scrollTop,visualViewport:{}};return window.visualViewport&&(r.visualViewport={width:window.visualViewport.width,height:window.visualViewport.height,offsetLeft:window.visualViewport.offsetLeft,offsetTop:window.visualViewport.offsetTop,pageLeft:window.visualViewport.pageLeft,pageTop:window.visualViewport.pageTop,scale:window.visualViewport.scale}),r},r.prototype.updateCollaborators=function(e){if(e&&"object"==typeof e&&Array.isArray(e.collaborators)){var t=e;this.collaborators=l([],t.collaborators,!0)}},r}(v.TinyEmitter);function F(e){return"string"==typeof e&&e.trim().length>0}t.OfficeSDK=L;var j,I=new Set(["emptyPageShown","emptyPageAction","emptyPageHidden"]);!function(e){e.SDKInit="SDKInit",e.Error="error",e.ReadyState="readyState",e.EditorRendered="editorRendered",e.EditorEvent="editorEvent"}(j=t.Event||(t.Event={})),t.EDITOR_RENDERED_EVENT="editorRendered"},9368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assert=void 0,t.assert=function(e,t,r){if(t(e))return e;throw new Error(r)}},5098:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.connectV2=t.connect=t.validateConnectV2Options=t.isConnectV2Mode=t.isConnectV2FileType=t.CONNECT_V2_FILE_TYPES=void 0;var i=r(4780),a=r(3264),s=r(3264);function c(e,t){return n(this,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,(r=new i.OfficeSDK(e,t)).init()];case 1:return o.sent(),[2,r];case 2:throw n=o.sent(),e.type&&(null==r||r.disconnect()),console.log("Failed to init OfficeSDK",{error:n,options:e}),n;case 3:return[2]}}))}))}Object.defineProperty(t,"CONNECT_V2_FILE_TYPES",{enumerable:!0,get:function(){return s.CONNECT_V2_FILE_TYPES}}),Object.defineProperty(t,"isConnectV2FileType",{enumerable:!0,get:function(){return s.isConnectV2FileType}}),Object.defineProperty(t,"isConnectV2Mode",{enumerable:!0,get:function(){return s.isConnectV2Mode}}),Object.defineProperty(t,"validateConnectV2Options",{enumerable:!0,get:function(){return s.validateConnectV2Options}}),t.connect=function(e){return n(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,c(e)];case 1:return[2,t.sent()]}}))}))},t.connectV2=function(e){return n(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return(0,a.validateConnectV2Options)(e),[4,c(e,"v2")];case 1:return[2,t.sent()]}}))}))}},8156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t},a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.START_PARAMS_FIELD=t.Flowchart=t.Form=t.Table=t.Presentation=t.Spreadsheet=t.Document=t.DocumentPro=t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0;var s=i(r(1810));t.DocumentPro=s;var c=i(r(9105));t.Document=c;var u=i(r(8724));t.Spreadsheet=u;var l=i(r(1260));t.Presentation=l;var d=i(r(7642));t.Table=d;var f=i(r(6954));t.Form=f;var h=i(r(4054));t.Flowchart=h,a(r(4057),t),a(r(5098),t),a(r(4780),t);var p=r(2560);Object.defineProperty(t,"ALL_EMPTY_PAGE_SCENES",{enumerable:!0,get:function(){return p.ALL_EMPTY_PAGE_SCENES}}),Object.defineProperty(t,"normalizeEmptyPageOptions",{enumerable:!0,get:function(){return p.normalizeEmptyPageOptions}}),t.START_PARAMS_FIELD="smParams"},8213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPreloadInitPayload=void 0,t.createPreloadInitPayload=function(e){var t={token:e.token,signature:e.signature,fileGuid:e.fileGuid,mode:e.mode,type:e.type};return"v2"===e.contentVersion&&(t.contentVersion="v2"),t}},3264:(e,t)=>{"use strict";function r(e){return"string"==typeof e&&t.CONNECT_V2_FILE_TYPES.includes(e)}function n(e){return"edit"===e||"preview"===e}Object.defineProperty(t,"__esModule",{value:!0}),t.validateConnectV2Options=t.isConnectV2Mode=t.isConnectV2FileType=t.CONNECT_V2_FILE_TYPES=void 0,t.CONNECT_V2_FILE_TYPES=["file","document","documentPro","writer","spreadsheet","presentation","table","form"],t.isConnectV2FileType=r,t.isConnectV2Mode=n,t.validateConnectV2Options=function(e){if(!r(null==e?void 0:e.type))throw new Error('invalid connectV2 "type": '.concat(String(null==e?void 0:e.type)));if(!n(null==e?void 0:e.mode))throw new Error('invalid connectV2 "mode": '.concat(String(null==e?void 0:e.mode)))}},9105:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2560:function(e,t){"use strict";var r=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};function n(e){if(!Array.isArray(e))return r([],t.ALL_EMPTY_PAGE_SCENES,!0);for(var n=[],o=0,i=e;o<i.length;o++){var a=i[o];t.ALL_EMPTY_PAGE_SCENES.includes(a)&&n.push(a)}return 0===n.length?r([],t.ALL_EMPTY_PAGE_SCENES,!0):n}function o(e){return"show-immediately"===e?"show-immediately":"refresh-first"}function i(e){return"string"==typeof e&&e.length>0?e:void 0}function a(e){if(e&&"object"==typeof e){var t=i(e.label);if(t)return{label:t}}}function s(e){if(e&&"object"==typeof e){var t={},r=i(e.title);r&&(t.title=r);var n=i(e.description);n&&(t.description=n);var o=a(e.primary);o&&(t.primary=o);var s=a(e.secondary);if(s&&(t.secondary=s),void 0!==t.title||void 0!==t.description||void 0!==t.primary||void 0!==t.secondary)return t}}function c(e){if(!e||"object"!=typeof e)return{};for(var r={},n=0,o=t.ALL_EMPTY_PAGE_SCENES;n<o.length;n++){var i=o[n],a=s(e[i]);a&&(r[i]=a)}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0,t.ALL_EMPTY_PAGE_SCENES=["file-open-failed","no-permission","network-error","token-expired"],t.normalizeEmptyPageOptions=function(e){return!1===e?{enabled:!1,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:!0===e||void 0===e?{enabled:!0,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:{enabled:"boolean"!=typeof e.enabled||e.enabled,scenes:n(e.scenes),tokenExpiredStrategy:o(e.tokenExpiredStrategy),overrides:c(e.overrides)}}},4054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6954:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1260:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7642:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},611:(e,t,r)=>{"use strict";var n;r.r(t),r.d(t,{NIL:()=>T,parse:()=>g,stringify:()=>l,v1:()=>v,v3:()=>_,v4:()=>k,v5:()=>M,validate:()=>s,version:()=>x});var o=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(o)}const a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,s=function(e){return"string"==typeof e&&a.test(e)};for(var c=[],u=0;u<256;++u)c.push((u+256).toString(16).substr(1));const l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!s(r))throw TypeError("Stringified UUID is invalid");return r};var d,f,h=0,p=0;const v=function(e,t,r){var n=t&&r||0,o=t||new Array(16),a=(e=e||{}).node||d,s=void 0!==e.clockseq?e.clockseq:f;if(null==a||null==s){var c=e.random||(e.rng||i)();null==a&&(a=d=[1|c[0],c[1],c[2],c[3],c[4],c[5]]),null==s&&(s=f=16383&(c[6]<<8|c[7]))}var u=void 0!==e.msecs?e.msecs:Date.now(),v=void 0!==e.nsecs?e.nsecs:p+1,g=u-h+(v-p)/1e4;if(g<0&&void 0===e.clockseq&&(s=s+1&16383),(g<0||u>h)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");h=u,p=v,f=s;var m=(1e4*(268435455&(u+=122192928e5))+v)%4294967296;o[n++]=m>>>24&255,o[n++]=m>>>16&255,o[n++]=m>>>8&255,o[n++]=255&m;var y=u/4294967296*1e4&268435455;o[n++]=y>>>8&255,o[n++]=255&y,o[n++]=y>>>24&15|16,o[n++]=y>>>16&255,o[n++]=s>>>8|128,o[n++]=255&s;for(var b=0;b<6;++b)o[n+b]=a[b];return t||l(o)},g=function(e){if(!s(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};function m(e,t,r){function n(e,n,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof n&&(n=g(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var a=new Uint8Array(16+e.length);if(a.set(n),a.set(e,n.length),(a=r(a))[6]=15&a[6]|t,a[8]=63&a[8]|128,o){i=i||0;for(var s=0;s<16;++s)o[i+s]=a[s];return o}return l(a)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function y(e){return 14+(e+64>>>9<<4)+1}function b(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function w(e,t,r,n,o,i){return b((a=b(b(t,e),b(n,i)))<<(s=o)|a>>>32-s,r);var a,s}function E(e,t,r,n,o,i,a){return w(t&r|~t&n,e,t,o,i,a)}function C(e,t,r,n,o,i,a){return w(t&n|r&~n,e,t,o,i,a)}function S(e,t,r,n,o,i,a){return w(t^r^n,e,t,o,i,a)}function O(e,t,r,n,o,i,a){return w(r^(t|~n),e,t,o,i,a)}const _=m("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,n="0123456789abcdef",o=0;o<r;o+=8){var i=e[o>>5]>>>o%32&255,a=parseInt(n.charAt(i>>>4&15)+n.charAt(15&i),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[y(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,i=271733878,a=0;a<e.length;a+=16){var s=r,c=n,u=o,l=i;r=E(r,n,o,i,e[a],7,-680876936),i=E(i,r,n,o,e[a+1],12,-389564586),o=E(o,i,r,n,e[a+2],17,606105819),n=E(n,o,i,r,e[a+3],22,-1044525330),r=E(r,n,o,i,e[a+4],7,-176418897),i=E(i,r,n,o,e[a+5],12,1200080426),o=E(o,i,r,n,e[a+6],17,-1473231341),n=E(n,o,i,r,e[a+7],22,-45705983),r=E(r,n,o,i,e[a+8],7,1770035416),i=E(i,r,n,o,e[a+9],12,-1958414417),o=E(o,i,r,n,e[a+10],17,-42063),n=E(n,o,i,r,e[a+11],22,-1990404162),r=E(r,n,o,i,e[a+12],7,1804603682),i=E(i,r,n,o,e[a+13],12,-40341101),o=E(o,i,r,n,e[a+14],17,-1502002290),r=C(r,n=E(n,o,i,r,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=C(i,r,n,o,e[a+6],9,-1069501632),o=C(o,i,r,n,e[a+11],14,643717713),n=C(n,o,i,r,e[a],20,-373897302),r=C(r,n,o,i,e[a+5],5,-701558691),i=C(i,r,n,o,e[a+10],9,38016083),o=C(o,i,r,n,e[a+15],14,-660478335),n=C(n,o,i,r,e[a+4],20,-405537848),r=C(r,n,o,i,e[a+9],5,568446438),i=C(i,r,n,o,e[a+14],9,-1019803690),o=C(o,i,r,n,e[a+3],14,-187363961),n=C(n,o,i,r,e[a+8],20,1163531501),r=C(r,n,o,i,e[a+13],5,-1444681467),i=C(i,r,n,o,e[a+2],9,-51403784),o=C(o,i,r,n,e[a+7],14,1735328473),r=S(r,n=C(n,o,i,r,e[a+12],20,-1926607734),o,i,e[a+5],4,-378558),i=S(i,r,n,o,e[a+8],11,-2022574463),o=S(o,i,r,n,e[a+11],16,1839030562),n=S(n,o,i,r,e[a+14],23,-35309556),r=S(r,n,o,i,e[a+1],4,-1530992060),i=S(i,r,n,o,e[a+4],11,1272893353),o=S(o,i,r,n,e[a+7],16,-155497632),n=S(n,o,i,r,e[a+10],23,-1094730640),r=S(r,n,o,i,e[a+13],4,681279174),i=S(i,r,n,o,e[a],11,-358537222),o=S(o,i,r,n,e[a+3],16,-722521979),n=S(n,o,i,r,e[a+6],23,76029189),r=S(r,n,o,i,e[a+9],4,-640364487),i=S(i,r,n,o,e[a+12],11,-421815835),o=S(o,i,r,n,e[a+15],16,530742520),r=O(r,n=S(n,o,i,r,e[a+2],23,-995338651),o,i,e[a],6,-198630844),i=O(i,r,n,o,e[a+7],10,1126891415),o=O(o,i,r,n,e[a+14],15,-1416354905),n=O(n,o,i,r,e[a+5],21,-57434055),r=O(r,n,o,i,e[a+12],6,1700485571),i=O(i,r,n,o,e[a+3],10,-1894986606),o=O(o,i,r,n,e[a+10],15,-1051523),n=O(n,o,i,r,e[a+1],21,-2054922799),r=O(r,n,o,i,e[a+8],6,1873313359),i=O(i,r,n,o,e[a+15],10,-30611744),o=O(o,i,r,n,e[a+6],15,-1560198380),n=O(n,o,i,r,e[a+13],21,1309151649),r=O(r,n,o,i,e[a+4],6,-145523070),i=O(i,r,n,o,e[a+11],10,-1120210379),o=O(o,i,r,n,e[a+2],15,718787259),n=O(n,o,i,r,e[a+9],21,-343485551),r=b(r,s),n=b(n,c),o=b(o,u),i=b(i,l)}return[r,n,o,i]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(y(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length))})),k=function(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)};function P(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function A(e,t){return e<<t|e>>>32-t}const M=m("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,a=Math.ceil(i/16),s=new Array(a),c=0;c<a;++c){for(var u=new Uint32Array(16),l=0;l<16;++l)u[l]=e[64*c+4*l]<<24|e[64*c+4*l+1]<<16|e[64*c+4*l+2]<<8|e[64*c+4*l+3];s[c]=u}s[a-1][14]=8*(e.length-1)/Math.pow(2,32),s[a-1][14]=Math.floor(s[a-1][14]),s[a-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<a;++d){for(var f=new Uint32Array(80),h=0;h<16;++h)f[h]=s[d][h];for(var p=16;p<80;++p)f[p]=A(f[p-3]^f[p-8]^f[p-14]^f[p-16],1);for(var v=r[0],g=r[1],m=r[2],y=r[3],b=r[4],w=0;w<80;++w){var E=Math.floor(w/20),C=A(v,5)+P(E,g,m,y)+b+t[E]+f[w]>>>0;b=y,y=m,m=A(g,30)>>>0,g=v,v=C}r[0]=r[0]+v>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+b>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]})),T="00000000-0000-0000-0000-000000000000",x=function(e){if(!s(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}},3836:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3931:function(e,t){"use strict";var r,n,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.convertFileType=t.FileTypeAlias=t.FileType=void 0,function(e){e.DocumentPro="documentPro",e.Document="document",e.Spreadsheet="spreadsheet",e.Presentation="presentation",e.Table="table",e.Form="form",e.Flowchart="flowchart",e.Mindmap="mindmap",e.Board="board",e.Unknown="unknown"}(n=t.FileType||(t.FileType={})),t.FileTypeAlias=((r={})[n.Document]="docs",r[n.DocumentPro]="docx",r[n.Spreadsheet]="sheets",r[n.Presentation]="presentation",r[n.Table]="table",r[n.Form]="form",r[n.Mindmap]="mindmap",r[n.Board]="board",r[n.Flowchart]="flowchart",r),t.convertFileType=function(e){var r,a,s,c;if("string"==typeof e){try{for(var u=o(Object.entries(n)),l=u.next();!l.done;l=u.next()){var d=i(l.value,2),f=d[0],h=d[1];if(f===e||h===e)return h}}catch(e){r={error:e}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}try{for(var p=o(Object.entries(t.FileTypeAlias)),v=p.next();!v.done;v=p.next()){var g=i(v.value,2);if(f=g[0],(h=g[1])===e)return f}}catch(e){s={error:e}}finally{try{v&&!v.done&&(c=p.return)&&c.call(p)}finally{if(s)throw s.error}}}else switch(e){case-2:return n.Document;case-4:return n.Spreadsheet;case-6:return n.DocumentPro;case-7:return n.Mindmap;case-8:return n.Form;case-9:return n.Board;case-10:return n.Presentation;case-11:return n.Table;case-13:return n.Flowchart}return n.Unknown}},5313:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ReadyState=t.isSDKEventMessage=t.SDKEvent=void 0,t.SDKEvent=Object.freeze({ViewportResize:"ViewportResize",ReadyState:"ReadyState"}),t.isSDKEventMessage=function(e){var r;return null!=e&&(r=e.event),"string"==typeof r&&r in t.SDKEvent},(r=t.ReadyState||(t.ReadyState={})).Loading="loading",r.LoadingEditor="loadingEditor",r.Ready="ready",r.Failed="failed",r.Disconnected="disconnected"},4057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(3672),t),o(r(3836),t),o(r(3931),t),o(r(5313),t)},3672:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.UrlSharingType=t.SpreadsheetSharingFrom=t.ContainerMethod=t.InvokeMethod=void 0,(i=t.InvokeMethod||(t.InvokeMethod={})).SDKInit="SDKInit",i.Error="error",i.ReadyState="readyState",i.SetCredentials="setCredentials",i.InvokeContainerMethod="invokeContainerMethod",i.InvokeEditorMethod="invokeEditorMethod",i.DispatchSDKEvent="dispatchSDKEvent",i.DispatchEditorEvent="dispatchEditorEvent",i.ListenEditorEvent="listenEditorEvent",i.RequestPerformanceEntries="requestPerformanceEntries",(o=t.ContainerMethod||(t.ContainerMethod={})).GetContainerRect="getContainerRect",o.OpenLink="openLink",o.GenerateUrl="generateUrl",o.MentionClickHandlerForMobile="mentionClickHandlerForMobile",o.GetFileInfoFromUrl="getFileInfoFromUrl",o.ShowSignatureComponent="showSignatureComponent",o.ShowToast="showToast",o.HandleCustomTask="handleCustomTask",o.GetCredentials="getCredentials",(n=t.SpreadsheetSharingFrom||(t.SpreadsheetSharingFrom={})).copyRangeLink="copyRangeLink",n.copyViewportLink="copyViewportLink",n.copySheetLink="copySheetLink",n.importRange="importRange",n.preview="preview",(r=t.UrlSharingType||(t.UrlSharingType={})).Doc="doc",r.Docx="docx",r.Spreadsheet="sheet",r.Form="form",r.FormPreview="formPreview",r.FormFill="formFill",r.Presentation="presentation",r.Table="table",r.Flowchart="flowchart",r.Mindmap="mindmap",r.Board="board"},6877:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StartParams=void 0;var o=n(r(4139)),i=n(r(1121)).default.createInstance(),a=function(){function e(t){if("string"==typeof t)return e.parse(t);if((0,o.default)(t))Object.assign(this,t);else if(t instanceof e)Object.assign(this,JSON.parse(JSON.stringify(t)));else if(Array.isArray(t))for(var r=0,n=t;r<n.length;r++){var i=n[r];"string"==typeof i?Object.assign(this,e.parse(i)):null!=i&&Object.assign(this,JSON.parse(JSON.stringify(i)))}null==this.fileGuid&&null!=this.guid&&(this.fileGuid=this.guid),null!=this.guid&&this.fileGuid!==this.guid&&(this.guid=this.fileGuid)}return e.parse=function(t){return new e(JSON.parse(i.decodeStr(t)))},e.prototype.toString=function(){return i.encodeStr(JSON.stringify(this))},e}();t.StartParams=a},4339:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(6877),t)},4139:e=>{"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},6343:(e,t,r)=>{"use strict";var n=r(6612);e.exports=n},1015:(e,t,r)=>{"use strict";var n=r(8418);e.exports=n},780:(e,t,r)=>{"use strict";var n=r(2473);r(7628),r(3799),e.exports=n},5448:(e,t,r)=>{"use strict";var n=r(2841);e.exports=n},3609:(e,t,r)=>{"use strict";r(4423);var n=r(7015);e.exports=n("Array","includes")},8473:(e,t,r)=>{"use strict";r(9085);var n=r(9167);e.exports=n.Object.assign},6398:(e,t,r)=>{"use strict";r(67),r(3792),r(6099),r(3362),r(6167),r(3518),r(1689),r(4628),r(9391),r(7764);var n=r(9167);e.exports=n.Promise},2288:(e,t,r)=>{"use strict";e.exports=r(5914)},7782:(e,t,r)=>{"use strict";e.exports=r(6008)},5781:(e,t,r)=>{"use strict";e.exports=r(911)},2701:(e,t,r)=>{"use strict";e.exports=r(8255)},5914:(e,t,r)=>{"use strict";var n=r(6343);e.exports=n},6008:(e,t,r)=>{"use strict";var n=r(1015);e.exports=n},911:(e,t,r)=>{"use strict";var n=r(780);r(9806),r(5874),r(7575),e.exports=n},8255:(e,t,r)=>{"use strict";var n=r(5448);e.exports=n},9306:(e,t,r)=>{"use strict";var n=r(4901),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a function")}},5548:(e,t,r)=>{"use strict";var n=r(3517),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a constructor")}},3506:(e,t,r)=>{"use strict";var n=r(3925),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},6469:(e,t,r)=>{"use strict";var n=r(8227),o=r(2360),i=r(4913).f,a=n("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),e.exports=function(e){s[a][e]=!0}},679:(e,t,r)=>{"use strict";var n=r(1625),o=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new o("Incorrect invocation")}},8551:(e,t,r)=>{"use strict";var n=r(34),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not an object")}},7916:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8981),a=r(6319),s=r(4209),c=r(3517),u=r(6198),l=r(2278),d=r(81),f=r(851),h=Array;e.exports=function(e){var t=i(e),r=c(this),p=arguments.length,v=p>1?arguments[1]:void 0,g=void 0!==v;g&&(v=n(v,p>2?arguments[2]:void 0));var m,y,b,w,E,C,S=f(t),O=0;if(!S||this===h&&s(S))for(m=u(t),y=r?new this(m):h(m);m>O;O++)C=g?v(t[O],O):t[O],l(y,O,C);else for(y=r?new this:[],E=(w=d(t,S)).next;!(b=o(E,w)).done;O++)C=g?a(w,v,[b.value,O],!0):b.value,l(y,O,C);return y.length=O,y}},9617:(e,t,r)=>{"use strict";var n=r(5397),o=r(5610),i=r(6198),a=function(e){return function(t,r,a){var s=n(t),c=i(s);if(0===c)return!e&&-1;var u,l=o(a,c);if(e&&r!=r){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7680:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n([].slice)},4488:(e,t,r)=>{"use strict";var n=r(7680),o=Math.floor,i=function(e,t){var r=e.length;if(r<8)for(var a,s,c=1;c<r;){for(s=c,a=e[c];s&&t(e[s-1],a)>0;)e[s]=e[--s];s!==c++&&(e[s]=a)}else for(var u=o(r/2),l=i(n(e,0,u),t),d=i(n(e,u),t),f=l.length,h=d.length,p=0,v=0;p<f||v<h;)e[p+v]=p<f&&v<h?t(l[p],d[v])<=0?l[p++]:d[v++]:p<f?l[p++]:d[v++];return e};e.exports=i},6319:(e,t,r)=>{"use strict";var n=r(8551),o=r(9539);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},4428:(e,t,r)=>{"use strict";var n=r(8227)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!o)return!1}catch(e){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},2195:(e,t,r)=>{"use strict";var n=r(9504),o=n({}.toString),i=n("".slice);e.exports=function(e){return i(o(e),8,-1)}},6955:(e,t,r)=>{"use strict";var n=r(2140),o=r(4901),i=r(2195),a=r(8227)("toStringTag"),s=Object,c="Arguments"===i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?r:c?i(t):"Object"===(n=i(t))&&o(t.callee)?"Arguments":n}},7740:(e,t,r)=>{"use strict";var n=r(9297),o=r(5031),i=r(7347),a=r(4913);e.exports=function(e,t,r){for(var s=o(t),c=a.f,u=i.f,l=0;l<s.length;l++){var d=s[l];n(e,d)||r&&n(r,d)||c(e,d,u(t,d))}}},2211:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},2529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},6699:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=n?function(e,t,r){return o.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},2278:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=function(e,t,r){n?o.f(e,t,i(0,r)):e[t]=r}},2106:(e,t,r)=>{"use strict";var n=r(283),o=r(4913);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),o.f(e,t,r)}},6840:(e,t,r)=>{"use strict";var n=r(4901),o=r(4913),i=r(283),a=r(9433);e.exports=function(e,t,r,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:t;if(n(r)&&i(r,u,s),s.global)c?e[t]=r:a(t,r);else{try{s.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:o.f(e,t,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},6279:(e,t,r)=>{"use strict";var n=r(6840);e.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},9433:(e,t,r)=>{"use strict";var n=r(4576),o=Object.defineProperty;e.exports=function(e,t){try{o(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},3724:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,r)=>{"use strict";var n=r(4576),o=r(34),i=n.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},7400:e=>{"use strict";e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},9296:(e,t,r)=>{"use strict";var n=r(4055)("span").classList,o=n&&n.constructor&&n.constructor.prototype;e.exports=o===Object.prototype?void 0:o},7015:(e,t,r)=>{"use strict";var n=r(4576),o=r(9504);e.exports=function(e,t){return o(n[e].prototype[t])}},8727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},4265:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},9544:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},8574:(e,t,r)=>{"use strict";var n=r(4215);e.exports="NODE"===n},7860:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/web0s(?!.*chrome)/i.test(n)},2839:(e,t,r)=>{"use strict";var n=r(4576).navigator,o=n&&n.userAgent;e.exports=o?String(o):""},9519:(e,t,r)=>{"use strict";var n,o,i=r(4576),a=r(2839),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(o=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},4215:(e,t,r)=>{"use strict";var n=r(4576),o=r(2839),i=r(2195),a=function(e){return o.slice(0,e.length)===e};e.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6193:(e,t,r)=>{"use strict";var n=r(9504),o=Error,i=n("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,c=s.test(a);e.exports=function(e,t){if(c&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},747:(e,t,r)=>{"use strict";var n=r(6699),o=r(6193),i=r(4659),a=Error.captureStackTrace;e.exports=function(e,t,r,s){i&&(a?a(e,t):n(e,"stack",o(r,s)))}},4659:(e,t,r)=>{"use strict";var n=r(9039),o=r(6980);e.exports=!n((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},6518:(e,t,r)=>{"use strict";var n=r(4576),o=r(7347).f,i=r(6699),a=r(6840),s=r(9433),c=r(7740),u=r(2796);e.exports=function(e,t){var r,l,d,f,h,p=e.target,v=e.global,g=e.stat;if(r=v?n:g?n[p]||s(p,{}):n[p]&&n[p].prototype)for(l in t){if(f=t[l],d=e.dontCallGetSet?(h=o(r,l))&&h.value:r[l],!u(v?l:p+(g?".":"#")+l,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;c(f,d)}(e.sham||d&&d.sham)&&i(f,"sham",!0),a(r,l,f,e)}}},9039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},8745:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(i):function(){return a.apply(i,arguments)})},6080:(e,t,r)=>{"use strict";var n=r(7476),o=r(9306),i=r(616),a=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:i?a(e,t):function(){return e.apply(t,arguments)}}},616:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},350:(e,t,r)=>{"use strict";var n=r(3724),o=r(9297),i=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},6706:(e,t,r)=>{"use strict";var n=r(9504),o=r(9306);e.exports=function(e,t,r){try{return n(o(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},7476:(e,t,r)=>{"use strict";var n=r(2195),o=r(9504);e.exports=function(e){if("Function"===n(e))return o(e)}},9504:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.call,a=n&&o.bind.bind(i,i);e.exports=n?a:function(e){return function(){return i.apply(e,arguments)}}},7751:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901);e.exports=function(e,t){return arguments.length<2?(r=n[e],o(r)?r:void 0):n[e]&&n[e][t];var r}},851:(e,t,r)=>{"use strict";var n=r(6955),o=r(5966),i=r(4117),a=r(6269),s=r(8227)("iterator");e.exports=function(e){if(!i(e))return o(e,s)||o(e,"@@iterator")||a[n(e)]}},81:(e,t,r)=>{"use strict";var n=r(9565),o=r(9306),i=r(8551),a=r(6823),s=r(851),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(o(r))return i(n(r,e));throw new c(a(e)+" is not iterable")}},5966:(e,t,r)=>{"use strict";var n=r(9306),o=r(4117);e.exports=function(e,t){var r=e[t];return o(r)?void 0:n(r)}},4576:function(e,t,r){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,r)=>{"use strict";var n=r(9504),o=r(8981),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},421:e=>{"use strict";e.exports={}},3138:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},397:(e,t,r)=>{"use strict";var n=r(7751);e.exports=n("document","documentElement")},5917:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039),i=r(4055);e.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(2195),a=Object,s=n("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},3706:(e,t,r)=>{"use strict";var n=r(9504),o=r(4901),i=r(7629),a=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},7584:(e,t,r)=>{"use strict";var n=r(34),o=r(6699);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},1181:(e,t,r)=>{"use strict";var n,o,i,a=r(8622),s=r(4576),c=r(34),u=r(6699),l=r(9297),d=r(7629),f=r(6119),h=r(421),p="Object already initialized",v=s.TypeError,g=s.WeakMap;if(a||d.state){var m=d.state||(d.state=new g);m.get=m.get,m.has=m.has,m.set=m.set,n=function(e,t){if(m.has(e))throw new v(p);return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var y=f("state");h[y]=!0,n=function(e,t){if(l(e,y))throw new v(p);return t.facade=e,u(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:n,get:o,has:i,enforce:function(e){return i(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return r}}}},4209:(e,t,r)=>{"use strict";var n=r(8227),o=r(6269),i=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},4901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},3517:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(6955),s=r(7751),c=r(3706),u=function(){},l=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.test(u),p=function(e){if(!i(e))return!1;try{return l(u,[],e),!0}catch(e){return!1}},v=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};v.sham=!0,e.exports=!l||o((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?v:p},2796:(e,t,r)=>{"use strict";var n=r(9039),o=r(4901),i=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r===l||r!==u&&(o(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},4117:e=>{"use strict";e.exports=function(e){return null==e}},34:(e,t,r)=>{"use strict";var n=r(4901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},3925:(e,t,r)=>{"use strict";var n=r(34);e.exports=function(e){return n(e)||null===e}},6395:e=>{"use strict";e.exports=!1},757:(e,t,r)=>{"use strict";var n=r(7751),o=r(4901),i=r(1625),a=r(7040),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return o(t)&&i(t.prototype,s(e))}},2652:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8551),a=r(6823),s=r(4209),c=r(6198),u=r(1625),l=r(81),d=r(851),f=r(9539),h=TypeError,p=function(e,t){this.stopped=e,this.result=t},v=p.prototype;e.exports=function(e,t,r){var g,m,y,b,w,E,C,S=r&&r.that,O=!(!r||!r.AS_ENTRIES),_=!(!r||!r.IS_RECORD),k=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),A=n(t,S),M=function(e){return g&&f(g,"normal",e),new p(!0,e)},T=function(e){return O?(i(e),P?A(e[0],e[1],M):A(e[0],e[1])):P?A(e,M):A(e)};if(_)g=e.iterator;else if(k)g=e;else{if(!(m=d(e)))throw new h(a(e)+" is not iterable");if(s(m)){for(y=0,b=c(e);b>y;y++)if((w=T(e[y]))&&u(v,w))return w;return new p(!1)}g=l(e,m)}for(E=_?e.next:g.next;!(C=o(E,g)).done;){try{w=T(C.value)}catch(e){f(g,"throw",e)}if("object"==typeof w&&w&&u(v,w))return w}return new p(!1)}},9539:(e,t,r)=>{"use strict";var n=r(9565),o=r(8551),i=r(5966);e.exports=function(e,t,r){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return o(a),r}},3994:(e,t,r)=>{"use strict";var n=r(7657).IteratorPrototype,o=r(2360),i=r(6980),a=r(687),s=r(6269),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=o(n,{next:i(+!u,r)}),a(e,l,!1,!0),s[l]=c,e}},1088:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(6395),a=r(350),s=r(4901),c=r(3994),u=r(2787),l=r(2967),d=r(687),f=r(6699),h=r(6840),p=r(8227),v=r(6269),g=r(7657),m=a.PROPER,y=a.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=p("iterator"),C="keys",S="values",O="entries",_=function(){return this};e.exports=function(e,t,r,a,p,g,k){c(r,t,a);var P,A,M,T=function(e){if(e===p&&j)return j;if(!w&&e&&e in L)return L[e];switch(e){case C:case S:case O:return function(){return new r(this,e)}}return function(){return new r(this)}},x=t+" Iterator",R=!1,L=e.prototype,F=L[E]||L["@@iterator"]||p&&L[p],j=!w&&F||T(p),I="Array"===t&&L.entries||F;if(I&&(P=u(I.call(new e)))!==Object.prototype&&P.next&&(i||u(P)===b||(l?l(P,b):s(P[E])||h(P,E,_)),d(P,x,!0,!0),i&&(v[x]=_)),m&&p===S&&F&&F.name!==S&&(!i&&y?f(L,"name",S):(R=!0,j=function(){return o(F,this)})),p)if(A={values:T(S),keys:g?j:T(C),entries:T(O)},k)for(M in A)(w||R||!(M in L))&&h(L,M,A[M]);else n({target:t,proto:!0,forced:w||R},A);return i&&!k||L[E]===j||h(L,E,j,{name:p}),v[t]=j,A}},7657:(e,t,r)=>{"use strict";var n,o,i,a=r(9039),s=r(4901),c=r(34),u=r(2360),l=r(2787),d=r(6840),f=r(8227),h=r(6395),p=f("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=l(l(i)))!==Object.prototype&&(n=o):v=!0),!c(n)||a((function(){var e={};return n[p].call(e)!==e}))?n={}:h&&(n=u(n)),s(n[p])||d(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},6269:e=>{"use strict";e.exports={}},6198:(e,t,r)=>{"use strict";var n=r(8014);e.exports=function(e){return n(e.length)}},283:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(9297),s=r(3724),c=r(350).CONFIGURABLE,u=r(3706),l=r(1181),d=l.enforce,f=l.get,h=String,p=Object.defineProperty,v=n("".slice),g=n("".replace),m=n([].join),y=s&&!o((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=e.exports=function(e,t,r){"Symbol("===v(h(t),0,7)&&(t="["+g(h(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&(s?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&a(r,"arity")&&e.length!==r.arity&&p(e,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?s&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=d(e);return a(n,"source")||(n.source=m(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&f(this).source||u(this)}),"toString")},741:e=>{"use strict";var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},1955:(e,t,r)=>{"use strict";var n,o,i,a,s,c=r(4576),u=r(3389),l=r(6080),d=r(9225).set,f=r(8265),h=r(9544),p=r(4265),v=r(7860),g=r(8574),m=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,E=u("queueMicrotask");if(!E){var C=new f,S=function(){var e,t;for(g&&(e=b.domain)&&e.exit();t=C.get();)try{t()}catch(e){throw C.head&&n(),e}e&&e.enter()};h||g||v||!m||!y?!p&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=l(a.then,a),n=function(){s(S)}):g?n=function(){b.nextTick(S)}:(d=l(d,c),n=function(){d(S)}):(o=!0,i=y.createTextNode(""),new m(S).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),E=function(e){C.head||n(),C.add(e)}}e.exports=E},6043:(e,t,r)=>{"use strict";var n=r(9306),o=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new o("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},2603:(e,t,r)=>{"use strict";var n=r(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},4213:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(9565),a=r(9039),s=r(1072),c=r(3717),u=r(8773),l=r(8981),d=r(7055),f=Object.assign,h=Object.defineProperty,p=o([].concat);e.exports=!f||a((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!==f({},e)[r]||s(f({},t)).join("")!==o}))?function(e,t){for(var r=l(e),o=arguments.length,a=1,f=c.f,h=u.f;o>a;)for(var v,g=d(arguments[a++]),m=f?p(s(g),f(g)):s(g),y=m.length,b=0;y>b;)v=m[b++],n&&!i(h,g,v)||(r[v]=g[v]);return r}:f},2360:(e,t,r)=>{"use strict";var n,o=r(8551),i=r(6801),a=r(8727),s=r(421),c=r(397),u=r(4055),l=r(6119),d="prototype",f="script",h=l("IE_PROTO"),p=function(){},v=function(e){return"<"+f+">"+e+"</"+f+">"},g=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m="undefined"!=typeof document?document.domain&&n?g(n):(t=u("iframe"),r="java"+f+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):g(n);for(var o=a.length;o--;)delete m[d][a[o]];return m()};s[h]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[d]=o(e),r=new p,p[d]=null,r[h]=e):r=m(),void 0===t?r:i.f(r,t)}},6801:(e,t,r)=>{"use strict";var n=r(3724),o=r(8686),i=r(4913),a=r(8551),s=r(5397),c=r(1072);t.f=n&&!o?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),o=c(t),u=o.length,l=0;u>l;)i.f(e,r=o[l++],n[r]);return e}},4913:(e,t,r)=>{"use strict";var n=r(3724),o=r(5917),i=r(8686),a=r(8551),s=r(6969),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=n?i?function(e,t,r){if(a(e),t=s(t),a(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=l(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(a(e),t=s(t),a(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},7347:(e,t,r)=>{"use strict";var n=r(3724),o=r(9565),i=r(8773),a=r(6980),s=r(5397),c=r(6969),u=r(9297),l=r(5917),d=Object.getOwnPropertyDescriptor;t.f=n?d:function(e,t){if(e=s(e),t=c(t),l)try{return d(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},8480:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},3717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},2787:(e,t,r)=>{"use strict";var n=r(9297),o=r(4901),i=r(8981),a=r(6119),s=r(2211),c=a("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},1625:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n({}.isPrototypeOf)},1828:(e,t,r)=>{"use strict";var n=r(9504),o=r(9297),i=r(5397),a=r(9617).indexOf,s=r(421),c=n([].push);e.exports=function(e,t){var r,n=i(e),u=0,l=[];for(r in n)!o(s,r)&&o(n,r)&&c(l,r);for(;t.length>u;)o(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},1072:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727);e.exports=Object.keys||function(e){return n(e,o)}},8773:(e,t)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!r.call({1:2},1);t.f=o?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},2967:(e,t,r)=>{"use strict";var n=r(6706),o=r(34),i=r(7750),a=r(3506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),a(n),o(r)?(t?e(r,n):r.__proto__=n,r):r}}():void 0)},3179:(e,t,r)=>{"use strict";var n=r(2140),o=r(6955);e.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},4270:(e,t,r)=>{"use strict";var n=r(9565),o=r(4901),i=r(34),a=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&o(r=e.toString)&&!i(s=n(r,e)))return s;if(o(r=e.valueOf)&&!i(s=n(r,e)))return s;if("string"!==t&&o(r=e.toString)&&!i(s=n(r,e)))return s;throw new a("Can't convert object to primitive value")}},5031:(e,t,r)=>{"use strict";var n=r(7751),o=r(9504),i=r(8480),a=r(3717),s=r(8551),c=o([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(s(e)),r=a.f;return r?c(t,r(e)):t}},9167:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},916:(e,t,r)=>{"use strict";var n=r(4576),o=r(550),i=r(4901),a=r(2796),s=r(3706),c=r(8227),u=r(4215),l=r(6395),d=r(9519),f=o&&o.prototype,h=c("species"),p=!1,v=i(n.PromiseRejectionEvent),g=a("Promise",(function(){var e=s(o),t=e!==String(o);if(!t&&66===d)return!0;if(l&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new o((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[h]=n,!(p=r.then((function(){}))instanceof n))return!0}return!(t||"BROWSER"!==u&&"DENO"!==u||v)}));e.exports={CONSTRUCTOR:g,REJECTION_EVENT:v,SUBCLASSING:p}},550:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n.Promise},3438:(e,t,r)=>{"use strict";var n=r(8551),o=r(34),i=r(6043);e.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},537:(e,t,r)=>{"use strict";var n=r(550),o=r(4428),i=r(916).CONSTRUCTOR;e.exports=i||!o((function(e){n.all(e).then(void 0,(function(){}))}))},8265:e=>{"use strict";var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7750:(e,t,r)=>{"use strict";var n=r(4117),o=TypeError;e.exports=function(e){if(n(e))throw new o("Can't call method on "+e);return e}},3389:(e,t,r)=>{"use strict";var n=r(4576),o=r(3724),i=Object.getOwnPropertyDescriptor;e.exports=function(e){if(!o)return n[e];var t=i(n,e);return t&&t.value}},7633:(e,t,r)=>{"use strict";var n=r(7751),o=r(2106),i=r(8227),a=r(3724),s=i("species");e.exports=function(e){var t=n(e);a&&t&&!t[s]&&o(t,s,{configurable:!0,get:function(){return this}})}},687:(e,t,r)=>{"use strict";var n=r(4913).f,o=r(9297),i=r(8227)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!o(e,i)&&n(e,i,{configurable:!0,value:t})}},6119:(e,t,r)=>{"use strict";var n=r(5745),o=r(3392),i=n("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},7629:(e,t,r)=>{"use strict";var n=r(6395),o=r(4576),i=r(9433),a="__core-js_shared__",s=e.exports=o[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.39.0",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,r)=>{"use strict";var n=r(7629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},2293:(e,t,r)=>{"use strict";var n=r(8551),o=r(5548),i=r(4117),a=r(8227)("species");e.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||i(r=n(s)[a])?t:o(r)}},8183:(e,t,r)=>{"use strict";var n=r(9504),o=r(1291),i=r(655),a=r(7750),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,d=i(a(t)),f=o(r),h=d.length;return f<0||f>=h?e?"":void 0:(n=c(d,f))<55296||n>56319||f+1===h||(l=c(d,f+1))<56320||l>57343?e?s(d,f):n:e?u(d,f,f+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},6098:(e,t,r)=>{"use strict";var n=r(9504),o=2147483647,i=/[^\0-\u007E]/,a=/[.\u3002\uFF0E\uFF61]/g,s="Overflow: input needs wider integers to process",c=RangeError,u=n(a.exec),l=Math.floor,d=String.fromCharCode,f=n("".charCodeAt),h=n([].join),p=n([].push),v=n("".replace),g=n("".split),m=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},b=function(e,t,r){var n=0;for(e=r?l(e/700):e>>1,e+=l(e/t);e>455;)e=l(e/35),n+=36;return l(n+36*e/(e+38))},w=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r<n;){var o=f(e,r++);if(o>=55296&&o<=56319&&r<n){var i=f(e,r++);56320==(64512&i)?p(t,((1023&o)<<10)+(1023&i)+65536):(p(t,o),r--)}else p(t,o)}return t}(e);var r,n,i=e.length,a=128,u=0,v=72;for(r=0;r<e.length;r++)(n=e[r])<128&&p(t,d(n));var g=t.length,m=g;for(g&&p(t,"-");m<i;){var w=o;for(r=0;r<e.length;r++)(n=e[r])>=a&&n<w&&(w=n);var E=m+1;if(w-a>l((o-u)/E))throw new c(s);for(u+=(w-a)*E,a=w,r=0;r<e.length;r++){if((n=e[r])<a&&++u>o)throw new c(s);if(n===a){for(var C=u,S=36;;){var O=S<=v?1:S>=v+26?26:S-v;if(C<O)break;var _=C-O,k=36-O;p(t,d(y(O+_%k))),C=l(_/k),S+=36}p(t,d(y(C))),v=b(u,E,m===g),u=0,m++}}u++,a++}return h(t,"")};e.exports=function(e){var t,r,n=[],o=g(v(m(e),a,"."),".");for(t=0;t<o.length;t++)r=o[t],p(n,u(i,r)?"xn--"+w(r):r);return h(n,".")}},4495:(e,t,r)=>{"use strict";var n=r(9519),o=r(9039),i=r(4576).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(e,t,r)=>{"use strict";var n,o,i,a,s=r(4576),c=r(8745),u=r(6080),l=r(4901),d=r(9297),f=r(9039),h=r(397),p=r(7680),v=r(4055),g=r(2812),m=r(9544),y=r(8574),b=s.setImmediate,w=s.clearImmediate,E=s.process,C=s.Dispatch,S=s.Function,O=s.MessageChannel,_=s.String,k=0,P={},A="onreadystatechange";f((function(){n=s.location}));var M=function(e){if(d(P,e)){var t=P[e];delete P[e],t()}},T=function(e){return function(){M(e)}},x=function(e){M(e.data)},R=function(e){s.postMessage(_(e),n.protocol+"//"+n.host)};b&&w||(b=function(e){g(arguments.length,1);var t=l(e)?e:S(e),r=p(arguments,1);return P[++k]=function(){c(t,void 0,r)},o(k),k},w=function(e){delete P[e]},y?o=function(e){E.nextTick(T(e))}:C&&C.now?o=function(e){C.now(T(e))}:O&&!m?(a=(i=new O).port2,i.port1.onmessage=x,o=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!f(R)?(o=R,s.addEventListener("message",x,!1)):o=A in v("script")?function(e){h.appendChild(v("script"))[A]=function(){h.removeChild(this),M(e)}}:function(e){setTimeout(T(e),0)}),e.exports={set:b,clear:w}},5610:(e,t,r)=>{"use strict";var n=r(1291),o=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?o(r+t,0):i(r,t)}},5397:(e,t,r)=>{"use strict";var n=r(7055),o=r(7750);e.exports=function(e){return n(o(e))}},1291:(e,t,r)=>{"use strict";var n=r(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},8014:(e,t,r)=>{"use strict";var n=r(1291),o=Math.min;e.exports=function(e){var t=n(e);return t>0?o(t,9007199254740991):0}},8981:(e,t,r)=>{"use strict";var n=r(7750),o=Object;e.exports=function(e){return o(n(e))}},2777:(e,t,r)=>{"use strict";var n=r(9565),o=r(34),i=r(757),a=r(5966),s=r(4270),c=r(8227),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var r,c=a(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!o(r)||i(r))return r;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},6969:(e,t,r)=>{"use strict";var n=r(2777),o=r(757);e.exports=function(e){var t=n(e,"string");return o(t)?t:t+""}},2140:(e,t,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,r)=>{"use strict";var n=r(6955),o=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},6823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,r)=>{"use strict";var n=r(9504),o=0,i=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},7416:(e,t,r)=>{"use strict";var n=r(9039),o=r(8227),i=r(3724),a=r(6395),s=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),a&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(a||!i)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}))},7040:(e,t,r)=>{"use strict";var n=r(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039);e.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:e=>{"use strict";var t=TypeError;e.exports=function(e,r){if(e<r)throw new t("Not enough arguments");return e}},8622:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901),i=n.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},8227:(e,t,r)=>{"use strict";var n=r(4576),o=r(5745),i=r(9297),a=r(3392),s=r(4495),c=r(7040),u=n.Symbol,l=o("wks"),d=c?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(l,e)||(l[e]=s&&i(u,e)?u[e]:d("Symbol."+e)),l[e]}},7145:(e,t,r)=>{"use strict";var n=r(6518),o=r(1625),i=r(2787),a=r(2967),s=r(7740),c=r(2360),u=r(6699),l=r(6980),d=r(7584),f=r(747),h=r(2652),p=r(2603),v=r(8227)("toStringTag"),g=Error,m=[].push,y=function(e,t){var r,n=o(b,this);a?r=a(new g,n?i(this):b):(r=n?this:c(b),u(r,v,"Error")),void 0!==t&&u(r,"message",p(t)),f(r,y,r.stack,1),arguments.length>2&&d(r,arguments[2]);var s=[];return h(e,m,{that:s}),u(r,"errors",s),r};a?a(y,g):s(y,g,{name:!0});var b=y.prototype=c(g.prototype,{constructor:l(1,y),message:l(1,""),name:l(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:y})},67:(e,t,r)=>{"use strict";r(7145)},4423:(e,t,r)=>{"use strict";var n=r(6518),o=r(9617).includes,i=r(9039),a=r(6469);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),a("includes")},3792:(e,t,r)=>{"use strict";var n=r(5397),o=r(6469),i=r(6269),a=r(1181),s=r(4913).f,c=r(1088),u=r(2529),l=r(6395),d=r(3724),f="Array Iterator",h=a.set,p=a.getterFor(f);e.exports=c(Array,"Array",(function(e,t){h(this,{type:f,target:n(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,u(void 0,!0);switch(e.kind){case"keys":return u(r,!1);case"values":return u(t[r],!1)}return u([r,t[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!l&&d&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(e){}},9085:(e,t,r)=>{"use strict";var n=r(6518),o=r(4213);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},6099:(e,t,r)=>{"use strict";var n=r(2140),o=r(6840),i=r(3179);n||o(Object.prototype,"toString",i,{unsafe:!0})},6167:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{allSettled:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,u=1;c(e,(function(e){var i=s++,c=!1;u++,o(r,t,e).then((function(e){c||(c=!0,a[i]={status:"fulfilled",value:e},--u||n(a))}),(function(e){c||(c=!0,a[i]={status:"rejected",reason:e},--u||n(a))}))})),--u||n(a)}));return l.error&&u(l.value),r.promise}})},6499:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{all:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,l=1;c(e,(function(e){var i=s++,c=!1;l++,o(r,t,e).then((function(e){c||(c=!0,a[i]=e,--l||n(a))}),u)})),--l||n(a)}));return l.error&&u(l.value),r.promise}})},3518:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(7751),s=r(6043),c=r(1103),u=r(2652),l=r(537),d="No one promise resolved";n({target:"Promise",stat:!0,forced:l},{any:function(e){var t=this,r=a("AggregateError"),n=s.f(t),l=n.resolve,f=n.reject,h=c((function(){var n=i(t.resolve),a=[],s=0,c=1,h=!1;u(e,(function(e){var i=s++,u=!1;c++,o(n,t,e).then((function(e){u||h||(h=!0,l(e))}),(function(e){u||h||(u=!0,a[i]=e,--c||f(new r(a,d)))}))})),--c||f(new r(a,d))}));return h.error&&f(h.value),n.promise}})},2003:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(916).CONSTRUCTOR,a=r(550),s=r(7751),c=r(4901),u=r(6840),l=a&&a.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!o&&c(a)){var d=s("Promise").prototype.catch;l.catch!==d&&u(l,"catch",d,{unsafe:!0})}},436:(e,t,r)=>{"use strict";var n,o,i,a=r(6518),s=r(6395),c=r(8574),u=r(4576),l=r(9565),d=r(6840),f=r(2967),h=r(687),p=r(7633),v=r(9306),g=r(4901),m=r(34),y=r(679),b=r(2293),w=r(9225).set,E=r(1955),C=r(3138),S=r(1103),O=r(8265),_=r(1181),k=r(550),P=r(916),A=r(6043),M="Promise",T=P.CONSTRUCTOR,x=P.REJECTION_EVENT,R=P.SUBCLASSING,L=_.getterFor(M),F=_.set,j=k&&k.prototype,I=k,D=j,B=u.TypeError,H=u.document,N=u.process,V=A.f,U=V,G=!!(H&&H.createEvent&&u.dispatchEvent),z="unhandledrejection",q=function(e){var t;return!(!m(e)||!g(t=e.then))&&t},K=function(e,t){var r,n,o,i=t.value,a=1===t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,d=e.domain;try{s?(a||(2===t.rejection&&$(t),t.rejection=1),!0===s?r=i:(d&&d.enter(),r=s(i),d&&(d.exit(),o=!0)),r===e.promise?u(new B("Promise-chain cycle")):(n=q(r))?l(n,r,c,u):c(r)):u(i)}catch(e){d&&!o&&d.exit(),u(e)}},W=function(e,t){e.notified||(e.notified=!0,E((function(){for(var r,n=e.reactions;r=n.get();)K(r,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},J=function(e,t,r){var n,o;G?((n=H.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!x&&(o=u["on"+e])?o(n):e===z&&C("Unhandled promise rejection",r)},Y=function(e){l(w,u,(function(){var t,r=e.facade,n=e.value;if(Q(e)&&(t=S((function(){c?N.emit("unhandledRejection",n,r):J(z,r,n)})),e.rejection=c||Q(e)?2:1,t.error))throw t.value}))},Q=function(e){return 1!==e.rejection&&!e.parent},$=function(e){l(w,u,(function(){var t=e.facade;c?N.emit("rejectionHandled",t):J("rejectionhandled",t,e.value)}))},X=function(e,t,r){return function(n){e(t,n,r)}},Z=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw new B("Promise can't be resolved itself");var n=q(t);n?E((function(){var r={done:!1};try{l(n,t,X(ee,r,e),X(Z,r,e))}catch(t){Z(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Z({done:!1},t,e)}}};if(T&&(D=(I=function(e){y(this,D),v(e),l(n,this);var t=L(this);try{e(X(ee,t),X(Z,t))}catch(e){Z(t,e)}}).prototype,(n=function(e){F(this,{type:M,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=d(D,"then",(function(e,t){var r=L(this),n=V(b(this,I));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=c?N.domain:void 0,0===r.state?r.reactions.add(n):E((function(){K(n,r)})),n.promise})),o=function(){var e=new n,t=L(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Z,t)},A.f=V=function(e){return e===I||void 0===e?new o(e):U(e)},!s&&g(k)&&j!==Object.prototype)){i=j.then,R||d(j,"then",(function(e,t){var r=this;return new I((function(e,t){l(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete j.constructor}catch(e){}f&&f(j,D)}a({global:!0,constructor:!0,wrap:!0,forced:T},{Promise:I}),h(I,M,!1,!0),p(M)},9391:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(550),a=r(9039),s=r(7751),c=r(4901),u=r(2293),l=r(3438),d=r(6840),f=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){f.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,s("Promise")),r=c(e);return this.then(r?function(r){return l(t,e()).then((function(){return r}))}:e,r?function(r){return l(t,e()).then((function(){throw r}))}:e)}}),!o&&c(i)){var h=s("Promise").prototype.finally;f.finally!==h&&d(f,"finally",h,{unsafe:!0})}},3362:(e,t,r)=>{"use strict";r(436),r(6499),r(2003),r(7743),r(1481),r(280)},7743:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{race:function(e){var t=this,r=a.f(t),n=r.reject,u=s((function(){var a=i(t.resolve);c(e,(function(e){o(a,t,e).then(r.resolve,n)}))}));return u.error&&n(u.value),r.promise}})},1481:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0,forced:r(916).CONSTRUCTOR},{reject:function(e){var t=o.f(this);return(0,t.reject)(e),t.promise}})},280:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(6395),a=r(550),s=r(916).CONSTRUCTOR,c=r(3438),u=o("Promise"),l=i&&!s;n({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return c(l&&this===u?a:this,e)}})},1689:(e,t,r)=>{"use strict";var n=r(6518),o=r(4576),i=r(8745),a=r(7680),s=r(6043),c=r(9306),u=r(1103),l=o.Promise,d=!1;n({target:"Promise",stat:!0,forced:!l||!l.try||u((function(){l.try((function(e){d=8===e}),8)})).error||!d},{try:function(e){var t=arguments.length>1?a(arguments,1):[],r=s.f(this),n=u((function(){return i(c(e),void 0,t)}));return(n.error?r.reject:r.resolve)(n.value),r.promise}})},4628:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0},{withResolvers:function(){var e=o.f(this);return{promise:e.promise,resolve:e.resolve,reject:e.reject}}})},7337:(e,t,r)=>{"use strict";var n=r(6518),o=r(9504),i=r(5610),a=RangeError,s=String.fromCharCode,c=String.fromCodePoint,u=o([].join);n({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(e){for(var t,r=[],n=arguments.length,o=0;n>o;){if(t=+arguments[o++],i(t,1114111)!==t)throw new a(t+" is not a valid code point");r[o]=t<65536?s(t):s(55296+((t-=65536)>>10),t%1024+56320)}return u(r,"")}})},7764:(e,t,r)=>{"use strict";var n=r(8183).charAt,o=r(655),i=r(1181),a=r(1088),s=r(2529),c="String Iterator",u=i.set,l=i.getterFor(c);a(String,"String",(function(e){u(this,{type:c,string:o(e),index:0})}),(function(){var e,t=l(this),r=t.string,o=t.index;return o>=r.length?s(void 0,!0):(e=n(r,o),t.index+=e.length,s(e,!1))}))},9806:(e,t,r)=>{"use strict";r(67)},5874:(e,t,r)=>{"use strict";r(6167)},7575:(e,t,r)=>{"use strict";r(3518)},7628:(e,t,r)=>{"use strict";r(1689)},3799:(e,t,r)=>{"use strict";r(4628)},2953:(e,t,r)=>{"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(3792),s=r(6699),c=r(687),u=r(8227)("iterator"),l=a.values,d=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var r in a)if(e[r]!==a[r])try{s(e,r,a[r])}catch(t){e[r]=a[r]}}};for(var f in o)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},8406:(e,t,r)=>{"use strict";r(3792),r(7337);var n=r(6518),o=r(4576),i=r(3389),a=r(7751),s=r(9565),c=r(9504),u=r(3724),l=r(7416),d=r(6840),f=r(2106),h=r(6279),p=r(687),v=r(3994),g=r(1181),m=r(679),y=r(4901),b=r(9297),w=r(6080),E=r(6955),C=r(8551),S=r(34),O=r(655),_=r(2360),k=r(6980),P=r(81),A=r(851),M=r(2529),T=r(2812),x=r(8227),R=r(4488),L=x("iterator"),F="URLSearchParams",j=F+"Iterator",I=g.set,D=g.getterFor(F),B=g.getterFor(j),H=i("fetch"),N=i("Request"),V=i("Headers"),U=N&&N.prototype,G=V&&V.prototype,z=o.TypeError,q=o.encodeURIComponent,K=String.fromCharCode,W=a("String","fromCodePoint"),J=parseInt,Y=c("".charAt),Q=c([].join),$=c([].push),X=c("".replace),Z=c([].shift),ee=c([].splice),te=c("".split),re=c("".slice),ne=c(/./.exec),oe=/\+/g,ie=/^[0-9a-f]+$/i,ae=function(e,t){var r=re(e,t,t+2);return ne(ie,r)?J(r,16):NaN},se=function(e){for(var t=0,r=128;r>0&&e&r;r>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},ue=function(e){for(var t=(e=X(e,oe," ")).length,r="",n=0;n<t;){var o=Y(e,n);if("%"===o){if("%"===Y(e,n+1)||n+3>t){r+="%",n++;continue}var i=ae(e,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=se(i);if(0===a)o=K(i);else{if(1===a||a>4){r+="�",n++;continue}for(var s=[i],c=1;c<a&&!(3+ ++n>t||"%"!==Y(e,n));){var u=ae(e,n+1);if(u!=u){n+=3;break}if(u>191||u<128)break;$(s,u),n+=2,c++}if(s.length!==a){r+="�";continue}var l=ce(s);null===l?r+="�":o=W(l)}}r+=o,n++}return r},le=/[!'()~]|%20/g,de={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},fe=function(e){return de[e]},he=function(e){return X(q(e),le,fe)},pe=v((function(e,t){I(this,{type:j,target:D(e).entries,index:0,kind:t})}),F,(function(){var e=B(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,M(void 0,!0);var n=t[r];switch(e.kind){case"keys":return M(n.key,!1);case"values":return M(n.value,!1)}return M([n.key,n.value],!1)}),!0),ve=function(e){this.entries=[],this.url=null,void 0!==e&&(S(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Y(e,0)?re(e,1):e:O(e)))};ve.prototype={type:F,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,o,i,a,c,u=this.entries,l=A(e);if(l)for(r=(t=P(e,l)).next;!(n=s(r,t)).done;){if(i=(o=P(C(n.value))).next,(a=s(i,o)).done||(c=s(i,o)).done||!s(i,o).done)throw new z("Expected sequence with length 2");$(u,{key:O(a.value),value:O(c.value)})}else for(var d in e)b(e,d)&&$(u,{key:d,value:O(e[d])})},parseQuery:function(e){if(e)for(var t,r,n=this.entries,o=te(e,"&"),i=0;i<o.length;)(t=o[i++]).length&&(r=te(t,"="),$(n,{key:ue(Z(r)),value:ue(Q(r,"="))}))},serialize:function(){for(var e,t=this.entries,r=[],n=0;n<t.length;)e=t[n++],$(r,he(e.key)+"="+he(e.value));return Q(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var ge=function(){m(this,me);var e=I(this,new ve(arguments.length>0?arguments[0]:void 0));u||(this.size=e.entries.length)},me=ge.prototype;if(h(me,{append:function(e,t){var r=D(this);T(arguments.length,2),$(r.entries,{key:O(e),value:O(t)}),u||this.length++,r.updateURL()},delete:function(e){for(var t=D(this),r=T(arguments.length,1),n=t.entries,o=O(e),i=r<2?void 0:arguments[1],a=void 0===i?i:O(i),s=0;s<n.length;){var c=n[s];if(c.key!==o||void 0!==a&&c.value!==a)s++;else if(ee(n,s,1),void 0!==a)break}u||(this.size=n.length),t.updateURL()},get:function(e){var t=D(this).entries;T(arguments.length,1);for(var r=O(e),n=0;n<t.length;n++)if(t[n].key===r)return t[n].value;return null},getAll:function(e){var t=D(this).entries;T(arguments.length,1);for(var r=O(e),n=[],o=0;o<t.length;o++)t[o].key===r&&$(n,t[o].value);return n},has:function(e){for(var t=D(this).entries,r=T(arguments.length,1),n=O(e),o=r<2?void 0:arguments[1],i=void 0===o?o:O(o),a=0;a<t.length;){var s=t[a++];if(s.key===n&&(void 0===i||s.value===i))return!0}return!1},set:function(e,t){var r=D(this);T(arguments.length,1);for(var n,o=r.entries,i=!1,a=O(e),s=O(t),c=0;c<o.length;c++)(n=o[c]).key===a&&(i?ee(o,c--,1):(i=!0,n.value=s));i||$(o,{key:a,value:s}),u||(this.size=o.length),r.updateURL()},sort:function(){var e=D(this);R(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=D(this).entries,n=w(e,arguments.length>1?arguments[1]:void 0),o=0;o<r.length;)n((t=r[o++]).value,t.key,this)},keys:function(){return new pe(this,"keys")},values:function(){return new pe(this,"values")},entries:function(){return new pe(this,"entries")}},{enumerable:!0}),d(me,L,me.entries,{name:"entries"}),d(me,"toString",(function(){return D(this).serialize()}),{enumerable:!0}),u&&f(me,"size",{get:function(){return D(this).entries.length},configurable:!0,enumerable:!0}),p(ge,F),n({global:!0,constructor:!0,forced:!l},{URLSearchParams:ge}),!l&&y(V)){var ye=c(G.has),be=c(G.set),we=function(e){if(S(e)){var t,r=e.body;if(E(r)===F)return t=e.headers?new V(e.headers):new V,ye(t,"content-type")||be(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),_(e,{body:k(0,O(r)),headers:k(0,t)})}return e};if(y(H)&&n({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(e){return H(e,arguments.length>1?we(arguments[1]):{})}}),y(N)){var Ee=function(e){return m(this,U),new N(e,arguments.length>1?we(arguments[1]):{})};U.constructor=Ee,Ee.prototype=U,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ee})}}e.exports={URLSearchParams:ge,getState:D}},4603:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.append),l=o(c.delete),d=o(c.forEach),f=o([].push),h=new s("a=1&a=2&b=3");h.delete("a",1),h.delete("b",void 0),h+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=[];d(this,(function(e,t){f(n,{key:t,value:e})})),a(t,1);for(var o,s=i(e),c=i(r),h=0,p=0,v=!1,g=n.length;h<g;)o=n[h++],v||o.key===s?(v=!0,l(this,o.key)):p++;for(;p<g;)(o=n[p++]).key===s&&o.value===c||u(this,o.key,o.value)}),{enumerable:!0,unsafe:!0})},7566:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.getAll),l=o(c.has),d=new s("a=1");!d.has("a",2)&&d.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=u(this,e);a(t,1);for(var o=i(r),s=0;s<n.length;)if(n[s++]===o)return!0;return!1}),{enumerable:!0,unsafe:!0})},8408:(e,t,r)=>{"use strict";r(8406)},8721:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(2106),a=URLSearchParams.prototype,s=o(a.forEach);n&&!("size"in a)&&i(a,"size",{get:function(){var e=0;return s(this,(function(){e++})),e},configurable:!0,enumerable:!0})},2222:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(9039),a=r(2812),s=r(655),c=r(7416),u=o("URL"),l=c&&i((function(){u.canParse()})),d=i((function(){return 1!==u.canParse.length}));n({target:"URL",stat:!0,forced:!l||d},{canParse:function(e){var t=a(arguments.length,1),r=s(e),n=t<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return!!new u(r,n)}catch(e){return!1}}})},5806:(e,t,r)=>{"use strict";r(7764);var n,o=r(6518),i=r(3724),a=r(7416),s=r(4576),c=r(6080),u=r(9504),l=r(6840),d=r(2106),f=r(679),h=r(9297),p=r(4213),v=r(7916),g=r(7680),m=r(8183).codeAt,y=r(6098),b=r(655),w=r(687),E=r(2812),C=r(8406),S=r(1181),O=S.set,_=S.getterFor("URL"),k=C.URLSearchParams,P=C.getState,A=s.URL,M=s.TypeError,T=s.parseInt,x=Math.floor,R=Math.pow,L=u("".charAt),F=u(/./.exec),j=u([].join),I=u(1..toString),D=u([].pop),B=u([].push),H=u("".replace),N=u([].shift),V=u("".split),U=u("".slice),G=u("".toLowerCase),z=u([].unshift),q="Invalid scheme",K="Invalid host",W="Invalid port",J=/[a-z]/i,Y=/[\d+-.a-z]/i,Q=/\d/,$=/^0x/i,X=/^[0-7]+$/,Z=/^\d+$/,ee=/^[\da-f]+$/i,te=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ne=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ie=/[\t\n\r]/g,ae=function(e){var t,r,n,o;if("number"==typeof e){for(t=[],r=0;r<4;r++)z(t,e%256),e=x(e/256);return j(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,o=0,i=0;i<8;i++)0!==e[i]?(o>r&&(t=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:t}(e),r=0;r<8;r++)o&&0===e[r]||(o&&(o=!1),n===r?(t+=r?":":"::",o=!0):(t+=I(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},se={},ce=p({},se,{" ":1,'"':1,"<":1,">":1,"`":1}),ue=p({},ce,{"#":1,"?":1,"{":1,"}":1}),le=p({},ue,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),de=function(e,t){var r=m(e,0);return r>32&&r<127&&!h(t,e)?e:encodeURIComponent(e)},fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var r;return 2===e.length&&F(J,L(e,0))&&(":"===(r=L(e,1))||!t&&"|"===r)},pe=function(e){var t;return e.length>1&&he(U(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},ve=function(e){return"."===e||"%2e"===G(e)},ge={},me={},ye={},be={},we={},Ee={},Ce={},Se={},Oe={},_e={},ke={},Pe={},Ae={},Me={},Te={},xe={},Re={},Le={},Fe={},je={},Ie={},De=function(e,t,r){var n,o,i,a=b(e);if(t){if(o=this.parse(a))throw new M(o);this.searchParams=null}else{if(void 0!==r&&(n=new De(r,!0)),o=this.parse(a,null,n))throw new M(o);(i=P(new k)).bindURL(this),this.searchParams=i}};De.prototype={type:"URL",parse:function(e,t,r){var o,i,a,s,c,u=this,l=t||ge,d=0,f="",p=!1,m=!1,y=!1;for(e=b(e),t||(u.scheme="",u.username="",u.password="",u.host=null,u.port=null,u.path=[],u.query=null,u.fragment=null,u.cannotBeABaseURL=!1,e=H(e,ne,""),e=H(e,oe,"$1")),e=H(e,ie,""),o=v(e);d<=o.length;){switch(i=o[d],l){case ge:if(!i||!F(J,i)){if(t)return q;l=ye;continue}f+=G(i),l=me;break;case me:if(i&&(F(Y,i)||"+"===i||"-"===i||"."===i))f+=G(i);else{if(":"!==i){if(t)return q;f="",l=ye,d=0;continue}if(t&&(u.isSpecial()!==h(fe,f)||"file"===f&&(u.includesCredentials()||null!==u.port)||"file"===u.scheme&&!u.host))return;if(u.scheme=f,t)return void(u.isSpecial()&&fe[u.scheme]===u.port&&(u.port=null));f="","file"===u.scheme?l=Me:u.isSpecial()&&r&&r.scheme===u.scheme?l=be:u.isSpecial()?l=Se:"/"===o[d+1]?(l=we,d++):(u.cannotBeABaseURL=!0,B(u.path,""),l=Fe)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!==i)return q;if(r.cannotBeABaseURL&&"#"===i){u.scheme=r.scheme,u.path=g(r.path),u.query=r.query,u.fragment="",u.cannotBeABaseURL=!0,l=Ie;break}l="file"===r.scheme?Me:Ee;continue;case be:if("/"!==i||"/"!==o[d+1]){l=Ee;continue}l=Oe,d++;break;case we:if("/"===i){l=_e;break}l=Le;continue;case Ee:if(u.scheme=r.scheme,i===n)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query;else if("/"===i||"\\"===i&&u.isSpecial())l=Ce;else if("?"===i)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query="",l=je;else{if("#"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.path.length--,l=Le;continue}u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie}break;case Ce:if(!u.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,l=Le;continue}l=_e}else l=Oe;break;case Se:if(l=Oe,"/"!==i||"/"!==L(f,d+1))continue;d++;break;case Oe:if("/"!==i&&"\\"!==i){l=_e;continue}break;case _e:if("@"===i){p&&(f="%40"+f),p=!0,a=v(f);for(var w=0;w<a.length;w++){var E=a[w];if(":"!==E||y){var C=de(E,le);y?u.password+=C:u.username+=C}else y=!0}f=""}else if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(p&&""===f)return"Invalid authority";d-=v(f).length+1,f="",l=ke}else f+=i;break;case ke:case Pe:if(t&&"file"===u.scheme){l=xe;continue}if(":"!==i||m){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(u.isSpecial()&&""===f)return K;if(t&&""===f&&(u.includesCredentials()||null!==u.port))return;if(s=u.parseHost(f))return s;if(f="",l=Re,t)return;continue}"["===i?m=!0:"]"===i&&(m=!1),f+=i}else{if(""===f)return K;if(s=u.parseHost(f))return s;if(f="",l=Ae,t===Pe)return}break;case Ae:if(!F(Q,i)){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()||t){if(""!==f){var S=T(f,10);if(S>65535)return W;u.port=u.isSpecial()&&S===fe[u.scheme]?null:S,f=""}if(t)return;l=Re;continue}return W}f+=i;break;case Me:if(u.scheme="file","/"===i||"\\"===i)l=Te;else{if(!r||"file"!==r.scheme){l=Le;continue}switch(i){case n:u.host=r.host,u.path=g(r.path),u.query=r.query;break;case"?":u.host=r.host,u.path=g(r.path),u.query="",l=je;break;case"#":u.host=r.host,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie;break;default:pe(j(g(o,d),""))||(u.host=r.host,u.path=g(r.path),u.shortenPath()),l=Le;continue}}break;case Te:if("/"===i||"\\"===i){l=xe;break}r&&"file"===r.scheme&&!pe(j(g(o,d),""))&&(he(r.path[0],!0)?B(u.path,r.path[0]):u.host=r.host),l=Le;continue;case xe:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!t&&he(f))l=Le;else if(""===f){if(u.host="",t)return;l=Re}else{if(s=u.parseHost(f))return s;if("localhost"===u.host&&(u.host=""),t)return;f="",l=Re}continue}f+=i;break;case Re:if(u.isSpecial()){if(l=Le,"/"!==i&&"\\"!==i)continue}else if(t||"?"!==i)if(t||"#"!==i){if(i!==n&&(l=Le,"/"!==i))continue}else u.fragment="",l=Ie;else u.query="",l=je;break;case Le:if(i===n||"/"===i||"\\"===i&&u.isSpecial()||!t&&("?"===i||"#"===i)){if(".."===(c=G(c=f))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(u.shortenPath(),"/"===i||"\\"===i&&u.isSpecial()||B(u.path,"")):ve(f)?"/"===i||"\\"===i&&u.isSpecial()||B(u.path,""):("file"===u.scheme&&!u.path.length&&he(f)&&(u.host&&(u.host=""),f=L(f,0)+":"),B(u.path,f)),f="","file"===u.scheme&&(i===n||"?"===i||"#"===i))for(;u.path.length>1&&""===u.path[0];)N(u.path);"?"===i?(u.query="",l=je):"#"===i&&(u.fragment="",l=Ie)}else f+=de(i,ue);break;case Fe:"?"===i?(u.query="",l=je):"#"===i?(u.fragment="",l=Ie):i!==n&&(u.path[0]+=de(i,se));break;case je:t||"#"!==i?i!==n&&("'"===i&&u.isSpecial()?u.query+="%27":u.query+="#"===i?"%23":de(i,se)):(u.fragment="",l=Ie);break;case Ie:i!==n&&(u.fragment+=de(i,ce))}d++}},parseHost:function(e){var t,r,n;if("["===L(e,0)){if("]"!==L(e,e.length-1))return K;if(t=function(e){var t,r,n,o,i,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,d=0,f=function(){return L(e,d)};if(":"===f()){if(":"!==L(e,1))return;d+=2,l=++u}for(;f();){if(8===u)return;if(":"!==f()){for(t=r=0;r<4&&F(ee,f());)t=16*t+T(f(),16),d++,r++;if("."===f()){if(0===r)return;if(d-=r,u>6)return;for(n=0;f();){if(o=null,n>0){if(!("."===f()&&n<4))return;d++}if(!F(Q,f()))return;for(;F(Q,f());){if(i=T(f(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;d++}c[u]=256*c[u]+o,2!=++n&&4!==n||u++}if(4!==n)return;break}if(":"===f()){if(d++,!f())return}else if(f())return;c[u++]=t}else{if(null!==l)return;d++,l=++u}}if(null!==l)for(a=u-l,u=7;0!==u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!==u)return;return c}(U(e,1,-1)),!t)return K;this.host=t}else if(this.isSpecial()){if(e=y(e),F(te,e))return K;if(t=function(e){var t,r,n,o,i,a,s,c=V(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n<t;n++){if(""===(o=c[n]))return e;if(i=10,o.length>1&&"0"===L(o,0)&&(i=F($,o)?16:8,o=U(o,8===i?1:2)),""===o)a=0;else{if(!F(10===i?Z:8===i?X:ee,o))return e;a=T(o,i)}B(r,a)}for(n=0;n<t;n++)if(a=r[n],n===t-1){if(a>=R(256,5-t))return null}else if(a>255)return null;for(s=D(r),n=0;n<r.length;n++)s+=r[n]*R(256,3-n);return s}(e),null===t)return K;this.host=t}else{if(F(re,e))return K;for(t="",r=v(e),n=0;n<r.length;n++)t+=de(r[n],se);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"===this.scheme},includesCredentials:function(){return""!==this.username||""!==this.password},isSpecial:function(){return h(fe,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"===this.scheme&&1===t&&he(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,r=e.username,n=e.password,o=e.host,i=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==o?(u+="//",e.includesCredentials()&&(u+=r+(n?":"+n:"")+"@"),u+=ae(o),null!==i&&(u+=":"+i)):"file"===t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+j(a,"/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},setHref:function(e){var t=this.parse(e);if(t)throw new M(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"===e)try{return new Be(e.path[0]).origin}catch(e){return"null"}return"file"!==e&&this.isSpecial()?e+"://"+ae(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(b(e)+":",ge)},getUsername:function(){return this.username},setUsername:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var r=0;r<t.length;r++)this.username+=de(t[r],le)}},getPassword:function(){return this.password},setPassword:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var r=0;r<t.length;r++)this.password+=de(t[r],le)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?ae(e):ae(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,ke)},getHostname:function(){var e=this.host;return null===e?"":ae(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Pe)},getPort:function(){var e=this.port;return null===e?"":b(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""===(e=b(e))?this.port=null:this.parse(e,Ae))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+j(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Re))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""===(e=b(e))?this.query=null:("?"===L(e,0)&&(e=U(e,1)),this.query="",this.parse(e,je)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!==(e=b(e))?("#"===L(e,0)&&(e=U(e,1)),this.fragment="",this.parse(e,Ie)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Be=function(e){var t=f(this,He),r=E(arguments.length,1)>1?arguments[1]:void 0,n=O(t,new De(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},He=Be.prototype,Ne=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(d(He,"href",Ne("serialize","setHref")),d(He,"origin",Ne("getOrigin")),d(He,"protocol",Ne("getProtocol","setProtocol")),d(He,"username",Ne("getUsername","setUsername")),d(He,"password",Ne("getPassword","setPassword")),d(He,"host",Ne("getHost","setHost")),d(He,"hostname",Ne("getHostname","setHostname")),d(He,"port",Ne("getPort","setPort")),d(He,"pathname",Ne("getPathname","setPathname")),d(He,"search",Ne("getSearch","setSearch")),d(He,"searchParams",Ne("getSearchParams")),d(He,"hash",Ne("getHash","setHash"))),l(He,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),l(He,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),A){var Ve=A.createObjectURL,Ue=A.revokeObjectURL;Ve&&l(Be,"createObjectURL",c(Ve,A)),Ue&&l(Be,"revokeObjectURL",c(Ue,A))}w(Be,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:Be})},3296:(e,t,r)=>{"use strict";r(5806)},8162:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(2812),a=r(655),s=r(7416),c=o("URL");n({target:"URL",stat:!0,forced:!s},{parse:function(e){var t=i(arguments.length,1),r=a(e),n=t<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return new c(r,n)}catch(e){return null}}})},7208:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565);n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},6612:(e,t,r)=>{"use strict";var n=r(3609);e.exports=n},8418:(e,t,r)=>{"use strict";var n=r(8473);e.exports=n},2473:(e,t,r)=>{"use strict";var n=r(6398);r(2953),e.exports=n},2841:(e,t,r)=>{"use strict";var n=r(8367);e.exports=n},6811:(e,t,r)=>{"use strict";r(8408),r(4603),r(7566),r(8721);var n=r(9167);e.exports=n.URLSearchParams},8367:(e,t,r)=>{"use strict";r(6811),r(3296),r(2222),r(8162),r(7208);var n=r(9167);e.exports=n.URL}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(8156)})()));
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.WebOfficeJSSDK=t():e.WebOfficeJSSDK=t()}(self,(()=>(()=>{var e={1121:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(){function e(e){this.alphabet=e,this.lookup=this.createLookupTable()}return e.getBytes=function(e){for(var t=[],r=0;r<e.length;r++){var n=e.charCodeAt(r);t.push(255&n)}return t},e.getString=function(e){return String.fromCharCode.apply(this,e)},e.createInstance=function(){return this.createInstanceWithGmpCharacterSet()},e.createInstanceWithGmpCharacterSet=function(){return new e(e.CharacterSets.GMP)},e.createInstanceWithInvertedCharacterSet=function(){return new e(e.CharacterSets.INVERTED)},e.translate=function(e,t){for(var r=[],n=0,o=e;n<o.length;n++){var i=o[n];r.push(t[i])}return r},e.convert=function(e,t,r){for(var n=[],o=e;o.length>0;){for(var i=[],a=0,s=0,c=o;s<c.length;s++){var u=(255&c[s])+a*t,l=(u-u%r)/r;a=u%r,(i.length>0||l>0)&&i.push(l)}n.push(a),o=i}for(var d=0;d<e.length-1&&0===e[d];d++)n.push(0);return n.reverse()},e.prototype.encode=function(t){var r=e.convert(t,e.STANDARD_BASE,e.TARGET_BASE);return e.translate(r,this.alphabet)},e.prototype.decode=function(t){var r=e.translate(t,this.lookup);return e.convert(r,e.TARGET_BASE,e.STANDARD_BASE)},e.prototype.encodeStr=function(t){return e.getString(this.encode(e.getBytes(t)))},e.prototype.decodeStr=function(t){return e.getString(this.decode(e.getBytes(t)))},e.prototype.createLookupTable=function(){for(var e=new Array(256),t=0;t<256;t++)e[this.alphabet[t]]=255&t;return e},e.CharacterSets={GMP:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0)],INVERTED:["0".charCodeAt(0),"1".charCodeAt(0),"2".charCodeAt(0),"3".charCodeAt(0),"4".charCodeAt(0),"5".charCodeAt(0),"6".charCodeAt(0),"7".charCodeAt(0),"8".charCodeAt(0),"9".charCodeAt(0),"a".charCodeAt(0),"b".charCodeAt(0),"c".charCodeAt(0),"d".charCodeAt(0),"e".charCodeAt(0),"f".charCodeAt(0),"g".charCodeAt(0),"h".charCodeAt(0),"i".charCodeAt(0),"j".charCodeAt(0),"k".charCodeAt(0),"l".charCodeAt(0),"m".charCodeAt(0),"n".charCodeAt(0),"o".charCodeAt(0),"p".charCodeAt(0),"q".charCodeAt(0),"r".charCodeAt(0),"s".charCodeAt(0),"t".charCodeAt(0),"u".charCodeAt(0),"v".charCodeAt(0),"w".charCodeAt(0),"x".charCodeAt(0),"y".charCodeAt(0),"z".charCodeAt(0),"A".charCodeAt(0),"B".charCodeAt(0),"C".charCodeAt(0),"D".charCodeAt(0),"E".charCodeAt(0),"F".charCodeAt(0),"G".charCodeAt(0),"H".charCodeAt(0),"I".charCodeAt(0),"J".charCodeAt(0),"K".charCodeAt(0),"L".charCodeAt(0),"M".charCodeAt(0),"N".charCodeAt(0),"O".charCodeAt(0),"P".charCodeAt(0),"Q".charCodeAt(0),"R".charCodeAt(0),"S".charCodeAt(0),"T".charCodeAt(0),"U".charCodeAt(0),"V".charCodeAt(0),"W".charCodeAt(0),"X".charCodeAt(0),"Y".charCodeAt(0),"Z".charCodeAt(0)]},e.STANDARD_BASE=256,e.TARGET_BASE=62,e}();t.default=r},1582:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.timeout=e,this.db=new Map,this.nextGc=null,this.gcDelay=t||5}get size(){return this.db.size}get all(){const e=new Set;return this.db.forEach(((t,r)=>{e.add(r)})),e}add(e){return this.db.set(e,Date.now()+this.timeout),this.scheduleGc(),this}has(e){return this.db.has(e)}delete(e){return this.db.has(e)&&(this.db.delete(e),this.scheduleGc(!0)),this}gc(){const e=Date.now();this.db.forEach(((t,r)=>{t<e&&this.db.delete(r)})),this.nextGc=null,this.scheduleGc()}scheduleGc(e=!1){if(e&&this.nextGc&&(clearTimeout(this.nextGc),this.nextGc=null),null!==this.nextGc||0===this.db.size)return;let t=-1;this.db.forEach((e=>{(-1===t||e<t)&&(t=e)})),-1===t&&(t=Date.now());const r=t-Date.now()+this.gcDelay;this.nextGc=setTimeout(this.gc.bind(this),r)}}t.default=r,e.exports=r,e.exports.default=r},7820:e=>{"use strict";"undefined"!=typeof self?e.exports=self:"undefined"!=typeof window?e.exports=window:e.exports=Function("return this")()},5323:(e,t,r)=>{"use strict";var n=r(7820);e.exports=function(){return"object"==typeof r.g&&r.g&&r.g.Math===Math&&r.g.Array===Array?r.g:n}},1436:e=>{var t;self,t=()=>(()=>{var e={318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8:e=>{function t(r){return e.exports=t="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},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},991:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OPEN_BROADCAST_CHANNELS=t.BroadcastChannel=void 0,t.clearNodeFolder=function(e){e=(0,i.fillOptionsWithDefaults)(e);var t=(0,o.chooseMethod)(e);return"node"===t.type?t.clearNodeFolder().then((function(){return!0})):n.PROMISE_RESOLVED_FALSE},t.enforceOptions=function(e){s=e};var n=r(202),o=r(632),i=r(423),a=new Set;t.OPEN_BROADCAST_CHANNELS=a;var s,c=0,u=function(e,t){var r,u;this.id=c++,a.add(this),this.name=e,s&&(t=s),this.options=(0,i.fillOptionsWithDefaults)(t),this.method=(0,o.chooseMethod)(this.options),this._iL=!1,this._onML=null,this._addEL={message:[],internal:[]},this._uMP=new Set,this._befC=[],this._prepP=null,u=(r=this).method.create(r.name,r.options),(0,n.isPromise)(u)?(r._prepP=u,u.then((function(e){r._state=e}))):r._state=u};function l(e,t,r){var o={time:e.method.microSeconds(),type:t,data:r};return(e._prepP?e._prepP:n.PROMISE_RESOLVED_VOID).then((function(){var t=e.method.postMessage(e._state,o);return e._uMP.add(t),t.catch().then((function(){return e._uMP.delete(t)})),t}))}function d(e){return e._addEL.message.length>0||e._addEL.internal.length>0}function f(e,t,r){e._addEL[t].push(r),function(e){if(!e._iL&&d(e)){var t=function(t){e._addEL[t.type].forEach((function(e){var r=e.time-1e5;t.time>=r&&e.fn(t.data)}))},r=e.method.microSeconds();e._prepP?e._prepP.then((function(){e._iL=!0,e.method.onMessage(e._state,t,r)})):(e._iL=!0,e.method.onMessage(e._state,t,r))}}(e)}function h(e,t,r){e._addEL[t]=e._addEL[t].filter((function(e){return e!==r})),function(e){if(e._iL&&!d(e)){e._iL=!1;var t=e.method.microSeconds();e.method.onMessage(e._state,null,t)}}(e)}t.BroadcastChannel=u,u._pubkey=!0,u.prototype={postMessage:function(e){if(this.closed)throw new Error("BroadcastChannel.postMessage(): Cannot post message after channel has closed "+JSON.stringify(e));return l(this,"message",e)},postInternal:function(e){return l(this,"internal",e)},set onmessage(e){var t={time:this.method.microSeconds(),fn:e};h(this,"message",this._onML),e&&"function"==typeof e?(this._onML=t,f(this,"message",t)):this._onML=null},addEventListener:function(e,t){f(this,e,{time:this.method.microSeconds(),fn:t})},removeEventListener:function(e,t){h(this,e,this._addEL[e].find((function(e){return e.fn===t})))},close:function(){var e=this;if(!this.closed){a.delete(this),this.closed=!0;var t=this._prepP?this._prepP:n.PROMISE_RESOLVED_VOID;return this._onML=null,this._addEL.message=[],t.then((function(){return Promise.all(Array.from(e._uMP))})).then((function(){return Promise.all(e._befC.map((function(e){return e()})))})).then((function(){return e.method.close(e._state)}))}},get type(){return this.method.type},get isClosed(){return this.closed}}},437:(e,t,r)=>{"use strict";var n=r(585);e.exports={BroadcastChannel:n.BroadcastChannel,createLeaderElection:n.createLeaderElection,clearNodeFolder:n.clearNodeFolder,enforceOptions:n.enforceOptions,beLeader:n.beLeader}},585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BroadcastChannel",{enumerable:!0,get:function(){return n.BroadcastChannel}}),Object.defineProperty(t,"OPEN_BROADCAST_CHANNELS",{enumerable:!0,get:function(){return n.OPEN_BROADCAST_CHANNELS}}),Object.defineProperty(t,"beLeader",{enumerable:!0,get:function(){return o.beLeader}}),Object.defineProperty(t,"clearNodeFolder",{enumerable:!0,get:function(){return n.clearNodeFolder}}),Object.defineProperty(t,"createLeaderElection",{enumerable:!0,get:function(){return o.createLeaderElection}}),Object.defineProperty(t,"enforceOptions",{enumerable:!0,get:function(){return n.enforceOptions}});var n=r(991),o=r(550)},550:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.beLeader=s,t.createLeaderElection=function(e,t){if(e._leaderElector)throw new Error("BroadcastChannel already has a leader-elector");t=function(e,t){return e||(e={}),(e=JSON.parse(JSON.stringify(e))).fallbackInterval||(e.fallbackInterval=3e3),e.responseTime||(e.responseTime=t.method.averageResponseTime(t.options)),e}(t,e);var r=new i(e,t);return e._befC.push((function(){return r.die()})),e._leaderElector=r,r};var n=r(202),o=r(499),i=function(e,t){var r=this;this.broadcastChannel=e,this._options=t,this.isLeader=!1,this.hasLeader=!1,this.isDead=!1,this.token=(0,n.randomToken)(),this._aplQ=n.PROMISE_RESOLVED_VOID,this._aplQC=0,this._unl=[],this._lstns=[],this._dpL=function(){},this._dpLC=!1;var o=function(e){"leader"===e.context&&("death"===e.action&&(r.hasLeader=!1),"tell"===e.action&&(r.hasLeader=!0))};this.broadcastChannel.addEventListener("internal",o),this._lstns.push(o)};function a(e,t){var r={context:"leader",action:t,token:e.token};return e.broadcastChannel.postInternal(r)}function s(e){e.isLeader=!0,e.hasLeader=!0;var t=(0,o.add)((function(){return e.die()}));e._unl.push(t);var r=function(t){"leader"===t.context&&"apply"===t.action&&a(e,"tell"),"leader"!==t.context||"tell"!==t.action||e._dpLC||(e._dpLC=!0,e._dpL(),a(e,"tell"))};return e.broadcastChannel.addEventListener("internal",r),e._lstns.push(r),a(e,"tell")}i.prototype={applyOnce:function(e){var t=this;return this.isLeader?(0,n.sleep)(0,!0):this.isDead?(0,n.sleep)(0,!1):this._aplQC>1?this._aplQ:(this._aplQC=this._aplQC+1,this._aplQ=this._aplQ.then((function(){return function(){if(t.isLeader)return n.PROMISE_RESOLVED_TRUE;var r,o=!1,i=new Promise((function(e){r=function(){o=!0,e()}})),c=[],u=function(e){"leader"===e.context&&e.token!=t.token&&(c.push(e),"apply"===e.action&&e.token>t.token&&r(),"tell"===e.action&&(r(),t.hasLeader=!0))};t.broadcastChannel.addEventListener("internal",u);var l=e?4*t._options.responseTime:t._options.responseTime;return a(t,"apply").then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).then((function(){return a(t,"apply")})).then((function(){return Promise.race([(0,n.sleep)(l),i.then((function(){return Promise.reject(new Error)}))])})).catch((function(){})).then((function(){return t.broadcastChannel.removeEventListener("internal",u),!o&&s(t).then((function(){return!0}))}))}()})).then((function(){t._aplQC=t._aplQC-1})),this._aplQ.then((function(){return t.isLeader})))},awaitLeadership:function(){return this._aLP||(this._aLP=(e=this).isLeader?n.PROMISE_RESOLVED_VOID:new Promise((function(t){var r=!1;function o(){r||(r=!0,e.broadcastChannel.removeEventListener("internal",i),t(!0))}e.applyOnce().then((function(){e.isLeader&&o()})),function t(){return(0,n.sleep)(e._options.fallbackInterval).then((function(){if(!e.isDead&&!r)return e.isLeader?void o():e.applyOnce(!0).then((function(){e.isLeader?o():t()}))}))}();var i=function(t){"leader"===t.context&&"death"===t.action&&(e.hasLeader=!1,e.applyOnce().then((function(){e.isLeader&&o()})))};e.broadcastChannel.addEventListener("internal",i),e._lstns.push(i)}))),this._aLP;var e},set onduplicate(e){this._dpL=e},die:function(){var e=this;return this._lstns.forEach((function(t){return e.broadcastChannel.removeEventListener("internal",t)})),this._lstns=[],this._unl.forEach((function(e){return e.remove()})),this._unl=[],this.isLeader&&(this.hasLeader=!1,this.isLeader=!1),this.isDead=!0,a(this,"death")}}},632:(e,t,r)=>{"use strict";var n=r(318);r(8),Object.defineProperty(t,"__esModule",{value:!0}),t.chooseMethod=function(e){var t=[].concat(e.methods,u).filter(Boolean);if(e.type){if("simulate"===e.type)return s.default;var r=t.find((function(t){return t.type===e.type}));if(r)return r;throw new Error("method-type "+e.type+" not found")}e.webWorkerSupport||c.isNode||(t=t.filter((function(e){return"idb"!==e.type})));var n=t.find((function(e){return e.canBeUsed()}));if(n)return n;throw new Error("No useable method found in "+JSON.stringify(u.map((function(e){return e.type}))))};var o=n(r(115)),i=n(r(122)),a=n(r(924)),s=n(r(574)),c=r(202),u=[o.default,i.default,a.default]},122:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=C,t.canBeUsed=E,t.cleanOldMessages=p,t.close=y,t.create=v,t.createDatabase=u,t.default=void 0,t.getAllMessages=function(e){var t=e.transaction(s).objectStore(s),r=[];return new Promise((function(e){t.openCursor().onsuccess=function(t){var n=t.target.result;n?(r.push(n.value),n.continue()):e(r)}}))},t.getIdb=c,t.getMessagesHigherThan=d,t.getOldMessages=h,t.microSeconds=void 0,t.onMessage=w,t.postMessage=b,t.removeMessageById=f,t.type=void 0,t.writeMessage=l;var n=r(202),o=r(151),i=r(423),a=n.microSeconds;t.microSeconds=a;var s="messages";function c(){if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof window){if(void 0!==window.mozIndexedDB)return window.mozIndexedDB;if(void 0!==window.webkitIndexedDB)return window.webkitIndexedDB;if(void 0!==window.msIndexedDB)return window.msIndexedDB}return!1}function u(e){var t="pubkey.broadcast-channel-0-"+e,r=c().open(t,1);return r.onupgradeneeded=function(e){e.target.result.createObjectStore(s,{keyPath:"id",autoIncrement:!0})},new Promise((function(e,t){r.onerror=function(e){return t(e)},r.onsuccess=function(){e(r.result)}}))}function l(e,t,r){var n={uuid:t,time:(new Date).getTime(),data:r},o=e.transaction([s],"readwrite");return new Promise((function(e,t){o.oncomplete=function(){return e()},o.onerror=function(e){return t(e)},o.objectStore(s).add(n)}))}function d(e,t){var r=e.transaction(s).objectStore(s),n=[];return new Promise((function(e){(function(){try{var e=IDBKeyRange.bound(t+1,1/0);return r.openCursor(e)}catch(e){return r.openCursor()}}()).onsuccess=function(r){var o=r.target.result;o?o.value.id<t+1?o.continue(t+1):(n.push(o.value),o.continue()):e(n)}}))}function f(e,t){var r=e.transaction([s],"readwrite").objectStore(s).delete(t);return new Promise((function(e){r.onsuccess=function(){return e()}}))}function h(e,t){var r=(new Date).getTime()-t,n=e.transaction(s).objectStore(s),o=[];return new Promise((function(e){n.openCursor().onsuccess=function(t){var n=t.target.result;if(n){var i=n.value;if(!(i.time<r))return void e(o);o.push(i),n.continue()}else e(o)}}))}function p(e,t){return h(e,t).then((function(t){return Promise.all(t.map((function(t){return f(e,t.id)})))}))}function v(e,t){return t=(0,i.fillOptionsWithDefaults)(t),u(e).then((function(r){var i={closed:!1,lastCursorId:0,channelName:e,options:t,uuid:(0,n.randomToken)(),eMIs:new o.ObliviousSet(2*t.idb.ttl),writeBlockPromise:n.PROMISE_RESOLVED_VOID,messagesCallback:null,readQueuePromises:[],db:r};return r.onclose=function(){i.closed=!0,t.idb.onclose&&t.idb.onclose()},g(i),i}))}function g(e){e.closed||m(e).then((function(){return(0,n.sleep)(e.options.idb.fallbackInterval)})).then((function(){return g(e)}))}function m(e){return e.closed?n.PROMISE_RESOLVED_VOID:e.messagesCallback?d(e.db,e.lastCursorId).then((function(t){var r=t.filter((function(e){return!!e})).map((function(t){return t.id>e.lastCursorId&&(e.lastCursorId=t.id),t})).filter((function(t){return function(e,t){return!(e.uuid===t.uuid||t.eMIs.has(e.id)||e.data.time<t.messagesCallbackTime)}(t,e)})).sort((function(e,t){return e.time-t.time}));return r.forEach((function(t){e.messagesCallback&&(e.eMIs.add(t.id),e.messagesCallback(t.data))})),n.PROMISE_RESOLVED_VOID})):n.PROMISE_RESOLVED_VOID}function y(e){e.closed=!0,e.db.close()}function b(e,t){return e.writeBlockPromise=e.writeBlockPromise.then((function(){return l(e.db,e.uuid,t)})).then((function(){0===(0,n.randomInt)(0,10)&&p(e.db,e.options.idb.ttl)})),e.writeBlockPromise}function w(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t,m(e)}function E(){return!n.isNode&&!!c()}function C(e){return 2*e.idb.fallbackInterval}t.type="idb";var S={create:v,close:y,onMessage:w,postMessage:b,canBeUsed:E,type:"idb",averageResponseTime:C,microSeconds:a};t.default=S},924:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addStorageEventListener=d,t.averageResponseTime=m,t.canBeUsed=g,t.close=p,t.create=h,t.default=void 0,t.getLocalStorage=c,t.microSeconds=void 0,t.onMessage=v,t.postMessage=l,t.removeStorageEventListener=f,t.storageKey=u,t.type=void 0;var n=r(151),o=r(423),i=r(202),a=i.microSeconds;t.microSeconds=a;var s="localstorage";function c(){var e;if("undefined"==typeof window)return null;try{e=window.localStorage,e=window["ie8-eventlistener/storage"]||window.localStorage}catch(e){}return e}function u(e){return"pubkey.broadcastChannel-"+e}function l(e,t){return new Promise((function(r){(0,i.sleep)().then((function(){var n=u(e.channelName),o={token:(0,i.randomToken)(),time:(new Date).getTime(),data:t,uuid:e.uuid},a=JSON.stringify(o);c().setItem(n,a);var s=document.createEvent("Event");s.initEvent("storage",!0,!0),s.key=n,s.newValue=a,window.dispatchEvent(s),r()}))}))}function d(e,t){var r=u(e),n=function(e){e.key===r&&t(JSON.parse(e.newValue))};return window.addEventListener("storage",n),n}function f(e){window.removeEventListener("storage",e)}function h(e,t){if(t=(0,o.fillOptionsWithDefaults)(t),!g())throw new Error("BroadcastChannel: localstorage cannot be used");var r=(0,i.randomToken)(),a=new n.ObliviousSet(t.localstorage.removeTimeout),s={channelName:e,uuid:r,eMIs:a};return s.listener=d(e,(function(e){s.messagesCallback&&e.uuid!==r&&e.token&&!a.has(e.token)&&(e.data.time&&e.data.time<s.messagesCallbackTime||(a.add(e.token),s.messagesCallback(e.data)))})),s}function p(e){f(e.listener)}function v(e,t,r){e.messagesCallbackTime=r,e.messagesCallback=t}function g(){if(i.isNode)return!1;var e=c();if(!e)return!1;try{var t="__broadcastchannel_check";e.setItem(t,"works"),e.removeItem(t)}catch(e){return!1}return!0}function m(){var e=navigator.userAgent.toLowerCase();return e.includes("safari")&&!e.includes("chrome")?240:120}t.type=s;var y={create:h,close:p,onMessage:v,postMessage:l,canBeUsed:g,type:s,averageResponseTime:m,microSeconds:a};t.default=y},115:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202),o=n.microSeconds;t.microSeconds=o;var i="native";function a(e){var t={messagesCallback:null,bc:new BroadcastChannel(e),subFns:[]};return t.bc.onmessage=function(e){t.messagesCallback&&t.messagesCallback(e.data)},t}function s(e){e.bc.close(),e.subFns=[]}function c(e,t){try{return e.bc.postMessage(t,!1),n.PROMISE_RESOLVED_VOID}catch(e){return Promise.reject(e)}}function u(e,t){e.messagesCallback=t}function l(){if(n.isNode&&"undefined"==typeof window)return!1;if("function"==typeof BroadcastChannel){if(BroadcastChannel._pubkey)throw new Error("BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill");return!0}return!1}function d(){return 150}t.type=i;var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:i,averageResponseTime:d,microSeconds:o};t.default=f},574:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.averageResponseTime=d,t.canBeUsed=l,t.close=s,t.create=a,t.microSeconds=t.default=void 0,t.onMessage=u,t.postMessage=c,t.type=void 0;var n=r(202).microSeconds;t.microSeconds=n;var o="simulate";t.type=o;var i=new Set;function a(e){var t={name:e,messagesCallback:null};return i.add(t),t}function s(e){i.delete(e)}function c(e,t){return new Promise((function(r){return setTimeout((function(){Array.from(i).filter((function(t){return t.name===e.name})).filter((function(t){return t!==e})).filter((function(e){return!!e.messagesCallback})).forEach((function(e){return e.messagesCallback(t)})),r()}),5)}))}function u(e,t){e.messagesCallback=t}function l(){return!0}function d(){return 5}var f={create:a,close:s,onMessage:u,postMessage:c,canBeUsed:l,type:o,averageResponseTime:d,microSeconds:n};t.default=f},423:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fillOptionsWithDefaults=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=JSON.parse(JSON.stringify(e));return void 0===t.webWorkerSupport&&(t.webWorkerSupport=!0),t.idb||(t.idb={}),t.idb.ttl||(t.idb.ttl=45e3),t.idb.fallbackInterval||(t.idb.fallbackInterval=150),e.idb&&"function"==typeof e.idb.onclose&&(t.idb.onclose=e.idb.onclose),t.localstorage||(t.localstorage={}),t.localstorage.removeTimeout||(t.localstorage.removeTimeout=6e4),e.methods&&(t.methods=e.methods),t.node||(t.node={}),t.node.ttl||(t.node.ttl=12e4),t.node.maxParallelWrites||(t.node.maxParallelWrites=2048),void 0===t.node.useFastPath&&(t.node.useFastPath=!0),t}},202:(e,t,r)=>{"use strict";var n=r(155);Object.defineProperty(t,"__esModule",{value:!0}),t.isNode=t.PROMISE_RESOLVED_VOID=t.PROMISE_RESOLVED_TRUE=t.PROMISE_RESOLVED_FALSE=void 0,t.isPromise=function(e){return!(!e||"function"!=typeof e.then)},t.microSeconds=function(){var e=(new Date).getTime();return e===s?1e3*e+ ++c:(s=e,c=0,1e3*e)},t.randomInt=function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},t.randomToken=function(){return Math.random().toString(36).substring(2)},t.sleep=function(e,t){return e||(e=0),new Promise((function(r){return setTimeout((function(){return r(t)}),e)}))};var o=Promise.resolve(!1);t.PROMISE_RESOLVED_FALSE=o;var i=Promise.resolve(!0);t.PROMISE_RESOLVED_TRUE=i;var a=Promise.resolve();t.PROMISE_RESOLVED_VOID=a;var s=0,c=0,u="[object process]"===Object.prototype.toString.call(void 0!==n?n:0);t.isNode=u},227:(e,t,r)=>{var n=r(155);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=r(447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},447:(e,t,r)=>{e.exports=function(e){function t(e){let r,o,i,a=null;function s(...e){if(!s.enabled)return;const n=s,o=Number(new Date),i=o-(r||o);n.diff=i,n.prev=r,n.curr=o,r=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let a=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((r,o)=>{if("%%"===r)return"%";a++;const i=t.formatters[o];if("function"==typeof i){const t=e[a];r=i.call(n,t),e.splice(a,1),a--}return r})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==a?a:(o!==t.namespaces&&(o=t.namespaces,i=t.enabled(e)),i),set:e=>{a=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r<o;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.slice(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;let r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(824),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},643:e=>{e.exports=!1},824:e=>{var t=1e3,r=60*t,n=60*r,o=24*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}e.exports=function(e,a){a=a||{};var s,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(i){var a=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return 6048e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*n;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===u&&isFinite(e))return a.long?(s=e,(c=Math.abs(s))>=o?i(s,c,o,"day"):c>=n?i(s,c,n,"hour"):c>=r?i(s,c,r,"minute"):c>=t?i(s,c,t,"second"):s+" ms"):function(e){var i=Math.abs(e);return i>=o?Math.round(e/o)+"d":i>=n?Math.round(e/n)+"h":i>=r?Math.round(e/r)+"m":i>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},151:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ObliviousSet:()=>n,now:()=>i,removeTooOldValues:()=>o});var n=function(){function e(e){this.ttl=e,this.set=new Set,this.timeMap=new Map}return e.prototype.has=function(e){return this.set.has(e)},e.prototype.add=function(e){var t=this;this.timeMap.set(e,i()),this.set.add(e),setTimeout((function(){o(t)}),0)},e.prototype.clear=function(){this.set.clear(),this.timeMap.clear()},e}();function o(e){for(var t=i()-e.ttl,r=e.set[Symbol.iterator]();;){var n=r.next().value;if(!n)return;if(!(e.timeMap.get(n)<t))return;e.timeMap.delete(n),e.set.delete(n)}}function i(){return(new Date).getTime()}},155:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},279:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},797:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.assert=t.AssertError=void 0;var o=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t}(Error);t.AssertError=o,t.assert=function(e,t,r){if(t(e))return e;throw new o(r)}},601:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SOURCE_NAMESPACE=void 0,t.SOURCE_NAMESPACE="OfficeSDKBroadcastChannel"},758:function(e,t){"use strict";var r,n=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvokeError=t.MessageTimeoutError=t.MessageError=void 0;var o=function(e){function t(t){var r=e.call(this,t)||this;return r.name="MessageError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.MessageError=o;var i=function(e){function t(r){var n=e.call(this,r)||this;return n.name="MessageTimeoutError",Object.setPrototypeOf(n,t.prototype),n}return n(t,e),t}(Error);t.MessageTimeoutError=i;var a=function(e){function t(t){var r=e.call(this,t)||this;return r.name="InvokeError",Object.setPrototypeOf(r,i.prototype),r}return n(t,e),t}(Error);t.InvokeError=a},607:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.OfficeSDKMessageEvent=t.isOfficeSDKMessageEventLike=t.OfficeSDKBroadcastChannel=void 0;var a=i(r(623));t.OfficeSDKBroadcastChannel=a.default;var s=r(928);Object.defineProperty(t,"isOfficeSDKMessageEventLike",{enumerable:!0,get:function(){return s.isOfficeSDKMessageEventLike}}),Object.defineProperty(t,"OfficeSDKMessageEvent",{enumerable:!0,get:function(){return s.OfficeSDKMessageEvent}}),o(r(928),t),o(r(623),t),o(r(758),t),o(r(86),t),o(r(601),t)},928:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOfficeSDKMessageEventLike=t.OfficeSDKMessageEvent=void 0;var n=r(131),o=r(797),i=r(601),a=function(e){var t=e.data,r=e.context,a=e.time,s=e.origin,c=e.emitter,u=e.channelId,l=Object.assign({},r,{channelId:u});"string"==typeof l.messageId&&""!==l.messageId.trim()||(l.messageId=(0,n.uuid)()),Object.defineProperties(this,{data:{enumerable:!0,value:t},context:{enumerable:!0,value:l},time:{enumerable:!0,value:null!=a?a:Date.now()},id:{enumerable:!0,get:function(){return l.messageId}},source:{enumerable:!0,value:i.SOURCE_NAMESPACE},origin:{enumerable:!0,value:s},emitter:{enumerable:!0,value:c},channelId:{enumerable:!0,get:function(){return l.channelId}}}),(0,o.assert)(this.context.channelId,(function(e){return"string"==typeof e&&e.length>0}),"channel id must be a non-empty string"),(0,o.assert)(this.id,(function(e){return"string"==typeof e&&e.length>0}),"id must be a non-empty string"),(0,o.assert)(this.time,(function(e){return"number"==typeof e&&e>=0}),"time must be a positive number")};t.OfficeSDKMessageEvent=a,t.isOfficeSDKMessageEventLike=function(e){if(e instanceof a)return!0;if("object"==typeof e&&null!=e){var t=e;return t.source===i.SOURCE_NAMESPACE&&"string"==typeof t.channelId&&t.channelId.length>0&&null!=t.context}return!1}},623:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},i=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.ContextType=t.DEBUG_NAMESPACE=t.INVOKE_DEFAUTL_TIMEOUT=void 0;var s=r(437),c=r(279),u=r(797),l=r(758),d=r(928),f=r(86),h=a(r(227)),p=a(r(675)),v=r(131);t.INVOKE_DEFAUTL_TIMEOUT=6e4,t.DEBUG_NAMESPACE="SM_CHAN";var g,m=function(){function e(e){var r,i=this;this.invokeHandlers=new Map,this.eventHandlers=new Map,this.emitterId=(0,v.uuid)(),this._debugNamespace=t.DEBUG_NAMESPACE,this.debug=!0===e.debug,this.debugNamespace=null!==(r=e.debugNamespace)&&void 0!==r?r:t.DEBUG_NAMESPACE,this.autoStructuredClone=!0===e.autoStructuredClone,Object.defineProperty(this,"id",{enumerable:!0,value:"string"==typeof e.channelId?(0,u.assert)(e.channelId.trim(),(function(e){return e.length>0}),"channelId must be a non-empty string"):(0,v.uuid)()}),this.emitter=new c.TinyEmitter;var a=new s.BroadcastChannel(this.id,e.broadcastChannelOptions);a.addEventListener("message",(function(e){n(i,void 0,void 0,(function(){var t,r,n;return o(this,(function(o){switch(o.label){case 0:try{t=this.initMessageEvent(e)}catch(t){return(r=new l.MessageError(null!==(n=null==t?void 0:t.message)&&void 0!==n?n:"message cannot be handled")).originMessage=e.data,this.emit("messageError",r),[2]}return[4,this.distributeMessage(t)];case 1:return o.sent(),[2]}}))})).catch((function(e){return n(i,void 0,void 0,(function(){return o(this,(function(t){return this.emit("error",e),[2]}))}))}))})),this.channel=a}return e.prototype.initMessageEvent=function(e){var t=Object.assign({emitter:this.emitterId},e,{channelId:this.id});return"string"!=typeof t.origin&&(t.origin=location.origin),new d.OfficeSDKMessageEvent(t)},e.prototype.structuredClone=function(e){return this.autoStructuredClone?(0,f.structuredClone)(e,{replacer:function(){}}):e},e.prototype.addEventListener=function(e,t,r){var n=this.eventHandlers.get(e);Array.isArray(n)||(n=[]),n.push([t,r]),this.eventHandlers.set(e,n)},e.prototype.on=function(e,t,r){var n=this;return this.addEventListener(e,t,r),function(){n.off(e,t,r)}},e.prototype.once=function(e,t,r){var n=this,o=function(r,o){n.off(e,t,o),t(r,o)};return o.handler=t,this.addEventListener(e,o,r),function(){n.off(e,t,r)}},e.prototype.off=function(e,t,r){if(1===arguments.length)this.eventHandlers.delete(e);else{var n=this.eventHandlers.get(e);Array.isArray(n)&&("*"===(null==r?void 0:r.audience)?this.eventHandlers.delete(e):this.eventHandlers.set(e,n.filter((function(e){var n=e[0],o=e[1];return n!==t&&n.handler!==t||(null==o?void 0:o.audience)===(null==r?void 0:r.audience)}))))}},e.prototype.emit=function(e,t,r){var n=this.eventHandlers.get(e);if(this.log("emit event",{name:e,data:t,context:r,handlers:n}),Array.isArray(n))for(var o=0,i=n;o<i.length;o++){var a=i[o],s=a[0];y(a[1],r)&&s(t,r)}},e.prototype.postMessage=function(e,t){return n(this,void 0,void 0,(function(){var r,n,i,a;return o(this,(function(o){switch(o.label){case 0:try{n=this.structuredClone(e),r=(0,d.isOfficeSDKMessageEventLike)(n)?this.initMessageEvent(n):this.initMessageEvent({data:n,context:null!=t?this.mergeContexts([t]):t})}catch(t){throw this.log("message invalid",e,t),(a=new l.MessageError(null==t?void 0:t.message)).originMessage=n,a}o.label=1;case 1:return o.trys.push([1,3,,4]),this.log("pre postMessage",{message:n,origin:e,context:t,structuredCloned:this.autoStructuredClone}),[4,this.channel.postMessage(r)];case 2:return o.sent(),this.emit("postMessage",r,r.context),this.log("postMessage success",r),[3,4];case 3:throw i=o.sent(),this.log("post message error",i),(a=new l.MessageError(null==i?void 0:i.message)).originMessage=e,a;case 4:return[2]}}))}))},e.prototype.distributeMessage=function(e){var t,r,i;return n(this,void 0,void 0,(function(){var n,a;return o(this,(function(o){switch(o.label){case 0:return(null===(t=(n=e).context)||void 0===t?void 0:t.channelId)!==this.id||n.emitter===this.emitterId?(this.log("discard message",n),[2]):"function"!=typeof this.onMessageArrive?[3,2]:[4,this.onMessageArrive(n)];case 1:if(!((a=o.sent())instanceof d.OfficeSDKMessageEvent))return this.log("skip distributing message by `onMessageArrive`",{message:a,origin:e}),[2];n=a,o.label=2;case 2:return this.log("distribute message",{message:n,origin:e}),(null===(r=n.context)||void 0===r?void 0:r.type)!==g.InvokeRequest?[3,4]:[4,this.handleInvokeRequest(n)];case 3:return o.sent(),[2];case 4:return(null===(i=n.context)||void 0===i?void 0:i.type)===g.InvokeResponse?(this.handleInvokeResponse(n),[2]):(this.emit("message",n,n.context),[2])}}))}))},e.prototype.handleInvokeRequest=function(e){return n(this,void 0,void 0,(function(){var t,r,n,i,a,s,c,u,l,d,f;return o(this,(function(o){switch(o.label){case 0:if(!(0,p.default)(e.data))throw this.log("invalid invoke request",e),new Error("InvokeRequest data must be an object");if(t=e.data,r=t.name,n=t.args,i=this.invokeHandlers.get(r),this.log("handle invoke request",{message:e,handlers:i}),a=e.context,!Array.isArray(i)||0===i.length)return this.log("no invoke handlers",r),[2];s=0,c=i,o.label=1;case 1:if(!(s<c.length))return[3,8];if(!y((u=c[s]).context,a))return[3,7];l={data:void 0},o.label=2;case 2:return o.trys.push([2,4,,5]),d=l,[4,u.handler.apply(u,n)];case 3:return d.data=o.sent(),[3,5];case 4:return f=o.sent(),l.error=f,[3,5];case 5:return[4,this.postMessage(l,Object.assign({},a,{type:g.InvokeResponse}))];case 6:return o.sent(),[2];case 7:return s++,[3,1];case 8:return this.log("no invoke handler found",r),[2]}}))}))},e.prototype.handleInvokeResponse=function(e){if(this.log("handle invoke response",e),"string"!=typeof e.id)throw new l.InvokeError("Invoke response context id is invalid");this.emitter.emit(e.id,e.data)},e.prototype.mergeContexts=function(e){return Object.assign.apply(Object,i([{channelId:this.id}],e,!1))},e.prototype.invoke=function(e,r,i){return n(this,void 0,void 0,(function(){var n,a,s,c,u,d=this;return o(this,(function(o){switch(o.label){case 0:return n={name:e,args:r},a="number"==typeof(null==i?void 0:i.timeout)&&(null==i?void 0:i.timeout)>0?null==i?void 0:i.timeout:t.INVOKE_DEFAUTL_TIMEOUT,s=(0,v.uuid)(),c=new Promise((function(t,n){d.emitter.once(s,(function(o){if(o.error instanceof l.InvokeError)n(o.error);else if(null!=o.error){var i=new l.InvokeError("string"==typeof o.error?o.error:o.error.message);i.method=e,i.arguments=r,n(i)}else t(o.data)})),setTimeout((function(){d.emitter.off(s),n(new l.MessageTimeoutError("".concat(e," invoke timeout")))}),a)})),[4,this.postMessage(n,Object.assign({},i,{messageId:s,timeout:a,type:g.InvokeRequest}))];case 1:o.sent(),o.label=2;case 2:return o.trys.push([2,4,,5]),[4,c];case 3:return[2,o.sent()];case 4:throw u=o.sent(),this.log("invoke error",{id:s,name:e,args:r,payload:n,error:u}),u;case 5:return[2]}}))}))},e.prototype.addInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)||(n=[]),n.push({handler:t,context:r}),this.invokeHandlers.set(e,n)},e.prototype.removeInvokeHandler=function(e,t,r){var n=this.invokeHandlers.get(e);Array.isArray(n)&&this.invokeHandlers.set(e,n.filter((function(e){var n;return e.handler!==t||(null===(n=e.context)||void 0===n?void 0:n.audience)!==(null==r?void 0:r.audience)})))},Object.defineProperty(e.prototype,"debug",{get:function(){return h.default.enabled(this._debugNamespace)},set:function(e){h.default.enable(e?this._debugNamespace:"-".concat(this._debugNamespace))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"debugNamespace",{get:function(){return this._debugNamespace},set:function(e){var t=this.debug;h.default.enable("-".concat(this._debugNamespace)),this.log=(0,h.default)(e),this._debugNamespace=e,t&&h.default.enable(e)},enumerable:!1,configurable:!0}),e}();function y(e,t){var r=null==e?void 0:e.audience,n=null==t?void 0:t.audience;return r===n||"*"===r||"*"===n}t.default=m,function(e){e[e.InvokeRequest=0]="InvokeRequest",e[e.InvokeResponse=1]="InvokeResponse"}(g=t.ContextType||(t.ContextType={}))},86:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.structuredClone=void 0;var o=n(r(675)),i=r(928);function a(e,t){try{return e instanceof t}catch(e){return!1}}t.structuredClone=function e(t,r){if(void 0===r&&(r={}),"string"==typeof t||"number"==typeof t||"boolean"==typeof t||null==t||t instanceof Date||t instanceof RegExp||t instanceof Boolean||t instanceof String||t instanceof i.OfficeSDKMessageEvent)return t;try{for(var n=0,s=[window.ArrayBuffer,window.Map,window.Set,window.DataView,window.File,window.FileList,window.Blob,window.ImageBitmap,window.ImageData];n<s.length;n++)if(a(t,s[n]))return t}catch(e){}if((0,o.default)(t)){var c=t,u={};for(var l in c)!0===Object.prototype.hasOwnProperty.call(c,l)&&(u[l]=e(c[l],r));return u}if(Array.isArray(t))return t.map((function(t){return e(t,r)}));if(t instanceof Error)return t.message;try{if(t instanceof Object.getPrototypeOf(Uint8Array))return t}catch(e){}if("function"==typeof r.replacer){var d=Object.assign({},r);return d.replacer=void 0,e(r.replacer(t),d)}throw new Error("".concat(String(t)," could not be cloned"))}},131:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.uuid=void 0,t.uuid=function(){for(var e,t=[],r=(null!==(e=window.crypto)&&void 0!==e?e:window.msCrypto).getRandomValues(new Uint8Array(20)),n=0;n<r.length;n++)t.push(r[n].toString(16).padStart(2,"0"));for(var o=0,i=[4,7,10,13];o<i.length;o++)t[i[o]]="-";return t.join("")}},499:(e,t,r)=>{"use strict";r.r(t),r.d(t,{add:()=>d,getSize:()=>p,removeAll:()=>h,runAll:()=>f});var n=r(643),o=r.n(n);const i={add:function(e){if("function"==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope);else{if("function"!=typeof window.addEventListener)return;window.addEventListener("beforeunload",(function(){e()}),!0),window.addEventListener("unload",(function(){e()}),!0)}}};var a=r(199),s=r.n(a),c=o()?s():i,u=new Set,l=!1;function d(e){if(l||(l=!0,c.add(f)),"function"!=typeof e)throw new Error("Listener is no function");return u.add(e),{remove:function(){return u.delete(e)},run:function(){return u.delete(e),e()}}}function f(){var e=[];return u.forEach((function(t){e.push(t()),u.delete(t)})),Promise.all(e)}function h(){u.clear()}function p(){return u.size}},199:()=>{},675:(e,t,r)=>{"use strict";function n(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}r.r(t),r.d(t,{default:()=>n})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(607)})(),e.exports=t()},5606:e=>{var t,r,n=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var s,c=[],u=!1,l=-1;function d(){u&&s&&(u=!1,s.length?c=s.concat(c):l=-1,c.length&&f())}function f(){if(!u){var e=a(d);u=!0;for(var t=c.length;t;){for(s=c,c=[];++l<t;)s&&s[l].run();l=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function p(){}n.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new h(e,t)),1!==c.length||u||a(f)},h.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=p,n.addListener=p,n.once=p,n.off=p,n.removeListener=p,n.removeAllListeners=p,n.emit=p,n.prependListener=p,n.prependOnceListener=p,n.listeners=function(e){return[]},n.binding=function(e){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(e){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},6532:(e,t,r)=>{"use strict";var n,o=r(5606);(n=void 0!==o&&"[object process]"==={}.toString.call(o)||"undefined"!=typeof navigator&&"ReactNative"===navigator.product?r.g:self).Proxy||(n.Proxy=r(7780)(),n.Proxy.revocable=n.Proxy.revocable)},7780:e=>{e.exports=function(){let e,t=null;function r(e){return!!e&&("object"==typeof e||"function"==typeof e)}function n(e){if(null!==e&&!r(e))throw new TypeError("Object prototype may only be an Object or null: "+e)}const o=Object,i=Boolean(o.create)||!({__proto__:null}instanceof o),a=o.create||(i?function(e){return n(e),{__proto__:e}}:function(e){if(n(e),null===e)throw new SyntaxError("Native Object.create is required to create objects with null prototype");var t=function(){};return t.prototype=e,new t}),s=function(){return null},c=o.getPrototypeOf||([].__proto__===Array.prototype?function(e){const t=e.__proto__;return r(t)?t:null}:s);return e=function(u,l){if(void 0===(this&&this instanceof e?this.constructor:void 0))throw new TypeError("Constructor Proxy requires 'new'");if(!r(u)||!r(l))throw new TypeError("Cannot create proxy with a non-object as target or handler");let d=function(){};t=function(){u=null,d=function(e){throw new TypeError(`Cannot perform '${e}' on a proxy that has been revoked`)}},setTimeout((function(){t=null}),0);const f=l;l={get:null,set:null,apply:null,construct:null};for(let e in f){if(!(e in l))throw new TypeError(`Proxy polyfill does not support trap '${e}'`);l[e]=f[e]}"function"==typeof f&&(l.apply=f.apply.bind(f));const h=c(u);let p,v=!1,g=!1;"function"==typeof u?(p=function(){const e=this&&this.constructor===p,t=Array.prototype.slice.call(arguments);return d(e?"construct":"apply"),e&&l.construct?l.construct.call(this,u,t):!e&&l.apply?l.apply(u,this,t):e?(t.unshift(u),new(u.bind.apply(u,t))):u.apply(this,t)},v=!0):u instanceof Array?(p=[],g=!0):p=i||null!==h?a(h):{};const m=l.get?function(e){return d("get"),l.get(this,e,p)}:function(e){return d("get"),this[e]},y=l.set?function(e,t){d("set"),l.set(this,e,t,p)}:function(e,t){d("set"),this[e]=t},b=o.getOwnPropertyNames(u),w={};b.forEach((function(e){if((v||g)&&e in p)return;const t=o.getOwnPropertyDescriptor(u,e),r={enumerable:Boolean(t.enumerable),get:m.bind(u,e),set:y.bind(u,e)};o.defineProperty(p,e,r),w[e]=!0}));let E=!0;if(v||g){const e=o.setPrototypeOf||([].__proto__===Array.prototype?function(e,t){return n(t),e.__proto__=t,e}:s);h&&e(p,h)||(E=!1)}if(l.get||!E)for(let e in u)w[e]||o.defineProperty(p,e,{get:m.bind(u,e)});return o.seal(u),o.seal(p),p},e.revocable=function(r,n){return{proxy:new e(r,n),revoke:t}},e}},1504:e=>{function t(){}t.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this;function o(){n.off(e,o),t.apply(r,arguments)}return o._=t,this.on(e,o,r)},emit:function(e){for(var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,o=r.length;n<o;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],o=[];if(n&&t)for(var i=0,a=n.length;i<a;i++)n[i].fn!==t&&n[i].fn._!==t&&o.push(n[i]);return o.length?r[e]=o:delete r[e],this}},e.exports=t,e.exports.TinyEmitter=t},2694:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.buildRootFacadeState=void 0;var i=r(4057);function a(e,t){return t?e.createValueObjectFacade("selection.range",t,{start:t.start,end:t.end,isCaret:t.start===t.end}):null}function s(e,t){var r=this;return e.createValueObjectFacade("tables.item",t,{tableId:t.tableId,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getCell",[t,i,a])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.cell",r,{tableId:r.tableId,row:r.row,column:r.column})]:[2,null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.item.getRange",[t,i])];case 1:return(r=n.sent())?[2,e.createValueObjectFacade("tables.range",r,{tableId:r.tableId,selection:r.selection})]:[2,null]}}))}))}})}function c(e,t){return t?e.createValueObjectFacade("sheet.range",t,t):null}function u(e,t){return t?e.createValueObjectFacade("sheet.cell",t,t):null}function l(e,t){var r=this;return e.createValueObjectFacade("sheet.worksheet",t,{id:t.id,name:t.name,getSelections:function(){return n(r,void 0,void 0,(function(){var r,i;return o(this,(function(a){switch(a.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getSelections",[t])];case 1:return r=a.sent(),[2,null!==(i=null==r?void 0:r.map((function(t){return function(e,t){var r=this;return e.createValueObjectFacade("sheet.selection",t,{id:t.selectionId,getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.selection.getRange",void 0===i?[t]:[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},setRange:function(i){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("sheet.selection.setRange",[t,i])];case 1:return r.sent(),[2]}}))}))}})}(e,t)})))&&void 0!==i?i:null]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getRange",[t,i])];case 1:return r=n.sent(),[2,c(e,r)]}}))}))},getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getCell",[t,i,a])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))},getActiveCell:function(){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("sheet.worksheet.getActiveCell",[t])];case 1:return r=n.sent(),[2,u(e,r)]}}))}))}})}function d(e,t){return t?e.createValueObjectFacade("selection.textRange",t,{start:t.start,end:t.end}):null}function f(e,t){if(!t)return null;var r={id:t.shapeId,name:t.name,type:t.type,textContent:t.textContent};return e.createValueObjectFacade("slides.slide.shape",t,r)}function h(e,t){return t?e.createValueObjectFacade("slides.slide.table.cell",t,{}):null}function p(e,t){return t?e.createValueObjectFacade("slides.slide.table.range",t,{}):null}function v(e,t){var r=this;return e.createValueObjectFacade("slides.slide.table",t,{id:t.id,rowCount:t.rowCount,columnCount:t.columnCount,getCell:function(i,a){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.table.getCell",[t,i,a])];case 1:return r=n.sent(),[2,h(e,r)]}}))}))},getRange:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.table.getRange",[t,i])];case 1:return r=n.sent(),[2,p(e,r)]}}))}))}})}function g(e,t){var r=this;return e.createValueObjectFacade("slides.slide",t,{id:t.slideId,getShapes:function(){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.slide.getShapes",[t])];case 1:return[2,r.sent().map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]}}))}))},getTables:function(){return n(r,void 0,void 0,(function(){return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.slide.getTables",[t])];case 1:return[2,r.sent().map((function(t){return v(e,t)}))]}}))}))},insertShape:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertShape",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation shape not found");return[2,n]}}))}))},insertTextBox:function(i){return n(r,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertTextBox",[t,i])];case 1:if(r=o.sent(),!(n=f(e,r)))throw new Error("presentation text shape not found");return[2,n]}}))}))},insertTable:function(i){return n(r,void 0,void 0,(function(){var r;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.slide.insertTable",[t,i])];case 1:return r=n.sent(),[2,v(e,r)]}}))}))}})}function m(e){var t=this;return{start:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start","number"==typeof r?[r]:[])];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))},startFromCurrent:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startFromCurrent")];case 1:return t.sent(),[2]}}))}))},startRemoteLive:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startRemoteLive")];case 1:return t.sent(),[2]}}))}))},startSpeakerView:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.startSpeakerView")];case 1:return t.sent(),[2]}}))}))},addChangeListener:function(t){return e.registerEditorFacadeListener("presentation.addChangeListener",t)}}}function y(e){var t=this;return{start:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.start")];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("presentation.quit")];case 1:return t.sent(),[2]}}))}))}}}function b(e){var t=this;return{start:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("startDemonstration")];case 1:return t.sent(),[2]}}))}))},quit:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("endDemonstration")];case 1:return t.sent(),[2]}}))}))}}}t.buildRootFacadeState=function(e){var t=this,r={addChangedListener:function(t){return e.listenEditorEvent("titleChange",t)},setTitle:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("title.setTitle",[r])];case 1:return t.sent(),[2]}}))}))}},c={show:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.show",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))},hide:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("comments.hide",void 0===r?[]:[r])];case 1:return t.sent(),[2]}}))}))}},u={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("history.hide")];case 1:return t.sent(),[2]}}))}))}},h={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("discussion.hide")];case 1:return t.sent(),[2]}}))}))}},p={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("collaborator.hide")];case 1:return t.sent(),[2]}}))}))}},v={insert:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("insertExternalApp",[r,i])];case 1:return[2,t.sent()]}}))}))}},w={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.hide")];case 1:return t.sent(),[2]}}))}))},addRangeLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addRangeLock",[r])];case 1:return t.sent(),[2]}}))}))},addSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.addSheetLock",[r])];case 1:return t.sent(),[2]}}))}))},removeRangeLocksInRanges:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeRangeLocksInRanges",[r])];case 1:return t.sent(),[2]}}))}))},removeSheetLock:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("locks.removeSheetLock",[r])];case 1:return t.sent(),[2]}}))}))}},E={locateCellByGuid:function(r,i){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("mention.locateCellByGuid",[r,i])];case 1:return t.sent(),[2]}}))}))}},C={setContent:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("content.setContent",[r])];case 1:return t.sent(),[2]}}))}))}},S={show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.show")];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.hide")];case 1:return t.sent(),[2]}}))}))},createRevision:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("version.createRevision",[r])];case 1:return t.sent(),[2,void 0]}}))}))}},O=function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:t=e.registerEditorFacadeCallback(r),n.label=1;case 1:return n.trys.push([1,,3,4]),[4,e.invokeEditorFacade("batchChanges",[t])];case 2:return[2,n.sent()];case 3:return e.unregisterEditorFacadeCallback(t),[7];case 4:return[2]}}))}))},_=function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("print")];case 1:return t.sent(),[2]}}))}))},k=function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("export",[r])];case 1:return t.sent(),[2]}}))}))},P=e.createEditorFacadeModule("selection",{getRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,a(e,t)]}}))}))},getWholeRange:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("selection.getWholeRange")];case 1:return t=r.sent(),[2,a(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)}}),A=e.createEditorFacadeModule("tables",{getAll:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("tables.getAll")];case 1:return[2,t.sent().map((function(t){return s(e,t)}))]}}))}))},getOne:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("tables.getOne",[r])];case 1:return[2,(t=n.sent())?s(e,t):null]}}))}))}}),M=e.createEditorFacadeModule("workbook",{getWorksheets:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheets")];case 1:return[2,t.sent().map((function(t){return l(e,t)}))]}}))}))},getWorksheetById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("workbook.getWorksheetById",[r])];case 1:return[2,(t=n.sent())?l(e,t):null]}}))}))},getActiveWorksheet:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("workbook.getActiveWorksheet")];case 1:return t=r.sent(),[2,l(e,t)]}}))}))}}),T=e.createEditorFacadeModule("slides",{getCurrentSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.getCurrentSlide")];case 1:return t=r.sent(),[2,g(e,t)]}}))}))},getSlides:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSlides")];case 1:return[2,t.sent().map((function(t){return g(e,t)}))]}}))}))},getSlideById:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.getSlideById",[r])];case 1:return[2,(t=n.sent())?g(e,t):null]}}))}))},getSelectedSlides:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("slides.getSelectedSlides",void 0===r?[]:[r])];case 1:return[2,t.sent().map((function(t){return g(e,t)}))]}}))}))},addSlide:function(){return n(t,void 0,void 0,(function(){var t;return o(this,(function(r){switch(r.label){case 0:return[4,e.invokeEditorFacade("slides.addSlide")];case 1:return t=r.sent(),[2,g(e,t)]}}))}))},duplicateSlide:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("slides.duplicateSlide",[r])];case 1:return t=n.sent(),[2,g(e,t)]}}))}))}}),x=e.createEditorFacadeModule("selection",{getTextRange:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getTextRange",void 0===r?[]:[r])];case 1:return t=n.sent(),[2,d(e,t)]}}))}))},addRangeListener:function(t){return e.registerEditorFacadeListener("selection.addRangeListener",t)},getSelectedShapes:function(r){return n(t,void 0,void 0,(function(){var t;return o(this,(function(n){switch(n.label){case 0:return[4,e.invokeEditorFacade("selection.getSelectedShapes",void 0===r?[]:[r])];case 1:return(t=n.sent())?[2,t.map((function(t){return f(e,t)})).filter((function(e){return null!==e}))]:[2,null]}}))}))}}),R={addErrorListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addErrorListener",t)},addLoadedListener:function(t){return e.registerEditorFacadeListener("eventSubscription.addLoadedListener",t)}},L=e.createEditorFacadeModule("outline",{show:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!0])];case 1:return t.sent(),[2]}}))}))},hide:function(){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("outline.setOpen",[!1])];case 1:return t.sent(),[2]}}))}))}});switch(e.fileType){case i.FileType.Document:return{title:r,history:u,comments:c,discussion:h,collaborator:p,externalApp:v,version:S,presentation:y(e),selection:P,settings:e.createEditorFacadeModule("settings",{}),search:e.createEditorFacadeModule("search",{}),outline:L,sidebar:e.createEditorFacadeModule("sidebar",{}),tables:A,batchChanges:O,print:_};case i.FileType.Spreadsheet:return{history:u,comments:c,locks:w,mention:E,content:C,version:S,presentation:b(e),workbook:M,activeSheet:l(e,{active:!0}),charts:e.createEditorFacadeModule("charts",{}),selections:e.createEditorFacadeModule("selections",{}),batchChanges:O,print:_,export:k,setFocus:function(r){return n(t,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,e.invokeEditorFacade("setFocus",[r])];case 1:return t.sent(),[2]}}))}))}};case i.FileType.Presentation:return{history:u,comments:c,version:S,presentation:m(e),slides:T,selection:x,text:e.createEditorFacadeModule("text",{}),zoom:e.createEditorFacadeModule("zoom",{}),eventSubscription:R,batchChanges:O,print:_,export:k};default:return{}}}},3129:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.MentionTypes=t.PermissionLevel=t.SheetRangeType=t.EditorSaveStatus=void 0,(i=t.EditorSaveStatus||(t.EditorSaveStatus={}))[i.NoChange=0]="NoChange",i[i.Success=1]="Success",i[i.Fail=2]="Fail",(o=t.SheetRangeType||(t.SheetRangeType={})).Cells="cells",o.Rows="rows",o.Columns="columns",o.Sheet="sheet",(n=t.PermissionLevel||(t.PermissionLevel={}))[n.Editable=0]="Editable",n[n.ReadOnly=1]="ReadOnly",n[n.Private=2]="Private",(r=t.MentionTypes||(t.MentionTypes={})).Comment="comment",r.Mention="mention_at",r.DateMention="date_mention"},799:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},i=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},a=this&&this.__rest||function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r};Object.defineProperty(t,"__esModule",{value:!0}),t.subscribeHeaderBarsTitleChange=t.getHeaderBarsCommandRef=t.setHeaderBarsVisible=t.syncHeaderBarsVisible=t.applyHeaderBarsChanged=t.syncHeaderBarsCommands=t.ensureHeaderBarsTitleChangeSubscription=t.initHeaderBarsFacade=t.HEADER_BARS_CHANGED_EVENT=t.HEADER_BARS_METHOD=void 0;var s=r(4057);function c(e){return o(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(e.isTitleSubscribed())return[2];e.setTitleSubscribed(!0),e.onInternalTitleChange((function(t){var r;"string"==typeof t&&(null===(r=e.getTitleHandler())||void 0===r||r(t))})),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,e.subscribeEditorTitleChange()];case 2:return r.sent(),[3,4];case 3:throw t=r.sent(),e.setTitleSubscribed(!1),t;case 4:return[2]}}))}))}function u(e,t){var r=e.getCommandsMap();r.clear();for(var n=0,o=t;n<o.length;n++){var i=o[n];r.set(i.id,i)}}function l(e){return o(this,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.getVisible)];case 1:return r=n.sent(),e.setVisibleState(r.visible),[2,e.getVisibleState()]}}))}))}function d(e,r){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return e.setVisibleState(r),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setVisible,{visible:r})];case 1:return n.sent(),[2]}}))}))}function f(e,r){var o=e.getRefsMap(),i=o.get(r);if(i)return i;var a=e.getCommandsMap();a.has(r)||e.invokeHeaderBars(t.HEADER_BARS_METHOD.getCommand,{id:r}).then((function(e){e.command&&a.set(r,e.command)})).catch((function(t){e.emitHeaderBarsError("fetch headerBars command failed",t)}));var s={id:r,visible:!0,disabled:!1,active:!1,src:void 0,label:void 0,editable:void 0,onCommandClick:void 0,getState:function(){return a.get(r)}};return Object.defineProperties(s,{visible:{configurable:!0,enumerable:!0,get:function(){var e;return!1!==(null===(e=a.get(r))||void 0===e?void 0:e.visible)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{visible:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandVisible,{id:r,visible:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command visible failed",t)}))}},disabled:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.disabled)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{disabled:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandDisabled,{id:r,disabled:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command disabled failed",t)}))}},active:{configurable:!0,enumerable:!0,get:function(){var e;return!0===(null===(e=a.get(r))||void 0===e?void 0:e.active)},set:function(o){var i=a.get(r);i&&a.set(r,n(n({},i),{active:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandActive,{id:r,active:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command active failed",t)}))}},src:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.src},set:function(o){if("string"==typeof o){var i=a.get(r);i&&a.set(r,n(n({},i),{src:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandSrc,{id:r,src:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command src failed",t)}))}}},label:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.label},set:function(o){if("string"==typeof o&&"title"!==r&&"save-status"!==r){var i=a.get(r);i&&a.set(r,n(n({},i),{label:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandLabel,{id:r,label:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command label failed",t)}))}}},editable:{configurable:!0,enumerable:!0,get:function(){var e;return null===(e=a.get(r))||void 0===e?void 0:e.editable},set:function(o){if("title"===r){var i=a.get(r);i&&a.set(r,n(n({},i),{editable:o})),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandEditable,{id:r,editable:o}).catch((function(t){e.emitHeaderBarsError("set headerBars command editable failed",t)}))}else e.emitHeaderBarsError("headerBars command editable is only supported for title",new Error("headerBars command editable is only supported for title"))}},onCommandClick:{configurable:!0,enumerable:!0,get:function(){return e.getOverridesMap().get(r)},set:function(n){e.getOverridesMap().set(r,n),e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:r,enabled:"function"==typeof n}).catch((function(t){e.emitHeaderBarsError("set headerBars command callback failed",t)}))}}}),o.set(r,s),s}t.HEADER_BARS_METHOD={getVisible:"headerBars.getVisible",setVisible:"headerBars.setVisible",addCommand:"headerBars.addCommand",getCommand:"headerBars.getCommand",setCommandVisible:"headerBars.setCommandVisible",setCommandDisabled:"headerBars.setCommandDisabled",setCommandActive:"headerBars.setCommandActive",setCommandSrc:"headerBars.setCommandSrc",setCommandLabel:"headerBars.setCommandLabel",setCommandEditable:"headerBars.setCommandEditable",setCommandCallbackEnabled:"headerBars.setCommandCallbackEnabled",listViewCommands:"headerBars.listViewCommands",handleCommandClick:"headerBars.handleCommandClick"},t.HEADER_BARS_CHANGED_EVENT="headerBars:changed",t.initHeaderBarsFacade=function(e){var r=this,n={visible:!1,onTitleChange:void 0,getVisible:function(){return o(r,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,l(e)];case 1:return[2,t.sent()]}}))}))},setVisible:function(t){return o(r,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,d(e,t)];case 1:return r.sent(),[2]}}))}))},addCommand:function(n,s,c){return void 0===c&&(c="after"),o(r,void 0,void 0,(function(){var r,o,u,l;return i(this,(function(i){switch(i.label){case 0:return r=n.onClick,o=a(n,["onClick"]),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.addCommand,{command:o,posCommand:s,pos:c})];case 1:return u=i.sent(),l=r,u&&"function"==typeof l?(e.getOverridesMap().set(n.id,l),[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.setCommandCallbackEnabled,{id:n.id,enabled:!0})]):[3,3];case 2:i.sent(),i.label=3;case 3:return[2,u]}}))}))},getCommand:function(t){return f(e,t)},listViewCommands:function(){return o(r,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.invokeHeaderBars(t.HEADER_BARS_METHOD.listViewCommands)];case 1:return r=n.sent(),u(e,r),[2,r]}}))}))}};return Object.defineProperty(n,"visible",{configurable:!0,enumerable:!0,get:function(){return e.getVisibleState()},set:function(t){d(e,t).catch((function(t){e.emitHeaderBarsError("set headerBars.visible failed",t)}))}}),Object.defineProperty(n,"onTitleChange",{configurable:!0,enumerable:!0,get:function(){return e.getTitleHandler()},set:function(t){e.setTitleHandler(t),"function"==typeof t&&c(e).catch((function(t){e.emitHeaderBarsError("subscribe headerBars titleChange failed",t)}))}}),n},t.ensureHeaderBarsTitleChangeSubscription=c,t.syncHeaderBarsCommands=u,t.applyHeaderBarsChanged=function(e,t){var r=null==t?void 0:t.snapshot;r&&(e.setVisibleState(r.visible),u(e,r.commands))},t.syncHeaderBarsVisible=l,t.setHeaderBarsVisible=d,t.getHeaderBarsCommandRef=f,t.subscribeHeaderBarsTitleChange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,e(s.InvokeMethod.ListenEditorEvent,["titleChange"])];case 1:return t.sent(),[2]}}))}))}},4780:function(e,t,r){"use strict";var n,o=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},n(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}),i=this&&this.__assign||function(){return i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},i.apply(this,arguments)},a=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||a(t,e,r)},c=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},u=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}},l=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},d=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.EDITOR_RENDERED_EVENT=t.Event=t.OfficeSDK=t.MessageEvent=void 0,r(5781),r(2701),r(2288),r(7782),r(6532);var f=r(1436),h=r(4339),p=r(611),v=r(1504),g=d(r(5323)),m=r(4057),y=d(r(1582)),b=r(9368),w=r(2560),E=r(8213),C=r(799),S=r(2694);s(r(3129),t),s(r(799),t);var O=(0,g.default)(),_="smjssdk",k="smParams",P={en:"en-US",ja:"ja-JP"},A=["zh-CN","zh-TW","en-US","ja-JP","ko-KR","es-ES","pt-PT","de-DE","fr-FR","it-IT","ru-RU","id-ID","vi-VN","th-TH","ms-MY","ar-SA"],M="SDK_PRELOAD_ERROR",T="SDK_PRELOAD_CREDENTIALS_RESPONSE",x=new Set(["then","catch","finally","toJSON"]);function R(e){return x.has(e)}t.MessageEvent=m.InvokeMethod;var L=function(e){function r(t,r){var n,o,i,a=this;(a=e.call(this)||this)._fileType=m.FileType.Unknown,a.messageHandler=function(){},a.emitter=new v.TinyEmitter,a._readyState=m.ReadyState.Loading,a.collaborators=[],a.headerBarsVisible=!0,a.headerBarsCommands=new Map,a.headerBarsCommandOverrides=new Map,a.slashMenuCallbacks=new Map,a.editorFacadeCallbacks=new Map,a.headerBarsCommandRefs=new Map,a.headerBarsTitleChangeSubscribed=!1,a.disconnected=!1,a.preloadAckTimeoutMs=2e3,a.preloadDoneTimeoutMs=8e3,a.preloadReadyTimeoutMs=3e3,a.connectOptions=t,a.contentVersion=r,a.uuid=(0,p.v4)(),a.userUuid=t.userUuid,a.normalizedEmptyPage=(0,w.normalizeEmptyPageOptions)(t.emptyPage),(0,b.assert)(t.container,(function(e){return e instanceof HTMLElement}),'container is not an HTMLElement: "'.concat(String(t.container),'"')),(0,b.assert)(t.container,(function(e){return!["iframe","frame","embed","object"].includes(e.tagName.toLowerCase())}),'invalid container element type: "'.concat(t.container.tagName,'",DIV are recommended.'));try{a.endpoint=new URL(t.endpoint)}catch(e){throw new Error('invalid endpoint: "'.concat(t.endpoint,'"'))}a.sameOrigin=a.endpoint.origin===O.location.origin,!1===/\/sdk\/v2\/*/i.test(a.endpoint.pathname)&&console.warn('Generally the endpoint should end with "/sdk/v2", please make sure it is correct: "'.concat(a.endpoint.toString(),'"')),a.apiAdaptor=t.apiAdaptor?t.apiAdaptor.toString():"",a.apiAdaptorContext=t.apiAdaptorContext?JSON.stringify(t.apiAdaptorContext):"";try{a.startParams=new h.StartParams(null!==(i=null!==(n=t.smParams)&&void 0!==n?n:new URLSearchParams(null===(o=O.location)||void 0===o?void 0:o.search).get(k))&&void 0!==i?i:"")}catch(e){a.startParams=new h.StartParams}"boolean"==typeof t.debug&&(a.startParams.debug=a.connectOptions.debug),a.onViewportResize=function(){c(a,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.postMessage({event:m.SDKEvent.ViewportResize,payload:this.getContainerRect()})];case 1:return e.sent(),[2]}}))})).catch((function(e){a.emit("error",new Error("Failed to emit resize event: ".concat(String(e))))}))},a.initChannel(),a.preloadCredentialsMessageHandler=function(e){a.handlePreloadMessage(e)},a.headerBars=a.initHeaderBarsFacade();var s=t.messageExpires;return"number"!=typeof s&&(s=3e5),a.messageExpires=(0,b.assert)(s,(function(e){return!isNaN(e)&&e>0}),'"messageExpires" is not an valid number: "'.concat(s,'"')),a.handledMessageCache=new y.default(s),a.sameOrigin||(a.messageHandler=function(e){var t=e.data;(0,f.isOfficeSDKMessageEventLike)(t)&&a.shouldHandleMessage(t)&&(a.handledMessageCache.add(t.id),a.channel.distributeMessage(e.data).catch((function(e){a.emit("error",e)})))}),a}return o(r,e),Object.defineProperty(r.prototype,"fileType",{get:function(){return this._fileType},enumerable:!1,configurable:!0}),Object.defineProperty(r.prototype,"readyState",{get:function(){return this._readyState},enumerable:!1,configurable:!0}),r.prototype.shouldExposeSlashMenu=function(){if(!this.connectOptions.slashMenu)return!1;if(this.fileType===m.FileType.Document)return!0;if(this.fileType!==m.FileType.Unknown)return!1;var e=this.getSlashMenuTypeHint();return"string"!=typeof e||["doc","docs","document"].includes(e)},r.prototype.getSlashMenuTypeHint=function(){var e=this.startParams.type;if("string"==typeof e)return e.trim().toLowerCase()||void 0},r.prototype.createSerializedSlashMenu=function(){if(this.slashMenuCallbacks.clear(),this.shouldExposeSlashMenu()){var e=this.connectOptions.slashMenu;if(e&&Array.isArray(e.entries))return{entries:this.serializeSlashMenuItems(e.entries,["entries"])}}},r.prototype.serializeSlashMenuItems=function(e,t){var r=this;return e.map((function(e,n){var o=l(l([],t,!0),["".concat(n),e.name],!1);if(function(e){return"entry"===e.type}(e))return i(i({},e),{children:e.children?r.serializeSlashMenuItems(e.children,o):void 0});var a=r.registerSlashMenuCallback(o,e.callback),s={name:e.name,type:e.type,disabled:e.disabled,label:e.label,icon:e.icon};return a&&(s.callbackId=a),s}))},r.prototype.registerSlashMenuCallback=function(e,t){if("function"==typeof t){var r="slash-menu:".concat(e.join(":"));return this.slashMenuCallbacks.set(r,t),r}},r.prototype.getEditor=function(){return this.editor},r.prototype.setCredentials=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[e],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.setSignature=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{signature:e}],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.setToken=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.SetCredentials,[{token:e}],{audience:_})];case 1:return t.sent(),[2]}}))}))},r.prototype.getPerformanceEntries=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.RequestPerformanceEntries,[],{audience:_})];case 1:return[2,e.sent()]}}))}))},r.prototype.disconnect=function(){var e;this.disconnected=!0,this.pendingInitializationErrorHandler=void 0,this.pendingInitializationError=void 0,this.preloadCredentialsPromise=void 0,this.slashMenuCallbacks.clear(),this.editorFacadeCallbacks.clear(),(null===(e=this.element)||void 0===e?void 0:e.parentElement)instanceof HTMLElement&&this.element.parentElement.removeChild(this.element),window.removeEventListener("message",this.messageHandler),window.removeEventListener("message",this.preloadCredentialsMessageHandler),window.visualViewport?window.visualViewport.removeEventListener("resize",this.onViewportResize):window.removeEventListener("resize",this.onViewportResize)},r.prototype.init=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this._readyState!==m.ReadyState.Loading?[2]:(this._readyState=m.ReadyState.LoadingEditor,this.sameOrigin||window.addEventListener("message",this.messageHandler),this.connectOptions.type&&window.addEventListener("message",this.preloadCredentialsMessageHandler),e=this,[4,this.initIframe()]);case 1:return e.element=r.sent(),this.connectOptions.container.appendChild(this.element),[4,this.runPreloadHandshake()];case 2:return r.sent(),this.editor=this.initEditor(),[4,new Promise((function(e,r){var n=!1,o=function(i){var a=i.state,s=i.error,c=i.fileType;t._readyState=a,c&&t._fileType===m.FileType.Unknown&&(t._fileType=c),s?(n=!0,r("string"==typeof s?new Error(s):s)):a===m.ReadyState.Ready&&(n=!0,e()),n&&(t.off(j.ReadyState,o),t.pendingInitializationErrorHandler=void 0)};if(t.pendingInitializationErrorHandler=function(e){n=!0,t.off(j.ReadyState,o),t.pendingInitializationErrorHandler=void 0,r(e)},t.pendingInitializationError){var i=t.pendingInitializationError;return t.pendingInitializationError=void 0,void t.pendingInitializationErrorHandler(i)}t.on(j.ReadyState,o)}))];case 3:switch(r.sent(),this.fileType){case m.FileType.Document:this.document=this.editor;break;case m.FileType.DocumentPro:this.documentPro=this.editor;break;case m.FileType.Spreadsheet:this.spreadsheet=this.editor;break;case m.FileType.Table:this.table=this.editor;break;case m.FileType.Form:this.form=this.editor;break;case m.FileType.Flowchart:this.flowchart=this.editor}return this.installRootFacade(),window.removeEventListener("message",this.preloadCredentialsMessageHandler),[2]}}))}))},r.prototype.ready=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return this.readyState===m.ReadyState.Ready?[2]:[4,this.init()];case 1:return e.sent(),[2]}}))}))},r.prototype.initIframe=function(){var e;return c(this,void 0,void 0,(function(){var t,r,n,o,i;return u(this,(function(a){return t=this.connectOptions,(r=document.createElement("iframe")).style.border="none",r.style.overflow="hidden",r.style.width="100%",r.style.height="100%",r.style.display="block","allow"in r?r.allow=null!==(e=this.connectOptions.allowPolicy)&&void 0!==e?e:"fullscreen *;clipboard-read *;clipboard-write *;":r.allowFullscreen=!0,(n=this.endpoint).pathname="".concat(n.pathname,"/api/").concat((0,b.assert)(t.fileId,F,'"fileId" is missing or empty: '.concat(t.fileId)),"/preload").replace(/\/+/g,"/"),(o=t.params)&&Object.keys(o).forEach((function(e){n.searchParams.set(e,o[e])})),"string"==typeof t.deviceMode&&n.searchParams.set("deviceMode",t.deviceMode.trim()),n.searchParams.set(k,this.startParams.toString()),(t.showLoadingEffect||t.showLoading)&&(n.searchParams.set("loadingEffect","true"),t.loadingOptions&&n.searchParams.set("loadingOptions",JSON.stringify(t.loadingOptions))),"string"==typeof t.lang&&(i=function(e){var t,r=null!==(t=P[e])&&void 0!==t?t:e;if(A.includes(r))return r}(t.lang),i&&n.searchParams.set("lang",i)),n.searchParams.set("jsver",null!=="2.0.5-beta.13"?"2.0.5-beta.13":""),(0,b.assert)(t.token,F,'"token" is missing or empty: "'.concat(t.token,'"')),(0,b.assert)(t.signature,F,'"signature" is missing or empty: "'.concat(t.signature,'"')),n.searchParams.set("uuid",this.uuid),this.userUuid&&n.searchParams.set("userUuid",this.userUuid),r.src=n.toString(),[2,r]}))}))},r.prototype.handlePreloadMessage=function(e){var t,r;return c(this,void 0,void 0,(function(){var n,o,i,a,s,c;return u(this,(function(u){switch(u.label){case 0:if(this.disconnected)return[2];if(!(n=null===(t=this.element)||void 0===t?void 0:t.contentWindow)||e.source!==n)return[2];if(e.origin&&e.origin!==this.endpoint.origin)return[2];if(!(o=e.data)||"string"!=typeof o.type)return[2];if(o.type===M)return i=null===(r=e.data.error)||void 0===r?void 0:r.message,a=new Error(i||"iframe initialization failed"),this.pendingInitializationErrorHandler?this.pendingInitializationErrorHandler(a):this.pendingInitializationError=a,[2];if("SDK_PRELOAD_CREDENTIALS_REQUEST"!==o.type||"string"!=typeof o.requestId||0===o.requestId.length)return[2];u.label=1;case 1:return u.trys.push([1,3,,4]),[4,this.getPreloadCredentials()];case 2:return s=u.sent(),this.disconnected?[2]:(n.postMessage({type:T,requestId:o.requestId,ts:Date.now(),payload:s},e.origin||this.endpoint.origin),[3,4]);case 3:return c=u.sent(),n.postMessage({type:T,requestId:o.requestId,ts:Date.now(),error:{code:"CREDENTIALS_FAILED",message:c instanceof Error?c.message:String(c)}},e.origin||this.endpoint.origin),[3,4];case 4:return[2]}}))}))},r.prototype.getPreloadCredentials=function(){return c(this,void 0,void 0,(function(){var e,t=this;return u(this,(function(r){switch(r.label){case 0:return this.preloadCredentialsPromise?[4,this.preloadCredentialsPromise]:[3,2];case 1:return[2,r.sent()];case 2:e=c(t,void 0,void 0,(function(){var e,t,r,n;return u(this,(function(o){switch(o.label){case 0:return[4,null===(r=(t=this.connectOptions).getCredentials)||void 0===r?void 0:r.call(t)];case 1:if(!(e=null!==(n=o.sent())&&void 0!==n?n:{token:this.connectOptions.token,signature:this.connectOptions.signature})||"string"!=typeof e.token||0===e.token.length||"string"!=typeof e.signature||0===e.signature.length)throw new Error("invalid credentials returned by getCredentials");return[2,e]}}))})),this.preloadCredentialsPromise=e,r.label=3;case 3:return r.trys.push([3,,5,6]),[4,e];case 4:return[2,r.sent()];case 5:return this.preloadCredentialsPromise===e&&(this.preloadCredentialsPromise=void 0),[7];case 6:return[2]}}))}))},r.prototype.runPreloadHandshake=function(){return c(this,void 0,void 0,(function(){var e,t,r,n,o,i,a,s,c,l=this;return u(this,(function(u){switch(u.label){case 0:return e=this.connectOptions.token,t=this.connectOptions.signature,r=this.connectOptions.fileId,n=(0,p.v4)(),o=!1,i=!1,a=!1,s=null,c=null,[4,new Promise((function(u,d){var f=function(){s&&(clearTimeout(s),s=null),c&&(clearTimeout(c),c=null),window.removeEventListener("message",p)},h=function(){var o,i,a=(0,E.createPreloadInitPayload)({token:e,signature:t,fileGuid:r,mode:l.connectOptions.mode,type:l.connectOptions.type,contentVersion:l.contentVersion});null===(i=null===(o=l.element)||void 0===o?void 0:o.contentWindow)||void 0===i||i.postMessage({type:"SDK_PRELOAD_INIT",requestId:n,ts:Date.now(),payload:a},"*")},p=function(e){var t,r,p=e.data;if(p&&"object"==typeof p&&"string"==typeof p.type){if("SDK_PRELOAD_READY"===p.type&&!o)return o=!0,h(),void(s=setTimeout((function(){h(),c=setTimeout((function(){f(),d(new Error("preload init timeout"))}),l.preloadDoneTimeoutMs)}),l.preloadAckTimeoutMs));if(p.requestId===n)return"SDK_PRELOAD_ACK"===p.type?(i=!0,s&&(clearTimeout(s),s=null),void(c||(c=setTimeout((function(){f(),d(new Error("preload done timeout"))}),l.preloadDoneTimeoutMs)))):"SDK_PRELOAD_DONE"===p.type?(a=!0,f(),void u()):void(p.type===M&&(f(),d(new Error((null===(t=p.error)||void 0===t?void 0:t.message)||(null===(r=p.error)||void 0===r?void 0:r.code)||"preload init failed"))))}};window.addEventListener("message",p),setTimeout((function(){o||i||a||(f(),d(new Error("preload ready timeout")))}),l.preloadReadyTimeoutMs)}))];case 1:return u.sent(),[2]}}))}))},r.prototype.initChannel=function(){var e=this,r=this.channel=new f.OfficeSDKBroadcastChannel({channelId:this.startParams.channelId,debug:this.connectOptions.debug,autoStructuredClone:!0,debugNamespace:"SM_SDK_CHAN"});this.startParams.channelId||(this.startParams.channelId=r.id),r.on("error",(function(t){e.emit("error",t)})),r.on("messageError",(function(t){e.emit("error",t)})),this.sameOrigin||r.on("postMessage",(function(t){var r,n;null===(n=null===(r=e.element)||void 0===r?void 0:r.contentWindow)||void 0===n||n.postMessage(t,"*")}),{audience:"*"}),r.on("message",(function(r){var n=r.data;(null==n?void 0:n.event)===m.InvokeMethod.ReadyState?e.emit(j.ReadyState,n.payload):(null==n?void 0:n.event)===t.EDITOR_RENDERED_EVENT&&e.emit(j.EditorRendered,n.payload)}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.Error,(function(t){e.emit(j.Error,t)}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.SDKInit,(function(){return c(e,void 0,void 0,(function(){var e,t,r=this;return u(this,(function(n){return e={},Object.keys(this.connectOptions).forEach((function(t){if("slashMenu"!==t){var n=r.connectOptions[t];e[t]=n,"function"==typeof n&&(e["has".concat(t[0].toUpperCase()).concat(t.slice(1))]=!0)}})),(t=this.createSerializedSlashMenu())&&(e.slashMenu=t),e.apiAdaptor=this.apiAdaptor,e.apiAdaptorContext=this.apiAdaptorContext,e.emptyPage=this.normalizedEmptyPage,[2,i(i({},e),{uuid:this.uuid})]}))}))}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.DispatchSDKEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return t===C.HEADER_BARS_CHANGED_EVENT&&this.applyHeaderBarsChanged(r[0]),this.emit.apply(this,l([t],r,!1)),[2]}))}))}),{audience:_}),r.addInvokeHandler(C.HEADER_BARS_METHOD.handleCommandClick,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.headerBarsCommandOverrides.get(t))?[2,!1]:[4,e()];case 1:return r.sent(),[2,!0]}}))}))}),{audience:_}),r.addInvokeHandler("slashMenu.handleButtonClick",(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){switch(r.label){case 0:return"function"!=typeof(e=this.slashMenuCallbacks.get(t))?(console.error("[slashMenu] callback not found: ".concat(String(t))),[2,!1]):[4,Promise.resolve(e())];case 1:return r.sent(),[2,!0]}}))}))}),{audience:_}),r.addInvokeHandler("editorFacade.handleCallback",(function(t,r){return void 0===r&&(r=[]),c(e,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return"function"!=typeof(e=this.editorFacadeCallbacks.get(t))?(console.error("[editorFacade] callback not found: ".concat(String(t))),[2,void 0]):[4,Promise.resolve(e.apply(void 0,r))];case 1:return[2,n.sent()]}}))}))}),{audience:_}),r.addInvokeHandler(m.InvokeMethod.DispatchEditorEvent,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){return"collaboratorsChanged"===t&&this.updateCollaborators(r),function(e){return I.has(e)}(t)&&this.emit(t,r),this.emitter.emit(t,r),[2]}))}))}),{audience:_}),this.bindContainerMethodHandlers(),window.visualViewport?window.visualViewport.addEventListener("resize",this.onViewportResize):window.addEventListener("resize",this.onViewportResize)},r.prototype.bindContainerMethodHandlers=function(){var e=this,t=this.channel;t.addInvokeHandler(m.ContainerMethod.GenerateUrl,(function(t,r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.generateUrl)throw new Error('"'.concat(m.ContainerMethod.GenerateUrl,'" not found'));return[4,Promise.resolve(this.connectOptions.generateUrl(t,r,n))];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.HandleCustomTask,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.handleCustomTask)throw new Error('"'.concat(m.ContainerMethod.HandleCustomTask,'" not found'));return[4,Promise.resolve(this.connectOptions.handleCustomTask(t))];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.OpenLink,(function(t,r){return c(e,void 0,void 0,(function(){return u(this,(function(e){if("function"!=typeof this.connectOptions.openLink)throw new Error('"'.concat(m.ContainerMethod.OpenLink,'" not found'));return this.connectOptions.openLink(t,r),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetFileInfoFromUrl,(function(t){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:if("function"!=typeof this.connectOptions.getFileInfoFromUrl)throw new Error('"'.concat(m.ContainerMethod.GetFileInfoFromUrl,'" not a function'));return[4,this.connectOptions.getFileInfoFromUrl(t)];case 1:return[2,e.sent()]}}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.MentionClickHandlerForMobile,(function(t){return c(e,void 0,void 0,(function(){var e;return u(this,(function(r){if("function"!=typeof this.connectOptions.mentionClickHandlerForMobile)throw new Error('"'.concat(m.ContainerMethod.MentionClickHandlerForMobile,'" not found'));return"object"==typeof t&&null!=t&&(e=this.element.getBoundingClientRect(),t.x+=e.x,t.y+=e.y,t.isMention&&(t.mentionInfo.left+=e.x,t.mentionInfo.top+=e.y)),this.connectOptions.mentionClickHandlerForMobile(t),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetContainerRect,(function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){return[2,this.getContainerRect()]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.ShowToast,(function(t){return c(e,void 0,void 0,(function(){var e,r;return u(this,(function(n){return null===(r=(e=this.connectOptions).showToast)||void 0===r||r.call(e,t),[2]}))}))}),{audience:_}),t.addInvokeHandler(m.ContainerMethod.GetCredentials,(function(){return c(e,void 0,void 0,(function(){var e,t;return u(this,(function(r){switch(r.label){case 0:return[4,null===(t=(e=this.connectOptions).getCredentials)||void 0===t?void 0:t.call(e)];case 1:return[2,r.sent()]}}))}))}),{audience:_})},r.prototype.initHeaderBarsFacade=function(){var e=this;return(0,C.initHeaderBarsFacade)({getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(j.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:_})];case 1:return e.sent(),[2]}}))}))}})},r.prototype.ensureHeaderBarsTitleChangeSubscription=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,C.ensureHeaderBarsTitleChangeSubscription)(this.createHeaderBarsHost())];case 1:return e.sent(),[2]}}))}))},r.prototype.invokeHeaderBars=function(e,t){return c(this,void 0,void 0,(function(){var r;return u(this,(function(n){switch(n.label){case 0:return r=void 0===t?[]:[t],[4,this.channel.invoke(e,r,{audience:_})];case 1:return[2,n.sent()]}}))}))},r.prototype.syncHeaderBarsCommands=function(e){(0,C.syncHeaderBarsCommands)(this.createHeaderBarsHost(),e)},r.prototype.createHeaderBarsHost=function(){var e=this;return{getVisibleState:function(){return e.headerBarsVisible},setVisibleState:function(t){e.headerBarsVisible=t},getCommandsMap:function(){return e.headerBarsCommands},getOverridesMap:function(){return e.headerBarsCommandOverrides},getRefsMap:function(){return e.headerBarsCommandRefs},getTitleHandler:function(){return e.headerBarsTitleChangeHandler},setTitleHandler:function(t){e.headerBarsTitleChangeHandler=t},isTitleSubscribed:function(){return e.headerBarsTitleChangeSubscribed},setTitleSubscribed:function(t){e.headerBarsTitleChangeSubscribed=t},invokeHeaderBars:this.invokeHeaderBars.bind(this),emitHeaderBarsError:function(t,r){e.emit(j.Error,r instanceof Error?r:new Error("".concat(t,": ").concat(String(r))))},onInternalTitleChange:function(t){e.emitter.on("titleChange",t)},subscribeEditorTitleChange:function(){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,["titleChange"],{audience:_})];case 1:return e.sent(),[2]}}))}))}}},r.prototype.applyHeaderBarsChanged=function(e){(0,C.applyHeaderBarsChanged)(this.createHeaderBarsHost(),e)},r.prototype.syncHeaderBarsVisible=function(){return c(this,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return[4,(0,C.syncHeaderBarsVisible)(this.createHeaderBarsHost())];case 1:return[2,e.sent()]}}))}))},r.prototype.setHeaderBarsVisible=function(e){return c(this,void 0,void 0,(function(){return u(this,(function(t){switch(t.label){case 0:return[4,(0,C.setHeaderBarsVisible)(this.createHeaderBarsHost(),e)];case 1:return t.sent(),[2]}}))}))},r.prototype.getHeaderBarsCommandRef=function(e){return(0,C.getHeaderBarsCommandRef)(this.createHeaderBarsHost(),e)},r.prototype.registerEditorFacadeCallback=function(e){var t="editor-facade:".concat((0,p.v4)());return this.editorFacadeCallbacks.set(t,e),t},r.prototype.unregisterEditorFacadeCallback=function(e){this.editorFacadeCallbacks.delete(e)},r.prototype.createEditorFacadeModule=function(e,t){var r=this;return new Proxy(t,{get:function(t,n){if("string"==typeof n&&!R(n))return Object.prototype.hasOwnProperty.call(t,n)?t[n]:function(){for(var t=[],o=0;o<arguments.length;o++)t[o]=arguments[o];return c(r,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(n),t)];case 1:return[2,r.sent()]}}))}))}}})},r.prototype.createValueObjectFacade=function(e,t,r){var n=this;return new Proxy(r,{get:function(r,o){if("string"==typeof o&&!R(o))return Object.prototype.hasOwnProperty.call(r,o)?r[o]:function(){for(var r=[],i=0;i<arguments.length;i++)r[i]=arguments[i];return c(n,void 0,void 0,(function(){return u(this,(function(n){switch(n.label){case 0:return[4,this.invokeEditorFacade("".concat(e,".").concat(o),l([t],r,!0))];case 1:return[2,n.sent()]}}))}))}}})},r.prototype.registerEditorFacadeListener=function(e,t){var r=this,n=this.registerEditorFacadeCallback((function(e){return c(r,void 0,void 0,(function(){return u(this,(function(r){return[2,t(e)]}))}))}));return this.invokeEditorFacade(e,[n]).catch((function(e){r.emit(j.Error,e instanceof Error?e:new Error("register editor facade listener failed: ".concat(String(e))))})),function(){r.unregisterEditorFacadeCallback(n)}},r.prototype.installRootFacade=function(){this.clearRootFacade(),Object.assign(this,(0,S.buildRootFacadeState)({fileType:this.fileType,invokeEditorFacade:this.invokeEditorFacade.bind(this),listenEditorEvent:this.listenEditorEvent.bind(this),createEditorFacadeModule:this.createEditorFacadeModule.bind(this),createValueObjectFacade:this.createValueObjectFacade.bind(this),registerEditorFacadeListener:this.registerEditorFacadeListener.bind(this),registerEditorFacadeCallback:this.registerEditorFacadeCallback.bind(this),unregisterEditorFacadeCallback:this.unregisterEditorFacadeCallback.bind(this)}))},r.prototype.clearRootFacade=function(){this.title=void 0,this.history=void 0,this.comments=void 0,this.locks=void 0,this.mention=void 0,this.content=void 0,this.version=void 0,this.presentation=void 0,this.selection=void 0,this.search=void 0,this.outline=void 0,this.sidebar=void 0,this.tables=void 0,this.settings=void 0,this.workbook=void 0,this.activeSheet=void 0,this.charts=void 0,this.selections=void 0,this.slides=void 0,this.text=void 0,this.zoom=void 0,this.eventSubscription=void 0,this.batchChanges=void 0,this.export=void 0,this.print=void 0,this.setFocus=void 0},r.prototype.invokeEditorFacade=function(e,t){return void 0===t&&(t=[]),c(this,void 0,void 0,(function(){return u(this,(function(r){switch(r.label){case 0:return[4,this.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[e,t],{audience:_})];case 1:return[2,r.sent()]}}))}))},r.prototype.listenEditorEvent=function(e,t){var r=this;return this.emitter.on(e,t),this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[e],{audience:_}).catch((function(e){r.emit(j.Error,e instanceof Error?e:new Error("listen editor event failed: ".concat(String(e))))})),function(){r.emitter.off(e,t)}},r.prototype.initEditor=function(){var e=this,t=function(e){return"saveStatusDidChange"===e?"saveStatusChanged":e},r={on:function(r,n){return c(e,void 0,void 0,(function(){return u(this,(function(e){switch(e.label){case 0:return r=t(r),this.emitter.on(r,n),[4,this.channel.invoke(m.InvokeMethod.ListenEditorEvent,[r],{audience:_})];case 1:return e.sent(),[2]}}))}))},off:function(r,n){r=t(r),e.emitter.off(r,n)},getCollaborators:function(){return l([],e.collaborators,!0)}},n=function(t){return void 0===t&&(t=[]),new Proxy((function(){}),{get:function(e,o){if("string"!=typeof o||!R(o))return 0===t.length&&Object.prototype.hasOwnProperty.call(r,o)?r[o]:"string"==typeof o&&["call","apply","bind"].includes(o)?e[o]:"string"==typeof o?n(l(l([],t,!0),[o],!1)):void 0},apply:function(r,n,o){if(t.length>0)return e.channel.invoke(m.InvokeMethod.InvokeEditorMethod,[t.join("."),o],{audience:_})}})};return n()},r.prototype.shouldHandleMessage=function(e){return!(e.channelId!==this.channel.id||e.time+this.messageExpires<Date.now()||this.handledMessageCache.has(e.context.messageId))},r.prototype.getContainerRect=function(){var e,t=this.element.getBoundingClientRect(),r={viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,top:t.top,left:t.left,bottom:t.bottom,right:t.right,scrollTop:null===(e=document.scrollingElement)||void 0===e?void 0:e.scrollTop,visualViewport:{}};return window.visualViewport&&(r.visualViewport={width:window.visualViewport.width,height:window.visualViewport.height,offsetLeft:window.visualViewport.offsetLeft,offsetTop:window.visualViewport.offsetTop,pageLeft:window.visualViewport.pageLeft,pageTop:window.visualViewport.pageTop,scale:window.visualViewport.scale}),r},r.prototype.updateCollaborators=function(e){if(e&&"object"==typeof e&&Array.isArray(e.collaborators)){var t=e;this.collaborators=l([],t.collaborators,!0)}},r}(v.TinyEmitter);function F(e){return"string"==typeof e&&e.trim().length>0}t.OfficeSDK=L;var j,I=new Set(["emptyPageShown","emptyPageAction","emptyPageHidden"]);!function(e){e.SDKInit="SDKInit",e.Error="error",e.ReadyState="readyState",e.EditorRendered="editorRendered",e.EditorEvent="editorEvent"}(j=t.Event||(t.Event={})),t.EDITOR_RENDERED_EVENT="editorRendered"},9368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assert=void 0,t.assert=function(e,t,r){if(t(e))return e;throw new Error(r)}},5098:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,i){function a(e){try{c(n.next(e))}catch(e){i(e)}}function s(e){try{c(n.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(s){return function(c){return function(s){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(r=1,n&&(o=2&s[0]?n.return:s[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,s[1])).done)return o;switch(n=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,n=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],n=0}finally{r=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,c])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.connectV2=t.connect=t.validateConnectV2Options=t.isConnectV2Mode=t.isConnectV2FileType=t.CONNECT_V2_FILE_TYPES=void 0;var i=r(4780),a=r(3264),s=r(3264);function c(e,t){return n(this,void 0,void 0,(function(){var r,n;return o(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,(r=new i.OfficeSDK(e,t)).init()];case 1:return o.sent(),[2,r];case 2:throw n=o.sent(),e.type&&(null==r||r.disconnect()),console.log("Failed to init OfficeSDK",{error:n,options:e}),n;case 3:return[2]}}))}))}Object.defineProperty(t,"CONNECT_V2_FILE_TYPES",{enumerable:!0,get:function(){return s.CONNECT_V2_FILE_TYPES}}),Object.defineProperty(t,"isConnectV2FileType",{enumerable:!0,get:function(){return s.isConnectV2FileType}}),Object.defineProperty(t,"isConnectV2Mode",{enumerable:!0,get:function(){return s.isConnectV2Mode}}),Object.defineProperty(t,"validateConnectV2Options",{enumerable:!0,get:function(){return s.validateConnectV2Options}}),t.connect=function(e){return n(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return[4,c(e)];case 1:return[2,t.sent()]}}))}))},t.connectV2=function(e){return n(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return(0,a.validateConnectV2Options)(e),[4,c(e,"v2")];case 1:return[2,t.sent()]}}))}))}},8156:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t},a=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.START_PARAMS_FIELD=t.Flowchart=t.Form=t.Table=t.Presentation=t.Spreadsheet=t.Document=t.DocumentPro=t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0;var s=i(r(1810));t.DocumentPro=s;var c=i(r(9105));t.Document=c;var u=i(r(8724));t.Spreadsheet=u;var l=i(r(1260));t.Presentation=l;var d=i(r(7642));t.Table=d;var f=i(r(6954));t.Form=f;var h=i(r(4054));t.Flowchart=h,a(r(4057),t),a(r(5098),t),a(r(4780),t);var p=r(2560);Object.defineProperty(t,"ALL_EMPTY_PAGE_SCENES",{enumerable:!0,get:function(){return p.ALL_EMPTY_PAGE_SCENES}}),Object.defineProperty(t,"normalizeEmptyPageOptions",{enumerable:!0,get:function(){return p.normalizeEmptyPageOptions}}),t.START_PARAMS_FIELD="smParams"},8213:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createPreloadInitPayload=void 0,t.createPreloadInitPayload=function(e){var t={token:e.token,signature:e.signature,fileGuid:e.fileGuid,mode:e.mode,type:e.type};return"v2"===e.contentVersion&&(t.contentVersion="v2"),t}},3264:(e,t)=>{"use strict";function r(e){return"string"==typeof e&&t.CONNECT_V2_FILE_TYPES.includes(e)}function n(e){return"edit"===e||"preview"===e}Object.defineProperty(t,"__esModule",{value:!0}),t.validateConnectV2Options=t.isConnectV2Mode=t.isConnectV2FileType=t.CONNECT_V2_FILE_TYPES=void 0,t.CONNECT_V2_FILE_TYPES=["file","document","documentPro","writer","spreadsheet","presentation","table","form"],t.isConnectV2FileType=r,t.isConnectV2Mode=n,t.validateConnectV2Options=function(e){if(!r(null==e?void 0:e.type))throw new Error('invalid connectV2 "type": '.concat(String(null==e?void 0:e.type)));if(!n(null==e?void 0:e.mode))throw new Error('invalid connectV2 "mode": '.concat(String(null==e?void 0:e.mode)))}},9105:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1810:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2560:function(e,t){"use strict";var r=this&&this.__spreadArray||function(e,t,r){if(r||2===arguments.length)for(var n,o=0,i=t.length;o<i;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))};function n(e){if(!Array.isArray(e))return r([],t.ALL_EMPTY_PAGE_SCENES,!0);for(var n=[],o=0,i=e;o<i.length;o++){var a=i[o];t.ALL_EMPTY_PAGE_SCENES.includes(a)&&n.push(a)}return 0===n.length?r([],t.ALL_EMPTY_PAGE_SCENES,!0):n}function o(e){return"show-immediately"===e?"show-immediately":"refresh-first"}function i(e){return"string"==typeof e&&e.length>0?e:void 0}function a(e){if(e&&"object"==typeof e){var t=i(e.label);if(t)return{label:t}}}function s(e){if(e&&"object"==typeof e){var t={},r=i(e.title);r&&(t.title=r);var n=i(e.description);n&&(t.description=n);var o=a(e.primary);o&&(t.primary=o);var s=a(e.secondary);if(s&&(t.secondary=s),void 0!==t.title||void 0!==t.description||void 0!==t.primary||void 0!==t.secondary)return t}}function c(e){if(!e||"object"!=typeof e)return{};for(var r={},n=0,o=t.ALL_EMPTY_PAGE_SCENES;n<o.length;n++){var i=o[n],a=s(e[i]);a&&(r[i]=a)}return r}Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeEmptyPageOptions=t.ALL_EMPTY_PAGE_SCENES=void 0,t.ALL_EMPTY_PAGE_SCENES=["file-open-failed","no-permission","network-error","token-expired"],t.normalizeEmptyPageOptions=function(e){return!1===e?{enabled:!1,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:!0===e||void 0===e?{enabled:!0,scenes:r([],t.ALL_EMPTY_PAGE_SCENES,!0),tokenExpiredStrategy:"refresh-first",overrides:{}}:{enabled:"boolean"!=typeof e.enabled||e.enabled,scenes:n(e.scenes),tokenExpiredStrategy:o(e.tokenExpiredStrategy),overrides:c(e.overrides)}}},4054:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},6954:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},1260:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},8724:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},7642:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},611:(e,t,r)=>{"use strict";var n;r.r(t),r.d(t,{NIL:()=>T,parse:()=>g,stringify:()=>l,v1:()=>v,v3:()=>_,v4:()=>k,v5:()=>M,validate:()=>s,version:()=>x});var o=new Uint8Array(16);function i(){if(!n&&!(n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return n(o)}const a=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,s=function(e){return"string"==typeof e&&a.test(e)};for(var c=[],u=0;u<256;++u)c.push((u+256).toString(16).substr(1));const l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=(c[e[t+0]]+c[e[t+1]]+c[e[t+2]]+c[e[t+3]]+"-"+c[e[t+4]]+c[e[t+5]]+"-"+c[e[t+6]]+c[e[t+7]]+"-"+c[e[t+8]]+c[e[t+9]]+"-"+c[e[t+10]]+c[e[t+11]]+c[e[t+12]]+c[e[t+13]]+c[e[t+14]]+c[e[t+15]]).toLowerCase();if(!s(r))throw TypeError("Stringified UUID is invalid");return r};var d,f,h=0,p=0;const v=function(e,t,r){var n=t&&r||0,o=t||new Array(16),a=(e=e||{}).node||d,s=void 0!==e.clockseq?e.clockseq:f;if(null==a||null==s){var c=e.random||(e.rng||i)();null==a&&(a=d=[1|c[0],c[1],c[2],c[3],c[4],c[5]]),null==s&&(s=f=16383&(c[6]<<8|c[7]))}var u=void 0!==e.msecs?e.msecs:Date.now(),v=void 0!==e.nsecs?e.nsecs:p+1,g=u-h+(v-p)/1e4;if(g<0&&void 0===e.clockseq&&(s=s+1&16383),(g<0||u>h)&&void 0===e.nsecs&&(v=0),v>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");h=u,p=v,f=s;var m=(1e4*(268435455&(u+=122192928e5))+v)%4294967296;o[n++]=m>>>24&255,o[n++]=m>>>16&255,o[n++]=m>>>8&255,o[n++]=255&m;var y=u/4294967296*1e4&268435455;o[n++]=y>>>8&255,o[n++]=255&y,o[n++]=y>>>24&15|16,o[n++]=y>>>16&255,o[n++]=s>>>8|128,o[n++]=255&s;for(var b=0;b<6;++b)o[n+b]=a[b];return t||l(o)},g=function(e){if(!s(e))throw TypeError("Invalid UUID");var t,r=new Uint8Array(16);return r[0]=(t=parseInt(e.slice(0,8),16))>>>24,r[1]=t>>>16&255,r[2]=t>>>8&255,r[3]=255&t,r[4]=(t=parseInt(e.slice(9,13),16))>>>8,r[5]=255&t,r[6]=(t=parseInt(e.slice(14,18),16))>>>8,r[7]=255&t,r[8]=(t=parseInt(e.slice(19,23),16))>>>8,r[9]=255&t,r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255,r[11]=t/4294967296&255,r[12]=t>>>24&255,r[13]=t>>>16&255,r[14]=t>>>8&255,r[15]=255&t,r};function m(e,t,r){function n(e,n,o,i){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var t=[],r=0;r<e.length;++r)t.push(e.charCodeAt(r));return t}(e)),"string"==typeof n&&(n=g(n)),16!==n.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var a=new Uint8Array(16+e.length);if(a.set(n),a.set(e,n.length),(a=r(a))[6]=15&a[6]|t,a[8]=63&a[8]|128,o){i=i||0;for(var s=0;s<16;++s)o[i+s]=a[s];return o}return l(a)}try{n.name=e}catch(e){}return n.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",n.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",n}function y(e){return 14+(e+64>>>9<<4)+1}function b(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function w(e,t,r,n,o,i){return b((a=b(b(t,e),b(n,i)))<<(s=o)|a>>>32-s,r);var a,s}function E(e,t,r,n,o,i,a){return w(t&r|~t&n,e,t,o,i,a)}function C(e,t,r,n,o,i,a){return w(t&n|r&~n,e,t,o,i,a)}function S(e,t,r,n,o,i,a){return w(t^r^n,e,t,o,i,a)}function O(e,t,r,n,o,i,a){return w(r^(t|~n),e,t,o,i,a)}const _=m("v3",48,(function(e){if("string"==typeof e){var t=unescape(encodeURIComponent(e));e=new Uint8Array(t.length);for(var r=0;r<t.length;++r)e[r]=t.charCodeAt(r)}return function(e){for(var t=[],r=32*e.length,n="0123456789abcdef",o=0;o<r;o+=8){var i=e[o>>5]>>>o%32&255,a=parseInt(n.charAt(i>>>4&15)+n.charAt(15&i),16);t.push(a)}return t}(function(e,t){e[t>>5]|=128<<t%32,e[y(t)-1]=t;for(var r=1732584193,n=-271733879,o=-1732584194,i=271733878,a=0;a<e.length;a+=16){var s=r,c=n,u=o,l=i;r=E(r,n,o,i,e[a],7,-680876936),i=E(i,r,n,o,e[a+1],12,-389564586),o=E(o,i,r,n,e[a+2],17,606105819),n=E(n,o,i,r,e[a+3],22,-1044525330),r=E(r,n,o,i,e[a+4],7,-176418897),i=E(i,r,n,o,e[a+5],12,1200080426),o=E(o,i,r,n,e[a+6],17,-1473231341),n=E(n,o,i,r,e[a+7],22,-45705983),r=E(r,n,o,i,e[a+8],7,1770035416),i=E(i,r,n,o,e[a+9],12,-1958414417),o=E(o,i,r,n,e[a+10],17,-42063),n=E(n,o,i,r,e[a+11],22,-1990404162),r=E(r,n,o,i,e[a+12],7,1804603682),i=E(i,r,n,o,e[a+13],12,-40341101),o=E(o,i,r,n,e[a+14],17,-1502002290),r=C(r,n=E(n,o,i,r,e[a+15],22,1236535329),o,i,e[a+1],5,-165796510),i=C(i,r,n,o,e[a+6],9,-1069501632),o=C(o,i,r,n,e[a+11],14,643717713),n=C(n,o,i,r,e[a],20,-373897302),r=C(r,n,o,i,e[a+5],5,-701558691),i=C(i,r,n,o,e[a+10],9,38016083),o=C(o,i,r,n,e[a+15],14,-660478335),n=C(n,o,i,r,e[a+4],20,-405537848),r=C(r,n,o,i,e[a+9],5,568446438),i=C(i,r,n,o,e[a+14],9,-1019803690),o=C(o,i,r,n,e[a+3],14,-187363961),n=C(n,o,i,r,e[a+8],20,1163531501),r=C(r,n,o,i,e[a+13],5,-1444681467),i=C(i,r,n,o,e[a+2],9,-51403784),o=C(o,i,r,n,e[a+7],14,1735328473),r=S(r,n=C(n,o,i,r,e[a+12],20,-1926607734),o,i,e[a+5],4,-378558),i=S(i,r,n,o,e[a+8],11,-2022574463),o=S(o,i,r,n,e[a+11],16,1839030562),n=S(n,o,i,r,e[a+14],23,-35309556),r=S(r,n,o,i,e[a+1],4,-1530992060),i=S(i,r,n,o,e[a+4],11,1272893353),o=S(o,i,r,n,e[a+7],16,-155497632),n=S(n,o,i,r,e[a+10],23,-1094730640),r=S(r,n,o,i,e[a+13],4,681279174),i=S(i,r,n,o,e[a],11,-358537222),o=S(o,i,r,n,e[a+3],16,-722521979),n=S(n,o,i,r,e[a+6],23,76029189),r=S(r,n,o,i,e[a+9],4,-640364487),i=S(i,r,n,o,e[a+12],11,-421815835),o=S(o,i,r,n,e[a+15],16,530742520),r=O(r,n=S(n,o,i,r,e[a+2],23,-995338651),o,i,e[a],6,-198630844),i=O(i,r,n,o,e[a+7],10,1126891415),o=O(o,i,r,n,e[a+14],15,-1416354905),n=O(n,o,i,r,e[a+5],21,-57434055),r=O(r,n,o,i,e[a+12],6,1700485571),i=O(i,r,n,o,e[a+3],10,-1894986606),o=O(o,i,r,n,e[a+10],15,-1051523),n=O(n,o,i,r,e[a+1],21,-2054922799),r=O(r,n,o,i,e[a+8],6,1873313359),i=O(i,r,n,o,e[a+15],10,-30611744),o=O(o,i,r,n,e[a+6],15,-1560198380),n=O(n,o,i,r,e[a+13],21,1309151649),r=O(r,n,o,i,e[a+4],6,-145523070),i=O(i,r,n,o,e[a+11],10,-1120210379),o=O(o,i,r,n,e[a+2],15,718787259),n=O(n,o,i,r,e[a+9],21,-343485551),r=b(r,s),n=b(n,c),o=b(o,u),i=b(i,l)}return[r,n,o,i]}(function(e){if(0===e.length)return[];for(var t=8*e.length,r=new Uint32Array(y(t)),n=0;n<t;n+=8)r[n>>5]|=(255&e[n/8])<<n%32;return r}(e),8*e.length))})),k=function(e,t,r){var n=(e=e||{}).random||(e.rng||i)();if(n[6]=15&n[6]|64,n[8]=63&n[8]|128,t){r=r||0;for(var o=0;o<16;++o)t[r+o]=n[o];return t}return l(n)};function P(e,t,r,n){switch(e){case 0:return t&r^~t&n;case 1:case 3:return t^r^n;case 2:return t&r^t&n^r&n}}function A(e,t){return e<<t|e>>>32-t}const M=m("v5",80,(function(e){var t=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var n=unescape(encodeURIComponent(e));e=[];for(var o=0;o<n.length;++o)e.push(n.charCodeAt(o))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var i=e.length/4+2,a=Math.ceil(i/16),s=new Array(a),c=0;c<a;++c){for(var u=new Uint32Array(16),l=0;l<16;++l)u[l]=e[64*c+4*l]<<24|e[64*c+4*l+1]<<16|e[64*c+4*l+2]<<8|e[64*c+4*l+3];s[c]=u}s[a-1][14]=8*(e.length-1)/Math.pow(2,32),s[a-1][14]=Math.floor(s[a-1][14]),s[a-1][15]=8*(e.length-1)&4294967295;for(var d=0;d<a;++d){for(var f=new Uint32Array(80),h=0;h<16;++h)f[h]=s[d][h];for(var p=16;p<80;++p)f[p]=A(f[p-3]^f[p-8]^f[p-14]^f[p-16],1);for(var v=r[0],g=r[1],m=r[2],y=r[3],b=r[4],w=0;w<80;++w){var E=Math.floor(w/20),C=A(v,5)+P(E,g,m,y)+b+t[E]+f[w]>>>0;b=y,y=m,m=A(g,30)>>>0,g=v,v=C}r[0]=r[0]+v>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+y>>>0,r[4]=r[4]+b>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,255&r[0],r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,255&r[1],r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,255&r[2],r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,255&r[3],r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,255&r[4]]})),T="00000000-0000-0000-0000-000000000000",x=function(e){if(!s(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)}},3836:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},3931:function(e,t){"use strict";var r,n,o=this&&this.__values||function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},i=this&&this.__read||function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a};Object.defineProperty(t,"__esModule",{value:!0}),t.convertFileType=t.FileTypeAlias=t.FileType=void 0,function(e){e.DocumentPro="documentPro",e.Document="document",e.Spreadsheet="spreadsheet",e.Presentation="presentation",e.Table="table",e.Form="form",e.Flowchart="flowchart",e.Mindmap="mindmap",e.Board="board",e.Unknown="unknown"}(n=t.FileType||(t.FileType={})),t.FileTypeAlias=((r={})[n.Document]="docs",r[n.DocumentPro]="docx",r[n.Spreadsheet]="sheets",r[n.Presentation]="presentation",r[n.Table]="table",r[n.Form]="form",r[n.Mindmap]="mindmap",r[n.Board]="board",r[n.Flowchart]="flowchart",r),t.convertFileType=function(e){var r,a,s,c;if("string"==typeof e){try{for(var u=o(Object.entries(n)),l=u.next();!l.done;l=u.next()){var d=i(l.value,2),f=d[0],h=d[1];if(f===e||h===e)return h}}catch(e){r={error:e}}finally{try{l&&!l.done&&(a=u.return)&&a.call(u)}finally{if(r)throw r.error}}try{for(var p=o(Object.entries(t.FileTypeAlias)),v=p.next();!v.done;v=p.next()){var g=i(v.value,2);if(f=g[0],(h=g[1])===e)return f}}catch(e){s={error:e}}finally{try{v&&!v.done&&(c=p.return)&&c.call(p)}finally{if(s)throw s.error}}}else switch(e){case-2:return n.Document;case-4:return n.Spreadsheet;case-6:return n.DocumentPro;case-7:return n.Mindmap;case-8:return n.Form;case-9:return n.Board;case-10:return n.Presentation;case-11:return n.Table;case-13:return n.Flowchart}return n.Unknown}},5313:(e,t)=>{"use strict";var r;Object.defineProperty(t,"__esModule",{value:!0}),t.ReadyState=t.isSDKEventMessage=t.SDKEvent=void 0,t.SDKEvent=Object.freeze({ViewportResize:"ViewportResize",ReadyState:"ReadyState"}),t.isSDKEventMessage=function(e){var r;return null!=e&&(r=e.event),"string"==typeof r&&r in t.SDKEvent},(r=t.ReadyState||(t.ReadyState={})).Loading="loading",r.LoadingEditor="loadingEditor",r.Ready="ready",r.Failed="failed",r.Disconnected="disconnected"},4057:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(3672),t),o(r(3836),t),o(r(3931),t),o(r(5313),t)},3672:(e,t)=>{"use strict";var r,n,o,i;Object.defineProperty(t,"__esModule",{value:!0}),t.UrlSharingType=t.SpreadsheetSharingFrom=t.ContainerMethod=t.InvokeMethod=void 0,(i=t.InvokeMethod||(t.InvokeMethod={})).SDKInit="SDKInit",i.Error="error",i.ReadyState="readyState",i.SetCredentials="setCredentials",i.InvokeContainerMethod="invokeContainerMethod",i.InvokeEditorMethod="invokeEditorMethod",i.DispatchSDKEvent="dispatchSDKEvent",i.DispatchEditorEvent="dispatchEditorEvent",i.ListenEditorEvent="listenEditorEvent",i.RequestPerformanceEntries="requestPerformanceEntries",(o=t.ContainerMethod||(t.ContainerMethod={})).GetContainerRect="getContainerRect",o.OpenLink="openLink",o.GenerateUrl="generateUrl",o.MentionClickHandlerForMobile="mentionClickHandlerForMobile",o.GetFileInfoFromUrl="getFileInfoFromUrl",o.ShowSignatureComponent="showSignatureComponent",o.ShowToast="showToast",o.HandleCustomTask="handleCustomTask",o.GetCredentials="getCredentials",(n=t.SpreadsheetSharingFrom||(t.SpreadsheetSharingFrom={})).copyRangeLink="copyRangeLink",n.copyViewportLink="copyViewportLink",n.copySheetLink="copySheetLink",n.importRange="importRange",n.preview="preview",(r=t.UrlSharingType||(t.UrlSharingType={})).Doc="doc",r.Docx="docx",r.Spreadsheet="sheet",r.Form="form",r.FormPreview="formPreview",r.FormFill="formFill",r.Presentation="presentation",r.Table="table",r.Flowchart="flowchart",r.Mindmap="mindmap",r.Board="board"},6877:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.StartParams=void 0;var o=n(r(4139)),i=n(r(1121)).default.createInstance(),a=function(){function e(t){if("string"==typeof t)return e.parse(t);if((0,o.default)(t))Object.assign(this,t);else if(t instanceof e)Object.assign(this,JSON.parse(JSON.stringify(t)));else if(Array.isArray(t))for(var r=0,n=t;r<n.length;r++){var i=n[r];"string"==typeof i?Object.assign(this,e.parse(i)):null!=i&&Object.assign(this,JSON.parse(JSON.stringify(i)))}null==this.fileGuid&&null!=this.guid&&(this.fileGuid=this.guid),null!=this.guid&&this.fileGuid!==this.guid&&(this.guid=this.fileGuid)}return e.parse=function(t){return new e(JSON.parse(i.decodeStr(t)))},e.prototype.toString=function(){return i.encodeStr(JSON.stringify(this))},e}();t.StartParams=a},4339:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(6877),t)},4139:e=>{"use strict";e.exports=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}},6343:(e,t,r)=>{"use strict";var n=r(6612);e.exports=n},1015:(e,t,r)=>{"use strict";var n=r(8418);e.exports=n},780:(e,t,r)=>{"use strict";var n=r(2473);r(7628),r(3799),e.exports=n},5448:(e,t,r)=>{"use strict";var n=r(2841);e.exports=n},3609:(e,t,r)=>{"use strict";r(4423);var n=r(7015);e.exports=n("Array","includes")},8473:(e,t,r)=>{"use strict";r(9085);var n=r(9167);e.exports=n.Object.assign},6398:(e,t,r)=>{"use strict";r(67),r(3792),r(6099),r(3362),r(6167),r(3518),r(1689),r(4628),r(9391),r(7764);var n=r(9167);e.exports=n.Promise},2288:(e,t,r)=>{"use strict";e.exports=r(5914)},7782:(e,t,r)=>{"use strict";e.exports=r(6008)},5781:(e,t,r)=>{"use strict";e.exports=r(911)},2701:(e,t,r)=>{"use strict";e.exports=r(8255)},5914:(e,t,r)=>{"use strict";var n=r(6343);e.exports=n},6008:(e,t,r)=>{"use strict";var n=r(1015);e.exports=n},911:(e,t,r)=>{"use strict";var n=r(780);r(9806),r(5874),r(7575),e.exports=n},8255:(e,t,r)=>{"use strict";var n=r(5448);e.exports=n},9306:(e,t,r)=>{"use strict";var n=r(4901),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a function")}},5548:(e,t,r)=>{"use strict";var n=r(3517),o=r(6823),i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not a constructor")}},3506:(e,t,r)=>{"use strict";var n=r(3925),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i("Can't set "+o(e)+" as a prototype")}},6469:(e,t,r)=>{"use strict";var n=r(8227),o=r(2360),i=r(4913).f,a=n("unscopables"),s=Array.prototype;void 0===s[a]&&i(s,a,{configurable:!0,value:o(null)}),e.exports=function(e){s[a][e]=!0}},679:(e,t,r)=>{"use strict";var n=r(1625),o=TypeError;e.exports=function(e,t){if(n(t,e))return e;throw new o("Incorrect invocation")}},8551:(e,t,r)=>{"use strict";var n=r(34),o=String,i=TypeError;e.exports=function(e){if(n(e))return e;throw new i(o(e)+" is not an object")}},7916:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8981),a=r(6319),s=r(4209),c=r(3517),u=r(6198),l=r(2278),d=r(81),f=r(851),h=Array;e.exports=function(e){var t=i(e),r=c(this),p=arguments.length,v=p>1?arguments[1]:void 0,g=void 0!==v;g&&(v=n(v,p>2?arguments[2]:void 0));var m,y,b,w,E,C,S=f(t),O=0;if(!S||this===h&&s(S))for(m=u(t),y=r?new this(m):h(m);m>O;O++)C=g?v(t[O],O):t[O],l(y,O,C);else for(y=r?new this:[],E=(w=d(t,S)).next;!(b=o(E,w)).done;O++)C=g?a(w,v,[b.value,O],!0):b.value,l(y,O,C);return y.length=O,y}},9617:(e,t,r)=>{"use strict";var n=r(5397),o=r(5610),i=r(6198),a=function(e){return function(t,r,a){var s=n(t),c=i(s);if(0===c)return!e&&-1;var u,l=o(a,c);if(e&&r!=r){for(;c>l;)if((u=s[l++])!=u)return!0}else for(;c>l;l++)if((e||l in s)&&s[l]===r)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},7680:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n([].slice)},4488:(e,t,r)=>{"use strict";var n=r(7680),o=Math.floor,i=function(e,t){var r=e.length;if(r<8)for(var a,s,c=1;c<r;){for(s=c,a=e[c];s&&t(e[s-1],a)>0;)e[s]=e[--s];s!==c++&&(e[s]=a)}else for(var u=o(r/2),l=i(n(e,0,u),t),d=i(n(e,u),t),f=l.length,h=d.length,p=0,v=0;p<f||v<h;)e[p+v]=p<f&&v<h?t(l[p],d[v])<=0?l[p++]:d[v++]:p<f?l[p++]:d[v++];return e};e.exports=i},6319:(e,t,r)=>{"use strict";var n=r(8551),o=r(9539);e.exports=function(e,t,r,i){try{return i?t(n(r)[0],r[1]):t(r)}catch(t){o(e,"throw",t)}}},4428:(e,t,r)=>{"use strict";var n=r(8227)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}e.exports=function(e,t){try{if(!t&&!o)return!1}catch(e){return!1}var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},2195:(e,t,r)=>{"use strict";var n=r(9504),o=n({}.toString),i=n("".slice);e.exports=function(e){return i(o(e),8,-1)}},6955:(e,t,r)=>{"use strict";var n=r(2140),o=r(4901),i=r(2195),a=r(8227)("toStringTag"),s=Object,c="Arguments"===i(function(){return arguments}());e.exports=n?i:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=s(e),a))?r:c?i(t):"Object"===(n=i(t))&&o(t.callee)?"Arguments":n}},7740:(e,t,r)=>{"use strict";var n=r(9297),o=r(5031),i=r(7347),a=r(4913);e.exports=function(e,t,r){for(var s=o(t),c=a.f,u=i.f,l=0;l<s.length;l++){var d=s[l];n(e,d)||r&&n(r,d)||c(e,d,u(t,d))}}},2211:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},2529:e=>{"use strict";e.exports=function(e,t){return{value:e,done:t}}},6699:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=n?function(e,t,r){return o.f(e,t,i(1,r))}:function(e,t,r){return e[t]=r,e}},6980:e=>{"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},2278:(e,t,r)=>{"use strict";var n=r(3724),o=r(4913),i=r(6980);e.exports=function(e,t,r){n?o.f(e,t,i(0,r)):e[t]=r}},2106:(e,t,r)=>{"use strict";var n=r(283),o=r(4913);e.exports=function(e,t,r){return r.get&&n(r.get,t,{getter:!0}),r.set&&n(r.set,t,{setter:!0}),o.f(e,t,r)}},6840:(e,t,r)=>{"use strict";var n=r(4901),o=r(4913),i=r(283),a=r(9433);e.exports=function(e,t,r,s){s||(s={});var c=s.enumerable,u=void 0!==s.name?s.name:t;if(n(r)&&i(r,u,s),s.global)c?e[t]=r:a(t,r);else{try{s.unsafe?e[t]&&(c=!0):delete e[t]}catch(e){}c?e[t]=r:o.f(e,t,{value:r,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return e}},6279:(e,t,r)=>{"use strict";var n=r(6840);e.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},9433:(e,t,r)=>{"use strict";var n=r(4576),o=Object.defineProperty;e.exports=function(e,t){try{o(n,e,{value:t,configurable:!0,writable:!0})}catch(r){n[e]=t}return t}},3724:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))},4055:(e,t,r)=>{"use strict";var n=r(4576),o=r(34),i=n.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},7400:e=>{"use strict";e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},9296:(e,t,r)=>{"use strict";var n=r(4055)("span").classList,o=n&&n.constructor&&n.constructor.prototype;e.exports=o===Object.prototype?void 0:o},7015:(e,t,r)=>{"use strict";var n=r(4576),o=r(9504);e.exports=function(e,t){return o(n[e].prototype[t])}},8727:e=>{"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},4265:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/ipad|iphone|ipod/i.test(n)&&"undefined"!=typeof Pebble},9544:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(n)},8574:(e,t,r)=>{"use strict";var n=r(4215);e.exports="NODE"===n},7860:(e,t,r)=>{"use strict";var n=r(2839);e.exports=/web0s(?!.*chrome)/i.test(n)},2839:(e,t,r)=>{"use strict";var n=r(4576).navigator,o=n&&n.userAgent;e.exports=o?String(o):""},9519:(e,t,r)=>{"use strict";var n,o,i=r(4576),a=r(2839),s=i.process,c=i.Deno,u=s&&s.versions||c&&c.version,l=u&&u.v8;l&&(o=(n=l.split("."))[0]>0&&n[0]<4?1:+(n[0]+n[1])),!o&&a&&(!(n=a.match(/Edge\/(\d+)/))||n[1]>=74)&&(n=a.match(/Chrome\/(\d+)/))&&(o=+n[1]),e.exports=o},4215:(e,t,r)=>{"use strict";var n=r(4576),o=r(2839),i=r(2195),a=function(e){return o.slice(0,e.length)===e};e.exports=a("Bun/")?"BUN":a("Cloudflare-Workers")?"CLOUDFLARE":a("Deno/")?"DENO":a("Node.js/")?"NODE":n.Bun&&"string"==typeof Bun.version?"BUN":n.Deno&&"object"==typeof Deno.version?"DENO":"process"===i(n.process)?"NODE":n.window&&n.document?"BROWSER":"REST"},6193:(e,t,r)=>{"use strict";var n=r(9504),o=Error,i=n("".replace),a=String(new o("zxcasd").stack),s=/\n\s*at [^:]*:[^\n]*/,c=s.test(a);e.exports=function(e,t){if(c&&"string"==typeof e&&!o.prepareStackTrace)for(;t--;)e=i(e,s,"");return e}},747:(e,t,r)=>{"use strict";var n=r(6699),o=r(6193),i=r(4659),a=Error.captureStackTrace;e.exports=function(e,t,r,s){i&&(a?a(e,t):n(e,"stack",o(r,s)))}},4659:(e,t,r)=>{"use strict";var n=r(9039),o=r(6980);e.exports=!n((function(){var e=new Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",o(1,7)),7!==e.stack)}))},6518:(e,t,r)=>{"use strict";var n=r(4576),o=r(7347).f,i=r(6699),a=r(6840),s=r(9433),c=r(7740),u=r(2796);e.exports=function(e,t){var r,l,d,f,h,p=e.target,v=e.global,g=e.stat;if(r=v?n:g?n[p]||s(p,{}):n[p]&&n[p].prototype)for(l in t){if(f=t[l],d=e.dontCallGetSet?(h=o(r,l))&&h.value:r[l],!u(v?l:p+(g?".":"#")+l,e.forced)&&void 0!==d){if(typeof f==typeof d)continue;c(f,d)}(e.sham||d&&d.sham)&&i(f,"sham",!0),a(r,l,f,e)}}},9039:e=>{"use strict";e.exports=function(e){try{return!!e()}catch(e){return!0}}},8745:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.apply,a=o.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(i):function(){return a.apply(i,arguments)})},6080:(e,t,r)=>{"use strict";var n=r(7476),o=r(9306),i=r(616),a=n(n.bind);e.exports=function(e,t){return o(e),void 0===t?e:i?a(e,t):function(){return e.apply(t,arguments)}}},616:(e,t,r)=>{"use strict";var n=r(9039);e.exports=!n((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},9565:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype.call;e.exports=n?o.bind(o):function(){return o.apply(o,arguments)}},350:(e,t,r)=>{"use strict";var n=r(3724),o=r(9297),i=Function.prototype,a=n&&Object.getOwnPropertyDescriptor,s=o(i,"name"),c=s&&"something"===function(){}.name,u=s&&(!n||n&&a(i,"name").configurable);e.exports={EXISTS:s,PROPER:c,CONFIGURABLE:u}},6706:(e,t,r)=>{"use strict";var n=r(9504),o=r(9306);e.exports=function(e,t,r){try{return n(o(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}}},7476:(e,t,r)=>{"use strict";var n=r(2195),o=r(9504);e.exports=function(e){if("Function"===n(e))return o(e)}},9504:(e,t,r)=>{"use strict";var n=r(616),o=Function.prototype,i=o.call,a=n&&o.bind.bind(i,i);e.exports=n?a:function(e){return function(){return i.apply(e,arguments)}}},7751:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901);e.exports=function(e,t){return arguments.length<2?(r=n[e],o(r)?r:void 0):n[e]&&n[e][t];var r}},851:(e,t,r)=>{"use strict";var n=r(6955),o=r(5966),i=r(4117),a=r(6269),s=r(8227)("iterator");e.exports=function(e){if(!i(e))return o(e,s)||o(e,"@@iterator")||a[n(e)]}},81:(e,t,r)=>{"use strict";var n=r(9565),o=r(9306),i=r(8551),a=r(6823),s=r(851),c=TypeError;e.exports=function(e,t){var r=arguments.length<2?s(e):t;if(o(r))return i(n(r,e));throw new c(a(e)+" is not iterable")}},5966:(e,t,r)=>{"use strict";var n=r(9306),o=r(4117);e.exports=function(e,t){var r=e[t];return o(r)?void 0:n(r)}},4576:function(e,t,r){"use strict";var n=function(e){return e&&e.Math===Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof r.g&&r.g)||n("object"==typeof this&&this)||function(){return this}()||Function("return this")()},9297:(e,t,r)=>{"use strict";var n=r(9504),o=r(8981),i=n({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return i(o(e),t)}},421:e=>{"use strict";e.exports={}},3138:e=>{"use strict";e.exports=function(e,t){try{1===arguments.length?console.error(e):console.error(e,t)}catch(e){}}},397:(e,t,r)=>{"use strict";var n=r(7751);e.exports=n("document","documentElement")},5917:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039),i=r(4055);e.exports=!n&&!o((function(){return 7!==Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},7055:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(2195),a=Object,s=n("".split);e.exports=o((function(){return!a("z").propertyIsEnumerable(0)}))?function(e){return"String"===i(e)?s(e,""):a(e)}:a},3706:(e,t,r)=>{"use strict";var n=r(9504),o=r(4901),i=r(7629),a=n(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},7584:(e,t,r)=>{"use strict";var n=r(34),o=r(6699);e.exports=function(e,t){n(t)&&"cause"in t&&o(e,"cause",t.cause)}},1181:(e,t,r)=>{"use strict";var n,o,i,a=r(8622),s=r(4576),c=r(34),u=r(6699),l=r(9297),d=r(7629),f=r(6119),h=r(421),p="Object already initialized",v=s.TypeError,g=s.WeakMap;if(a||d.state){var m=d.state||(d.state=new g);m.get=m.get,m.has=m.has,m.set=m.set,n=function(e,t){if(m.has(e))throw new v(p);return t.facade=e,m.set(e,t),t},o=function(e){return m.get(e)||{}},i=function(e){return m.has(e)}}else{var y=f("state");h[y]=!0,n=function(e,t){if(l(e,y))throw new v(p);return t.facade=e,u(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:n,get:o,has:i,enforce:function(e){return i(e)?o(e):n(e,{})},getterFor:function(e){return function(t){var r;if(!c(t)||(r=o(t)).type!==e)throw new v("Incompatible receiver, "+e+" required");return r}}}},4209:(e,t,r)=>{"use strict";var n=r(8227),o=r(6269),i=n("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[i]===e)}},4901:e=>{"use strict";var t="object"==typeof document&&document.all;e.exports=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(e){return"function"==typeof e}},3517:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(6955),s=r(7751),c=r(3706),u=function(){},l=s("Reflect","construct"),d=/^\s*(?:class|function)\b/,f=n(d.exec),h=!d.test(u),p=function(e){if(!i(e))return!1;try{return l(u,[],e),!0}catch(e){return!1}},v=function(e){if(!i(e))return!1;switch(a(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!f(d,c(e))}catch(e){return!0}};v.sham=!0,e.exports=!l||o((function(){var e;return p(p.call)||!p(Object)||!p((function(){e=!0}))||e}))?v:p},2796:(e,t,r)=>{"use strict";var n=r(9039),o=r(4901),i=/#|\.prototype\./,a=function(e,t){var r=c[s(e)];return r===l||r!==u&&(o(t)?n(t):!!t)},s=a.normalize=function(e){return String(e).replace(i,".").toLowerCase()},c=a.data={},u=a.NATIVE="N",l=a.POLYFILL="P";e.exports=a},4117:e=>{"use strict";e.exports=function(e){return null==e}},34:(e,t,r)=>{"use strict";var n=r(4901);e.exports=function(e){return"object"==typeof e?null!==e:n(e)}},3925:(e,t,r)=>{"use strict";var n=r(34);e.exports=function(e){return n(e)||null===e}},6395:e=>{"use strict";e.exports=!1},757:(e,t,r)=>{"use strict";var n=r(7751),o=r(4901),i=r(1625),a=r(7040),s=Object;e.exports=a?function(e){return"symbol"==typeof e}:function(e){var t=n("Symbol");return o(t)&&i(t.prototype,s(e))}},2652:(e,t,r)=>{"use strict";var n=r(6080),o=r(9565),i=r(8551),a=r(6823),s=r(4209),c=r(6198),u=r(1625),l=r(81),d=r(851),f=r(9539),h=TypeError,p=function(e,t){this.stopped=e,this.result=t},v=p.prototype;e.exports=function(e,t,r){var g,m,y,b,w,E,C,S=r&&r.that,O=!(!r||!r.AS_ENTRIES),_=!(!r||!r.IS_RECORD),k=!(!r||!r.IS_ITERATOR),P=!(!r||!r.INTERRUPTED),A=n(t,S),M=function(e){return g&&f(g,"normal",e),new p(!0,e)},T=function(e){return O?(i(e),P?A(e[0],e[1],M):A(e[0],e[1])):P?A(e,M):A(e)};if(_)g=e.iterator;else if(k)g=e;else{if(!(m=d(e)))throw new h(a(e)+" is not iterable");if(s(m)){for(y=0,b=c(e);b>y;y++)if((w=T(e[y]))&&u(v,w))return w;return new p(!1)}g=l(e,m)}for(E=_?e.next:g.next;!(C=o(E,g)).done;){try{w=T(C.value)}catch(e){f(g,"throw",e)}if("object"==typeof w&&w&&u(v,w))return w}return new p(!1)}},9539:(e,t,r)=>{"use strict";var n=r(9565),o=r(8551),i=r(5966);e.exports=function(e,t,r){var a,s;o(e);try{if(!(a=i(e,"return"))){if("throw"===t)throw r;return r}a=n(a,e)}catch(e){s=!0,a=e}if("throw"===t)throw r;if(s)throw a;return o(a),r}},3994:(e,t,r)=>{"use strict";var n=r(7657).IteratorPrototype,o=r(2360),i=r(6980),a=r(687),s=r(6269),c=function(){return this};e.exports=function(e,t,r,u){var l=t+" Iterator";return e.prototype=o(n,{next:i(+!u,r)}),a(e,l,!1,!0),s[l]=c,e}},1088:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(6395),a=r(350),s=r(4901),c=r(3994),u=r(2787),l=r(2967),d=r(687),f=r(6699),h=r(6840),p=r(8227),v=r(6269),g=r(7657),m=a.PROPER,y=a.CONFIGURABLE,b=g.IteratorPrototype,w=g.BUGGY_SAFARI_ITERATORS,E=p("iterator"),C="keys",S="values",O="entries",_=function(){return this};e.exports=function(e,t,r,a,p,g,k){c(r,t,a);var P,A,M,T=function(e){if(e===p&&j)return j;if(!w&&e&&e in L)return L[e];switch(e){case C:case S:case O:return function(){return new r(this,e)}}return function(){return new r(this)}},x=t+" Iterator",R=!1,L=e.prototype,F=L[E]||L["@@iterator"]||p&&L[p],j=!w&&F||T(p),I="Array"===t&&L.entries||F;if(I&&(P=u(I.call(new e)))!==Object.prototype&&P.next&&(i||u(P)===b||(l?l(P,b):s(P[E])||h(P,E,_)),d(P,x,!0,!0),i&&(v[x]=_)),m&&p===S&&F&&F.name!==S&&(!i&&y?f(L,"name",S):(R=!0,j=function(){return o(F,this)})),p)if(A={values:T(S),keys:g?j:T(C),entries:T(O)},k)for(M in A)(w||R||!(M in L))&&h(L,M,A[M]);else n({target:t,proto:!0,forced:w||R},A);return i&&!k||L[E]===j||h(L,E,j,{name:p}),v[t]=j,A}},7657:(e,t,r)=>{"use strict";var n,o,i,a=r(9039),s=r(4901),c=r(34),u=r(2360),l=r(2787),d=r(6840),f=r(8227),h=r(6395),p=f("iterator"),v=!1;[].keys&&("next"in(i=[].keys())?(o=l(l(i)))!==Object.prototype&&(n=o):v=!0),!c(n)||a((function(){var e={};return n[p].call(e)!==e}))?n={}:h&&(n=u(n)),s(n[p])||d(n,p,(function(){return this})),e.exports={IteratorPrototype:n,BUGGY_SAFARI_ITERATORS:v}},6269:e=>{"use strict";e.exports={}},6198:(e,t,r)=>{"use strict";var n=r(8014);e.exports=function(e){return n(e.length)}},283:(e,t,r)=>{"use strict";var n=r(9504),o=r(9039),i=r(4901),a=r(9297),s=r(3724),c=r(350).CONFIGURABLE,u=r(3706),l=r(1181),d=l.enforce,f=l.get,h=String,p=Object.defineProperty,v=n("".slice),g=n("".replace),m=n([].join),y=s&&!o((function(){return 8!==p((function(){}),"length",{value:8}).length})),b=String(String).split("String"),w=e.exports=function(e,t,r){"Symbol("===v(h(t),0,7)&&(t="["+g(h(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!a(e,"name")||c&&e.name!==t)&&(s?p(e,"name",{value:t,configurable:!0}):e.name=t),y&&r&&a(r,"arity")&&e.length!==r.arity&&p(e,"length",{value:r.arity});try{r&&a(r,"constructor")&&r.constructor?s&&p(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=d(e);return a(n,"source")||(n.source=m(b,"string"==typeof t?t:"")),e};Function.prototype.toString=w((function(){return i(this)&&f(this).source||u(this)}),"toString")},741:e=>{"use strict";var t=Math.ceil,r=Math.floor;e.exports=Math.trunc||function(e){var n=+e;return(n>0?r:t)(n)}},1955:(e,t,r)=>{"use strict";var n,o,i,a,s,c=r(4576),u=r(3389),l=r(6080),d=r(9225).set,f=r(8265),h=r(9544),p=r(4265),v=r(7860),g=r(8574),m=c.MutationObserver||c.WebKitMutationObserver,y=c.document,b=c.process,w=c.Promise,E=u("queueMicrotask");if(!E){var C=new f,S=function(){var e,t;for(g&&(e=b.domain)&&e.exit();t=C.get();)try{t()}catch(e){throw C.head&&n(),e}e&&e.enter()};h||g||v||!m||!y?!p&&w&&w.resolve?((a=w.resolve(void 0)).constructor=w,s=l(a.then,a),n=function(){s(S)}):g?n=function(){b.nextTick(S)}:(d=l(d,c),n=function(){d(S)}):(o=!0,i=y.createTextNode(""),new m(S).observe(i,{characterData:!0}),n=function(){i.data=o=!o}),E=function(e){C.head||n(),C.add(e)}}e.exports=E},6043:(e,t,r)=>{"use strict";var n=r(9306),o=TypeError,i=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw new o("Bad Promise constructor");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};e.exports.f=function(e){return new i(e)}},2603:(e,t,r)=>{"use strict";var n=r(655);e.exports=function(e,t){return void 0===e?arguments.length<2?"":t:n(e)}},4213:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(9565),a=r(9039),s=r(1072),c=r(3717),u=r(8773),l=r(8981),d=r(7055),f=Object.assign,h=Object.defineProperty,p=o([].concat);e.exports=!f||a((function(){if(n&&1!==f({b:1},f(h({},"a",{enumerable:!0,get:function(){h(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol("assign detection"),o="abcdefghijklmnopqrst";return e[r]=7,o.split("").forEach((function(e){t[e]=e})),7!==f({},e)[r]||s(f({},t)).join("")!==o}))?function(e,t){for(var r=l(e),o=arguments.length,a=1,f=c.f,h=u.f;o>a;)for(var v,g=d(arguments[a++]),m=f?p(s(g),f(g)):s(g),y=m.length,b=0;y>b;)v=m[b++],n&&!i(h,g,v)||(r[v]=g[v]);return r}:f},2360:(e,t,r)=>{"use strict";var n,o=r(8551),i=r(6801),a=r(8727),s=r(421),c=r(397),u=r(4055),l=r(6119),d="prototype",f="script",h=l("IE_PROTO"),p=function(){},v=function(e){return"<"+f+">"+e+"</"+f+">"},g=function(e){e.write(v("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m="undefined"!=typeof document?document.domain&&n?g(n):(t=u("iframe"),r="java"+f+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(v("document.F=Object")),e.close(),e.F):g(n);for(var o=a.length;o--;)delete m[d][a[o]];return m()};s[h]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(p[d]=o(e),r=new p,p[d]=null,r[h]=e):r=m(),void 0===t?r:i.f(r,t)}},6801:(e,t,r)=>{"use strict";var n=r(3724),o=r(8686),i=r(4913),a=r(8551),s=r(5397),c=r(1072);t.f=n&&!o?Object.defineProperties:function(e,t){a(e);for(var r,n=s(t),o=c(t),u=o.length,l=0;u>l;)i.f(e,r=o[l++],n[r]);return e}},4913:(e,t,r)=>{"use strict";var n=r(3724),o=r(5917),i=r(8686),a=r(8551),s=r(6969),c=TypeError,u=Object.defineProperty,l=Object.getOwnPropertyDescriptor,d="enumerable",f="configurable",h="writable";t.f=n?i?function(e,t,r){if(a(e),t=s(t),a(r),"function"==typeof e&&"prototype"===t&&"value"in r&&h in r&&!r[h]){var n=l(e,t);n&&n[h]&&(e[t]=r.value,r={configurable:f in r?r[f]:n[f],enumerable:d in r?r[d]:n[d],writable:!1})}return u(e,t,r)}:u:function(e,t,r){if(a(e),t=s(t),a(r),o)try{return u(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new c("Accessors not supported");return"value"in r&&(e[t]=r.value),e}},7347:(e,t,r)=>{"use strict";var n=r(3724),o=r(9565),i=r(8773),a=r(6980),s=r(5397),c=r(6969),u=r(9297),l=r(5917),d=Object.getOwnPropertyDescriptor;t.f=n?d:function(e,t){if(e=s(e),t=c(t),l)try{return d(e,t)}catch(e){}if(u(e,t))return a(!o(i.f,e,t),e[t])}},8480:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},3717:(e,t)=>{"use strict";t.f=Object.getOwnPropertySymbols},2787:(e,t,r)=>{"use strict";var n=r(9297),o=r(4901),i=r(8981),a=r(6119),s=r(2211),c=a("IE_PROTO"),u=Object,l=u.prototype;e.exports=s?u.getPrototypeOf:function(e){var t=i(e);if(n(t,c))return t[c];var r=t.constructor;return o(r)&&t instanceof r?r.prototype:t instanceof u?l:null}},1625:(e,t,r)=>{"use strict";var n=r(9504);e.exports=n({}.isPrototypeOf)},1828:(e,t,r)=>{"use strict";var n=r(9504),o=r(9297),i=r(5397),a=r(9617).indexOf,s=r(421),c=n([].push);e.exports=function(e,t){var r,n=i(e),u=0,l=[];for(r in n)!o(s,r)&&o(n,r)&&c(l,r);for(;t.length>u;)o(n,r=t[u++])&&(~a(l,r)||c(l,r));return l}},1072:(e,t,r)=>{"use strict";var n=r(1828),o=r(8727);e.exports=Object.keys||function(e){return n(e,o)}},8773:(e,t)=>{"use strict";var r={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,o=n&&!r.call({1:2},1);t.f=o?function(e){var t=n(this,e);return!!t&&t.enumerable}:r},2967:(e,t,r)=>{"use strict";var n=r(6706),o=r(34),i=r(7750),a=r(3506);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=n(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return i(r),a(n),o(r)?(t?e(r,n):r.__proto__=n,r):r}}():void 0)},3179:(e,t,r)=>{"use strict";var n=r(2140),o=r(6955);e.exports=n?{}.toString:function(){return"[object "+o(this)+"]"}},4270:(e,t,r)=>{"use strict";var n=r(9565),o=r(4901),i=r(34),a=TypeError;e.exports=function(e,t){var r,s;if("string"===t&&o(r=e.toString)&&!i(s=n(r,e)))return s;if(o(r=e.valueOf)&&!i(s=n(r,e)))return s;if("string"!==t&&o(r=e.toString)&&!i(s=n(r,e)))return s;throw new a("Can't convert object to primitive value")}},5031:(e,t,r)=>{"use strict";var n=r(7751),o=r(9504),i=r(8480),a=r(3717),s=r(8551),c=o([].concat);e.exports=n("Reflect","ownKeys")||function(e){var t=i.f(s(e)),r=a.f;return r?c(t,r(e)):t}},9167:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n},1103:e=>{"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},916:(e,t,r)=>{"use strict";var n=r(4576),o=r(550),i=r(4901),a=r(2796),s=r(3706),c=r(8227),u=r(4215),l=r(6395),d=r(9519),f=o&&o.prototype,h=c("species"),p=!1,v=i(n.PromiseRejectionEvent),g=a("Promise",(function(){var e=s(o),t=e!==String(o);if(!t&&66===d)return!0;if(l&&(!f.catch||!f.finally))return!0;if(!d||d<51||!/native code/.test(e)){var r=new o((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[h]=n,!(p=r.then((function(){}))instanceof n))return!0}return!(t||"BROWSER"!==u&&"DENO"!==u||v)}));e.exports={CONSTRUCTOR:g,REJECTION_EVENT:v,SUBCLASSING:p}},550:(e,t,r)=>{"use strict";var n=r(4576);e.exports=n.Promise},3438:(e,t,r)=>{"use strict";var n=r(8551),o=r(34),i=r(6043);e.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},537:(e,t,r)=>{"use strict";var n=r(550),o=r(4428),i=r(916).CONSTRUCTOR;e.exports=i||!o((function(e){n.all(e).then(void 0,(function(){}))}))},8265:e=>{"use strict";var t=function(){this.head=null,this.tail=null};t.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},e.exports=t},7750:(e,t,r)=>{"use strict";var n=r(4117),o=TypeError;e.exports=function(e){if(n(e))throw new o("Can't call method on "+e);return e}},3389:(e,t,r)=>{"use strict";var n=r(4576),o=r(3724),i=Object.getOwnPropertyDescriptor;e.exports=function(e){if(!o)return n[e];var t=i(n,e);return t&&t.value}},7633:(e,t,r)=>{"use strict";var n=r(7751),o=r(2106),i=r(8227),a=r(3724),s=i("species");e.exports=function(e){var t=n(e);a&&t&&!t[s]&&o(t,s,{configurable:!0,get:function(){return this}})}},687:(e,t,r)=>{"use strict";var n=r(4913).f,o=r(9297),i=r(8227)("toStringTag");e.exports=function(e,t,r){e&&!r&&(e=e.prototype),e&&!o(e,i)&&n(e,i,{configurable:!0,value:t})}},6119:(e,t,r)=>{"use strict";var n=r(5745),o=r(3392),i=n("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},7629:(e,t,r)=>{"use strict";var n=r(6395),o=r(4576),i=r(9433),a="__core-js_shared__",s=e.exports=o[a]||i(a,{});(s.versions||(s.versions=[])).push({version:"3.39.0",mode:n?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"})},5745:(e,t,r)=>{"use strict";var n=r(7629);e.exports=function(e,t){return n[e]||(n[e]=t||{})}},2293:(e,t,r)=>{"use strict";var n=r(8551),o=r(5548),i=r(4117),a=r(8227)("species");e.exports=function(e,t){var r,s=n(e).constructor;return void 0===s||i(r=n(s)[a])?t:o(r)}},8183:(e,t,r)=>{"use strict";var n=r(9504),o=r(1291),i=r(655),a=r(7750),s=n("".charAt),c=n("".charCodeAt),u=n("".slice),l=function(e){return function(t,r){var n,l,d=i(a(t)),f=o(r),h=d.length;return f<0||f>=h?e?"":void 0:(n=c(d,f))<55296||n>56319||f+1===h||(l=c(d,f+1))<56320||l>57343?e?s(d,f):n:e?u(d,f,f+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},6098:(e,t,r)=>{"use strict";var n=r(9504),o=2147483647,i=/[^\0-\u007E]/,a=/[.\u3002\uFF0E\uFF61]/g,s="Overflow: input needs wider integers to process",c=RangeError,u=n(a.exec),l=Math.floor,d=String.fromCharCode,f=n("".charCodeAt),h=n([].join),p=n([].push),v=n("".replace),g=n("".split),m=n("".toLowerCase),y=function(e){return e+22+75*(e<26)},b=function(e,t,r){var n=0;for(e=r?l(e/700):e>>1,e+=l(e/t);e>455;)e=l(e/35),n+=36;return l(n+36*e/(e+38))},w=function(e){var t=[];e=function(e){for(var t=[],r=0,n=e.length;r<n;){var o=f(e,r++);if(o>=55296&&o<=56319&&r<n){var i=f(e,r++);56320==(64512&i)?p(t,((1023&o)<<10)+(1023&i)+65536):(p(t,o),r--)}else p(t,o)}return t}(e);var r,n,i=e.length,a=128,u=0,v=72;for(r=0;r<e.length;r++)(n=e[r])<128&&p(t,d(n));var g=t.length,m=g;for(g&&p(t,"-");m<i;){var w=o;for(r=0;r<e.length;r++)(n=e[r])>=a&&n<w&&(w=n);var E=m+1;if(w-a>l((o-u)/E))throw new c(s);for(u+=(w-a)*E,a=w,r=0;r<e.length;r++){if((n=e[r])<a&&++u>o)throw new c(s);if(n===a){for(var C=u,S=36;;){var O=S<=v?1:S>=v+26?26:S-v;if(C<O)break;var _=C-O,k=36-O;p(t,d(y(O+_%k))),C=l(_/k),S+=36}p(t,d(y(C))),v=b(u,E,m===g),u=0,m++}}u++,a++}return h(t,"")};e.exports=function(e){var t,r,n=[],o=g(v(m(e),a,"."),".");for(t=0;t<o.length;t++)r=o[t],p(n,u(i,r)?"xn--"+w(r):r);return h(n,".")}},4495:(e,t,r)=>{"use strict";var n=r(9519),o=r(9039),i=r(4576).String;e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol("symbol detection");return!i(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&n&&n<41}))},9225:(e,t,r)=>{"use strict";var n,o,i,a,s=r(4576),c=r(8745),u=r(6080),l=r(4901),d=r(9297),f=r(9039),h=r(397),p=r(7680),v=r(4055),g=r(2812),m=r(9544),y=r(8574),b=s.setImmediate,w=s.clearImmediate,E=s.process,C=s.Dispatch,S=s.Function,O=s.MessageChannel,_=s.String,k=0,P={},A="onreadystatechange";f((function(){n=s.location}));var M=function(e){if(d(P,e)){var t=P[e];delete P[e],t()}},T=function(e){return function(){M(e)}},x=function(e){M(e.data)},R=function(e){s.postMessage(_(e),n.protocol+"//"+n.host)};b&&w||(b=function(e){g(arguments.length,1);var t=l(e)?e:S(e),r=p(arguments,1);return P[++k]=function(){c(t,void 0,r)},o(k),k},w=function(e){delete P[e]},y?o=function(e){E.nextTick(T(e))}:C&&C.now?o=function(e){C.now(T(e))}:O&&!m?(a=(i=new O).port2,i.port1.onmessage=x,o=u(a.postMessage,a)):s.addEventListener&&l(s.postMessage)&&!s.importScripts&&n&&"file:"!==n.protocol&&!f(R)?(o=R,s.addEventListener("message",x,!1)):o=A in v("script")?function(e){h.appendChild(v("script"))[A]=function(){h.removeChild(this),M(e)}}:function(e){setTimeout(T(e),0)}),e.exports={set:b,clear:w}},5610:(e,t,r)=>{"use strict";var n=r(1291),o=Math.max,i=Math.min;e.exports=function(e,t){var r=n(e);return r<0?o(r+t,0):i(r,t)}},5397:(e,t,r)=>{"use strict";var n=r(7055),o=r(7750);e.exports=function(e){return n(o(e))}},1291:(e,t,r)=>{"use strict";var n=r(741);e.exports=function(e){var t=+e;return t!=t||0===t?0:n(t)}},8014:(e,t,r)=>{"use strict";var n=r(1291),o=Math.min;e.exports=function(e){var t=n(e);return t>0?o(t,9007199254740991):0}},8981:(e,t,r)=>{"use strict";var n=r(7750),o=Object;e.exports=function(e){return o(n(e))}},2777:(e,t,r)=>{"use strict";var n=r(9565),o=r(34),i=r(757),a=r(5966),s=r(4270),c=r(8227),u=TypeError,l=c("toPrimitive");e.exports=function(e,t){if(!o(e)||i(e))return e;var r,c=a(e,l);if(c){if(void 0===t&&(t="default"),r=n(c,e,t),!o(r)||i(r))return r;throw new u("Can't convert object to primitive value")}return void 0===t&&(t="number"),s(e,t)}},6969:(e,t,r)=>{"use strict";var n=r(2777),o=r(757);e.exports=function(e){var t=n(e,"string");return o(t)?t:t+""}},2140:(e,t,r)=>{"use strict";var n={};n[r(8227)("toStringTag")]="z",e.exports="[object z]"===String(n)},655:(e,t,r)=>{"use strict";var n=r(6955),o=String;e.exports=function(e){if("Symbol"===n(e))throw new TypeError("Cannot convert a Symbol value to a string");return o(e)}},6823:e=>{"use strict";var t=String;e.exports=function(e){try{return t(e)}catch(e){return"Object"}}},3392:(e,t,r)=>{"use strict";var n=r(9504),o=0,i=Math.random(),a=n(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},7416:(e,t,r)=>{"use strict";var n=r(9039),o=r(8227),i=r(3724),a=r(6395),s=o("iterator");e.exports=!n((function(){var e=new URL("b?a=1&b=2&c=3","https://a"),t=e.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),r.delete("a",2),r.delete("b",void 0),a&&(!e.toJSON||!r.has("a",1)||r.has("a",2)||!r.has("a",void 0)||r.has("b"))||!t.size&&(a||!i)||!t.sort||"https://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}))},7040:(e,t,r)=>{"use strict";var n=r(4495);e.exports=n&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},8686:(e,t,r)=>{"use strict";var n=r(3724),o=r(9039);e.exports=n&&o((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))},2812:e=>{"use strict";var t=TypeError;e.exports=function(e,r){if(e<r)throw new t("Not enough arguments");return e}},8622:(e,t,r)=>{"use strict";var n=r(4576),o=r(4901),i=n.WeakMap;e.exports=o(i)&&/native code/.test(String(i))},8227:(e,t,r)=>{"use strict";var n=r(4576),o=r(5745),i=r(9297),a=r(3392),s=r(4495),c=r(7040),u=n.Symbol,l=o("wks"),d=c?u.for||u:u&&u.withoutSetter||a;e.exports=function(e){return i(l,e)||(l[e]=s&&i(u,e)?u[e]:d("Symbol."+e)),l[e]}},7145:(e,t,r)=>{"use strict";var n=r(6518),o=r(1625),i=r(2787),a=r(2967),s=r(7740),c=r(2360),u=r(6699),l=r(6980),d=r(7584),f=r(747),h=r(2652),p=r(2603),v=r(8227)("toStringTag"),g=Error,m=[].push,y=function(e,t){var r,n=o(b,this);a?r=a(new g,n?i(this):b):(r=n?this:c(b),u(r,v,"Error")),void 0!==t&&u(r,"message",p(t)),f(r,y,r.stack,1),arguments.length>2&&d(r,arguments[2]);var s=[];return h(e,m,{that:s}),u(r,"errors",s),r};a?a(y,g):s(y,g,{name:!0});var b=y.prototype=c(g.prototype,{constructor:l(1,y),message:l(1,""),name:l(1,"AggregateError")});n({global:!0,constructor:!0,arity:2},{AggregateError:y})},67:(e,t,r)=>{"use strict";r(7145)},4423:(e,t,r)=>{"use strict";var n=r(6518),o=r(9617).includes,i=r(9039),a=r(6469);n({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),a("includes")},3792:(e,t,r)=>{"use strict";var n=r(5397),o=r(6469),i=r(6269),a=r(1181),s=r(4913).f,c=r(1088),u=r(2529),l=r(6395),d=r(3724),f="Array Iterator",h=a.set,p=a.getterFor(f);e.exports=c(Array,"Array",(function(e,t){h(this,{type:f,target:n(e),index:0,kind:t})}),(function(){var e=p(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,u(void 0,!0);switch(e.kind){case"keys":return u(r,!1);case"values":return u(t[r],!1)}return u([r,t[r]],!1)}),"values");var v=i.Arguments=i.Array;if(o("keys"),o("values"),o("entries"),!l&&d&&"values"!==v.name)try{s(v,"name",{value:"values"})}catch(e){}},9085:(e,t,r)=>{"use strict";var n=r(6518),o=r(4213);n({target:"Object",stat:!0,arity:2,forced:Object.assign!==o},{assign:o})},6099:(e,t,r)=>{"use strict";var n=r(2140),o=r(6840),i=r(3179);n||o(Object.prototype,"toString",i,{unsafe:!0})},6167:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{allSettled:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,u=1;c(e,(function(e){var i=s++,c=!1;u++,o(r,t,e).then((function(e){c||(c=!0,a[i]={status:"fulfilled",value:e},--u||n(a))}),(function(e){c||(c=!0,a[i]={status:"rejected",reason:e},--u||n(a))}))})),--u||n(a)}));return l.error&&u(l.value),r.promise}})},6499:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{all:function(e){var t=this,r=a.f(t),n=r.resolve,u=r.reject,l=s((function(){var r=i(t.resolve),a=[],s=0,l=1;c(e,(function(e){var i=s++,c=!1;l++,o(r,t,e).then((function(e){c||(c=!0,a[i]=e,--l||n(a))}),u)})),--l||n(a)}));return l.error&&u(l.value),r.promise}})},3518:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(7751),s=r(6043),c=r(1103),u=r(2652),l=r(537),d="No one promise resolved";n({target:"Promise",stat:!0,forced:l},{any:function(e){var t=this,r=a("AggregateError"),n=s.f(t),l=n.resolve,f=n.reject,h=c((function(){var n=i(t.resolve),a=[],s=0,c=1,h=!1;u(e,(function(e){var i=s++,u=!1;c++,o(n,t,e).then((function(e){u||h||(h=!0,l(e))}),(function(e){u||h||(u=!0,a[i]=e,--c||f(new r(a,d)))}))})),--c||f(new r(a,d))}));return h.error&&f(h.value),n.promise}})},2003:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(916).CONSTRUCTOR,a=r(550),s=r(7751),c=r(4901),u=r(6840),l=a&&a.prototype;if(n({target:"Promise",proto:!0,forced:i,real:!0},{catch:function(e){return this.then(void 0,e)}}),!o&&c(a)){var d=s("Promise").prototype.catch;l.catch!==d&&u(l,"catch",d,{unsafe:!0})}},436:(e,t,r)=>{"use strict";var n,o,i,a=r(6518),s=r(6395),c=r(8574),u=r(4576),l=r(9565),d=r(6840),f=r(2967),h=r(687),p=r(7633),v=r(9306),g=r(4901),m=r(34),y=r(679),b=r(2293),w=r(9225).set,E=r(1955),C=r(3138),S=r(1103),O=r(8265),_=r(1181),k=r(550),P=r(916),A=r(6043),M="Promise",T=P.CONSTRUCTOR,x=P.REJECTION_EVENT,R=P.SUBCLASSING,L=_.getterFor(M),F=_.set,j=k&&k.prototype,I=k,D=j,B=u.TypeError,H=u.document,N=u.process,V=A.f,U=V,G=!!(H&&H.createEvent&&u.dispatchEvent),z="unhandledrejection",q=function(e){var t;return!(!m(e)||!g(t=e.then))&&t},K=function(e,t){var r,n,o,i=t.value,a=1===t.state,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,d=e.domain;try{s?(a||(2===t.rejection&&$(t),t.rejection=1),!0===s?r=i:(d&&d.enter(),r=s(i),d&&(d.exit(),o=!0)),r===e.promise?u(new B("Promise-chain cycle")):(n=q(r))?l(n,r,c,u):c(r)):u(i)}catch(e){d&&!o&&d.exit(),u(e)}},W=function(e,t){e.notified||(e.notified=!0,E((function(){for(var r,n=e.reactions;r=n.get();)K(r,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},J=function(e,t,r){var n,o;G?((n=H.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),u.dispatchEvent(n)):n={promise:t,reason:r},!x&&(o=u["on"+e])?o(n):e===z&&C("Unhandled promise rejection",r)},Y=function(e){l(w,u,(function(){var t,r=e.facade,n=e.value;if(Q(e)&&(t=S((function(){c?N.emit("unhandledRejection",n,r):J(z,r,n)})),e.rejection=c||Q(e)?2:1,t.error))throw t.value}))},Q=function(e){return 1!==e.rejection&&!e.parent},$=function(e){l(w,u,(function(){var t=e.facade;c?N.emit("rejectionHandled",t):J("rejectionhandled",t,e.value)}))},X=function(e,t,r){return function(n){e(t,n,r)}},Z=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=2,W(e,!0))},ee=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw new B("Promise can't be resolved itself");var n=q(t);n?E((function(){var r={done:!1};try{l(n,t,X(ee,r,e),X(Z,r,e))}catch(t){Z(r,t,e)}})):(e.value=t,e.state=1,W(e,!1))}catch(t){Z({done:!1},t,e)}}};if(T&&(D=(I=function(e){y(this,D),v(e),l(n,this);var t=L(this);try{e(X(ee,t),X(Z,t))}catch(e){Z(t,e)}}).prototype,(n=function(e){F(this,{type:M,done:!1,notified:!1,parent:!1,reactions:new O,rejection:!1,state:0,value:null})}).prototype=d(D,"then",(function(e,t){var r=L(this),n=V(b(this,I));return r.parent=!0,n.ok=!g(e)||e,n.fail=g(t)&&t,n.domain=c?N.domain:void 0,0===r.state?r.reactions.add(n):E((function(){K(n,r)})),n.promise})),o=function(){var e=new n,t=L(e);this.promise=e,this.resolve=X(ee,t),this.reject=X(Z,t)},A.f=V=function(e){return e===I||void 0===e?new o(e):U(e)},!s&&g(k)&&j!==Object.prototype)){i=j.then,R||d(j,"then",(function(e,t){var r=this;return new I((function(e,t){l(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete j.constructor}catch(e){}f&&f(j,D)}a({global:!0,constructor:!0,wrap:!0,forced:T},{Promise:I}),h(I,M,!1,!0),p(M)},9391:(e,t,r)=>{"use strict";var n=r(6518),o=r(6395),i=r(550),a=r(9039),s=r(7751),c=r(4901),u=r(2293),l=r(3438),d=r(6840),f=i&&i.prototype;if(n({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){f.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=u(this,s("Promise")),r=c(e);return this.then(r?function(r){return l(t,e()).then((function(){return r}))}:e,r?function(r){return l(t,e()).then((function(){throw r}))}:e)}}),!o&&c(i)){var h=s("Promise").prototype.finally;f.finally!==h&&d(f,"finally",h,{unsafe:!0})}},3362:(e,t,r)=>{"use strict";r(436),r(6499),r(2003),r(7743),r(1481),r(280)},7743:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565),i=r(9306),a=r(6043),s=r(1103),c=r(2652);n({target:"Promise",stat:!0,forced:r(537)},{race:function(e){var t=this,r=a.f(t),n=r.reject,u=s((function(){var a=i(t.resolve);c(e,(function(e){o(a,t,e).then(r.resolve,n)}))}));return u.error&&n(u.value),r.promise}})},1481:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0,forced:r(916).CONSTRUCTOR},{reject:function(e){var t=o.f(this);return(0,t.reject)(e),t.promise}})},280:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(6395),a=r(550),s=r(916).CONSTRUCTOR,c=r(3438),u=o("Promise"),l=i&&!s;n({target:"Promise",stat:!0,forced:i||s},{resolve:function(e){return c(l&&this===u?a:this,e)}})},1689:(e,t,r)=>{"use strict";var n=r(6518),o=r(4576),i=r(8745),a=r(7680),s=r(6043),c=r(9306),u=r(1103),l=o.Promise,d=!1;n({target:"Promise",stat:!0,forced:!l||!l.try||u((function(){l.try((function(e){d=8===e}),8)})).error||!d},{try:function(e){var t=arguments.length>1?a(arguments,1):[],r=s.f(this),n=u((function(){return i(c(e),void 0,t)}));return(n.error?r.reject:r.resolve)(n.value),r.promise}})},4628:(e,t,r)=>{"use strict";var n=r(6518),o=r(6043);n({target:"Promise",stat:!0},{withResolvers:function(){var e=o.f(this);return{promise:e.promise,resolve:e.resolve,reject:e.reject}}})},7337:(e,t,r)=>{"use strict";var n=r(6518),o=r(9504),i=r(5610),a=RangeError,s=String.fromCharCode,c=String.fromCodePoint,u=o([].join);n({target:"String",stat:!0,arity:1,forced:!!c&&1!==c.length},{fromCodePoint:function(e){for(var t,r=[],n=arguments.length,o=0;n>o;){if(t=+arguments[o++],i(t,1114111)!==t)throw new a(t+" is not a valid code point");r[o]=t<65536?s(t):s(55296+((t-=65536)>>10),t%1024+56320)}return u(r,"")}})},7764:(e,t,r)=>{"use strict";var n=r(8183).charAt,o=r(655),i=r(1181),a=r(1088),s=r(2529),c="String Iterator",u=i.set,l=i.getterFor(c);a(String,"String",(function(e){u(this,{type:c,string:o(e),index:0})}),(function(){var e,t=l(this),r=t.string,o=t.index;return o>=r.length?s(void 0,!0):(e=n(r,o),t.index+=e.length,s(e,!1))}))},9806:(e,t,r)=>{"use strict";r(67)},5874:(e,t,r)=>{"use strict";r(6167)},7575:(e,t,r)=>{"use strict";r(3518)},7628:(e,t,r)=>{"use strict";r(1689)},3799:(e,t,r)=>{"use strict";r(4628)},2953:(e,t,r)=>{"use strict";var n=r(4576),o=r(7400),i=r(9296),a=r(3792),s=r(6699),c=r(687),u=r(8227)("iterator"),l=a.values,d=function(e,t){if(e){if(e[u]!==l)try{s(e,u,l)}catch(t){e[u]=l}if(c(e,t,!0),o[t])for(var r in a)if(e[r]!==a[r])try{s(e,r,a[r])}catch(t){e[r]=a[r]}}};for(var f in o)d(n[f]&&n[f].prototype,f);d(i,"DOMTokenList")},8406:(e,t,r)=>{"use strict";r(3792),r(7337);var n=r(6518),o=r(4576),i=r(3389),a=r(7751),s=r(9565),c=r(9504),u=r(3724),l=r(7416),d=r(6840),f=r(2106),h=r(6279),p=r(687),v=r(3994),g=r(1181),m=r(679),y=r(4901),b=r(9297),w=r(6080),E=r(6955),C=r(8551),S=r(34),O=r(655),_=r(2360),k=r(6980),P=r(81),A=r(851),M=r(2529),T=r(2812),x=r(8227),R=r(4488),L=x("iterator"),F="URLSearchParams",j=F+"Iterator",I=g.set,D=g.getterFor(F),B=g.getterFor(j),H=i("fetch"),N=i("Request"),V=i("Headers"),U=N&&N.prototype,G=V&&V.prototype,z=o.TypeError,q=o.encodeURIComponent,K=String.fromCharCode,W=a("String","fromCodePoint"),J=parseInt,Y=c("".charAt),Q=c([].join),$=c([].push),X=c("".replace),Z=c([].shift),ee=c([].splice),te=c("".split),re=c("".slice),ne=c(/./.exec),oe=/\+/g,ie=/^[0-9a-f]+$/i,ae=function(e,t){var r=re(e,t,t+2);return ne(ie,r)?J(r,16):NaN},se=function(e){for(var t=0,r=128;r>0&&e&r;r>>=1)t++;return t},ce=function(e){var t=null;switch(e.length){case 1:t=e[0];break;case 2:t=(31&e[0])<<6|63&e[1];break;case 3:t=(15&e[0])<<12|(63&e[1])<<6|63&e[2];break;case 4:t=(7&e[0])<<18|(63&e[1])<<12|(63&e[2])<<6|63&e[3]}return t>1114111?null:t},ue=function(e){for(var t=(e=X(e,oe," ")).length,r="",n=0;n<t;){var o=Y(e,n);if("%"===o){if("%"===Y(e,n+1)||n+3>t){r+="%",n++;continue}var i=ae(e,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=se(i);if(0===a)o=K(i);else{if(1===a||a>4){r+="�",n++;continue}for(var s=[i],c=1;c<a&&!(3+ ++n>t||"%"!==Y(e,n));){var u=ae(e,n+1);if(u!=u){n+=3;break}if(u>191||u<128)break;$(s,u),n+=2,c++}if(s.length!==a){r+="�";continue}var l=ce(s);null===l?r+="�":o=W(l)}}r+=o,n++}return r},le=/[!'()~]|%20/g,de={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},fe=function(e){return de[e]},he=function(e){return X(q(e),le,fe)},pe=v((function(e,t){I(this,{type:j,target:D(e).entries,index:0,kind:t})}),F,(function(){var e=B(this),t=e.target,r=e.index++;if(!t||r>=t.length)return e.target=null,M(void 0,!0);var n=t[r];switch(e.kind){case"keys":return M(n.key,!1);case"values":return M(n.value,!1)}return M([n.key,n.value],!1)}),!0),ve=function(e){this.entries=[],this.url=null,void 0!==e&&(S(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Y(e,0)?re(e,1):e:O(e)))};ve.prototype={type:F,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,r,n,o,i,a,c,u=this.entries,l=A(e);if(l)for(r=(t=P(e,l)).next;!(n=s(r,t)).done;){if(i=(o=P(C(n.value))).next,(a=s(i,o)).done||(c=s(i,o)).done||!s(i,o).done)throw new z("Expected sequence with length 2");$(u,{key:O(a.value),value:O(c.value)})}else for(var d in e)b(e,d)&&$(u,{key:d,value:O(e[d])})},parseQuery:function(e){if(e)for(var t,r,n=this.entries,o=te(e,"&"),i=0;i<o.length;)(t=o[i++]).length&&(r=te(t,"="),$(n,{key:ue(Z(r)),value:ue(Q(r,"="))}))},serialize:function(){for(var e,t=this.entries,r=[],n=0;n<t.length;)e=t[n++],$(r,he(e.key)+"="+he(e.value));return Q(r,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var ge=function(){m(this,me);var e=I(this,new ve(arguments.length>0?arguments[0]:void 0));u||(this.size=e.entries.length)},me=ge.prototype;if(h(me,{append:function(e,t){var r=D(this);T(arguments.length,2),$(r.entries,{key:O(e),value:O(t)}),u||this.length++,r.updateURL()},delete:function(e){for(var t=D(this),r=T(arguments.length,1),n=t.entries,o=O(e),i=r<2?void 0:arguments[1],a=void 0===i?i:O(i),s=0;s<n.length;){var c=n[s];if(c.key!==o||void 0!==a&&c.value!==a)s++;else if(ee(n,s,1),void 0!==a)break}u||(this.size=n.length),t.updateURL()},get:function(e){var t=D(this).entries;T(arguments.length,1);for(var r=O(e),n=0;n<t.length;n++)if(t[n].key===r)return t[n].value;return null},getAll:function(e){var t=D(this).entries;T(arguments.length,1);for(var r=O(e),n=[],o=0;o<t.length;o++)t[o].key===r&&$(n,t[o].value);return n},has:function(e){for(var t=D(this).entries,r=T(arguments.length,1),n=O(e),o=r<2?void 0:arguments[1],i=void 0===o?o:O(o),a=0;a<t.length;){var s=t[a++];if(s.key===n&&(void 0===i||s.value===i))return!0}return!1},set:function(e,t){var r=D(this);T(arguments.length,1);for(var n,o=r.entries,i=!1,a=O(e),s=O(t),c=0;c<o.length;c++)(n=o[c]).key===a&&(i?ee(o,c--,1):(i=!0,n.value=s));i||$(o,{key:a,value:s}),u||(this.size=o.length),r.updateURL()},sort:function(){var e=D(this);R(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,r=D(this).entries,n=w(e,arguments.length>1?arguments[1]:void 0),o=0;o<r.length;)n((t=r[o++]).value,t.key,this)},keys:function(){return new pe(this,"keys")},values:function(){return new pe(this,"values")},entries:function(){return new pe(this,"entries")}},{enumerable:!0}),d(me,L,me.entries,{name:"entries"}),d(me,"toString",(function(){return D(this).serialize()}),{enumerable:!0}),u&&f(me,"size",{get:function(){return D(this).entries.length},configurable:!0,enumerable:!0}),p(ge,F),n({global:!0,constructor:!0,forced:!l},{URLSearchParams:ge}),!l&&y(V)){var ye=c(G.has),be=c(G.set),we=function(e){if(S(e)){var t,r=e.body;if(E(r)===F)return t=e.headers?new V(e.headers):new V,ye(t,"content-type")||be(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),_(e,{body:k(0,O(r)),headers:k(0,t)})}return e};if(y(H)&&n({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(e){return H(e,arguments.length>1?we(arguments[1]):{})}}),y(N)){var Ee=function(e){return m(this,U),new N(e,arguments.length>1?we(arguments[1]):{})};U.constructor=Ee,Ee.prototype=U,n({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Ee})}}e.exports={URLSearchParams:ge,getState:D}},4603:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.append),l=o(c.delete),d=o(c.forEach),f=o([].push),h=new s("a=1&a=2&b=3");h.delete("a",1),h.delete("b",void 0),h+""!="a=2"&&n(c,"delete",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=[];d(this,(function(e,t){f(n,{key:t,value:e})})),a(t,1);for(var o,s=i(e),c=i(r),h=0,p=0,v=!1,g=n.length;h<g;)o=n[h++],v||o.key===s?(v=!0,l(this,o.key)):p++;for(;p<g;)(o=n[p++]).key===s&&o.value===c||u(this,o.key,o.value)}),{enumerable:!0,unsafe:!0})},7566:(e,t,r)=>{"use strict";var n=r(6840),o=r(9504),i=r(655),a=r(2812),s=URLSearchParams,c=s.prototype,u=o(c.getAll),l=o(c.has),d=new s("a=1");!d.has("a",2)&&d.has("a",void 0)||n(c,"has",(function(e){var t=arguments.length,r=t<2?void 0:arguments[1];if(t&&void 0===r)return l(this,e);var n=u(this,e);a(t,1);for(var o=i(r),s=0;s<n.length;)if(n[s++]===o)return!0;return!1}),{enumerable:!0,unsafe:!0})},8408:(e,t,r)=>{"use strict";r(8406)},8721:(e,t,r)=>{"use strict";var n=r(3724),o=r(9504),i=r(2106),a=URLSearchParams.prototype,s=o(a.forEach);n&&!("size"in a)&&i(a,"size",{get:function(){var e=0;return s(this,(function(){e++})),e},configurable:!0,enumerable:!0})},2222:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(9039),a=r(2812),s=r(655),c=r(7416),u=o("URL"),l=c&&i((function(){u.canParse()})),d=i((function(){return 1!==u.canParse.length}));n({target:"URL",stat:!0,forced:!l||d},{canParse:function(e){var t=a(arguments.length,1),r=s(e),n=t<2||void 0===arguments[1]?void 0:s(arguments[1]);try{return!!new u(r,n)}catch(e){return!1}}})},5806:(e,t,r)=>{"use strict";r(7764);var n,o=r(6518),i=r(3724),a=r(7416),s=r(4576),c=r(6080),u=r(9504),l=r(6840),d=r(2106),f=r(679),h=r(9297),p=r(4213),v=r(7916),g=r(7680),m=r(8183).codeAt,y=r(6098),b=r(655),w=r(687),E=r(2812),C=r(8406),S=r(1181),O=S.set,_=S.getterFor("URL"),k=C.URLSearchParams,P=C.getState,A=s.URL,M=s.TypeError,T=s.parseInt,x=Math.floor,R=Math.pow,L=u("".charAt),F=u(/./.exec),j=u([].join),I=u(1..toString),D=u([].pop),B=u([].push),H=u("".replace),N=u([].shift),V=u("".split),U=u("".slice),G=u("".toLowerCase),z=u([].unshift),q="Invalid scheme",K="Invalid host",W="Invalid port",J=/[a-z]/i,Y=/[\d+-.a-z]/i,Q=/\d/,$=/^0x/i,X=/^[0-7]+$/,Z=/^\d+$/,ee=/^[\da-f]+$/i,te=/[\0\t\n\r #%/:<>?@[\\\]^|]/,re=/[\0\t\n\r #/:<>?@[\\\]^|]/,ne=/^[\u0000-\u0020]+/,oe=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ie=/[\t\n\r]/g,ae=function(e){var t,r,n,o;if("number"==typeof e){for(t=[],r=0;r<4;r++)z(t,e%256),e=x(e/256);return j(t,".")}if("object"==typeof e){for(t="",n=function(e){for(var t=null,r=1,n=null,o=0,i=0;i<8;i++)0!==e[i]?(o>r&&(t=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:t}(e),r=0;r<8;r++)o&&0===e[r]||(o&&(o=!1),n===r?(t+=r?":":"::",o=!0):(t+=I(e[r],16),r<7&&(t+=":")));return"["+t+"]"}return e},se={},ce=p({},se,{" ":1,'"':1,"<":1,">":1,"`":1}),ue=p({},ce,{"#":1,"?":1,"{":1,"}":1}),le=p({},ue,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),de=function(e,t){var r=m(e,0);return r>32&&r<127&&!h(t,e)?e:encodeURIComponent(e)},fe={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var r;return 2===e.length&&F(J,L(e,0))&&(":"===(r=L(e,1))||!t&&"|"===r)},pe=function(e){var t;return e.length>1&&he(U(e,0,2))&&(2===e.length||"/"===(t=L(e,2))||"\\"===t||"?"===t||"#"===t)},ve=function(e){return"."===e||"%2e"===G(e)},ge={},me={},ye={},be={},we={},Ee={},Ce={},Se={},Oe={},_e={},ke={},Pe={},Ae={},Me={},Te={},xe={},Re={},Le={},Fe={},je={},Ie={},De=function(e,t,r){var n,o,i,a=b(e);if(t){if(o=this.parse(a))throw new M(o);this.searchParams=null}else{if(void 0!==r&&(n=new De(r,!0)),o=this.parse(a,null,n))throw new M(o);(i=P(new k)).bindURL(this),this.searchParams=i}};De.prototype={type:"URL",parse:function(e,t,r){var o,i,a,s,c,u=this,l=t||ge,d=0,f="",p=!1,m=!1,y=!1;for(e=b(e),t||(u.scheme="",u.username="",u.password="",u.host=null,u.port=null,u.path=[],u.query=null,u.fragment=null,u.cannotBeABaseURL=!1,e=H(e,ne,""),e=H(e,oe,"$1")),e=H(e,ie,""),o=v(e);d<=o.length;){switch(i=o[d],l){case ge:if(!i||!F(J,i)){if(t)return q;l=ye;continue}f+=G(i),l=me;break;case me:if(i&&(F(Y,i)||"+"===i||"-"===i||"."===i))f+=G(i);else{if(":"!==i){if(t)return q;f="",l=ye,d=0;continue}if(t&&(u.isSpecial()!==h(fe,f)||"file"===f&&(u.includesCredentials()||null!==u.port)||"file"===u.scheme&&!u.host))return;if(u.scheme=f,t)return void(u.isSpecial()&&fe[u.scheme]===u.port&&(u.port=null));f="","file"===u.scheme?l=Me:u.isSpecial()&&r&&r.scheme===u.scheme?l=be:u.isSpecial()?l=Se:"/"===o[d+1]?(l=we,d++):(u.cannotBeABaseURL=!0,B(u.path,""),l=Fe)}break;case ye:if(!r||r.cannotBeABaseURL&&"#"!==i)return q;if(r.cannotBeABaseURL&&"#"===i){u.scheme=r.scheme,u.path=g(r.path),u.query=r.query,u.fragment="",u.cannotBeABaseURL=!0,l=Ie;break}l="file"===r.scheme?Me:Ee;continue;case be:if("/"!==i||"/"!==o[d+1]){l=Ee;continue}l=Oe,d++;break;case we:if("/"===i){l=_e;break}l=Le;continue;case Ee:if(u.scheme=r.scheme,i===n)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query;else if("/"===i||"\\"===i&&u.isSpecial())l=Ce;else if("?"===i)u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query="",l=je;else{if("#"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.path.length--,l=Le;continue}u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie}break;case Ce:if(!u.isSpecial()||"/"!==i&&"\\"!==i){if("/"!==i){u.username=r.username,u.password=r.password,u.host=r.host,u.port=r.port,l=Le;continue}l=_e}else l=Oe;break;case Se:if(l=Oe,"/"!==i||"/"!==L(f,d+1))continue;d++;break;case Oe:if("/"!==i&&"\\"!==i){l=_e;continue}break;case _e:if("@"===i){p&&(f="%40"+f),p=!0,a=v(f);for(var w=0;w<a.length;w++){var E=a[w];if(":"!==E||y){var C=de(E,le);y?u.password+=C:u.username+=C}else y=!0}f=""}else if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(p&&""===f)return"Invalid authority";d-=v(f).length+1,f="",l=ke}else f+=i;break;case ke:case Pe:if(t&&"file"===u.scheme){l=xe;continue}if(":"!==i||m){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()){if(u.isSpecial()&&""===f)return K;if(t&&""===f&&(u.includesCredentials()||null!==u.port))return;if(s=u.parseHost(f))return s;if(f="",l=Re,t)return;continue}"["===i?m=!0:"]"===i&&(m=!1),f+=i}else{if(""===f)return K;if(s=u.parseHost(f))return s;if(f="",l=Ae,t===Pe)return}break;case Ae:if(!F(Q,i)){if(i===n||"/"===i||"?"===i||"#"===i||"\\"===i&&u.isSpecial()||t){if(""!==f){var S=T(f,10);if(S>65535)return W;u.port=u.isSpecial()&&S===fe[u.scheme]?null:S,f=""}if(t)return;l=Re;continue}return W}f+=i;break;case Me:if(u.scheme="file","/"===i||"\\"===i)l=Te;else{if(!r||"file"!==r.scheme){l=Le;continue}switch(i){case n:u.host=r.host,u.path=g(r.path),u.query=r.query;break;case"?":u.host=r.host,u.path=g(r.path),u.query="",l=je;break;case"#":u.host=r.host,u.path=g(r.path),u.query=r.query,u.fragment="",l=Ie;break;default:pe(j(g(o,d),""))||(u.host=r.host,u.path=g(r.path),u.shortenPath()),l=Le;continue}}break;case Te:if("/"===i||"\\"===i){l=xe;break}r&&"file"===r.scheme&&!pe(j(g(o,d),""))&&(he(r.path[0],!0)?B(u.path,r.path[0]):u.host=r.host),l=Le;continue;case xe:if(i===n||"/"===i||"\\"===i||"?"===i||"#"===i){if(!t&&he(f))l=Le;else if(""===f){if(u.host="",t)return;l=Re}else{if(s=u.parseHost(f))return s;if("localhost"===u.host&&(u.host=""),t)return;f="",l=Re}continue}f+=i;break;case Re:if(u.isSpecial()){if(l=Le,"/"!==i&&"\\"!==i)continue}else if(t||"?"!==i)if(t||"#"!==i){if(i!==n&&(l=Le,"/"!==i))continue}else u.fragment="",l=Ie;else u.query="",l=je;break;case Le:if(i===n||"/"===i||"\\"===i&&u.isSpecial()||!t&&("?"===i||"#"===i)){if(".."===(c=G(c=f))||"%2e."===c||".%2e"===c||"%2e%2e"===c?(u.shortenPath(),"/"===i||"\\"===i&&u.isSpecial()||B(u.path,"")):ve(f)?"/"===i||"\\"===i&&u.isSpecial()||B(u.path,""):("file"===u.scheme&&!u.path.length&&he(f)&&(u.host&&(u.host=""),f=L(f,0)+":"),B(u.path,f)),f="","file"===u.scheme&&(i===n||"?"===i||"#"===i))for(;u.path.length>1&&""===u.path[0];)N(u.path);"?"===i?(u.query="",l=je):"#"===i&&(u.fragment="",l=Ie)}else f+=de(i,ue);break;case Fe:"?"===i?(u.query="",l=je):"#"===i?(u.fragment="",l=Ie):i!==n&&(u.path[0]+=de(i,se));break;case je:t||"#"!==i?i!==n&&("'"===i&&u.isSpecial()?u.query+="%27":u.query+="#"===i?"%23":de(i,se)):(u.fragment="",l=Ie);break;case Ie:i!==n&&(u.fragment+=de(i,ce))}d++}},parseHost:function(e){var t,r,n;if("["===L(e,0)){if("]"!==L(e,e.length-1))return K;if(t=function(e){var t,r,n,o,i,a,s,c=[0,0,0,0,0,0,0,0],u=0,l=null,d=0,f=function(){return L(e,d)};if(":"===f()){if(":"!==L(e,1))return;d+=2,l=++u}for(;f();){if(8===u)return;if(":"!==f()){for(t=r=0;r<4&&F(ee,f());)t=16*t+T(f(),16),d++,r++;if("."===f()){if(0===r)return;if(d-=r,u>6)return;for(n=0;f();){if(o=null,n>0){if(!("."===f()&&n<4))return;d++}if(!F(Q,f()))return;for(;F(Q,f());){if(i=T(f(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;d++}c[u]=256*c[u]+o,2!=++n&&4!==n||u++}if(4!==n)return;break}if(":"===f()){if(d++,!f())return}else if(f())return;c[u++]=t}else{if(null!==l)return;d++,l=++u}}if(null!==l)for(a=u-l,u=7;0!==u&&a>0;)s=c[u],c[u--]=c[l+a-1],c[l+--a]=s;else if(8!==u)return;return c}(U(e,1,-1)),!t)return K;this.host=t}else if(this.isSpecial()){if(e=y(e),F(te,e))return K;if(t=function(e){var t,r,n,o,i,a,s,c=V(e,".");if(c.length&&""===c[c.length-1]&&c.length--,(t=c.length)>4)return e;for(r=[],n=0;n<t;n++){if(""===(o=c[n]))return e;if(i=10,o.length>1&&"0"===L(o,0)&&(i=F($,o)?16:8,o=U(o,8===i?1:2)),""===o)a=0;else{if(!F(10===i?Z:8===i?X:ee,o))return e;a=T(o,i)}B(r,a)}for(n=0;n<t;n++)if(a=r[n],n===t-1){if(a>=R(256,5-t))return null}else if(a>255)return null;for(s=D(r),n=0;n<r.length;n++)s+=r[n]*R(256,3-n);return s}(e),null===t)return K;this.host=t}else{if(F(re,e))return K;for(t="",r=v(e),n=0;n<r.length;n++)t+=de(r[n],se);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"===this.scheme},includesCredentials:function(){return""!==this.username||""!==this.password},isSpecial:function(){return h(fe,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"===this.scheme&&1===t&&he(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,r=e.username,n=e.password,o=e.host,i=e.port,a=e.path,s=e.query,c=e.fragment,u=t+":";return null!==o?(u+="//",e.includesCredentials()&&(u+=r+(n?":"+n:"")+"@"),u+=ae(o),null!==i&&(u+=":"+i)):"file"===t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+j(a,"/"):"",null!==s&&(u+="?"+s),null!==c&&(u+="#"+c),u},setHref:function(e){var t=this.parse(e);if(t)throw new M(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"===e)try{return new Be(e.path[0]).origin}catch(e){return"null"}return"file"!==e&&this.isSpecial()?e+"://"+ae(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(b(e)+":",ge)},getUsername:function(){return this.username},setUsername:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var r=0;r<t.length;r++)this.username+=de(t[r],le)}},getPassword:function(){return this.password},setPassword:function(e){var t=v(b(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var r=0;r<t.length;r++)this.password+=de(t[r],le)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?ae(e):ae(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,ke)},getHostname:function(){var e=this.host;return null===e?"":ae(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Pe)},getPort:function(){var e=this.port;return null===e?"":b(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""===(e=b(e))?this.port=null:this.parse(e,Ae))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+j(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Re))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""===(e=b(e))?this.query=null:("?"===L(e,0)&&(e=U(e,1)),this.query="",this.parse(e,je)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!==(e=b(e))?("#"===L(e,0)&&(e=U(e,1)),this.fragment="",this.parse(e,Ie)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Be=function(e){var t=f(this,He),r=E(arguments.length,1)>1?arguments[1]:void 0,n=O(t,new De(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},He=Be.prototype,Ne=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};if(i&&(d(He,"href",Ne("serialize","setHref")),d(He,"origin",Ne("getOrigin")),d(He,"protocol",Ne("getProtocol","setProtocol")),d(He,"username",Ne("getUsername","setUsername")),d(He,"password",Ne("getPassword","setPassword")),d(He,"host",Ne("getHost","setHost")),d(He,"hostname",Ne("getHostname","setHostname")),d(He,"port",Ne("getPort","setPort")),d(He,"pathname",Ne("getPathname","setPathname")),d(He,"search",Ne("getSearch","setSearch")),d(He,"searchParams",Ne("getSearchParams")),d(He,"hash",Ne("getHash","setHash"))),l(He,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),l(He,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),A){var Ve=A.createObjectURL,Ue=A.revokeObjectURL;Ve&&l(Be,"createObjectURL",c(Ve,A)),Ue&&l(Be,"revokeObjectURL",c(Ue,A))}w(Be,"URL"),o({global:!0,constructor:!0,forced:!a,sham:!i},{URL:Be})},3296:(e,t,r)=>{"use strict";r(5806)},8162:(e,t,r)=>{"use strict";var n=r(6518),o=r(7751),i=r(2812),a=r(655),s=r(7416),c=o("URL");n({target:"URL",stat:!0,forced:!s},{parse:function(e){var t=i(arguments.length,1),r=a(e),n=t<2||void 0===arguments[1]?void 0:a(arguments[1]);try{return new c(r,n)}catch(e){return null}}})},7208:(e,t,r)=>{"use strict";var n=r(6518),o=r(9565);n({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return o(URL.prototype.toString,this)}})},6612:(e,t,r)=>{"use strict";var n=r(3609);e.exports=n},8418:(e,t,r)=>{"use strict";var n=r(8473);e.exports=n},2473:(e,t,r)=>{"use strict";var n=r(6398);r(2953),e.exports=n},2841:(e,t,r)=>{"use strict";var n=r(8367);e.exports=n},6811:(e,t,r)=>{"use strict";r(8408),r(4603),r(7566),r(8721);var n=r(9167);e.exports=n.URLSearchParams},8367:(e,t,r)=>{"use strict";r(6811),r(3296),r(2222),r(8162),r(7208);var n=r(9167);e.exports=n.URL}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n].call(i.exports,i,i.exports,r),i.exports}return r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(8156)})()));
2
2
  //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxJQUVsSFksU0FBVSxDQUNOLElBQUlaLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQUksSUFBSUEsV0FBVyxHQUFJLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFXLEdBQ3BKLElBQUlBLFdBQVcsR0FBSSxJQUFJQSxXQUFX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QU8sV0FFN0RGLE9BQU9DLGVBQWVOLEVBQVMsYUFBYyxDQUFFTyxPQUFPLEdBQU8sRUNGcENndkQsRUFBb0IsSyIsInNvdXJjZXMiOlsid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9iYXNlNjJzdHIvZGlzdC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvZXhwaXJlLXNldC9saWIvc3JjL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2dsb2JhbHRoaXMvaW1wbGVtZW50YXRpb24uYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9nbG9iYWx0aGlzL3BvbHlmaWxsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL29mZmljZXNkay1icm9hZGNhc3QtY2hhbm5lbC9kaXN0L29mZmljZXNkay1icm9hZGNhc3QtY2hhbm5lbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvcHJveHktcG9seWZpbGwvc3JjL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3Byb3h5LXBvbHlmaWxsL3NyYy9wcm94eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy90aW55LWVtaXR0ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvT2ZmaWNlU0RLLmZhY2FkZS50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9PZmZpY2VTREsuZmFjYWRlLnR5cGVzLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL09mZmljZVNESy5oZWFkZXJCYXJzLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL09mZmljZVNESy50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9hc3NlcnQudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9zcmMvY29ubmVjdC50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy9wcmVsb2FkLnRzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vc3JjL3R5cGVzL0Nvbm5lY3RWMi50cyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL3NyYy90eXBlcy9FbXB0eVBhZ2UudHMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3JuZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcmVnZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3ZhbGlkYXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9zdHJpbmdpZnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3YxLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9wYXJzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjM1LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9tZDUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3YzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci92NC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvc2hhMS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL25pbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L0FQSUFkYXB0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC9GaWxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1qcy1zZGstc2hhcmVkL2Rpc3QvZXZlbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQvZGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy93ZWJvZmZpY2UtanMtc2RrLXNoYXJlZC9kaXN0L3R5cGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1zdGFydHBhcmFtcy9kaXN0L1N0YXJ0UGFyYW1zLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1zdGFydHBhcmFtcy9kaXN0L2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL3dlYm9mZmljZS1zdGFydHBhcmFtcy9ub2RlX21vZHVsZXMvaXMtcGxhaW4tb2JqL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvYWN0dWFsL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvYWN0dWFsL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9hY3R1YWwvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2FjdHVhbC91cmwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lcy9hcnJheS9pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lcy9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZmVhdHVyZXMvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mZWF0dXJlcy9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZmVhdHVyZXMvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ZlYXR1cmVzL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2Z1bGwvYXJyYXkvaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mdWxsL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mdWxsL3Byb21pc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9mdWxsL3VybC9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLWluc3RhbmNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mcm9tLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNvcnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtcHJvdG90eXBlLWdldHRlci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW5zLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20tdG9rZW4tbGlzdC1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW50cnktdW5iaW5kLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtaW9zLXBlYmJsZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1pb3MuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtbm9kZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy13ZWJvcy13ZWJraXQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnZpcm9ubWVudC12OC12ZXJzaW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vudmlyb25tZW50LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWNsZWFyLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbGFibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcy1jbGF1c2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC10aGlzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW5zdGFsbC1lcnJvci1jYXVzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY2FsbGFibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvci1jcmVhdGUtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItZGVmaW5lLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9tYWtlLWJ1aWx0LWluLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21hdGgtdHJ1bmMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbWljcm90YXNrLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm9ybWFsaXplLXN0cmluZy1hcmd1bWVudC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtYXNzaWduLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3duLWtleXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wZXJmb3JtLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9xdWV1ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2FmZS1nZXQtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXNwZWNpZXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQtc3RvcmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3ltYm9sLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90YXNrLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92OC1wcm90b3R5cGUtZGVmaW5lLWJ1Zy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbi5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5hbGwuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuYW55LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNhdGNoLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmFjZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5yZWplY3QuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2UucmVzb2x2ZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS50cnkuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5mcm9tLWNvZGUtcG9pbnQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LmFnZ3JlZ2F0ZS1lcnJvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2UuYWxsLXNldHRsZWQuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLmFueS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXNuZXh0LnByb21pc2UudHJ5LmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lc25leHQucHJvbWlzZS53aXRoLXJlc29sdmVycy5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuZGVsZXRlLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuaGFzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5zaXplLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy93ZWIudXJsLmNhbi1wYXJzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC5wYXJzZS5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLnVybC50by1qc29uLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc3RhYmxlL2FycmF5L2luY2x1ZGVzLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvc3RhYmxlL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9zdGFibGUvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL3N0YWJsZS91cmwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy93ZWIvdXJsLXNlYXJjaC1wYXJhbXMuanMiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy93ZWIvdXJsLmpzIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL1dlYk9mZmljZUpTU0RLL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vV2ViT2ZmaWNlSlNTREsvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9XZWJPZmZpY2VKU1NESy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiV2ViT2ZmaWNlSlNTREtcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiV2ViT2ZmaWNlSlNTREtcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIEJhc2U2MlN0ciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcclxuICAgIGZ1bmN0aW9uIEJhc2U2MlN0cihhbHBoYWJldCkge1xyXG4gICAgICAgIHRoaXMuYWxwaGFiZXQgPSBhbHBoYWJldDtcclxuICAgICAgICB0aGlzLmxvb2t1cCA9IHRoaXMuY3JlYXRlTG9va3VwVGFibGUoKTtcclxuICAgIH1cclxuICAgIEJhc2U2MlN0ci5nZXRCeXRlcyA9IGZ1bmN0aW9uIChzdHIpIHtcclxuICAgICAgICB2YXIgYnl0ZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgY2hhciA9IHN0ci5jaGFyQ29kZUF0KGkpO1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBieXRlcy5wdXNoKGNoYXIgJiAweEZGKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGJ5dGVzO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5nZXRTdHJpbmcgPSBmdW5jdGlvbiAoYXJyKSB7XHJcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkodGhpcywgYXJyKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS4gRGVmYXVsdHMgdG8gdGhlIEdNUC1zdHlsZSBjaGFyYWN0ZXIgc2V0LlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLmNyZWF0ZUluc3RhbmNlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUluc3RhbmNlV2l0aEdtcENoYXJhY3RlclNldCgpO1xyXG4gICAgfTtcclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHtAbGluayBCYXNlNjJ9IGluc3RhbmNlIHVzaW5nIHRoZSBHTVAtc3R5bGUgY2hhcmFjdGVyIHNldC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5jcmVhdGVJbnN0YW5jZVdpdGhHbXBDaGFyYWN0ZXJTZXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlNjJTdHIoQmFzZTYyU3RyLkNoYXJhY3RlclNldHMuR01QKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgYSB7QGxpbmsgQmFzZTYyfSBpbnN0YW5jZSB1c2luZyB0aGUgaW52ZXJ0ZWQgY2hhcmFjdGVyIHNldC5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIGEge0BsaW5rIEJhc2U2Mn0gaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5jcmVhdGVJbnN0YW5jZVdpdGhJbnZlcnRlZENoYXJhY3RlclNldCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJhc2U2MlN0cihCYXNlNjJTdHIuQ2hhcmFjdGVyU2V0cy5JTlZFUlRFRCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBVc2VzIHRoZSBlbGVtZW50cyBvZiBhIGJ5dGUgYXJyYXkgYXMgaW5kaWNlcyB0byBhIGRpY3Rpb25hcnkgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzXHJcbiAgICAgKiBpbiBmb3JtIG9mIGEgYnl0ZSBhcnJheS5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uIChpbmRpY2VzLCBkaWN0aW9uYXJ5KSB7XHJcbiAgICAgICAgdmFyIHRyYW5zbGF0aW9uID0gW107XHJcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBpbmRpY2VzXzEgPSBpbmRpY2VzOyBfaSA8IGluZGljZXNfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgdmFyIGluZGljZXNpID0gaW5kaWNlc18xW19pXTtcclxuICAgICAgICAgICAgdHJhbnNsYXRpb24ucHVzaChkaWN0aW9uYXJ5W2luZGljZXNpXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnRzIGEgYnl0ZSBhcnJheSBmcm9tIGEgc291cmNlIGJhc2UgdG8gYSB0YXJnZXQgYmFzZSB1c2luZyB0aGUgYWxwaGFiZXQuXHJcbiAgICAgKi9cclxuICAgIEJhc2U2MlN0ci5jb252ZXJ0ID0gZnVuY3Rpb24gKG1lc3NhZ2UsIHNvdXJjZUJhc2UsIHRhcmdldEJhc2UpIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBUaGlzIGFsZ29yaXRobSBpcyBpbnNwaXJlZCBieTogaHR0cDovL2NvZGVnb2xmLnN0YWNrZXhjaGFuZ2UuY29tL2EvMjE2NzJcclxuICAgICAgICAgKi9cclxuICAgICAgICB2YXIgb3V0ID0gW107XHJcbiAgICAgICAgdmFyIHNvdXJjZSA9IG1lc3NhZ2U7XHJcbiAgICAgICAgd2hpbGUgKHNvdXJjZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBxdW90aWVudCA9IFtdO1xyXG4gICAgICAgICAgICB2YXIgcmVtYWluZGVyID0gMDtcclxuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBzb3VyY2VfMSA9IHNvdXJjZTsgX2kgPCBzb3VyY2VfMS5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIHZhciBzb3VyY2VpID0gc291cmNlXzFbX2ldO1xyXG4gICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgICAgIHZhciBhY2N1bXVsYXRvciA9IChzb3VyY2VpICYgMHhGRikgKyByZW1haW5kZXIgKiBzb3VyY2VCYXNlO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpZ2l0ID0gKGFjY3VtdWxhdG9yIC0gKGFjY3VtdWxhdG9yICUgdGFyZ2V0QmFzZSkpIC8gdGFyZ2V0QmFzZTtcclxuICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IGFjY3VtdWxhdG9yICUgdGFyZ2V0QmFzZTtcclxuICAgICAgICAgICAgICAgIGlmIChxdW90aWVudC5sZW5ndGggPiAwIHx8IGRpZ2l0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHF1b3RpZW50LnB1c2goZGlnaXQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG91dC5wdXNoKHJlbWFpbmRlcik7XHJcbiAgICAgICAgICAgIHNvdXJjZSA9IHF1b3RpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYWQgb3V0cHV0IHdpdGggemVyb2VzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm9lcyBpbiB0aGUgbWVzc2FnZVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZS5sZW5ndGggLSAxICYmIG1lc3NhZ2VbaV0gPT09IDA7IGkrKykge1xyXG4gICAgICAgICAgICBvdXQucHVzaCgwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG91dC5yZXZlcnNlKCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBFbmNvZGVzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgaW4gQmFzZTYyIGVuY29kaW5nLlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIGEgYnl0ZSBzZXF1ZW5jZS5cclxuICAgICAqIEByZXR1cm4gYSBzZXF1ZW5jZSBvZiBCYXNlNjItZW5jb2RlZCBieXRlcy5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xyXG4gICAgICAgIHZhciBpbmRpY2VzID0gQmFzZTYyU3RyLmNvbnZlcnQobWVzc2FnZSwgQmFzZTYyU3RyLlNUQU5EQVJEX0JBU0UsIEJhc2U2MlN0ci5UQVJHRVRfQkFTRSk7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci50cmFuc2xhdGUoaW5kaWNlcywgdGhpcy5hbHBoYWJldCk7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBEZWNvZGVzIGEgc2VxdWVuY2Ugb2YgQmFzZTYyLWVuY29kZWQgYnl0ZXMuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVuY29kZWQgYSBzZXF1ZW5jZSBvZiBCYXNlNjItZW5jb2RlZCBieXRlcy5cclxuICAgICAqIEByZXR1cm4gYSBieXRlIHNlcXVlbmNlLlxyXG4gICAgICovXHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIChlbmNvZGVkKSB7XHJcbiAgICAgICAgdmFyIHByZXBhcmVkID0gQmFzZTYyU3RyLnRyYW5zbGF0ZShlbmNvZGVkLCB0aGlzLmxvb2t1cCk7XHJcbiAgICAgICAgcmV0dXJuIEJhc2U2MlN0ci5jb252ZXJ0KHByZXBhcmVkLCBCYXNlNjJTdHIuVEFSR0VUX0JBU0UsIEJhc2U2MlN0ci5TVEFOREFSRF9CQVNFKTtcclxuICAgIH07XHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmVuY29kZVN0ciA9IGZ1bmN0aW9uIChpbnB1dCkge1xyXG4gICAgICAgIHJldHVybiBCYXNlNjJTdHIuZ2V0U3RyaW5nKHRoaXMuZW5jb2RlKEJhc2U2MlN0ci5nZXRCeXRlcyhpbnB1dCkpKTtcclxuICAgIH07XHJcbiAgICBCYXNlNjJTdHIucHJvdG90eXBlLmRlY29kZVN0ciA9IGZ1bmN0aW9uIChpbnB1dCkge1xyXG4gICAgICAgIHJldHVybiBCYXNlNjJTdHIuZ2V0U3RyaW5nKHRoaXMuZGVjb2RlKEJhc2U2MlN0ci5nZXRCeXRlcyhpbnB1dCkpKTtcclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZXMgdGhlIGxvb2t1cCB0YWJsZSBmcm9tIGNoYXJhY3RlciB0byBpbmRleCBvZiBjaGFyYWN0ZXIgaW4gY2hhcmFjdGVyIHNldC5cclxuICAgICAqL1xyXG4gICAgQmFzZTYyU3RyLnByb3RvdHlwZS5jcmVhdGVMb29rdXBUYWJsZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbG9va3VwID0gbmV3IEFycmF5KDI1Nik7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykge1xyXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICBsb29rdXBbdGhpcy5hbHBoYWJldFtpXV0gPSAoaSAmIDB4RkYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbG9va3VwO1xyXG4gICAgfTtcclxuICAgIEJhc2U2MlN0ci5DaGFyYWN0ZXJTZXRzID0ge1xyXG4gICAgICAgIEdNUDogW1xyXG4gICAgICAgICAgICAnMCcuY2hhckNvZGVBdCgwKSwgJzEnLmNoYXJDb2RlQXQoMCksICcyJy5jaGFyQ29kZUF0KDApLCAnMycuY2hhckNvZGVBdCgwKSwgJzQnLmNoYXJDb2RlQXQoMCksICc1Jy5jaGFyQ29kZUF0KDApLCAnNicuY2hhckNvZGVBdCgwKSwgJzcnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICc4Jy5jaGFyQ29kZUF0KDApLCAnOScuY2hhckNvZGVBdCgwKSwgJ0EnLmNoYXJDb2RlQXQoMCksICdCJy5jaGFyQ29kZUF0KDApLCAnQycuY2hhckNvZGVBdCgwKSwgJ0QnLmNoYXJDb2RlQXQoMCksICdFJy5jaGFyQ29kZUF0KDApLCAnRicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ0cnLmNoYXJDb2RlQXQoMCksICdIJy5jaGFyQ29kZUF0KDApLCAnSScuY2hhckNvZGVBdCgwKSwgJ0onLmNoYXJDb2RlQXQoMCksICdLJy5jaGFyQ29kZUF0KDApLCAnTCcuY2hhckNvZGVBdCgwKSwgJ00nLmNoYXJDb2RlQXQoMCksICdOJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnTycuY2hhckNvZGVBdCgwKSwgJ1AnLmNoYXJDb2RlQXQoMCksICdRJy5jaGFyQ29kZUF0KDApLCAnUicuY2hhckNvZGVBdCgwKSwgJ1MnLmNoYXJDb2RlQXQoMCksICdUJy5jaGFyQ29kZUF0KDApLCAnVScuY2hhckNvZGVBdCgwKSwgJ1YnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdXJy5jaGFyQ29kZUF0KDApLCAnWCcuY2hhckNvZGVBdCgwKSwgJ1knLmNoYXJDb2RlQXQoMCksICdaJy5jaGFyQ29kZUF0KDApLCAnYScuY2hhckNvZGVBdCgwKSwgJ2InLmNoYXJDb2RlQXQoMCksICdjJy5jaGFyQ29kZUF0KDApLCAnZCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ2UnLmNoYXJDb2RlQXQoMCksICdmJy5jaGFyQ29kZUF0KDApLCAnZycuY2hhckNvZGVBdCgwKSwgJ2gnLmNoYXJDb2RlQXQoMCksICdpJy5jaGFyQ29kZUF0KDApLCAnaicuY2hhckNvZGVBdCgwKSwgJ2snLmNoYXJDb2RlQXQoMCksICdsJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnbScuY2hhckNvZGVBdCgwKSwgJ24nLmNoYXJDb2RlQXQoMCksICdvJy5jaGFyQ29kZUF0KDApLCAncCcuY2hhckNvZGVBdCgwKSwgJ3EnLmNoYXJDb2RlQXQoMCksICdyJy5jaGFyQ29kZUF0KDApLCAncycuY2hhckNvZGVBdCgwKSwgJ3QnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICd1Jy5jaGFyQ29kZUF0KDApLCAndicuY2hhckNvZGVBdCgwKSwgJ3cnLmNoYXJDb2RlQXQoMCksICd4Jy5jaGFyQ29kZUF0KDApLCAneScuY2hhckNvZGVBdCgwKSwgJ3onLmNoYXJDb2RlQXQoMClcclxuICAgICAgICBdLFxyXG4gICAgICAgIElOVkVSVEVEOiBbXHJcbiAgICAgICAgICAgICcwJy5jaGFyQ29kZUF0KDApLCAnMScuY2hhckNvZGVBdCgwKSwgJzInLmNoYXJDb2RlQXQoMCksICczJy5jaGFyQ29kZUF0KDApLCAnNCcuY2hhckNvZGVBdCgwKSwgJzUnLmNoYXJDb2RlQXQoMCksICc2Jy5jaGFyQ29kZUF0KDApLCAnNycuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJzgnLmNoYXJDb2RlQXQoMCksICc5Jy5jaGFyQ29kZUF0KDApLCAnYScuY2hhckNvZGVBdCgwKSwgJ2InLmNoYXJDb2RlQXQoMCksICdjJy5jaGFyQ29kZUF0KDApLCAnZCcuY2hhckNvZGVBdCgwKSwgJ2UnLmNoYXJDb2RlQXQoMCksICdmJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnZycuY2hhckNvZGVBdCgwKSwgJ2gnLmNoYXJDb2RlQXQoMCksICdpJy5jaGFyQ29kZUF0KDApLCAnaicuY2hhckNvZGVBdCgwKSwgJ2snLmNoYXJDb2RlQXQoMCksICdsJy5jaGFyQ29kZUF0KDApLCAnbScuY2hhckNvZGVBdCgwKSwgJ24nLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdvJy5jaGFyQ29kZUF0KDApLCAncCcuY2hhckNvZGVBdCgwKSwgJ3EnLmNoYXJDb2RlQXQoMCksICdyJy5jaGFyQ29kZUF0KDApLCAncycuY2hhckNvZGVBdCgwKSwgJ3QnLmNoYXJDb2RlQXQoMCksICd1Jy5jaGFyQ29kZUF0KDApLCAndicuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ3cnLmNoYXJDb2RlQXQoMCksICd4Jy5jaGFyQ29kZUF0KDApLCAneScuY2hhckNvZGVBdCgwKSwgJ3onLmNoYXJDb2RlQXQoMCksICdBJy5jaGFyQ29kZUF0KDApLCAnQicuY2hhckNvZGVBdCgwKSwgJ0MnLmNoYXJDb2RlQXQoMCksICdEJy5jaGFyQ29kZUF0KDApLFxyXG4gICAgICAgICAgICAnRScuY2hhckNvZGVBdCgwKSwgJ0YnLmNoYXJDb2RlQXQoMCksICdHJy5jaGFyQ29kZUF0KDApLCAnSCcuY2hhckNvZGVBdCgwKSwgJ0knLmNoYXJDb2RlQXQoMCksICdKJy5jaGFyQ29kZUF0KDApLCAnSycuY2hhckNvZGVBdCgwKSwgJ0wnLmNoYXJDb2RlQXQoMCksXHJcbiAgICAgICAgICAgICdNJy5jaGFyQ29kZUF0KDApLCAnTicuY2hhckNvZGVBdCgwKSwgJ08nLmNoYXJDb2RlQXQoMCksICdQJy5jaGFyQ29kZUF0KDApLCAnUScuY2hhckNvZGVBdCgwKSwgJ1InLmNoYXJDb2RlQXQoMCksICdTJy5jaGFyQ29kZUF0KDApLCAnVCcuY2hhckNvZGVBdCgwKSxcclxuICAgICAgICAgICAgJ1UnLmNoYXJDb2RlQXQoMCksICdWJy5jaGFyQ29kZUF0KDApLCAnVycuY2hhckNvZGVBdCgwKSwgJ1gnLmNoYXJDb2RlQXQoMCksICdZJy5jaGFyQ29kZUF0KDApLCAnWicuY2hhckNvZGVBdCgwKVxyXG4gICAgICAgIF1cclxuICAgIH07XHJcbiAgICBCYXNlNjJTdHIuU1RBTkRBUkRfQkFTRSA9IDI1NjtcclxuICAgIEJhc2U2MlN0ci5UQVJHRVRfQkFTRSA9IDYyO1xyXG4gICAgcmV0dXJuIEJhc2U2MlN0cjtcclxufSgpKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gQmFzZTYyU3RyO1xyXG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qXG5Db3B5cmlnaHQgMjAyMCBTb3J1bm9tZVxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5jb25zdCBHQ19ERUxBWSA9IDU7XG5jbGFzcyBFeHBpcmVTZXQge1xuICAgIGNvbnN0cnVjdG9yKHRpbWVvdXQsIGdjRGVsYXkpIHtcbiAgICAgICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDtcbiAgICAgICAgdGhpcy5kYiA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5uZXh0R2MgPSBudWxsO1xuICAgICAgICB0aGlzLmdjRGVsYXkgPSBnY0RlbGF5IHx8IEdDX0RFTEFZO1xuICAgIH1cbiAgICBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGIuc2l6ZTtcbiAgICB9XG4gICAgZ2V0IGFsbCgpIHtcbiAgICAgICAgY29uc3QgcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5kYi5mb3JFYWNoKChfLCB2KSA9PiB7XG4gICAgICAgICAgICBzLmFkZCh2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cbiAgICBhZGQodmFsdWUpIHtcbiAgICAgICAgdGhpcy5kYi5zZXQodmFsdWUsIERhdGUubm93KCkgKyB0aGlzLnRpbWVvdXQpO1xuICAgICAgICB0aGlzLnNjaGVkdWxlR2MoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGhhcyh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYi5oYXModmFsdWUpO1xuICAgIH1cbiAgICBkZWxldGUodmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuZGIuaGFzKHZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy5kYi5kZWxldGUodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZUdjKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBnYygpIHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5kYi5mb3JFYWNoKCh0LCB2KSA9PiB7XG4gICAgICAgICAgICBpZiAodCA8IG5vdykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGIuZGVsZXRlKHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uZXh0R2MgPSBudWxsO1xuICAgICAgICB0aGlzLnNjaGVkdWxlR2MoKTtcbiAgICB9XG4gICAgc2NoZWR1bGVHYyhmb3JjZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChmb3JjZSAmJiB0aGlzLm5leHRHYykge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubmV4dEdjKTtcbiAgICAgICAgICAgIHRoaXMubmV4dEdjID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5uZXh0R2MgIT09IG51bGwgfHwgdGhpcy5kYi5zaXplID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHRzID0gLTE7XG4gICAgICAgIHRoaXMuZGIuZm9yRWFjaCgodCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRzID09PSAtMSB8fCB0IDwgdHMpIHtcbiAgICAgICAgICAgICAgICB0cyA9IHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodHMgPT09IC0xKSB7XG4gICAgICAgICAgICB0cyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGltZW91dCA9IHRzIC0gRGF0ZS5ub3coKSArIHRoaXMuZ2NEZWxheTtcbiAgICAgICAgdGhpcy5uZXh0R2MgPSBzZXRUaW1lb3V0KHRoaXMuZ2MuYmluZCh0aGlzKSwgdGltZW91dCk7XG4gICAgfVxufVxuZXhwb3J0cy5kZWZhdWx0ID0gRXhwaXJlU2V0O1xubW9kdWxlLmV4cG9ydHMgPSBFeHBpcmVTZXQ7XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gRXhwaXJlU2V0O1xuIiwiLyogZXNsaW50IG5vLW5lZ2F0ZWQtY29uZGl0aW9uOiAwLCBuby1uZXctZnVuYzogMCAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0bW9kdWxlLmV4cG9ydHMgPSBzZWxmO1xufSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuXHRtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdztcbn0gZWxzZSB7XG5cdG1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ29iamVjdCcgfHwgIWdsb2JhbCB8fCBnbG9iYWwuTWF0aCAhPT0gTWF0aCB8fCBnbG9iYWwuQXJyYXkgIT09IEFycmF5KSB7XG5cdFx0cmV0dXJuIGltcGxlbWVudGF0aW9uO1xuXHR9XG5cdHJldHVybiBnbG9iYWw7XG59O1xuIiwiIWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwib2JqZWN0XCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9dCgpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx0KTtlbHNle3ZhciBuPXQoKTtmb3IodmFyIHIgaW4gbikoXCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0czplKVtyXT1uW3JdfX0oc2VsZiwoKCk9PigoKT0+e3ZhciBlPXszMTg6ZT0+e2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19LGUuZXhwb3J0cy5fX2VzTW9kdWxlPSEwLGUuZXhwb3J0cy5kZWZhdWx0PWUuZXhwb3J0c30sODplPT57ZnVuY3Rpb24gdChuKXtyZXR1cm4gZS5leHBvcnRzPXQ9XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgZX0sZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzLHQobil9ZS5leHBvcnRzPXQsZS5leHBvcnRzLl9fZXNNb2R1bGU9ITAsZS5leHBvcnRzLmRlZmF1bHQ9ZS5leHBvcnRzfSw5OTE6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFM9dC5Ccm9hZGNhc3RDaGFubmVsPXZvaWQgMCx0LmNsZWFyTm9kZUZvbGRlcj1mdW5jdGlvbihlKXtlPSgwLHMuZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKGUpO3ZhciB0PSgwLG8uY2hvb3NlTWV0aG9kKShlKTtyZXR1cm5cIm5vZGVcIj09PXQudHlwZT90LmNsZWFyTm9kZUZvbGRlcigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSk6ci5QUk9NSVNFX1JFU09MVkVEX0ZBTFNFfSx0LmVuZm9yY2VPcHRpb25zPWZ1bmN0aW9uKGUpe2E9ZX07dmFyIHI9bigyMDIpLG89big2MzIpLHM9big0MjMpLGk9bmV3IFNldDt0Lk9QRU5fQlJPQURDQVNUX0NIQU5ORUxTPWk7dmFyIGEsdT0wLGM9ZnVuY3Rpb24oZSx0KXt2YXIgbixjO3RoaXMuaWQ9dSsrLGkuYWRkKHRoaXMpLHRoaXMubmFtZT1lLGEmJih0PWEpLHRoaXMub3B0aW9ucz0oMCxzLmZpbGxPcHRpb25zV2l0aERlZmF1bHRzKSh0KSx0aGlzLm1ldGhvZD0oMCxvLmNob29zZU1ldGhvZCkodGhpcy5vcHRpb25zKSx0aGlzLl9pTD0hMSx0aGlzLl9vbk1MPW51bGwsdGhpcy5fYWRkRUw9e21lc3NhZ2U6W10saW50ZXJuYWw6W119LHRoaXMuX3VNUD1uZXcgU2V0LHRoaXMuX2JlZkM9W10sdGhpcy5fcHJlcFA9bnVsbCxjPShuPXRoaXMpLm1ldGhvZC5jcmVhdGUobi5uYW1lLG4ub3B0aW9ucyksKDAsci5pc1Byb21pc2UpKGMpPyhuLl9wcmVwUD1jLGMudGhlbigoZnVuY3Rpb24oZSl7bi5fc3RhdGU9ZX0pKSk6bi5fc3RhdGU9Y307ZnVuY3Rpb24gbChlLHQsbil7dmFyIG89e3RpbWU6ZS5tZXRob2QubWljcm9TZWNvbmRzKCksdHlwZTp0LGRhdGE6bn07cmV0dXJuKGUuX3ByZXBQP2UuX3ByZXBQOnIuUFJPTUlTRV9SRVNPTFZFRF9WT0lEKS50aGVuKChmdW5jdGlvbigpe3ZhciB0PWUubWV0aG9kLnBvc3RNZXNzYWdlKGUuX3N0YXRlLG8pO3JldHVybiBlLl91TVAuYWRkKHQpLHQuY2F0Y2goKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBlLl91TVAuZGVsZXRlKHQpfSkpLHR9KSl9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZS5fYWRkRUwubWVzc2FnZS5sZW5ndGg+MHx8ZS5fYWRkRUwuaW50ZXJuYWwubGVuZ3RoPjB9ZnVuY3Rpb24gZihlLHQsbil7ZS5fYWRkRUxbdF0ucHVzaChuKSxmdW5jdGlvbihlKXtpZighZS5faUwmJmQoZSkpe3ZhciB0PWZ1bmN0aW9uKHQpe2UuX2FkZEVMW3QudHlwZV0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49ZS50aW1lLTFlNTt0LnRpbWU+PW4mJmUuZm4odC5kYXRhKX0pKX0sbj1lLm1ldGhvZC5taWNyb1NlY29uZHMoKTtlLl9wcmVwUD9lLl9wcmVwUC50aGVuKChmdW5jdGlvbigpe2UuX2lMPSEwLGUubWV0aG9kLm9uTWVzc2FnZShlLl9zdGF0ZSx0LG4pfSkpOihlLl9pTD0hMCxlLm1ldGhvZC5vbk1lc3NhZ2UoZS5fc3RhdGUsdCxuKSl9fShlKX1mdW5jdGlvbiBoKGUsdCxuKXtlLl9hZGRFTFt0XT1lLl9hZGRFTFt0XS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlIT09bn0pKSxmdW5jdGlvbihlKXtpZihlLl9pTCYmIWQoZSkpe2UuX2lMPSExO3ZhciB0PWUubWV0aG9kLm1pY3JvU2Vjb25kcygpO2UubWV0aG9kLm9uTWVzc2FnZShlLl9zdGF0ZSxudWxsLHQpfX0oZSl9dC5Ccm9hZGNhc3RDaGFubmVsPWMsYy5fcHVia2V5PSEwLGMucHJvdG90eXBlPXtwb3N0TWVzc2FnZTpmdW5jdGlvbihlKXtpZih0aGlzLmNsb3NlZCl0aHJvdyBuZXcgRXJyb3IoXCJCcm9hZGNhc3RDaGFubmVsLnBvc3RNZXNzYWdlKCk6IENhbm5vdCBwb3N0IG1lc3NhZ2UgYWZ0ZXIgY2hhbm5lbCBoYXMgY2xvc2VkIFwiK0pTT04uc3RyaW5naWZ5KGUpKTtyZXR1cm4gbCh0aGlzLFwibWVzc2FnZVwiLGUpfSxwb3N0SW50ZXJuYWw6ZnVuY3Rpb24oZSl7cmV0dXJuIGwodGhpcyxcImludGVybmFsXCIsZSl9LHNldCBvbm1lc3NhZ2UoZSl7dmFyIHQ9e3RpbWU6dGhpcy5tZXRob2QubWljcm9TZWNvbmRzKCksZm46ZX07aCh0aGlzLFwibWVzc2FnZVwiLHRoaXMuX29uTUwpLGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGU/KHRoaXMuX29uTUw9dCxmKHRoaXMsXCJtZXNzYWdlXCIsdCkpOnRoaXMuX29uTUw9bnVsbH0sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe2YodGhpcyxlLHt0aW1lOnRoaXMubWV0aG9kLm1pY3JvU2Vjb25kcygpLGZuOnR9KX0scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe2godGhpcyxlLHRoaXMuX2FkZEVMW2VdLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZuPT09dH0pKSl9LGNsb3NlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5jbG9zZWQpe2kuZGVsZXRlKHRoaXMpLHRoaXMuY2xvc2VkPSEwO3ZhciB0PXRoaXMuX3ByZXBQP3RoaXMuX3ByZXBQOnIuUFJPTUlTRV9SRVNPTFZFRF9WT0lEO3JldHVybiB0aGlzLl9vbk1MPW51bGwsdGhpcy5fYWRkRUwubWVzc2FnZT1bXSx0LnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UuYWxsKEFycmF5LmZyb20oZS5fdU1QKSl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5hbGwoZS5fYmVmQy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlKCl9KSkpfSkpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGUubWV0aG9kLmNsb3NlKGUuX3N0YXRlKX0pKX19LGdldCB0eXBlKCl7cmV0dXJuIHRoaXMubWV0aG9kLnR5cGV9LGdldCBpc0Nsb3NlZCgpe3JldHVybiB0aGlzLmNsb3NlZH19fSw0Mzc6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oNTg1KTtlLmV4cG9ydHM9e0Jyb2FkY2FzdENoYW5uZWw6ci5Ccm9hZGNhc3RDaGFubmVsLGNyZWF0ZUxlYWRlckVsZWN0aW9uOnIuY3JlYXRlTGVhZGVyRWxlY3Rpb24sY2xlYXJOb2RlRm9sZGVyOnIuY2xlYXJOb2RlRm9sZGVyLGVuZm9yY2VPcHRpb25zOnIuZW5mb3JjZU9wdGlvbnMsYmVMZWFkZXI6ci5iZUxlYWRlcn19LDU4NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJCcm9hZGNhc3RDaGFubmVsXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuQnJvYWRjYXN0Q2hhbm5lbH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIk9QRU5fQlJPQURDQVNUX0NIQU5ORUxTXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuT1BFTl9CUk9BRENBU1RfQ0hBTk5FTFN9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJiZUxlYWRlclwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmJlTGVhZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY2xlYXJOb2RlRm9sZGVyXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuY2xlYXJOb2RlRm9sZGVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiY3JlYXRlTGVhZGVyRWxlY3Rpb25cIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gby5jcmVhdGVMZWFkZXJFbGVjdGlvbn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcImVuZm9yY2VPcHRpb25zXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHIuZW5mb3JjZU9wdGlvbnN9fSk7dmFyIHI9big5OTEpLG89big1NTApfSw1NTA6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuYmVMZWFkZXI9YSx0LmNyZWF0ZUxlYWRlckVsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7aWYoZS5fbGVhZGVyRWxlY3Rvcil0aHJvdyBuZXcgRXJyb3IoXCJCcm9hZGNhc3RDaGFubmVsIGFscmVhZHkgaGFzIGEgbGVhZGVyLWVsZWN0b3JcIik7dD1mdW5jdGlvbihlLHQpe3JldHVybiBlfHwoZT17fSksKGU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShlKSkpLmZhbGxiYWNrSW50ZXJ2YWx8fChlLmZhbGxiYWNrSW50ZXJ2YWw9M2UzKSxlLnJlc3BvbnNlVGltZXx8KGUucmVzcG9uc2VUaW1lPXQubWV0aG9kLmF2ZXJhZ2VSZXNwb25zZVRpbWUodC5vcHRpb25zKSksZX0odCxlKTt2YXIgbj1uZXcgcyhlLHQpO3JldHVybiBlLl9iZWZDLnB1c2goKGZ1bmN0aW9uKCl7cmV0dXJuIG4uZGllKCl9KSksZS5fbGVhZGVyRWxlY3Rvcj1uLG59O3ZhciByPW4oMjAyKSxvPW4oNDk5KSxzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpczt0aGlzLmJyb2FkY2FzdENoYW5uZWw9ZSx0aGlzLl9vcHRpb25zPXQsdGhpcy5pc0xlYWRlcj0hMSx0aGlzLmhhc0xlYWRlcj0hMSx0aGlzLmlzRGVhZD0hMSx0aGlzLnRva2VuPSgwLHIucmFuZG9tVG9rZW4pKCksdGhpcy5fYXBsUT1yLlBST01JU0VfUkVTT0xWRURfVk9JRCx0aGlzLl9hcGxRQz0wLHRoaXMuX3VubD1bXSx0aGlzLl9sc3Rucz1bXSx0aGlzLl9kcEw9ZnVuY3Rpb24oKXt9LHRoaXMuX2RwTEM9ITE7dmFyIG89ZnVuY3Rpb24oZSl7XCJsZWFkZXJcIj09PWUuY29udGV4dCYmKFwiZGVhdGhcIj09PWUuYWN0aW9uJiYobi5oYXNMZWFkZXI9ITEpLFwidGVsbFwiPT09ZS5hY3Rpb24mJihuLmhhc0xlYWRlcj0hMCkpfTt0aGlzLmJyb2FkY2FzdENoYW5uZWwuYWRkRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsbyksdGhpcy5fbHN0bnMucHVzaChvKX07ZnVuY3Rpb24gaShlLHQpe3ZhciBuPXtjb250ZXh0OlwibGVhZGVyXCIsYWN0aW9uOnQsdG9rZW46ZS50b2tlbn07cmV0dXJuIGUuYnJvYWRjYXN0Q2hhbm5lbC5wb3N0SW50ZXJuYWwobil9ZnVuY3Rpb24gYShlKXtlLmlzTGVhZGVyPSEwLGUuaGFzTGVhZGVyPSEwO3ZhciB0PSgwLG8uYWRkKSgoZnVuY3Rpb24oKXtyZXR1cm4gZS5kaWUoKX0pKTtlLl91bmwucHVzaCh0KTt2YXIgbj1mdW5jdGlvbih0KXtcImxlYWRlclwiPT09dC5jb250ZXh0JiZcImFwcGx5XCI9PT10LmFjdGlvbiYmaShlLFwidGVsbFwiKSxcImxlYWRlclwiIT09dC5jb250ZXh0fHxcInRlbGxcIiE9PXQuYWN0aW9ufHxlLl9kcExDfHwoZS5fZHBMQz0hMCxlLl9kcEwoKSxpKGUsXCJ0ZWxsXCIpKX07cmV0dXJuIGUuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixuKSxlLl9sc3Rucy5wdXNoKG4pLGkoZSxcInRlbGxcIil9cy5wcm90b3R5cGU9e2FwcGx5T25jZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmlzTGVhZGVyPygwLHIuc2xlZXApKDAsITApOnRoaXMuaXNEZWFkPygwLHIuc2xlZXApKDAsITEpOnRoaXMuX2FwbFFDPjE/dGhpcy5fYXBsUToodGhpcy5fYXBsUUM9dGhpcy5fYXBsUUMrMSx0aGlzLl9hcGxRPXRoaXMuX2FwbFEudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oKXtpZih0LmlzTGVhZGVyKXJldHVybiByLlBST01JU0VfUkVTT0xWRURfVFJVRTt2YXIgbixvPSExLHM9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe249ZnVuY3Rpb24oKXtvPSEwLGUoKX19KSksdT1bXSxjPWZ1bmN0aW9uKGUpe1wibGVhZGVyXCI9PT1lLmNvbnRleHQmJmUudG9rZW4hPXQudG9rZW4mJih1LnB1c2goZSksXCJhcHBseVwiPT09ZS5hY3Rpb24mJmUudG9rZW4+dC50b2tlbiYmbigpLFwidGVsbFwiPT09ZS5hY3Rpb24mJihuKCksdC5oYXNMZWFkZXI9ITApKX07dC5icm9hZGNhc3RDaGFubmVsLmFkZEV2ZW50TGlzdGVuZXIoXCJpbnRlcm5hbFwiLGMpO3ZhciBsPWU/NCp0Ll9vcHRpb25zLnJlc3BvbnNlVGltZTp0Ll9vcHRpb25zLnJlc3BvbnNlVGltZTtyZXR1cm4gaSh0LFwiYXBwbHlcIikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yYWNlKFsoMCxyLnNsZWVwKShsKSxzLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcil9KSldKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpKHQsXCJhcHBseVwiKX0pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJhY2UoWygwLHIuc2xlZXApKGwpLHMudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKX0pKV0pfSkpLmNhdGNoKChmdW5jdGlvbigpe30pKS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmJyb2FkY2FzdENoYW5uZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImludGVybmFsXCIsYyksIW8mJmEodCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKX0pKX0oKX0pKS50aGVuKChmdW5jdGlvbigpe3QuX2FwbFFDPXQuX2FwbFFDLTF9KSksdGhpcy5fYXBsUS50aGVuKChmdW5jdGlvbigpe3JldHVybiB0LmlzTGVhZGVyfSkpKX0sYXdhaXRMZWFkZXJzaGlwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FMUHx8KHRoaXMuX2FMUD0oZT10aGlzKS5pc0xlYWRlcj9yLlBST01JU0VfUkVTT0xWRURfVk9JRDpuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7dmFyIG49ITE7ZnVuY3Rpb24gbygpe258fChuPSEwLGUuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixzKSx0KCEwKSl9ZS5hcHBseU9uY2UoKS50aGVuKChmdW5jdGlvbigpe2UuaXNMZWFkZXImJm8oKX0pKSxmdW5jdGlvbiB0KCl7cmV0dXJuKDAsci5zbGVlcCkoZS5fb3B0aW9ucy5mYWxsYmFja0ludGVydmFsKS50aGVuKChmdW5jdGlvbigpe2lmKCFlLmlzRGVhZCYmIW4pcmV0dXJuIGUuaXNMZWFkZXI/dm9pZCBvKCk6ZS5hcHBseU9uY2UoITApLnRoZW4oKGZ1bmN0aW9uKCl7ZS5pc0xlYWRlcj9vKCk6dCgpfSkpfSkpfSgpO3ZhciBzPWZ1bmN0aW9uKHQpe1wibGVhZGVyXCI9PT10LmNvbnRleHQmJlwiZGVhdGhcIj09PXQuYWN0aW9uJiYoZS5oYXNMZWFkZXI9ITEsZS5hcHBseU9uY2UoKS50aGVuKChmdW5jdGlvbigpe2UuaXNMZWFkZXImJm8oKX0pKSl9O2UuYnJvYWRjYXN0Q2hhbm5lbC5hZGRFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIixzKSxlLl9sc3Rucy5wdXNoKHMpfSkpKSx0aGlzLl9hTFA7dmFyIGV9LHNldCBvbmR1cGxpY2F0ZShlKXt0aGlzLl9kcEw9ZX0sZGllOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5fbHN0bnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGUuYnJvYWRjYXN0Q2hhbm5lbC5yZW1vdmVFdmVudExpc3RlbmVyKFwiaW50ZXJuYWxcIix0KX0pKSx0aGlzLl9sc3Rucz1bXSx0aGlzLl91bmwuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVtb3ZlKCl9KSksdGhpcy5fdW5sPVtdLHRoaXMuaXNMZWFkZXImJih0aGlzLmhhc0xlYWRlcj0hMSx0aGlzLmlzTGVhZGVyPSExKSx0aGlzLmlzRGVhZD0hMCxpKHRoaXMsXCJkZWF0aFwiKX19fSw2MzI6KGUsdCxuKT0+e1widXNlIHN0cmljdFwiO3ZhciByPW4oMzE4KTtuKDgpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuY2hvb3NlTWV0aG9kPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLmNvbmNhdChlLm1ldGhvZHMsYykuZmlsdGVyKEJvb2xlYW4pO2lmKGUudHlwZSl7aWYoXCJzaW11bGF0ZVwiPT09ZS50eXBlKXJldHVybiBhLmRlZmF1bHQ7dmFyIG49dC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ZS50eXBlfSkpO2lmKG4pcmV0dXJuIG47dGhyb3cgbmV3IEVycm9yKFwibWV0aG9kLXR5cGUgXCIrZS50eXBlK1wiIG5vdCBmb3VuZFwiKX1lLndlYldvcmtlclN1cHBvcnR8fHUuaXNOb2RlfHwodD10LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuXCJpZGJcIiE9PWUudHlwZX0pKSk7dmFyIHI9dC5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jYW5CZVVzZWQoKX0pKTtpZihyKXJldHVybiByO3Rocm93IG5ldyBFcnJvcihcIk5vIHVzZWFibGUgbWV0aG9kIGZvdW5kIGluIFwiK0pTT04uc3RyaW5naWZ5KGMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS50eXBlfSkpKSl9O3ZhciBvPXIobigxMTUpKSxzPXIobigxMjIpKSxpPXIobig5MjQpKSxhPXIobig1NzQpKSx1PW4oMjAyKSxjPVtvLmRlZmF1bHQscy5kZWZhdWx0LGkuZGVmYXVsdF19LDEyMjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hdmVyYWdlUmVzcG9uc2VUaW1lPXcsdC5jYW5CZVVzZWQ9Qyx0LmNsZWFuT2xkTWVzc2FnZXM9cCx0LmNsb3NlPXksdC5jcmVhdGU9dix0LmNyZWF0ZURhdGFiYXNlPWMsdC5kZWZhdWx0PXZvaWQgMCx0LmdldEFsbE1lc3NhZ2VzPWZ1bmN0aW9uKGUpe3ZhciB0PWUudHJhbnNhY3Rpb24oYSkub2JqZWN0U3RvcmUoYSksbj1bXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Qub3BlbkN1cnNvcigpLm9uc3VjY2Vzcz1mdW5jdGlvbih0KXt2YXIgcj10LnRhcmdldC5yZXN1bHQ7cj8obi5wdXNoKHIudmFsdWUpLHIuY29udGludWUoKSk6ZShuKX19KSl9LHQuZ2V0SWRiPXUsdC5nZXRNZXNzYWdlc0hpZ2hlclRoYW49ZCx0LmdldE9sZE1lc3NhZ2VzPWgsdC5taWNyb1NlY29uZHM9dm9pZCAwLHQub25NZXNzYWdlPV8sdC5wb3N0TWVzc2FnZT1iLHQucmVtb3ZlTWVzc2FnZUJ5SWQ9Zix0LnR5cGU9dm9pZCAwLHQud3JpdGVNZXNzYWdlPWw7dmFyIHI9bigyMDIpLG89bigxNTEpLHM9big0MjMpLGk9ci5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9aTt2YXIgYT1cIm1lc3NhZ2VzXCI7ZnVuY3Rpb24gdSgpe2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBpbmRleGVkREIpcmV0dXJuIGluZGV4ZWREQjtpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93KXtpZih2b2lkIDAhPT13aW5kb3cubW96SW5kZXhlZERCKXJldHVybiB3aW5kb3cubW96SW5kZXhlZERCO2lmKHZvaWQgMCE9PXdpbmRvdy53ZWJraXRJbmRleGVkREIpcmV0dXJuIHdpbmRvdy53ZWJraXRJbmRleGVkREI7aWYodm9pZCAwIT09d2luZG93Lm1zSW5kZXhlZERCKXJldHVybiB3aW5kb3cubXNJbmRleGVkREJ9cmV0dXJuITF9ZnVuY3Rpb24gYyhlKXt2YXIgdD1cInB1YmtleS5icm9hZGNhc3QtY2hhbm5lbC0wLVwiK2Usbj11KCkub3Blbih0LDEpO3JldHVybiBuLm9udXBncmFkZW5lZWRlZD1mdW5jdGlvbihlKXtlLnRhcmdldC5yZXN1bHQuY3JlYXRlT2JqZWN0U3RvcmUoYSx7a2V5UGF0aDpcImlkXCIsYXV0b0luY3JlbWVudDohMH0pfSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSx0KXtuLm9uZXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9LG4ub25zdWNjZXNzPWZ1bmN0aW9uKCl7ZShuLnJlc3VsdCl9fSkpfWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPXt1dWlkOnQsdGltZToobmV3IERhdGUpLmdldFRpbWUoKSxkYXRhOm59LG89ZS50cmFuc2FjdGlvbihbYV0sXCJyZWFkd3JpdGVcIik7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHQpe28ub25jb21wbGV0ZT1mdW5jdGlvbigpe3JldHVybiBlKCl9LG8ub25lcnJvcj1mdW5jdGlvbihlKXtyZXR1cm4gdChlKX0sby5vYmplY3RTdG9yZShhKS5hZGQocil9KSl9ZnVuY3Rpb24gZChlLHQpe3ZhciBuPWUudHJhbnNhY3Rpb24oYSkub2JqZWN0U3RvcmUoYSkscj1bXTtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpeyhmdW5jdGlvbigpe3RyeXt2YXIgZT1JREJLZXlSYW5nZS5ib3VuZCh0KzEsMS8wKTtyZXR1cm4gbi5vcGVuQ3Vyc29yKGUpfWNhdGNoKGUpe3JldHVybiBuLm9wZW5DdXJzb3IoKX19KCkpLm9uc3VjY2Vzcz1mdW5jdGlvbihuKXt2YXIgbz1uLnRhcmdldC5yZXN1bHQ7bz9vLnZhbHVlLmlkPHQrMT9vLmNvbnRpbnVlKHQrMSk6KHIucHVzaChvLnZhbHVlKSxvLmNvbnRpbnVlKCkpOmUocil9fSkpfWZ1bmN0aW9uIGYoZSx0KXt2YXIgbj1lLnRyYW5zYWN0aW9uKFthXSxcInJlYWR3cml0ZVwiKS5vYmplY3RTdG9yZShhKS5kZWxldGUodCk7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtuLm9uc3VjY2Vzcz1mdW5jdGlvbigpe3JldHVybiBlKCl9fSkpfWZ1bmN0aW9uIGgoZSx0KXt2YXIgbj0obmV3IERhdGUpLmdldFRpbWUoKS10LHI9ZS50cmFuc2FjdGlvbihhKS5vYmplY3RTdG9yZShhKSxvPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ci5vcGVuQ3Vyc29yKCkub25zdWNjZXNzPWZ1bmN0aW9uKHQpe3ZhciByPXQudGFyZ2V0LnJlc3VsdDtpZihyKXt2YXIgcz1yLnZhbHVlO2lmKCEocy50aW1lPG4pKXJldHVybiB2b2lkIGUobyk7by5wdXNoKHMpLHIuY29udGludWUoKX1lbHNlIGUobyl9fSkpfWZ1bmN0aW9uIHAoZSx0KXtyZXR1cm4gaChlLHQpLnRoZW4oKGZ1bmN0aW9uKHQpe3JldHVybiBQcm9taXNlLmFsbCh0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGYoZSx0LmlkKX0pKSl9KSl9ZnVuY3Rpb24gdihlLHQpe3JldHVybiB0PSgwLHMuZmlsbE9wdGlvbnNXaXRoRGVmYXVsdHMpKHQpLGMoZSkudGhlbigoZnVuY3Rpb24obil7dmFyIHM9e2Nsb3NlZDohMSxsYXN0Q3Vyc29ySWQ6MCxjaGFubmVsTmFtZTplLG9wdGlvbnM6dCx1dWlkOigwLHIucmFuZG9tVG9rZW4pKCksZU1JczpuZXcgby5PYmxpdmlvdXNTZXQoMip0LmlkYi50dGwpLHdyaXRlQmxvY2tQcm9taXNlOnIuUFJPTUlTRV9SRVNPTFZFRF9WT0lELG1lc3NhZ2VzQ2FsbGJhY2s6bnVsbCxyZWFkUXVldWVQcm9taXNlczpbXSxkYjpufTtyZXR1cm4gbi5vbmNsb3NlPWZ1bmN0aW9uKCl7cy5jbG9zZWQ9ITAsdC5pZGIub25jbG9zZSYmdC5pZGIub25jbG9zZSgpfSxtKHMpLHN9KSl9ZnVuY3Rpb24gbShlKXtlLmNsb3NlZHx8ZyhlKS50aGVuKChmdW5jdGlvbigpe3JldHVybigwLHIuc2xlZXApKGUub3B0aW9ucy5pZGIuZmFsbGJhY2tJbnRlcnZhbCl9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbShlKX0pKX1mdW5jdGlvbiBnKGUpe3JldHVybiBlLmNsb3NlZD9yLlBST01JU0VfUkVTT0xWRURfVk9JRDplLm1lc3NhZ2VzQ2FsbGJhY2s/ZChlLmRiLGUubGFzdEN1cnNvcklkKS50aGVuKChmdW5jdGlvbih0KXt2YXIgbj10LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuISFlfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ+ZS5sYXN0Q3Vyc29ySWQmJihlLmxhc3RDdXJzb3JJZD10LmlkKSx0fSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCl7cmV0dXJuIShlLnV1aWQ9PT10LnV1aWR8fHQuZU1Jcy5oYXMoZS5pZCl8fGUuZGF0YS50aW1lPHQubWVzc2FnZXNDYWxsYmFja1RpbWUpfSh0LGUpfSkpLnNvcnQoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGltZS10LnRpbWV9KSk7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5tZXNzYWdlc0NhbGxiYWNrJiYoZS5lTUlzLmFkZCh0LmlkKSxlLm1lc3NhZ2VzQ2FsbGJhY2sodC5kYXRhKSl9KSksci5QUk9NSVNFX1JFU09MVkVEX1ZPSUR9KSk6ci5QUk9NSVNFX1JFU09MVkVEX1ZPSUR9ZnVuY3Rpb24geShlKXtlLmNsb3NlZD0hMCxlLmRiLmNsb3NlKCl9ZnVuY3Rpb24gYihlLHQpe3JldHVybiBlLndyaXRlQmxvY2tQcm9taXNlPWUud3JpdGVCbG9ja1Byb21pc2UudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gbChlLmRiLGUudXVpZCx0KX0pKS50aGVuKChmdW5jdGlvbigpezA9PT0oMCxyLnJhbmRvbUludCkoMCwxMCkmJnAoZS5kYixlLm9wdGlvbnMuaWRiLnR0bCl9KSksZS53cml0ZUJsb2NrUHJvbWlzZX1mdW5jdGlvbiBfKGUsdCxuKXtlLm1lc3NhZ2VzQ2FsbGJhY2tUaW1lPW4sZS5tZXNzYWdlc0NhbGxiYWNrPXQsZyhlKX1mdW5jdGlvbiBDKCl7cmV0dXJuIXIuaXNOb2RlJiYhIXUoKX1mdW5jdGlvbiB3KGUpe3JldHVybiAyKmUuaWRiLmZhbGxiYWNrSW50ZXJ2YWx9dC50eXBlPVwiaWRiXCI7dmFyIEU9e2NyZWF0ZTp2LGNsb3NlOnksb25NZXNzYWdlOl8scG9zdE1lc3NhZ2U6YixjYW5CZVVzZWQ6Qyx0eXBlOlwiaWRiXCIsYXZlcmFnZVJlc3BvbnNlVGltZTp3LG1pY3JvU2Vjb25kczppfTt0LmRlZmF1bHQ9RX0sOTI0OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmFkZFN0b3JhZ2VFdmVudExpc3RlbmVyPWQsdC5hdmVyYWdlUmVzcG9uc2VUaW1lPWcsdC5jYW5CZVVzZWQ9bSx0LmNsb3NlPXAsdC5jcmVhdGU9aCx0LmRlZmF1bHQ9dm9pZCAwLHQuZ2V0TG9jYWxTdG9yYWdlPXUsdC5taWNyb1NlY29uZHM9dm9pZCAwLHQub25NZXNzYWdlPXYsdC5wb3N0TWVzc2FnZT1sLHQucmVtb3ZlU3RvcmFnZUV2ZW50TGlzdGVuZXI9Zix0LnN0b3JhZ2VLZXk9Yyx0LnR5cGU9dm9pZCAwO3ZhciByPW4oMTUxKSxvPW4oNDIzKSxzPW4oMjAyKSxpPXMubWljcm9TZWNvbmRzO3QubWljcm9TZWNvbmRzPWk7dmFyIGE9XCJsb2NhbHN0b3JhZ2VcIjtmdW5jdGlvbiB1KCl7dmFyIGU7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gbnVsbDt0cnl7ZT13aW5kb3cubG9jYWxTdG9yYWdlLGU9d2luZG93W1wiaWU4LWV2ZW50bGlzdGVuZXIvc3RvcmFnZVwiXXx8d2luZG93LmxvY2FsU3RvcmFnZX1jYXRjaChlKXt9cmV0dXJuIGV9ZnVuY3Rpb24gYyhlKXtyZXR1cm5cInB1YmtleS5icm9hZGNhc3RDaGFubmVsLVwiK2V9ZnVuY3Rpb24gbChlLHQpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7KDAscy5zbGVlcCkoKS50aGVuKChmdW5jdGlvbigpe3ZhciByPWMoZS5jaGFubmVsTmFtZSksbz17dG9rZW46KDAscy5yYW5kb21Ub2tlbikoKSx0aW1lOihuZXcgRGF0ZSkuZ2V0VGltZSgpLGRhdGE6dCx1dWlkOmUudXVpZH0saT1KU09OLnN0cmluZ2lmeShvKTt1KCkuc2V0SXRlbShyLGkpO3ZhciBhPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRcIik7YS5pbml0RXZlbnQoXCJzdG9yYWdlXCIsITAsITApLGEua2V5PXIsYS5uZXdWYWx1ZT1pLHdpbmRvdy5kaXNwYXRjaEV2ZW50KGEpLG4oKX0pKX0pKX1mdW5jdGlvbiBkKGUsdCl7dmFyIG49YyhlKSxyPWZ1bmN0aW9uKGUpe2Uua2V5PT09biYmdChKU09OLnBhcnNlKGUubmV3VmFsdWUpKX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic3RvcmFnZVwiLHIpLHJ9ZnVuY3Rpb24gZihlKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInN0b3JhZ2VcIixlKX1mdW5jdGlvbiBoKGUsdCl7aWYodD0oMCxvLmZpbGxPcHRpb25zV2l0aERlZmF1bHRzKSh0KSwhbSgpKXRocm93IG5ldyBFcnJvcihcIkJyb2FkY2FzdENoYW5uZWw6IGxvY2Fsc3RvcmFnZSBjYW5ub3QgYmUgdXNlZFwiKTt2YXIgbj0oMCxzLnJhbmRvbVRva2VuKSgpLGk9bmV3IHIuT2JsaXZpb3VzU2V0KHQubG9jYWxzdG9yYWdlLnJlbW92ZVRpbWVvdXQpLGE9e2NoYW5uZWxOYW1lOmUsdXVpZDpuLGVNSXM6aX07cmV0dXJuIGEubGlzdGVuZXI9ZChlLChmdW5jdGlvbihlKXthLm1lc3NhZ2VzQ2FsbGJhY2smJmUudXVpZCE9PW4mJmUudG9rZW4mJiFpLmhhcyhlLnRva2VuKSYmKGUuZGF0YS50aW1lJiZlLmRhdGEudGltZTxhLm1lc3NhZ2VzQ2FsbGJhY2tUaW1lfHwoaS5hZGQoZS50b2tlbiksYS5tZXNzYWdlc0NhbGxiYWNrKGUuZGF0YSkpKX0pKSxhfWZ1bmN0aW9uIHAoZSl7ZihlLmxpc3RlbmVyKX1mdW5jdGlvbiB2KGUsdCxuKXtlLm1lc3NhZ2VzQ2FsbGJhY2tUaW1lPW4sZS5tZXNzYWdlc0NhbGxiYWNrPXR9ZnVuY3Rpb24gbSgpe2lmKHMuaXNOb2RlKXJldHVybiExO3ZhciBlPXUoKTtpZighZSlyZXR1cm4hMTt0cnl7dmFyIHQ9XCJfX2Jyb2FkY2FzdGNoYW5uZWxfY2hlY2tcIjtlLnNldEl0ZW0odCxcIndvcmtzXCIpLGUucmVtb3ZlSXRlbSh0KX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBnKCl7dmFyIGU9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybiBlLmluY2x1ZGVzKFwic2FmYXJpXCIpJiYhZS5pbmNsdWRlcyhcImNocm9tZVwiKT8yNDA6MTIwfXQudHlwZT1hO3ZhciB5PXtjcmVhdGU6aCxjbG9zZTpwLG9uTWVzc2FnZTp2LHBvc3RNZXNzYWdlOmwsY2FuQmVVc2VkOm0sdHlwZTphLGF2ZXJhZ2VSZXNwb25zZVRpbWU6ZyxtaWNyb1NlY29uZHM6aX07dC5kZWZhdWx0PXl9LDExNTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5hdmVyYWdlUmVzcG9uc2VUaW1lPWQsdC5jYW5CZVVzZWQ9bCx0LmNsb3NlPWEsdC5jcmVhdGU9aSx0Lm1pY3JvU2Vjb25kcz10LmRlZmF1bHQ9dm9pZCAwLHQub25NZXNzYWdlPWMsdC5wb3N0TWVzc2FnZT11LHQudHlwZT12b2lkIDA7dmFyIHI9bigyMDIpLG89ci5taWNyb1NlY29uZHM7dC5taWNyb1NlY29uZHM9bzt2YXIgcz1cIm5hdGl2ZVwiO2Z1bmN0aW9uIGkoZSl7dmFyIHQ9e21lc3NhZ2VzQ2FsbGJhY2s6bnVsbCxiYzpuZXcgQnJvYWRjYXN0Q2hhbm5lbChlKSxzdWJGbnM6W119O3JldHVybiB0LmJjLm9ubWVzc2FnZT1mdW5jdGlvbihlKXt0Lm1lc3NhZ2VzQ2FsbGJhY2smJnQubWVzc2FnZXNDYWxsYmFjayhlLmRhdGEpfSx0fWZ1bmN0aW9uIGEoZSl7ZS5iYy5jbG9zZSgpLGUuc3ViRm5zPVtdfWZ1bmN0aW9uIHUoZSx0KXt0cnl7cmV0dXJuIGUuYmMucG9zdE1lc3NhZ2UodCwhMSksci5QUk9NSVNFX1JFU09MVkVEX1ZPSUR9Y2F0Y2goZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfX1mdW5jdGlvbiBjKGUsdCl7ZS5tZXNzYWdlc0NhbGxiYWNrPXR9ZnVuY3Rpb24gbCgpe2lmKHIuaXNOb2RlJiZcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93KXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIEJyb2FkY2FzdENoYW5uZWwpe2lmKEJyb2FkY2FzdENoYW5uZWwuX3B1YmtleSl0aHJvdyBuZXcgRXJyb3IoXCJCcm9hZGNhc3RDaGFubmVsOiBEbyBub3Qgb3ZlcndyaXRlIHdpbmRvdy5Ccm9hZGNhc3RDaGFubmVsIHdpdGggdGhpcyBtb2R1bGUsIHRoaXMgaXMgbm90IGEgcG9seWZpbGxcIik7cmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gZCgpe3JldHVybiAxNTB9dC50eXBlPXM7dmFyIGY9e2NyZWF0ZTppLGNsb3NlOmEsb25NZXNzYWdlOmMscG9zdE1lc3NhZ2U6dSxjYW5CZVVzZWQ6bCx0eXBlOnMsYXZlcmFnZVJlc3BvbnNlVGltZTpkLG1pY3JvU2Vjb25kczpvfTt0LmRlZmF1bHQ9Zn0sNTc0OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmF2ZXJhZ2VSZXNwb25zZVRpbWU9ZCx0LmNhbkJlVXNlZD1sLHQuY2xvc2U9YSx0LmNyZWF0ZT1pLHQubWljcm9TZWNvbmRzPXQuZGVmYXVsdD12b2lkIDAsdC5vbk1lc3NhZ2U9Yyx0LnBvc3RNZXNzYWdlPXUsdC50eXBlPXZvaWQgMDt2YXIgcj1uKDIwMikubWljcm9TZWNvbmRzO3QubWljcm9TZWNvbmRzPXI7dmFyIG89XCJzaW11bGF0ZVwiO3QudHlwZT1vO3ZhciBzPW5ldyBTZXQ7ZnVuY3Rpb24gaShlKXt2YXIgdD17bmFtZTplLG1lc3NhZ2VzQ2FsbGJhY2s6bnVsbH07cmV0dXJuIHMuYWRkKHQpLHR9ZnVuY3Rpb24gYShlKXtzLmRlbGV0ZShlKX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuKXtyZXR1cm4gc2V0VGltZW91dCgoZnVuY3Rpb24oKXtBcnJheS5mcm9tKHMpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQubmFtZT09PWUubmFtZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0IT09ZX0pKS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5tZXNzYWdlc0NhbGxiYWNrfSkpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lc3NhZ2VzQ2FsbGJhY2sodCl9KSksbigpfSksNSl9KSl9ZnVuY3Rpb24gYyhlLHQpe2UubWVzc2FnZXNDYWxsYmFjaz10fWZ1bmN0aW9uIGwoKXtyZXR1cm4hMH1mdW5jdGlvbiBkKCl7cmV0dXJuIDV9dmFyIGY9e2NyZWF0ZTppLGNsb3NlOmEsb25NZXNzYWdlOmMscG9zdE1lc3NhZ2U6dSxjYW5CZVVzZWQ6bCx0eXBlOm8sYXZlcmFnZVJlc3BvbnNlVGltZTpkLG1pY3JvU2Vjb25kczpyfTt0LmRlZmF1bHQ9Zn0sNDIzOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5maWxsT3B0aW9uc1dpdGhEZWZhdWx0cz1mdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSkpO3JldHVybiB2b2lkIDA9PT10LndlYldvcmtlclN1cHBvcnQmJih0LndlYldvcmtlclN1cHBvcnQ9ITApLHQuaWRifHwodC5pZGI9e30pLHQuaWRiLnR0bHx8KHQuaWRiLnR0bD00NWUzKSx0LmlkYi5mYWxsYmFja0ludGVydmFsfHwodC5pZGIuZmFsbGJhY2tJbnRlcnZhbD0xNTApLGUuaWRiJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmlkYi5vbmNsb3NlJiYodC5pZGIub25jbG9zZT1lLmlkYi5vbmNsb3NlKSx0LmxvY2Fsc3RvcmFnZXx8KHQubG9jYWxzdG9yYWdlPXt9KSx0LmxvY2Fsc3RvcmFnZS5yZW1vdmVUaW1lb3V0fHwodC5sb2NhbHN0b3JhZ2UucmVtb3ZlVGltZW91dD02ZTQpLGUubWV0aG9kcyYmKHQubWV0aG9kcz1lLm1ldGhvZHMpLHQubm9kZXx8KHQubm9kZT17fSksdC5ub2RlLnR0bHx8KHQubm9kZS50dGw9MTJlNCksdC5ub2RlLm1heFBhcmFsbGVsV3JpdGVzfHwodC5ub2RlLm1heFBhcmFsbGVsV3JpdGVzPTIwNDgpLHZvaWQgMD09PXQubm9kZS51c2VGYXN0UGF0aCYmKHQubm9kZS51c2VGYXN0UGF0aD0hMCksdH19LDIwMjooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9bigxNTUpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuaXNOb2RlPXQuUFJPTUlTRV9SRVNPTFZFRF9WT0lEPXQuUFJPTUlTRV9SRVNPTFZFRF9UUlVFPXQuUFJPTUlTRV9SRVNPTFZFRF9GQUxTRT12b2lkIDAsdC5pc1Byb21pc2U9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgZS50aGVuKX0sdC5taWNyb1NlY29uZHM9ZnVuY3Rpb24oKXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtyZXR1cm4gZT09PWE/MWUzKmUrICsrdTooYT1lLHU9MCwxZTMqZSl9LHQucmFuZG9tSW50PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoodC1lKzEpK2UpfSx0LnJhbmRvbVRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKX0sdC5zbGVlcD1mdW5jdGlvbihlLHQpe3JldHVybiBlfHwoZT0wKSxuZXcgUHJvbWlzZSgoZnVuY3Rpb24obil7cmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIG4odCl9KSxlKX0pKX07dmFyIG89UHJvbWlzZS5yZXNvbHZlKCExKTt0LlBST01JU0VfUkVTT0xWRURfRkFMU0U9bzt2YXIgcz1Qcm9taXNlLnJlc29sdmUoITApO3QuUFJPTUlTRV9SRVNPTFZFRF9UUlVFPXM7dmFyIGk9UHJvbWlzZS5yZXNvbHZlKCk7dC5QUk9NSVNFX1JFU09MVkVEX1ZPSUQ9aTt2YXIgYT0wLHU9MCxjPVwiW29iamVjdCBwcm9jZXNzXVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZvaWQgMCE9PXI/cjowKTt0LmlzTm9kZT1jfSwyMjc6KGUsdCxuKT0+e3ZhciByPW4oMTU1KTt0LmZvcm1hdEFyZ3M9ZnVuY3Rpb24odCl7aWYodFswXT0odGhpcy51c2VDb2xvcnM/XCIlY1wiOlwiXCIpK3RoaXMubmFtZXNwYWNlKyh0aGlzLnVzZUNvbG9ycz9cIiAlY1wiOlwiIFwiKSt0WzBdKyh0aGlzLnVzZUNvbG9ycz9cIiVjIFwiOlwiIFwiKStcIitcIitlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKSwhdGhpcy51c2VDb2xvcnMpcmV0dXJuO2NvbnN0IG49XCJjb2xvcjogXCIrdGhpcy5jb2xvcjt0LnNwbGljZSgxLDAsbixcImNvbG9yOiBpbmhlcml0XCIpO2xldCByPTAsbz0wO3RbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLChlPT57XCIlJVwiIT09ZSYmKHIrKyxcIiVjXCI9PT1lJiYobz1yKSl9KSksdC5zcGxpY2UobywwLG4pfSx0LnNhdmU9ZnVuY3Rpb24oZSl7dHJ5e2U/dC5zdG9yYWdlLnNldEl0ZW0oXCJkZWJ1Z1wiLGUpOnQuc3RvcmFnZS5yZW1vdmVJdGVtKFwiZGVidWdcIil9Y2F0Y2goZSl7fX0sdC5sb2FkPWZ1bmN0aW9uKCl7bGV0IGU7dHJ5e2U9dC5zdG9yYWdlLmdldEl0ZW0oXCJkZWJ1Z1wiKX1jYXRjaChlKXt9cmV0dXJuIWUmJnZvaWQgMCE9PXImJlwiZW52XCJpbiByJiYoZT1yLmVudi5ERUJVRyksZX0sdC51c2VDb2xvcnM9ZnVuY3Rpb24oKXtyZXR1cm4hKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5kb3cucHJvY2Vzc3x8XCJyZW5kZXJlclwiIT09d2luZG93LnByb2Nlc3MudHlwZSYmIXdpbmRvdy5wcm9jZXNzLl9fbndqcyl8fChcInVuZGVmaW5lZFwiPT10eXBlb2YgbmF2aWdhdG9yfHwhbmF2aWdhdG9yLnVzZXJBZ2VudHx8IW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvKGVkZ2V8dHJpZGVudClcXC8oXFxkKykvKSkmJihcInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmNvbnNvbGUmJih3aW5kb3cuY29uc29sZS5maXJlYnVnfHx3aW5kb3cuY29uc29sZS5leGNlcHRpb24mJndpbmRvdy5jb25zb2xlLnRhYmxlKXx8XCJ1bmRlZmluZWRcIiE9dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9maXJlZm94XFwvKFxcZCspLykmJnBhcnNlSW50KFJlZ0V4cC4kMSwxMCk+PTMxfHxcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2FwcGxld2Via2l0XFwvKFxcZCspLykpfSx0LnN0b3JhZ2U9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZX1jYXRjaChlKXt9fSgpLHQuZGVzdHJveT0oKCk9PntsZXQgZT0hMTtyZXR1cm4oKT0+e2V8fChlPSEwLGNvbnNvbGUud2FybihcIkluc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC5cIikpfX0pKCksdC5jb2xvcnM9W1wiIzAwMDBDQ1wiLFwiIzAwMDBGRlwiLFwiIzAwMzNDQ1wiLFwiIzAwMzNGRlwiLFwiIzAwNjZDQ1wiLFwiIzAwNjZGRlwiLFwiIzAwOTlDQ1wiLFwiIzAwOTlGRlwiLFwiIzAwQ0MwMFwiLFwiIzAwQ0MzM1wiLFwiIzAwQ0M2NlwiLFwiIzAwQ0M5OVwiLFwiIzAwQ0NDQ1wiLFwiIzAwQ0NGRlwiLFwiIzMzMDBDQ1wiLFwiIzMzMDBGRlwiLFwiIzMzMzNDQ1wiLFwiIzMzMzNGRlwiLFwiIzMzNjZDQ1wiLFwiIzMzNjZGRlwiLFwiIzMzOTlDQ1wiLFwiIzMzOTlGRlwiLFwiIzMzQ0MwMFwiLFwiIzMzQ0MzM1wiLFwiIzMzQ0M2NlwiLFwiIzMzQ0M5OVwiLFwiIzMzQ0NDQ1wiLFwiIzMzQ0NGRlwiLFwiIzY2MDBDQ1wiLFwiIzY2MDBGRlwiLFwiIzY2MzNDQ1wiLFwiIzY2MzNGRlwiLFwiIzY2Q0MwMFwiLFwiIzY2Q0MzM1wiLFwiIzk5MDBDQ1wiLFwiIzk5MDBGRlwiLFwiIzk5MzNDQ1wiLFwiIzk5MzNGRlwiLFwiIzk5Q0MwMFwiLFwiIzk5Q0MzM1wiLFwiI0NDMDAwMFwiLFwiI0NDMDAzM1wiLFwiI0NDMDA2NlwiLFwiI0NDMDA5OVwiLFwiI0NDMDBDQ1wiLFwiI0NDMDBGRlwiLFwiI0NDMzMwMFwiLFwiI0NDMzMzM1wiLFwiI0NDMzM2NlwiLFwiI0NDMzM5OVwiLFwiI0NDMzNDQ1wiLFwiI0NDMzNGRlwiLFwiI0NDNjYwMFwiLFwiI0NDNjYzM1wiLFwiI0NDOTkwMFwiLFwiI0NDOTkzM1wiLFwiI0NDQ0MwMFwiLFwiI0NDQ0MzM1wiLFwiI0ZGMDAwMFwiLFwiI0ZGMDAzM1wiLFwiI0ZGMDA2NlwiLFwiI0ZGMDA5OVwiLFwiI0ZGMDBDQ1wiLFwiI0ZGMDBGRlwiLFwiI0ZGMzMwMFwiLFwiI0ZGMzMzM1wiLFwiI0ZGMzM2NlwiLFwiI0ZGMzM5OVwiLFwiI0ZGMzNDQ1wiLFwiI0ZGMzNGRlwiLFwiI0ZGNjYwMFwiLFwiI0ZGNjYzM1wiLFwiI0ZGOTkwMFwiLFwiI0ZGOTkzM1wiLFwiI0ZGQ0MwMFwiLFwiI0ZGQ0MzM1wiXSx0LmxvZz1jb25zb2xlLmRlYnVnfHxjb25zb2xlLmxvZ3x8KCgpPT57fSksZS5leHBvcnRzPW4oNDQ3KSh0KTtjb25zdHtmb3JtYXR0ZXJzOm99PWUuZXhwb3J0cztvLmo9ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeShlKX1jYXRjaChlKXtyZXR1cm5cIltVbmV4cGVjdGVkSlNPTlBhcnNlRXJyb3JdOiBcIitlLm1lc3NhZ2V9fX0sNDQ3OihlLHQsbik9PntlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXtsZXQgbixvLHMsaT1udWxsO2Z1bmN0aW9uIGEoLi4uZSl7aWYoIWEuZW5hYmxlZClyZXR1cm47Y29uc3Qgcj1hLG89TnVtYmVyKG5ldyBEYXRlKSxzPW8tKG58fG8pO3IuZGlmZj1zLHIucHJldj1uLHIuY3Vycj1vLG49byxlWzBdPXQuY29lcmNlKGVbMF0pLFwic3RyaW5nXCIhPXR5cGVvZiBlWzBdJiZlLnVuc2hpZnQoXCIlT1wiKTtsZXQgaT0wO2VbMF09ZVswXS5yZXBsYWNlKC8lKFthLXpBLVolXSkvZywoKG4sbyk9PntpZihcIiUlXCI9PT1uKXJldHVyblwiJVwiO2krKztjb25zdCBzPXQuZm9ybWF0dGVyc1tvXTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBzKXtjb25zdCB0PWVbaV07bj1zLmNhbGwocix0KSxlLnNwbGljZShpLDEpLGktLX1yZXR1cm4gbn0pKSx0LmZvcm1hdEFyZ3MuY2FsbChyLGUpLChyLmxvZ3x8dC5sb2cpLmFwcGx5KHIsZSl9cmV0dXJuIGEubmFtZXNwYWNlPWUsYS51c2VDb2xvcnM9dC51c2VDb2xvcnMoKSxhLmNvbG9yPXQuc2VsZWN0Q29sb3IoZSksYS5leHRlbmQ9cixhLmRlc3Ryb3k9dC5kZXN0cm95LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLFwiZW5hYmxlZFwiLHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxnZXQ6KCk9Pm51bGwhPT1pP2k6KG8hPT10Lm5hbWVzcGFjZXMmJihvPXQubmFtZXNwYWNlcyxzPXQuZW5hYmxlZChlKSkscyksc2V0OmU9PntpPWV9fSksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5pbml0JiZ0LmluaXQoYSksYX1mdW5jdGlvbiByKGUsbil7Y29uc3Qgcj10KHRoaXMubmFtZXNwYWNlKyh2b2lkIDA9PT1uP1wiOlwiOm4pK2UpO3JldHVybiByLmxvZz10aGlzLmxvZyxyfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUudG9TdHJpbmcoKS5zdWJzdHJpbmcoMixlLnRvU3RyaW5nKCkubGVuZ3RoLTIpLnJlcGxhY2UoL1xcLlxcKlxcPyQvLFwiKlwiKX1yZXR1cm4gdC5kZWJ1Zz10LHQuZGVmYXVsdD10LHQuY29lcmNlPWZ1bmN0aW9uKGUpe3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3I/ZS5zdGFja3x8ZS5tZXNzYWdlOmV9LHQuZGlzYWJsZT1mdW5jdGlvbigpe2NvbnN0IGU9Wy4uLnQubmFtZXMubWFwKG8pLC4uLnQuc2tpcHMubWFwKG8pLm1hcCgoZT0+XCItXCIrZSkpXS5qb2luKFwiLFwiKTtyZXR1cm4gdC5lbmFibGUoXCJcIiksZX0sdC5lbmFibGU9ZnVuY3Rpb24oZSl7bGV0IG47dC5zYXZlKGUpLHQubmFtZXNwYWNlcz1lLHQubmFtZXM9W10sdC5za2lwcz1bXTtjb25zdCByPShcInN0cmluZ1wiPT10eXBlb2YgZT9lOlwiXCIpLnNwbGl0KC9bXFxzLF0rLyksbz1yLmxlbmd0aDtmb3Iobj0wO248bztuKyspcltuXSYmKFwiLVwiPT09KGU9cltuXS5yZXBsYWNlKC9cXCovZyxcIi4qP1wiKSlbMF0/dC5za2lwcy5wdXNoKG5ldyBSZWdFeHAoXCJeXCIrZS5zbGljZSgxKStcIiRcIikpOnQubmFtZXMucHVzaChuZXcgUmVnRXhwKFwiXlwiK2UrXCIkXCIpKSl9LHQuZW5hYmxlZD1mdW5jdGlvbihlKXtpZihcIipcIj09PWVbZS5sZW5ndGgtMV0pcmV0dXJuITA7bGV0IG4scjtmb3Iobj0wLHI9dC5za2lwcy5sZW5ndGg7bjxyO24rKylpZih0LnNraXBzW25dLnRlc3QoZSkpcmV0dXJuITE7Zm9yKG49MCxyPXQubmFtZXMubGVuZ3RoO248cjtuKyspaWYodC5uYW1lc1tuXS50ZXN0KGUpKXJldHVybiEwO3JldHVybiExfSx0Lmh1bWFuaXplPW4oODI0KSx0LmRlc3Ryb3k9ZnVuY3Rpb24oKXtjb25zb2xlLndhcm4oXCJJbnN0YW5jZSBtZXRob2QgYGRlYnVnLmRlc3Ryb3koKWAgaXMgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIGRvZXMgYW55dGhpbmcuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uIG9mIGBkZWJ1Z2AuXCIpfSxPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChuPT57dFtuXT1lW25dfSkpLHQubmFtZXM9W10sdC5za2lwcz1bXSx0LmZvcm1hdHRlcnM9e30sdC5zZWxlY3RDb2xvcj1mdW5jdGlvbihlKXtsZXQgbj0wO2ZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKW49KG48PDUpLW4rZS5jaGFyQ29kZUF0KHQpLG58PTA7cmV0dXJuIHQuY29sb3JzW01hdGguYWJzKG4pJXQuY29sb3JzLmxlbmd0aF19LHQuZW5hYmxlKHQubG9hZCgpKSx0fX0sNjQzOmU9PntlLmV4cG9ydHM9ITF9LDgyNDplPT57dmFyIHQ9MWUzLG49NjAqdCxyPTYwKm4sbz0yNCpyO2Z1bmN0aW9uIHMoZSx0LG4scil7dmFyIG89dD49MS41Km47cmV0dXJuIE1hdGgucm91bmQoZS9uKStcIiBcIityKyhvP1wic1wiOlwiXCIpfWUuZXhwb3J0cz1mdW5jdGlvbihlLGkpe2k9aXx8e307dmFyIGEsdSxjPXR5cGVvZiBlO2lmKFwic3RyaW5nXCI9PT1jJiZlLmxlbmd0aD4wKXJldHVybiBmdW5jdGlvbihlKXtpZighKChlPVN0cmluZyhlKSkubGVuZ3RoPjEwMCkpe3ZhciBzPS9eKC0/KD86XFxkKyk/XFwuP1xcZCspICoobWlsbGlzZWNvbmRzP3xtc2Vjcz98bXN8c2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KT8kL2kuZXhlYyhlKTtpZihzKXt2YXIgaT1wYXJzZUZsb2F0KHNbMV0pO3N3aXRjaCgoc1syXXx8XCJtc1wiKS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJ5ZWFyc1wiOmNhc2VcInllYXJcIjpjYXNlXCJ5cnNcIjpjYXNlXCJ5clwiOmNhc2VcInlcIjpyZXR1cm4gMzE1NTc2ZTUqaTtjYXNlXCJ3ZWVrc1wiOmNhc2VcIndlZWtcIjpjYXNlXCJ3XCI6cmV0dXJuIDYwNDhlNSppO2Nhc2VcImRheXNcIjpjYXNlXCJkYXlcIjpjYXNlXCJkXCI6cmV0dXJuIGkqbztjYXNlXCJob3Vyc1wiOmNhc2VcImhvdXJcIjpjYXNlXCJocnNcIjpjYXNlXCJoclwiOmNhc2VcImhcIjpyZXR1cm4gaSpyO2Nhc2VcIm1pbnV0ZXNcIjpjYXNlXCJtaW51dGVcIjpjYXNlXCJtaW5zXCI6Y2FzZVwibWluXCI6Y2FzZVwibVwiOnJldHVybiBpKm47Y2FzZVwic2Vjb25kc1wiOmNhc2VcInNlY29uZFwiOmNhc2VcInNlY3NcIjpjYXNlXCJzZWNcIjpjYXNlXCJzXCI6cmV0dXJuIGkqdDtjYXNlXCJtaWxsaXNlY29uZHNcIjpjYXNlXCJtaWxsaXNlY29uZFwiOmNhc2VcIm1zZWNzXCI6Y2FzZVwibXNlY1wiOmNhc2VcIm1zXCI6cmV0dXJuIGk7ZGVmYXVsdDpyZXR1cm59fX19KGUpO2lmKFwibnVtYmVyXCI9PT1jJiZpc0Zpbml0ZShlKSlyZXR1cm4gaS5sb25nPyhhPWUsKHU9TWF0aC5hYnMoYSkpPj1vP3MoYSx1LG8sXCJkYXlcIik6dT49cj9zKGEsdSxyLFwiaG91clwiKTp1Pj1uP3MoYSx1LG4sXCJtaW51dGVcIik6dT49dD9zKGEsdSx0LFwic2Vjb25kXCIpOmErXCIgbXNcIik6ZnVuY3Rpb24oZSl7dmFyIHM9TWF0aC5hYnMoZSk7cmV0dXJuIHM+PW8/TWF0aC5yb3VuZChlL28pK1wiZFwiOnM+PXI/TWF0aC5yb3VuZChlL3IpK1wiaFwiOnM+PW4/TWF0aC5yb3VuZChlL24pK1wibVwiOnM+PXQ/TWF0aC5yb3VuZChlL3QpK1wic1wiOmUrXCJtc1wifShlKTt0aHJvdyBuZXcgRXJyb3IoXCJ2YWwgaXMgbm90IGEgbm9uLWVtcHR5IHN0cmluZyBvciBhIHZhbGlkIG51bWJlci4gdmFsPVwiK0pTT04uc3RyaW5naWZ5KGUpKX19LDE1MTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7bi5yKHQpLG4uZCh0LHtPYmxpdmlvdXNTZXQ6KCk9PnIsbm93OigpPT5zLHJlbW92ZVRvb09sZFZhbHVlczooKT0+b30pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLnR0bD1lLHRoaXMuc2V0PW5ldyBTZXQsdGhpcy50aW1lTWFwPW5ldyBNYXB9cmV0dXJuIGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXQuaGFzKGUpfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnRpbWVNYXAuc2V0KGUscygpKSx0aGlzLnNldC5hZGQoZSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtvKHQpfSksMCl9LGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zZXQuY2xlYXIoKSx0aGlzLnRpbWVNYXAuY2xlYXIoKX0sZX0oKTtmdW5jdGlvbiBvKGUpe2Zvcih2YXIgdD1zKCktZS50dGwsbj1lLnNldFtTeW1ib2wuaXRlcmF0b3JdKCk7Oyl7dmFyIHI9bi5uZXh0KCkudmFsdWU7aWYoIXIpcmV0dXJuO2lmKCEoZS50aW1lTWFwLmdldChyKTx0KSlyZXR1cm47ZS50aW1lTWFwLmRlbGV0ZShyKSxlLnNldC5kZWxldGUocil9fWZ1bmN0aW9uIHMoKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19LDE1NTplPT57dmFyIHQsbixyPWUuZXhwb3J0cz17fTtmdW5jdGlvbiBvKCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBzKCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIGkoZSl7aWYodD09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigodD09PW98fCF0KSYmc2V0VGltZW91dClyZXR1cm4gdD1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIHQoZSwwKX1jYXRjaChuKXt0cnl7cmV0dXJuIHQuY2FsbChudWxsLGUsMCl9Y2F0Y2gobil7cmV0dXJuIHQuY2FsbCh0aGlzLGUsMCl9fX0hZnVuY3Rpb24oKXt0cnl7dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6b31jYXRjaChlKXt0PW99dHJ5e249XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpzfWNhdGNoKGUpe249c319KCk7dmFyIGEsdT1bXSxjPSExLGw9LTE7ZnVuY3Rpb24gZCgpe2MmJmEmJihjPSExLGEubGVuZ3RoP3U9YS5jb25jYXQodSk6bD0tMSx1Lmxlbmd0aCYmZigpKX1mdW5jdGlvbiBmKCl7aWYoIWMpe3ZhciBlPWkoZCk7Yz0hMDtmb3IodmFyIHQ9dS5sZW5ndGg7dDspe2ZvcihhPXUsdT1bXTsrK2w8dDspYSYmYVtsXS5ydW4oKTtsPS0xLHQ9dS5sZW5ndGh9YT1udWxsLGM9ITEsZnVuY3Rpb24oZSl7aWYobj09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChuPT09c3x8IW4pJiZjbGVhclRpbWVvdXQpcmV0dXJuIG49Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7bihlKX1jYXRjaCh0KXt0cnl7cmV0dXJuIG4uY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBuLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gaChlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIHAoKXt9ci5uZXh0VGljaz1mdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1lbnRzW25dO3UucHVzaChuZXcgaChlLHQpKSwxIT09dS5sZW5ndGh8fGN8fGkoZil9LGgucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHIudGl0bGU9XCJicm93c2VyXCIsci5icm93c2VyPSEwLHIuZW52PXt9LHIuYXJndj1bXSxyLnZlcnNpb249XCJcIixyLnZlcnNpb25zPXt9LHIub249cCxyLmFkZExpc3RlbmVyPXAsci5vbmNlPXAsci5vZmY9cCxyLnJlbW92ZUxpc3RlbmVyPXAsci5yZW1vdmVBbGxMaXN0ZW5lcnM9cCxyLmVtaXQ9cCxyLnByZXBlbmRMaXN0ZW5lcj1wLHIucHJlcGVuZE9uY2VMaXN0ZW5lcj1wLHIubGlzdGVuZXJzPWZ1bmN0aW9uKGUpe3JldHVybltdfSxyLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWRcIil9LHIuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuXCIvXCJ9LHIuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxyLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSwyNzk6ZT0+e2Z1bmN0aW9uIHQoKXt9dC5wcm90b3R5cGU9e29uOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmV8fCh0aGlzLmU9e30pO3JldHVybihyW2VdfHwocltlXT1bXSkpLnB1c2goe2ZuOnQsY3R4Om59KSx0aGlzfSxvbmNlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2Z1bmN0aW9uIG8oKXtyLm9mZihlLG8pLHQuYXBwbHkobixhcmd1bWVudHMpfXJldHVybiBvLl89dCx0aGlzLm9uKGUsbyxuKX0sZW1pdDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSksbj0oKHRoaXMuZXx8KHRoaXMuZT17fSkpW2VdfHxbXSkuc2xpY2UoKSxyPTAsbz1uLmxlbmd0aDtyPG87cisrKW5bcl0uZm4uYXBwbHkobltyXS5jdHgsdCk7cmV0dXJuIHRoaXN9LG9mZjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZXx8KHRoaXMuZT17fSkscj1uW2VdLG89W107aWYociYmdClmb3IodmFyIHM9MCxpPXIubGVuZ3RoO3M8aTtzKyspcltzXS5mbiE9PXQmJnJbc10uZm4uXyE9PXQmJm8ucHVzaChyW3NdKTtyZXR1cm4gby5sZW5ndGg/bltlXT1vOmRlbGV0ZSBuW2VdLHRoaXN9fSxlLmV4cG9ydHM9dCxlLmV4cG9ydHMuVGlueUVtaXR0ZXI9dH0sNzk3OmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4scj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9LG4oZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfW4oZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmFzc2VydD10LkFzc2VydEVycm9yPXZvaWQgMDt2YXIgbz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7cmV0dXJuIG51bGwhPT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0LkFzc2VydEVycm9yPW8sdC5hc3NlcnQ9ZnVuY3Rpb24oZSx0LG4pe2lmKHQoZSkpcmV0dXJuIGU7dGhyb3cgbmV3IG8obil9fSw2MDE6KGUsdCk9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LlNPVVJDRV9OQU1FU1BBQ0U9dm9pZCAwLHQuU09VUkNFX05BTUVTUEFDRT1cIk9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWxcIn0sNzU4OmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG4scj10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8KG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbj1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oZSx0KXtlLl9fcHJvdG9fXz10fXx8ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKSYmKGVbbl09dFtuXSl9LG4oZSx0KX0sZnVuY3Rpb24oZSx0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIitTdHJpbmcodCkrXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtmdW5jdGlvbiByKCl7dGhpcy5jb25zdHJ1Y3Rvcj1lfW4oZSx0KSxlLnByb3RvdHlwZT1udWxsPT09dD9PYmplY3QuY3JlYXRlKHQpOihyLnByb3RvdHlwZT10LnByb3RvdHlwZSxuZXcgcil9KTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0Lkludm9rZUVycm9yPXQuTWVzc2FnZVRpbWVvdXRFcnJvcj10Lk1lc3NhZ2VFcnJvcj12b2lkIDA7dmFyIG89ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgbj1lLmNhbGwodGhpcyx0KXx8dGhpcztyZXR1cm4gbi5uYW1lPVwiTWVzc2FnZUVycm9yXCIsT2JqZWN0LnNldFByb3RvdHlwZU9mKG4scy5wcm90b3R5cGUpLG59cmV0dXJuIHIodCxlKSx0fShFcnJvcik7dC5NZXNzYWdlRXJyb3I9bzt2YXIgcz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KG4pe3ZhciByPWUuY2FsbCh0aGlzLG4pfHx0aGlzO3JldHVybiByLm5hbWU9XCJNZXNzYWdlVGltZW91dEVycm9yXCIsT2JqZWN0LnNldFByb3RvdHlwZU9mKHIsdC5wcm90b3R5cGUpLHJ9cmV0dXJuIHIodCxlKSx0fShFcnJvcik7dC5NZXNzYWdlVGltZW91dEVycm9yPXM7dmFyIGk9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXt2YXIgbj1lLmNhbGwodGhpcyx0KXx8dGhpcztyZXR1cm4gbi5uYW1lPVwiSW52b2tlRXJyb3JcIixPYmplY3Quc2V0UHJvdG90eXBlT2YobixzLnByb3RvdHlwZSksbn1yZXR1cm4gcih0LGUpLHR9KEVycm9yKTt0Lkludm9rZUVycm9yPWl9LDYwNzpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9LHM9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5PZmZpY2VTREtNZXNzYWdlRXZlbnQ9dC5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2U9dC5PZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsPXZvaWQgMDt2YXIgaT1zKG4oNjIzKSk7dC5PZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsPWkuZGVmYXVsdDt2YXIgYT1uKDkyOCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJpc09mZmljZVNES01lc3NhZ2VFdmVudExpa2VcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5pc09mZmljZVNES01lc3NhZ2VFdmVudExpa2V9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJPZmZpY2VTREtNZXNzYWdlRXZlbnRcIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYS5PZmZpY2VTREtNZXNzYWdlRXZlbnR9fSksbyhuKDkyOCksdCksbyhuKDYyMyksdCksbyhuKDc1OCksdCksbyhuKDg2KSx0KSxvKG4oNjAxKSx0KX0sOTI4OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZT10Lk9mZmljZVNES01lc3NhZ2VFdmVudD12b2lkIDA7dmFyIHI9bigxMzEpLG89big3OTcpLHM9big2MDEpLGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLG49ZS5jb250ZXh0LGk9ZS50aW1lLGE9ZS5vcmlnaW4sdT1lLmVtaXR0ZXIsYz1lLmNoYW5uZWxJZCxsPU9iamVjdC5hc3NpZ24oe30sbix7Y2hhbm5lbElkOmN9KTtcInN0cmluZ1wiPT10eXBlb2YgbC5tZXNzYWdlSWQmJlwiXCIhPT1sLm1lc3NhZ2VJZC50cmltKCl8fChsLm1lc3NhZ2VJZD0oMCxyLnV1aWQpKCkpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse2RhdGE6e2VudW1lcmFibGU6ITAsdmFsdWU6dH0sY29udGV4dDp7ZW51bWVyYWJsZTohMCx2YWx1ZTpsfSx0aW1lOntlbnVtZXJhYmxlOiEwLHZhbHVlOm51bGwhPWk/aTpEYXRlLm5vdygpfSxpZDp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5tZXNzYWdlSWR9fSxzb3VyY2U6e2VudW1lcmFibGU6ITAsdmFsdWU6cy5TT1VSQ0VfTkFNRVNQQUNFfSxvcmlnaW46e2VudW1lcmFibGU6ITAsdmFsdWU6YX0sZW1pdHRlcjp7ZW51bWVyYWJsZTohMCx2YWx1ZTp1fSxjaGFubmVsSWQ6e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGwuY2hhbm5lbElkfX19KSwoMCxvLmFzc2VydCkodGhpcy5jb250ZXh0LmNoYW5uZWxJZCwoZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGUmJmUubGVuZ3RoPjB9KSxcImNoYW5uZWwgaWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdcIiksKDAsby5hc3NlcnQpKHRoaXMuaWQsKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiZlLmxlbmd0aD4wfSksXCJpZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ1wiKSwoMCxvLmFzc2VydCkodGhpcy50aW1lLChmdW5jdGlvbihlKXtyZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZSYmZT49MH0pLFwidGltZSBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyXCIpfTt0Lk9mZmljZVNES01lc3NhZ2VFdmVudD1pLHQuaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBpKXJldHVybiEwO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT1lKXt2YXIgdD1lO3JldHVybiB0LnNvdXJjZT09PXMuU09VUkNFX05BTUVTUEFDRSYmXCJzdHJpbmdcIj09dHlwZW9mIHQuY2hhbm5lbElkJiZ0LmNoYW5uZWxJZC5sZW5ndGg+MCYmbnVsbCE9dC5jb250ZXh0fXJldHVybiExfX0sNjIzOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj10aGlzJiZ0aGlzLl9fYXdhaXRlcnx8ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIG5ldyhufHwobj1Qcm9taXNlKSkoKGZ1bmN0aW9uKG8scyl7ZnVuY3Rpb24gaShlKXt0cnl7dShyLm5leHQoZSkpfWNhdGNoKGUpe3MoZSl9fWZ1bmN0aW9uIGEoZSl7dHJ5e3Uoci50aHJvdyhlKSl9Y2F0Y2goZSl7cyhlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/byhlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiBuP3Q6bmV3IG4oKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oaSxhKX11KChyPXIuYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9LG89dGhpcyYmdGhpcy5fX2dlbmVyYXRvcnx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8scyxpPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119O3JldHVybiBzPXtuZXh0OmEoMCksdGhyb3c6YSgxKSxyZXR1cm46YSgyKX0sXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxzO2Z1bmN0aW9uIGEocyl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihzKXtpZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aTspdHJ5e2lmKG49MSxyJiYobz0yJnNbMF0/ci5yZXR1cm46c1swXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLHNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKHM9WzImc1swXSxvLnZhbHVlXSksc1swXSl7Y2FzZSAwOmNhc2UgMTpvPXM7YnJlYWs7Y2FzZSA0OnJldHVybiBpLmxhYmVsKysse3ZhbHVlOnNbMV0sZG9uZTohMX07Y2FzZSA1OmkubGFiZWwrKyxyPXNbMV0scz1bMF07Y29udGludWU7Y2FzZSA3OnM9aS5vcHMucG9wKCksaS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoISgobz0obz1pLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKXx8NiE9PXNbMF0mJjIhPT1zWzBdKSl7aT0wO2NvbnRpbnVlfWlmKDM9PT1zWzBdJiYoIW98fHNbMV0+b1swXSYmc1sxXTxvWzNdKSl7aS5sYWJlbD1zWzFdO2JyZWFrfWlmKDY9PT1zWzBdJiZpLmxhYmVsPG9bMV0pe2kubGFiZWw9b1sxXSxvPXM7YnJlYWt9aWYobyYmaS5sYWJlbDxvWzJdKXtpLmxhYmVsPW9bMl0saS5vcHMucHVzaChzKTticmVha31vWzJdJiZpLm9wcy5wb3AoKSxpLnRyeXMucG9wKCk7Y29udGludWV9cz10LmNhbGwoZSxpKX1jYXRjaChlKXtzPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmc1swXSl0aHJvdyBzWzFdO3JldHVybnt2YWx1ZTpzWzBdP3NbMV06dm9pZCAwLGRvbmU6ITB9fShbcyxhXSl9fX0scz10aGlzJiZ0aGlzLl9fc3ByZWFkQXJyYXl8fGZ1bmN0aW9uKGUsdCxuKXtpZihufHwyPT09YXJndW1lbnRzLmxlbmd0aClmb3IodmFyIHIsbz0wLHM9dC5sZW5ndGg7bzxzO28rKykhciYmbyBpbiB0fHwocnx8KHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCwwLG8pKSxyW29dPXRbb10pO3JldHVybiBlLmNvbmNhdChyfHxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KSl9LGk9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5Db250ZXh0VHlwZT10LkRFQlVHX05BTUVTUEFDRT10LklOVk9LRV9ERUZBVVRMX1RJTUVPVVQ9dm9pZCAwO3ZhciBhPW4oNDM3KSx1PW4oMjc5KSxjPW4oNzk3KSxsPW4oNzU4KSxkPW4oOTI4KSxmPW4oODYpLGg9aShuKDIyNykpLHA9aShuKDY3NSkpLHY9bigxMzEpO3QuSU5WT0tFX0RFRkFVVExfVElNRU9VVD02ZTQsdC5ERUJVR19OQU1FU1BBQ0U9XCJTTV9DSEFOXCI7dmFyIG0sZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIG4scz10aGlzO3RoaXMuaW52b2tlSGFuZGxlcnM9bmV3IE1hcCx0aGlzLmV2ZW50SGFuZGxlcnM9bmV3IE1hcCx0aGlzLmVtaXR0ZXJJZD0oMCx2LnV1aWQpKCksdGhpcy5fZGVidWdOYW1lc3BhY2U9dC5ERUJVR19OQU1FU1BBQ0UsdGhpcy5kZWJ1Zz0hMD09PWUuZGVidWcsdGhpcy5kZWJ1Z05hbWVzcGFjZT1udWxsIT09KG49ZS5kZWJ1Z05hbWVzcGFjZSkmJnZvaWQgMCE9PW4/bjp0LkRFQlVHX05BTUVTUEFDRSx0aGlzLmF1dG9TdHJ1Y3R1cmVkQ2xvbmU9ITA9PT1lLmF1dG9TdHJ1Y3R1cmVkQ2xvbmUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJpZFwiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOlwic3RyaW5nXCI9PXR5cGVvZiBlLmNoYW5uZWxJZD8oMCxjLmFzc2VydCkoZS5jaGFubmVsSWQudHJpbSgpLChmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGg+MH0pLFwiY2hhbm5lbElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nXCIpOigwLHYudXVpZCkoKX0pLHRoaXMuZW1pdHRlcj1uZXcgdS5UaW55RW1pdHRlcjt2YXIgaT1uZXcgYS5Ccm9hZGNhc3RDaGFubmVsKHRoaXMuaWQsZS5icm9hZGNhc3RDaGFubmVsT3B0aW9ucyk7aS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLChmdW5jdGlvbihlKXtyKHMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgdCxuLHI7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDp0cnl7dD10aGlzLmluaXRNZXNzYWdlRXZlbnQoZSl9Y2F0Y2godCl7cmV0dXJuKG49bmV3IGwuTWVzc2FnZUVycm9yKG51bGwhPT0ocj1udWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpJiZ2b2lkIDAhPT1yP3I6XCJtZXNzYWdlIGNhbm5vdCBiZSBoYW5kbGVkXCIpKS5vcmlnaW5NZXNzYWdlPWUuZGF0YSx0aGlzLmVtaXQoXCJtZXNzYWdlRXJyb3JcIixuKSxbMl19cmV0dXJuWzQsdGhpcy5kaXN0cmlidXRlTWVzc2FnZSh0KV07Y2FzZSAxOnJldHVybiBvLnNlbnQoKSxbMl19fSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gcihzLHZvaWQgMCx2b2lkIDAsKGZ1bmN0aW9uKCl7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZW1pdChcImVycm9yXCIsZSksWzJdfSkpfSkpfSkpfSkpLHRoaXMuY2hhbm5lbD1pfXJldHVybiBlLnByb3RvdHlwZS5pbml0TWVzc2FnZUV2ZW50PWZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe2VtaXR0ZXI6dGhpcy5lbWl0dGVySWR9LGUse2NoYW5uZWxJZDp0aGlzLmlkfSk7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIHQub3JpZ2luJiYodC5vcmlnaW49bG9jYXRpb24ub3JpZ2luKSxuZXcgZC5PZmZpY2VTREtNZXNzYWdlRXZlbnQodCl9LGUucHJvdG90eXBlLnN0cnVjdHVyZWRDbG9uZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hdXRvU3RydWN0dXJlZENsb25lPygwLGYuc3RydWN0dXJlZENsb25lKShlLHtyZXBsYWNlcjpmdW5jdGlvbigpe319KTplfSxlLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmV2ZW50SGFuZGxlcnMuZ2V0KGUpO0FycmF5LmlzQXJyYXkocil8fChyPVtdKSxyLnB1c2goW3Qsbl0pLHRoaXMuZXZlbnRIYW5kbGVycy5zZXQoZSxyKX0sZS5wcm90b3R5cGUub249ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7cmV0dXJuIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihlLHQsbiksZnVuY3Rpb24oKXtyLm9mZihlLHQsbil9fSxlLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLG89ZnVuY3Rpb24obixvKXtyLm9mZihlLHQsbyksdChuLG8pfTtyZXR1cm4gby5oYW5kbGVyPXQsdGhpcy5hZGRFdmVudExpc3RlbmVyKGUsbyxuKSxmdW5jdGlvbigpe3Iub2ZmKGUsdCxuKX19LGUucHJvdG90eXBlLm9mZj1mdW5jdGlvbihlLHQsbil7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpdGhpcy5ldmVudEhhbmRsZXJzLmRlbGV0ZShlKTtlbHNle3ZhciByPXRoaXMuZXZlbnRIYW5kbGVycy5nZXQoZSk7QXJyYXkuaXNBcnJheShyKSYmKFwiKlwiPT09KG51bGw9PW4/dm9pZCAwOm4uYXVkaWVuY2UpP3RoaXMuZXZlbnRIYW5kbGVycy5kZWxldGUoZSk6dGhpcy5ldmVudEhhbmRsZXJzLnNldChlLHIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgcj1lWzBdLG89ZVsxXTtyZXR1cm4gciE9PXQmJnIuaGFuZGxlciE9PXR8fChudWxsPT1vP3ZvaWQgMDpvLmF1ZGllbmNlKT09PShudWxsPT1uP3ZvaWQgMDpuLmF1ZGllbmNlKX0pKSkpfX0sZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5ldmVudEhhbmRsZXJzLmdldChlKTtpZih0aGlzLmxvZyhcImVtaXQgZXZlbnRcIix7bmFtZTplLGRhdGE6dCxjb250ZXh0Om4saGFuZGxlcnM6cn0pLEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBvPTAscz1yO288cy5sZW5ndGg7bysrKXt2YXIgaT1zW29dLGE9aVswXTt5KGlbMV0sbikmJmEodCxuKX19LGUucHJvdG90eXBlLnBvc3RNZXNzYWdlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciBuLHIscyxpO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6dHJ5e3I9dGhpcy5zdHJ1Y3R1cmVkQ2xvbmUoZSksbj0oMCxkLmlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZSkocik/dGhpcy5pbml0TWVzc2FnZUV2ZW50KHIpOnRoaXMuaW5pdE1lc3NhZ2VFdmVudCh7ZGF0YTpyLGNvbnRleHQ6bnVsbCE9dD90aGlzLm1lcmdlQ29udGV4dHMoW3RdKTp0fSl9Y2F0Y2godCl7dGhyb3cgdGhpcy5sb2coXCJtZXNzYWdlIGludmFsaWRcIixlLHQpLChpPW5ldyBsLk1lc3NhZ2VFcnJvcihudWxsPT10P3ZvaWQgMDp0Lm1lc3NhZ2UpKS5vcmlnaW5NZXNzYWdlPXIsaX1vLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBvLnRyeXMucHVzaChbMSwzLCw0XSksdGhpcy5sb2coXCJwcmUgcG9zdE1lc3NhZ2VcIix7bWVzc2FnZTpyLG9yaWdpbjplLGNvbnRleHQ6dCxzdHJ1Y3R1cmVkQ2xvbmVkOnRoaXMuYXV0b1N0cnVjdHVyZWRDbG9uZX0pLFs0LHRoaXMuY2hhbm5lbC5wb3N0TWVzc2FnZShuKV07Y2FzZSAyOnJldHVybiBvLnNlbnQoKSx0aGlzLmVtaXQoXCJwb3N0TWVzc2FnZVwiLG4sbi5jb250ZXh0KSx0aGlzLmxvZyhcInBvc3RNZXNzYWdlIHN1Y2Nlc3NcIixuKSxbMyw0XTtjYXNlIDM6dGhyb3cgcz1vLnNlbnQoKSx0aGlzLmxvZyhcInBvc3QgbWVzc2FnZSBlcnJvclwiLHMpLChpPW5ldyBsLk1lc3NhZ2VFcnJvcihudWxsPT1zP3ZvaWQgMDpzLm1lc3NhZ2UpKS5vcmlnaW5NZXNzYWdlPWUsaTtjYXNlIDQ6cmV0dXJuWzJdfX0pKX0pKX0sZS5wcm90b3R5cGUuZGlzdHJpYnV0ZU1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQsbixzO3JldHVybiByKHRoaXMsdm9pZCAwLHZvaWQgMCwoZnVuY3Rpb24oKXt2YXIgcixpO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuKG51bGw9PT0odD0ocj1lKS5jb250ZXh0KXx8dm9pZCAwPT09dD92b2lkIDA6dC5jaGFubmVsSWQpIT09dGhpcy5pZHx8ci5lbWl0dGVyPT09dGhpcy5lbWl0dGVySWQ/KHRoaXMubG9nKFwiZGlzY2FyZCBtZXNzYWdlXCIsciksWzJdKTpcImZ1bmN0aW9uXCIhPXR5cGVvZiB0aGlzLm9uTWVzc2FnZUFycml2ZT9bMywyXTpbNCx0aGlzLm9uTWVzc2FnZUFycml2ZShyKV07Y2FzZSAxOmlmKCEoKGk9by5zZW50KCkpaW5zdGFuY2VvZiBkLk9mZmljZVNES01lc3NhZ2VFdmVudCkpcmV0dXJuIHRoaXMubG9nKFwic2tpcCBkaXN0cmlidXRpbmcgbWVzc2FnZSBieSBgb25NZXNzYWdlQXJyaXZlYFwiLHttZXNzYWdlOmksb3JpZ2luOmV9KSxbMl07cj1pLG8ubGFiZWw9MjtjYXNlIDI6cmV0dXJuIHRoaXMubG9nKFwiZGlzdHJpYnV0ZSBtZXNzYWdlXCIse21lc3NhZ2U6cixvcmlnaW46ZX0pLChudWxsPT09KG49ci5jb250ZXh0KXx8dm9pZCAwPT09bj92b2lkIDA6bi50eXBlKSE9PW0uSW52b2tlUmVxdWVzdD9bMyw0XTpbNCx0aGlzLmhhbmRsZUludm9rZVJlcXVlc3QocildO2Nhc2UgMzpyZXR1cm4gby5zZW50KCksWzJdO2Nhc2UgNDpyZXR1cm4obnVsbD09PShzPXIuY29udGV4dCl8fHZvaWQgMD09PXM/dm9pZCAwOnMudHlwZSk9PT1tLkludm9rZVJlc3BvbnNlPyh0aGlzLmhhbmRsZUludm9rZVJlc3BvbnNlKHIpLFsyXSk6KHRoaXMuZW1pdChcIm1lc3NhZ2VcIixyLHIuY29udGV4dCksWzJdKX19KSl9KSl9LGUucHJvdG90eXBlLmhhbmRsZUludm9rZVJlcXVlc3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciB0LG4scixzLGksYSx1LGMsbCxkLGY7cmV0dXJuIG8odGhpcywoZnVuY3Rpb24obyl7c3dpdGNoKG8ubGFiZWwpe2Nhc2UgMDppZighKDAscC5kZWZhdWx0KShlLmRhdGEpKXRocm93IHRoaXMubG9nKFwiaW52YWxpZCBpbnZva2UgcmVxdWVzdFwiLGUpLG5ldyBFcnJvcihcIkludm9rZVJlcXVlc3QgZGF0YSBtdXN0IGJlIGFuIG9iamVjdFwiKTtpZih0PWUuZGF0YSxuPXQubmFtZSxyPXQuYXJncyxzPXRoaXMuaW52b2tlSGFuZGxlcnMuZ2V0KG4pLHRoaXMubG9nKFwiaGFuZGxlIGludm9rZSByZXF1ZXN0XCIse21lc3NhZ2U6ZSxoYW5kbGVyczpzfSksaT1lLmNvbnRleHQsIUFycmF5LmlzQXJyYXkocyl8fDA9PT1zLmxlbmd0aClyZXR1cm4gdGhpcy5sb2coXCJubyBpbnZva2UgaGFuZGxlcnNcIixuKSxbMl07YT0wLHU9cyxvLmxhYmVsPTE7Y2FzZSAxOmlmKCEoYTx1Lmxlbmd0aCkpcmV0dXJuWzMsOF07aWYoIXkoKGM9dVthXSkuY29udGV4dCxpKSlyZXR1cm5bMyw3XTtsPXtkYXRhOnZvaWQgMH0sby5sYWJlbD0yO2Nhc2UgMjpyZXR1cm4gby50cnlzLnB1c2goWzIsNCwsNV0pLGQ9bCxbNCxjLmhhbmRsZXIuYXBwbHkoYyxyKV07Y2FzZSAzOnJldHVybiBkLmRhdGE9by5zZW50KCksWzMsNV07Y2FzZSA0OnJldHVybiBmPW8uc2VudCgpLGwuZXJyb3I9ZixbMyw1XTtjYXNlIDU6cmV0dXJuWzQsdGhpcy5wb3N0TWVzc2FnZShsLE9iamVjdC5hc3NpZ24oe30saSx7dHlwZTptLkludm9rZVJlc3BvbnNlfSkpXTtjYXNlIDY6cmV0dXJuIG8uc2VudCgpLFsyXTtjYXNlIDc6cmV0dXJuIGErKyxbMywxXTtjYXNlIDg6cmV0dXJuIHRoaXMubG9nKFwibm8gaW52b2tlIGhhbmRsZXIgZm91bmRcIixuKSxbMl19fSkpfSkpfSxlLnByb3RvdHlwZS5oYW5kbGVJbnZva2VSZXNwb25zZT1mdW5jdGlvbihlKXtpZih0aGlzLmxvZyhcImhhbmRsZSBpbnZva2UgcmVzcG9uc2VcIixlKSxcInN0cmluZ1wiIT10eXBlb2YgZS5pZCl0aHJvdyBuZXcgbC5JbnZva2VFcnJvcihcIkludm9rZSByZXNwb25zZSBjb250ZXh0IGlkIGlzIGludmFsaWRcIik7dGhpcy5lbWl0dGVyLmVtaXQoZS5pZCxlLmRhdGEpfSxlLnByb3RvdHlwZS5tZXJnZUNvbnRleHRzPWZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuYXNzaWduLmFwcGx5KE9iamVjdCxzKFt7Y2hhbm5lbElkOnRoaXMuaWR9XSxlLCExKSl9LGUucHJvdG90eXBlLmludm9rZT1mdW5jdGlvbihlLG4scyl7cmV0dXJuIHIodGhpcyx2b2lkIDAsdm9pZCAwLChmdW5jdGlvbigpe3ZhciByLGksYSx1LGMsZD10aGlzO3JldHVybiBvKHRoaXMsKGZ1bmN0aW9uKG8pe3N3aXRjaChvLmxhYmVsKXtjYXNlIDA6cmV0dXJuIHI9e25hbWU6ZSxhcmdzOm59LGk9XCJudW1iZXJcIj09dHlwZW9mKG51bGw9PXM/dm9pZCAwOnMudGltZW91dCkmJihudWxsPT1zP3ZvaWQgMDpzLnRpbWVvdXQpPjA/bnVsbD09cz92b2lkIDA6cy50aW1lb3V0OnQuSU5WT0tFX0RFRkFVVExfVElNRU9VVCxhPSgwLHYudXVpZCkoKSx1PW5ldyBQcm9taXNlKChmdW5jdGlvbih0LHIpe2QuZW1pdHRlci5vbmNlKGEsKGZ1bmN0aW9uKG8pe2lmKG8uZXJyb3IgaW5zdGFuY2VvZiBsLkludm9rZUVycm9yKXIoby5lcnJvcik7ZWxzZSBpZihudWxsIT1vLmVycm9yKXt2YXIgcz1uZXcgbC5JbnZva2VFcnJvcihcInN0cmluZ1wiPT10eXBlb2Ygby5lcnJvcj9vLmVycm9yOm8uZXJyb3IubWVzc2FnZSk7cy5tZXRob2Q9ZSxzLmFyZ3VtZW50cz1uLHIocyl9ZWxzZSB0KG8uZGF0YSl9KSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtkLmVtaXR0ZXIub2ZmKGEpLHIobmV3IGwuTWVzc2FnZVRpbWVvdXRFcnJvcihcIlwiLmNvbmNhdChlLFwiIGludm9rZSB0aW1lb3V0XCIpKSl9KSxpKX0pKSxbNCx0aGlzLnBvc3RNZXNzYWdlKHIsT2JqZWN0LmFzc2lnbih7fSxzLHttZXNzYWdlSWQ6YSx0aW1lb3V0OmksdHlwZTptLkludm9rZVJlcXVlc3R9KSldO2Nhc2UgMTpvLnNlbnQoKSxvLmxhYmVsPTI7Y2FzZSAyOnJldHVybiBvLnRyeXMucHVzaChbMiw0LCw1XSksWzQsdV07Y2FzZSAzOnJldHVyblsyLG8uc2VudCgpXTtjYXNlIDQ6dGhyb3cgYz1vLnNlbnQoKSx0aGlzLmxvZyhcImludm9rZSBlcnJvclwiLHtpZDphLG5hbWU6ZSxhcmdzOm4scGF5bG9hZDpyLGVycm9yOmN9KSxjO2Nhc2UgNTpyZXR1cm5bMl19fSkpfSkpfSxlLnByb3RvdHlwZS5hZGRJbnZva2VIYW5kbGVyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLmludm9rZUhhbmRsZXJzLmdldChlKTtBcnJheS5pc0FycmF5KHIpfHwocj1bXSksci5wdXNoKHtoYW5kbGVyOnQsY29udGV4dDpufSksdGhpcy5pbnZva2VIYW5kbGVycy5zZXQoZSxyKX0sZS5wcm90b3R5cGUucmVtb3ZlSW52b2tlSGFuZGxlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5pbnZva2VIYW5kbGVycy5nZXQoZSk7QXJyYXkuaXNBcnJheShyKSYmdGhpcy5pbnZva2VIYW5kbGVycy5zZXQoZSxyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHI7cmV0dXJuIGUuaGFuZGxlciE9PXR8fChudWxsPT09KHI9ZS5jb250ZXh0KXx8dm9pZCAwPT09cj92b2lkIDA6ci5hdWRpZW5jZSkhPT0obnVsbD09bj92b2lkIDA6bi5hdWRpZW5jZSl9KSkpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsXCJkZWJ1Z1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gaC5kZWZhdWx0LmVuYWJsZWQodGhpcy5fZGVidWdOYW1lc3BhY2UpfSxzZXQ6ZnVuY3Rpb24oZSl7aC5kZWZhdWx0LmVuYWJsZShlP3RoaXMuX2RlYnVnTmFtZXNwYWNlOlwiLVwiLmNvbmNhdCh0aGlzLl9kZWJ1Z05hbWVzcGFjZSkpfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSxcImRlYnVnTmFtZXNwYWNlXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kZWJ1Z05hbWVzcGFjZX0sc2V0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZGVidWc7aC5kZWZhdWx0LmVuYWJsZShcIi1cIi5jb25jYXQodGhpcy5fZGVidWdOYW1lc3BhY2UpKSx0aGlzLmxvZz0oMCxoLmRlZmF1bHQpKGUpLHRoaXMuX2RlYnVnTmFtZXNwYWNlPWUsdCYmaC5kZWZhdWx0LmVuYWJsZShlKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxlfSgpO2Z1bmN0aW9uIHkoZSx0KXt2YXIgbj1udWxsPT1lP3ZvaWQgMDplLmF1ZGllbmNlLHI9bnVsbD09dD92b2lkIDA6dC5hdWRpZW5jZTtyZXR1cm4gbj09PXJ8fFwiKlwiPT09bnx8XCIqXCI9PT1yfXQuZGVmYXVsdD1nLGZ1bmN0aW9uKGUpe2VbZS5JbnZva2VSZXF1ZXN0PTBdPVwiSW52b2tlUmVxdWVzdFwiLGVbZS5JbnZva2VSZXNwb25zZT0xXT1cIkludm9rZVJlc3BvbnNlXCJ9KG09dC5Db250ZXh0VHlwZXx8KHQuQ29udGV4dFR5cGU9e30pKX0sODY6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO3ZhciByPXRoaXMmJnRoaXMuX19pbXBvcnREZWZhdWx0fHxmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuc3RydWN0dXJlZENsb25lPXZvaWQgMDt2YXIgbz1yKG4oNjc1KSkscz1uKDkyOCk7ZnVuY3Rpb24gaShlLHQpe3RyeXtyZXR1cm4gZSBpbnN0YW5jZW9mIHR9Y2F0Y2goZSl7cmV0dXJuITF9fXQuc3RydWN0dXJlZENsb25lPWZ1bmN0aW9uIGUodCxuKXtpZih2b2lkIDA9PT1uJiYobj17fSksXCJzdHJpbmdcIj09dHlwZW9mIHR8fFwibnVtYmVyXCI9PXR5cGVvZiB0fHxcImJvb2xlYW5cIj09dHlwZW9mIHR8fG51bGw9PXR8fHQgaW5zdGFuY2VvZiBEYXRlfHx0IGluc3RhbmNlb2YgUmVnRXhwfHx0IGluc3RhbmNlb2YgQm9vbGVhbnx8dCBpbnN0YW5jZW9mIFN0cmluZ3x8dCBpbnN0YW5jZW9mIHMuT2ZmaWNlU0RLTWVzc2FnZUV2ZW50KXJldHVybiB0O3RyeXtmb3IodmFyIHI9MCxhPVt3aW5kb3cuQXJyYXlCdWZmZXIsd2luZG93Lk1hcCx3aW5kb3cuU2V0LHdpbmRvdy5EYXRhVmlldyx3aW5kb3cuRmlsZSx3aW5kb3cuRmlsZUxpc3Qsd2luZG93LkJsb2Isd2luZG93LkltYWdlQml0bWFwLHdpbmRvdy5JbWFnZURhdGFdO3I8YS5sZW5ndGg7cisrKWlmKGkodCxhW3JdKSlyZXR1cm4gdH1jYXRjaChlKXt9aWYoKDAsby5kZWZhdWx0KSh0KSl7dmFyIHU9dCxjPXt9O2Zvcih2YXIgbCBpbiB1KSEwPT09T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHUsbCkmJihjW2xdPWUodVtsXSxuKSk7cmV0dXJuIGN9aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdC5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBlKHQsbil9KSk7aWYodCBpbnN0YW5jZW9mIEVycm9yKXJldHVybiB0Lm1lc3NhZ2U7dHJ5e2lmKHQgaW5zdGFuY2VvZiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVWludDhBcnJheSkpcmV0dXJuIHR9Y2F0Y2goZSl7fWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIG4ucmVwbGFjZXIpe3ZhciBkPU9iamVjdC5hc3NpZ24oe30sbik7cmV0dXJuIGQucmVwbGFjZXI9dm9pZCAwLGUobi5yZXBsYWNlcih0KSxkKX10aHJvdyBuZXcgRXJyb3IoXCJcIi5jb25jYXQoU3RyaW5nKHQpLFwiIGNvdWxkIG5vdCBiZSBjbG9uZWRcIikpfX0sMTMxOihlLHQpPT57XCJ1c2Ugc3RyaWN0XCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC51dWlkPXZvaWQgMCx0LnV1aWQ9ZnVuY3Rpb24oKXtmb3IodmFyIGUsdD1bXSxuPShudWxsIT09KGU9d2luZG93LmNyeXB0bykmJnZvaWQgMCE9PWU/ZTp3aW5kb3cubXNDcnlwdG8pLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgyMCkpLHI9MDtyPG4ubGVuZ3RoO3IrKyl0LnB1c2gobltyXS50b1N0cmluZygxNikucGFkU3RhcnQoMixcIjBcIikpO2Zvcih2YXIgbz0wLHM9WzQsNywxMCwxM107bzxzLmxlbmd0aDtvKyspdFtzW29dXT1cIi1cIjtyZXR1cm4gdC5qb2luKFwiXCIpfX0sNDk5OihlLHQsbik9PntcInVzZSBzdHJpY3RcIjtuLnIodCksbi5kKHQse2FkZDooKT0+ZCxnZXRTaXplOigpPT5wLHJlbW92ZUFsbDooKT0+aCxydW5BbGw6KCk9PmZ9KTt2YXIgcj1uKDY0Myksbz1uLm4ocik7Y29uc3Qgcz17YWRkOmZ1bmN0aW9uKGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIFdvcmtlckdsb2JhbFNjb3BlJiZzZWxmIGluc3RhbmNlb2YgV29ya2VyR2xvYmFsU2NvcGUpO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpcmV0dXJuO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmVmb3JldW5sb2FkXCIsKGZ1bmN0aW9uKCl7ZSgpfSksITApLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidW5sb2FkXCIsKGZ1bmN0aW9uKCl7ZSgpfSksITApfX19O3ZhciBpPW4oMTk5KSxhPW4ubihpKSx1PW8oKT9hKCk6cyxjPW5ldyBTZXQsbD0hMTtmdW5jdGlvbiBkKGUpe2lmKGx8fChsPSEwLHUuYWRkKGYpKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcihcIkxpc3RlbmVyIGlzIG5vIGZ1bmN0aW9uXCIpO3JldHVybiBjLmFkZChlKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVsZXRlKGUpfSxydW46ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWxldGUoZSksZSgpfX19ZnVuY3Rpb24gZigpe3ZhciBlPVtdO3JldHVybiBjLmZvckVhY2goKGZ1bmN0aW9uKHQpe2UucHVzaCh0KCkpLGMuZGVsZXRlKHQpfSkpLFByb21pc2UuYWxsKGUpfWZ1bmN0aW9uIGgoKXtjLmNsZWFyKCl9ZnVuY3Rpb24gcCgpe3JldHVybiBjLnNpemV9fSwxOTk6KCk9Pnt9LDY3NTooZSx0LG4pPT57XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcihlKXtpZihcIltvYmplY3QgT2JqZWN0XVwiIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpKXJldHVybiExO2NvbnN0IHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9bi5yKHQpLG4uZCh0LHtkZWZhdWx0OigpPT5yfSl9fSx0PXt9O2Z1bmN0aW9uIG4ocil7dmFyIG89dFtyXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIHM9dFtyXT17ZXhwb3J0czp7fX07cmV0dXJuIGVbcl0uY2FsbChzLmV4cG9ydHMscyxzLmV4cG9ydHMsbikscy5leHBvcnRzfXJldHVybiBuLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBuLmQodCx7YTp0fSksdH0sbi5kPShlLHQpPT57Zm9yKHZhciByIGluIHQpbi5vKHQscikmJiFuLm8oZSxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSxuLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLG4ucj1lPT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0sbig2MDcpfSkoKSkpOyIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIvKlxuICogQ29weXJpZ2h0IDIwMTggR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdFxuICogdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2ZcbiAqIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVFxuICogV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlXG4gKiBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlclxuICogdGhlIExpY2Vuc2UuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4oZnVuY3Rpb24oc2NvcGUpIHtcbiAgaWYgKHNjb3BlWydQcm94eSddKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHNjb3BlLlByb3h5ID0gcmVxdWlyZSgnLi9wcm94eS5qcycpKCk7XG4gIHNjb3BlLlByb3h5WydyZXZvY2FibGUnXSA9IHNjb3BlLlByb3h5LnJldm9jYWJsZTtcbn0pKFxuICAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBwcm9jZXNzICYmXG4gICAgJ1tvYmplY3QgcHJvY2Vzc10nID09PSB7fS50b1N0cmluZy5jYWxsKHByb2Nlc3MpKSB8fFxuICAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnByb2R1Y3QgPT09ICdSZWFjdE5hdGl2ZScpXG4gICAgPyBnbG9iYWxcbiAgICA6IHNlbGZcbik7XG5cbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAxNiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90XG4gKiB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZlxuICogdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUXG4gKiBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGVcbiAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyXG4gKiB0aGUgTGljZW5zZS5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHByb3h5UG9seWZpbGwoKSB7XG4gIGxldCBsYXN0UmV2b2tlRm4gPSBudWxsO1xuICBsZXQgUHJveHlQb2x5ZmlsbDtcblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBvXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHdoZXRoZXIgdGhpcyBpcyBwcm9iYWJseSBhIChub24tbnVsbCkgT2JqZWN0XG4gICAqL1xuICBmdW5jdGlvbiBpc09iamVjdChvKSB7XG4gICAgcmV0dXJuIG8gPyAodHlwZW9mIG8gPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvID09PSAnZnVuY3Rpb24nKSA6IGZhbHNlO1xuICB9XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVQcm90byhwcm90bykge1xuICAgIGlmIChwcm90byAhPT0gbnVsbCAmJiAhaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsOiAnICsgcHJvdG8pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0ICRPYmplY3QgPSBPYmplY3Q7XG5cbiAgLy8gQ2xvc3VyZSBhc3N1bWVzIHRoYXQgYHtfX3Byb3RvX186IG51bGx9IGluc3RhbmNlb2YgT2JqZWN0YCBpcyBhbHdheXMgdHJ1ZSwgaGVuY2Ugd2h5IHdlIGNoZWNrIGFnYWluc3QgYSBkaWZmZXJlbnQgbmFtZS5cbiAgY29uc3QgY2FuQ3JlYXRlTnVsbFByb3RvT2JqZWN0cyA9IEJvb2xlYW4oJE9iamVjdC5jcmVhdGUpIHx8ICEoeyBfX3Byb3RvX186IG51bGwgfSBpbnN0YW5jZW9mICRPYmplY3QpO1xuICBjb25zdCBvYmplY3RDcmVhdGUgPVxuICAgICRPYmplY3QuY3JlYXRlIHx8XG4gICAgKGNhbkNyZWF0ZU51bGxQcm90b09iamVjdHNcbiAgICAgID8gZnVuY3Rpb24gY3JlYXRlKHByb3RvKSB7XG4gICAgICAgICAgdmFsaWRhdGVQcm90byhwcm90byk7XG4gICAgICAgICAgcmV0dXJuIHsgX19wcm90b19fOiBwcm90byB9O1xuICAgICAgICB9XG4gICAgICA6IGZ1bmN0aW9uIGNyZWF0ZShwcm90bykge1xuICAgICAgICAgIHZhbGlkYXRlUHJvdG8ocHJvdG8pO1xuICAgICAgICAgIGlmIChwcm90byA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCdOYXRpdmUgT2JqZWN0LmNyZWF0ZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgb2JqZWN0cyB3aXRoIG51bGwgcHJvdG90eXBlJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gbmIuIGNhc3QgdG8gY29udmluY2UgQ2xvc3VyZSBjb21waWxlciB0aGF0IHRoaXMgaXMgYSBjb25zdHJ1Y3RvclxuICAgICAgICAgIHZhciBUID0gLyoqIEB0eXBlIHshRnVuY3Rpb259ICovIChmdW5jdGlvbiBUKCkge30pO1xuICAgICAgICAgIFQucHJvdG90eXBlID0gcHJvdG87XG4gICAgICAgICAgcmV0dXJuIG5ldyBUKCk7XG4gICAgICAgIH0pO1xuXG4gIGNvbnN0IG5vb3AgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG51bGw7IH07XG5cbiAgY29uc3QgZ2V0UHJvdG8gPVxuICAgICRPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHxcbiAgICAoW10uX19wcm90b19fID09PSBBcnJheS5wcm90b3R5cGVcbiAgICAgID8gZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YoTykge1xuICAgICAgICAgIC8vIElmIE8uW1tQcm90b3R5cGVdXSA9PT0gbnVsbCwgdGhlbiB0aGUgX19wcm90b19fIGFjY2Vzc29yIHdvbid0IGV4aXN0LFxuICAgICAgICAgIC8vIGFzIGl0J3MgaW5oZXJpdGVkIGZyb20gYE9iamVjdC5wcm90b3R5cGVgXG4gICAgICAgICAgY29uc3QgcHJvdG8gPSBPLl9fcHJvdG9fXztcbiAgICAgICAgICByZXR1cm4gaXNPYmplY3QocHJvdG8pID8gcHJvdG8gOiBudWxsO1xuICAgICAgICB9XG4gICAgICA6IG5vb3ApO1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHshT2JqZWN0fSB0YXJnZXRcbiAgICogQHBhcmFtIHt7YXBwbHksIGNvbnN0cnVjdCwgZ2V0LCBzZXR9fSBoYW5kbGVyXG4gICAqL1xuICBQcm94eVBvbHlmaWxsID0gZnVuY3Rpb24odGFyZ2V0LCBoYW5kbGVyKSB7XG4gICAgY29uc3QgbmV3VGFyZ2V0ID0gdGhpcyAmJiB0aGlzIGluc3RhbmNlb2YgUHJveHlQb2x5ZmlsbCA/IHRoaXMuY29uc3RydWN0b3IgOiB1bmRlZmluZWQ7XG4gICAgaWYgKG5ld1RhcmdldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ29uc3RydWN0b3IgUHJveHkgcmVxdWlyZXMgJ25ldydcIik7XG4gICAgfVxuXG4gICAgaWYgKCFpc09iamVjdCh0YXJnZXQpIHx8ICFpc09iamVjdChoYW5kbGVyKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNyZWF0ZSBwcm94eSB3aXRoIGEgbm9uLW9iamVjdCBhcyB0YXJnZXQgb3IgaGFuZGxlcicpO1xuICAgIH1cblxuICAgIC8vIENvbnN0cnVjdCByZXZva2UgZnVuY3Rpb24sIGFuZCBzZXQgbGFzdFJldm9rZUZuIHNvIHRoYXQgUHJveHkucmV2b2NhYmxlIGNhbiBzdGVhbCBpdC5cbiAgICAvLyBUaGUgY2FsbGVyIG1pZ2h0IGdldCB0aGUgd3JvbmcgcmV2b2tlIGZ1bmN0aW9uIGlmIGEgdXNlciByZXBsYWNlcyBvciB3cmFwcyBzY29wZS5Qcm94eVxuICAgIC8vIHRvIGNhbGwgaXRzZWxmLCBidXQgdGhhdCBzZWVtcyB1bmxpa2VseSBlc3BlY2lhbGx5IHdoZW4gdXNpbmcgdGhlIHBvbHlmaWxsLlxuICAgIGxldCB0aHJvd1Jldm9rZWQgPSBmdW5jdGlvbigpIHt9O1xuICAgIGxhc3RSZXZva2VGbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgLyoqIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30gKi9cbiAgICAgIHRhcmdldCA9IG51bGw7ICAvLyBjbGVhciByZWZcbiAgICAgIHRocm93UmV2b2tlZCA9IGZ1bmN0aW9uKHRyYXApIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgQ2Fubm90IHBlcmZvcm0gJyR7dHJhcH0nIG9uIGEgcHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkYCk7XG4gICAgICB9O1xuICAgIH07XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIGxhc3RSZXZva2VGbiA9IG51bGw7XG4gICAgfSwgMCk7XG5cbiAgICAvLyBGYWlsIG9uIHVuc3VwcG9ydGVkIHRyYXBzOiBDaHJvbWUgZG9lc24ndCBkbyB0aGlzLCBidXQgZW5zdXJlIHRoYXQgdXNlcnMgb2YgdGhlIHBvbHlmaWxsXG4gICAgLy8gYXJlIGEgYml0IG1vcmUgY2FyZWZ1bC4gQ29weSB0aGUgaW50ZXJuYWwgcGFydHMgb2YgaGFuZGxlciB0byBwcmV2ZW50IHVzZXIgY2hhbmdlcy5cbiAgICBjb25zdCB1bnNhZmVIYW5kbGVyID0gaGFuZGxlcjtcbiAgICBoYW5kbGVyID0geyAnZ2V0JzogbnVsbCwgJ3NldCc6IG51bGwsICdhcHBseSc6IG51bGwsICdjb25zdHJ1Y3QnOiBudWxsIH07XG4gICAgZm9yIChsZXQgayBpbiB1bnNhZmVIYW5kbGVyKSB7XG4gICAgICBpZiAoIShrIGluIGhhbmRsZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFByb3h5IHBvbHlmaWxsIGRvZXMgbm90IHN1cHBvcnQgdHJhcCAnJHtrfSdgKTtcbiAgICAgIH1cbiAgICAgIGhhbmRsZXJba10gPSB1bnNhZmVIYW5kbGVyW2tdO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHVuc2FmZUhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFsbG93IGhhbmRsZXIgdG8gYmUgYSBmdW5jdGlvbiAod2hpY2ggaGFzIGFuICdhcHBseScgbWV0aG9kKS4gVGhpcyBtYXRjaGVzIHdoYXQgaXNcbiAgICAgIC8vIHByb2JhYmx5IGEgYnVnIGluIG5hdGl2ZSB2ZXJzaW9ucy4gSXQgdHJlYXRzIHRoZSBhcHBseSBjYWxsIGFzIGEgdHJhcCB0byBiZSBjb25maWd1cmVkLlxuICAgICAgaGFuZGxlci5hcHBseSA9IHVuc2FmZUhhbmRsZXIuYXBwbHkuYmluZCh1bnNhZmVIYW5kbGVyKTtcbiAgICB9XG5cbiAgICAvLyBEZWZpbmUgcHJveHkgYXMgYW4gb2JqZWN0IHRoYXQgZXh0ZW5kcyB0YXJnZXQuW1tQcm90b3R5cGVdXSxcbiAgICAvLyBvciBhIEZ1bmN0aW9uIChpZiBlaXRoZXIgaXQncyBjYWxsYWJsZSwgb3IgYXBwbHkgaXMgc2V0KS5cbiAgICBjb25zdCBwcm90byA9IGdldFByb3RvKHRhcmdldCk7ICAvLyBjYW4gcmV0dXJuIG51bGwgaW4gb2xkIGJyb3dzZXJzXG4gICAgbGV0IHByb3h5O1xuICAgIGxldCBpc01ldGhvZCA9IGZhbHNlO1xuICAgIGxldCBpc0FycmF5ID0gZmFsc2U7XG4gICAgaWYgKHR5cGVvZiB0YXJnZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHByb3h5ID0gZnVuY3Rpb24gUHJveHlQb2x5ZmlsbCgpIHtcbiAgICAgICAgY29uc3QgdXNpbmdOZXcgPSAodGhpcyAmJiB0aGlzLmNvbnN0cnVjdG9yID09PSBwcm94eSk7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICB0aHJvd1Jldm9rZWQodXNpbmdOZXcgPyAnY29uc3RydWN0JyA6ICdhcHBseScpO1xuXG4gICAgICAgIC8vIFRPRE8oc2FtdGhvcik6IENsb3N1cmUgY29tcGlsZXIgZG9lc24ndCBrbm93IGFib3V0ICdjb25zdHJ1Y3QnLCBhdHRlbXB0cyB0byByZW5hbWUgaXQuXG4gICAgICAgIGlmICh1c2luZ05ldyAmJiBoYW5kbGVyWydjb25zdHJ1Y3QnXSkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVyWydjb25zdHJ1Y3QnXS5jYWxsKHRoaXMsIHRhcmdldCwgYXJncyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXVzaW5nTmV3ICYmIGhhbmRsZXIuYXBwbHkpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlclsnYXBwbHknXSh0YXJnZXQsIHRoaXMsIGFyZ3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2luY2UgdGhlIHRhcmdldCB3YXMgYSBmdW5jdGlvbiwgZmFsbGJhY2sgdG8gY2FsbGluZyBpdCBkaXJlY3RseS5cbiAgICAgICAgaWYgKHVzaW5nTmV3KSB7XG4gICAgICAgICAgLy8gaW5zcGlyZWQgYnkgYW5zd2VycyB0byBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3EvMTYwNjc5N1xuICAgICAgICAgIGFyZ3MudW5zaGlmdCh0YXJnZXQpOyAgLy8gcGFzcyBjbGFzcyBhcyBmaXJzdCBhcmcgdG8gY29uc3RydWN0b3IsIGFsdGhvdWdoIGlycmVsZXZhbnRcbiAgICAgICAgICAvLyBuYi4gY2FzdCB0byBjb252aW5jZSBDbG9zdXJlIGNvbXBpbGVyIHRoYXQgdGhpcyBpcyBhIGNvbnN0cnVjdG9yXG4gICAgICAgICAgY29uc3QgZiA9IC8qKiBAdHlwZSB7IUZ1bmN0aW9ufSAqLyAodGFyZ2V0LmJpbmQuYXBwbHkodGFyZ2V0LCBhcmdzKSk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBmKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgIH07XG4gICAgICBpc01ldGhvZCA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0YXJnZXQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcHJveHkgPSBbXTtcbiAgICAgIGlzQXJyYXkgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm94eSA9IChjYW5DcmVhdGVOdWxsUHJvdG9PYmplY3RzIHx8IHByb3RvICE9PSBudWxsKSA/IG9iamVjdENyZWF0ZShwcm90bykgOiB7fTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgZGVmYXVsdCBnZXR0ZXJzL3NldHRlcnMuIENyZWF0ZSBkaWZmZXJlbnQgY29kZSBwYXRocyBhcyBoYW5kbGVyLmdldC9oYW5kbGVyLnNldCBjYW4ndFxuICAgIC8vIGNoYW5nZSBhZnRlciBjcmVhdGlvbi5cbiAgICBjb25zdCBnZXR0ZXIgPSBoYW5kbGVyLmdldCA/IGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgIHRocm93UmV2b2tlZCgnZ2V0Jyk7XG4gICAgICByZXR1cm4gaGFuZGxlci5nZXQodGhpcywgcHJvcCwgcHJveHkpO1xuICAgIH0gOiBmdW5jdGlvbihwcm9wKSB7XG4gICAgICB0aHJvd1Jldm9rZWQoJ2dldCcpO1xuICAgICAgcmV0dXJuIHRoaXNbcHJvcF07XG4gICAgfTtcbiAgICBjb25zdCBzZXR0ZXIgPSBoYW5kbGVyLnNldCA/IGZ1bmN0aW9uKHByb3AsIHZhbHVlKSB7XG4gICAgICB0aHJvd1Jldm9rZWQoJ3NldCcpO1xuICAgICAgY29uc3Qgc3RhdHVzID0gaGFuZGxlci5zZXQodGhpcywgcHJvcCwgdmFsdWUsIHByb3h5KTtcbiAgICAgIC8vIFRPRE8oc2FtdGhvcik6IElmIHRoZSBjYWxsaW5nIGNvZGUgaXMgaW4gc3RyaWN0IG1vZGUsIHRocm93IFR5cGVFcnJvci5cbiAgICAgIC8vIGlmICghc3RhdHVzKSB7XG4gICAgICAgIC8vIEl0J3MgKHNvbWV0aW1lcykgcG9zc2libGUgdG8gd29yayB0aGlzIG91dCwgaWYgdGhpcyBjb2RlIGlzbid0IHN0cmljdC0gdHJ5IHRvIGxvYWQgdGhlXG4gICAgICAgIC8vIGNhbGxlZSwgYW5kIGlmIGl0J3MgYXZhaWxhYmxlLCB0aGF0IGNvZGUgaXMgbm9uLXN0cmljdC4gSG93ZXZlciwgdGhpcyBpc24ndCBleGhhdXN0aXZlLlxuICAgICAgLy8gfVxuICAgIH0gOiBmdW5jdGlvbihwcm9wLCB2YWx1ZSkge1xuICAgICAgdGhyb3dSZXZva2VkKCdzZXQnKTtcbiAgICAgIHRoaXNbcHJvcF0gPSB2YWx1ZTtcbiAgICB9O1xuXG4gICAgLy8gQ2xvbmUgZGlyZWN0IHByb3BlcnRpZXMgKGkuZS4sIG5vdCBwYXJ0IG9mIGEgcHJvdG90eXBlKS5cbiAgICBjb25zdCBwcm9wZXJ0eU5hbWVzID0gJE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gICAgY29uc3QgcHJvcGVydHlNYXAgPSB7fTtcbiAgICBwcm9wZXJ0eU5hbWVzLmZvckVhY2goZnVuY3Rpb24ocHJvcCkge1xuICAgICAgaWYgKChpc01ldGhvZCB8fCBpc0FycmF5KSAmJiBwcm9wIGluIHByb3h5KSB7XG4gICAgICAgIHJldHVybjsgIC8vIGlnbm9yZSBwcm9wZXJ0aWVzIGFscmVhZHkgaGVyZSwgZS5nLiAnYmluZCcsICdwcm90b3R5cGUnIGV0Y1xuICAgICAgfVxuICAgICAgY29uc3QgcmVhbCA9ICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcCk7XG4gICAgICBjb25zdCBkZXNjID0ge1xuICAgICAgICBlbnVtZXJhYmxlOiBCb29sZWFuKHJlYWwuZW51bWVyYWJsZSksXG4gICAgICAgIGdldDogZ2V0dGVyLmJpbmQodGFyZ2V0LCBwcm9wKSxcbiAgICAgICAgc2V0OiBzZXR0ZXIuYmluZCh0YXJnZXQsIHByb3ApLFxuICAgICAgfTtcbiAgICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHksIHByb3AsIGRlc2MpO1xuICAgICAgcHJvcGVydHlNYXBbcHJvcF0gPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgLy8gU2V0IHRoZSBwcm90b3R5cGUsIG9yIGNsb25lIGFsbCBwcm90b3R5cGUgbWV0aG9kcyAoYWx3YXlzIHJlcXVpcmVkIGlmIGEgZ2V0dGVyIGlzIHByb3ZpZGVkKS5cbiAgICAvLyBUT0RPKHNhbXRob3IpOiBXZSBkb24ndCBhbGxvdyBwcm90b3R5cGUgbWV0aG9kcyB0byBiZSBzZXQuIEl0J3MgKGV2ZW4gbW9yZSkgYXdrd2FyZC5cbiAgICAvLyBBbiBhbHRlcm5hdGl2ZSBoZXJlIHdvdWxkIGJlIHRvIF9qdXN0XyBjbG9uZSBtZXRob2RzIHRvIGtlZXAgYmVoYXZpb3IgY29uc2lzdGVudC5cbiAgICBsZXQgcHJvdG90eXBlT2sgPSB0cnVlO1xuICAgIGlmIChpc01ldGhvZCB8fCBpc0FycmF5KSB7XG4gICAgICAvLyBBcnJheXMgYW5kIG1ldGhvZHMgYXJlIHNwZWNpYWw6IGFib3ZlLCB3ZSBpbnN0YW50aWF0ZSBib3JpbmcgdmVyc2lvbnMgb2YgdGhlc2UgdGhlbiBzd2FwXG4gICAgICAvLyBvdXIgdGhlaXIgcHJvdG90eXBlIGxhdGVyLiBTbyB3ZSBvbmx5IG5lZWQgdG8gdXNlIHNldFByb3RvdHlwZU9mIGluIHRoZXNlIGNhc2VzLiBTb21lIG9sZFxuICAgICAgLy8gZW5naW5lcyBzdXBwb3J0IGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIGJ1dCBub3QgYE9iamVjdC5zZXRQcm90b3R5cGVPZmAuXG4gICAgICBjb25zdCBzZXRQcm90byA9XG4gICAgICAgICRPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcbiAgICAgICAgKFtdLl9fcHJvdG9fXyA9PT0gQXJyYXkucHJvdG90eXBlXG4gICAgICAgICAgPyBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgICAgICAgICAgICB2YWxpZGF0ZVByb3RvKHByb3RvKTtcbiAgICAgICAgICAgICAgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgICAgICAgcmV0dXJuIE87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBub29wKTtcbiAgICAgIGlmICghKHByb3RvICYmIHNldFByb3RvKHByb3h5LCBwcm90bykpKSB7XG4gICAgICAgIHByb3RvdHlwZU9rID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChoYW5kbGVyLmdldCB8fCAhcHJvdG90eXBlT2spIHtcbiAgICAgIGZvciAobGV0IGsgaW4gdGFyZ2V0KSB7XG4gICAgICAgIGlmIChwcm9wZXJ0eU1hcFtrXSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHkocHJveHksIGssIHsgZ2V0OiBnZXR0ZXIuYmluZCh0YXJnZXQsIGspIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZSBQcm94eSBwb2x5ZmlsbCBjYW5ub3QgaGFuZGxlIGFkZGluZyBuZXcgcHJvcGVydGllcy4gU2VhbCB0aGUgdGFyZ2V0IGFuZCBwcm94eS5cbiAgICAkT2JqZWN0LnNlYWwodGFyZ2V0KTtcbiAgICAkT2JqZWN0LnNlYWwocHJveHkpO1xuXG4gICAgcmV0dXJuIHByb3h5OyAgLy8gbmIuIGlmIGlzTWV0aG9kIGlzIHRydWUsIHByb3h5ICE9IHRoaXNcbiAgfTtcblxuICBQcm94eVBvbHlmaWxsLnJldm9jYWJsZSA9IGZ1bmN0aW9uKHRhcmdldCwgaGFuZGxlcikge1xuICAgIGNvbnN0IHAgPSBuZXcgUHJveHlQb2x5ZmlsbCh0YXJnZXQsIGhhbmRsZXIpO1xuICAgIHJldHVybiB7ICdwcm94eSc6IHAsICdyZXZva2UnOiBsYXN0UmV2b2tlRm4gfTtcbiAgfTtcblxuICByZXR1cm4gUHJveHlQb2x5ZmlsbDtcbn1cbiIsImZ1bmN0aW9uIEUgKCkge1xuICAvLyBLZWVwIHRoaXMgZW1wdHkgc28gaXQncyBlYXNpZXIgdG8gaW5oZXJpdCBmcm9tXG4gIC8vICh2aWEgaHR0cHM6Ly9naXRodWIuY29tL2xpcHNtYWNrIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3Njb3R0Y29yZ2FuL3RpbnktZW1pdHRlci9pc3N1ZXMvMylcbn1cblxuRS5wcm90b3R5cGUgPSB7XG4gIG9uOiBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIGN0eCkge1xuICAgIHZhciBlID0gdGhpcy5lIHx8ICh0aGlzLmUgPSB7fSk7XG5cbiAgICAoZVtuYW1lXSB8fCAoZVtuYW1lXSA9IFtdKSkucHVzaCh7XG4gICAgICBmbjogY2FsbGJhY2ssXG4gICAgICBjdHg6IGN0eFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0sXG5cbiAgb25jZTogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCBjdHgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgZnVuY3Rpb24gbGlzdGVuZXIgKCkge1xuICAgICAgc2VsZi5vZmYobmFtZSwgbGlzdGVuZXIpO1xuICAgICAgY2FsbGJhY2suYXBwbHkoY3R4LCBhcmd1bWVudHMpO1xuICAgIH07XG5cbiAgICBsaXN0ZW5lci5fID0gY2FsbGJhY2tcbiAgICByZXR1cm4gdGhpcy5vbihuYW1lLCBsaXN0ZW5lciwgY3R4KTtcbiAgfSxcblxuICBlbWl0OiBmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBkYXRhID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgIHZhciBldnRBcnIgPSAoKHRoaXMuZSB8fCAodGhpcy5lID0ge30pKVtuYW1lXSB8fCBbXSkuc2xpY2UoKTtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGxlbiA9IGV2dEFyci5sZW5ndGg7XG5cbiAgICBmb3IgKGk7IGkgPCBsZW47IGkrKykge1xuICAgICAgZXZ0QXJyW2ldLmZuLmFwcGx5KGV2dEFycltpXS5jdHgsIGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIG9mZjogZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGUgPSB0aGlzLmUgfHwgKHRoaXMuZSA9IHt9KTtcbiAgICB2YXIgZXZ0cyA9IGVbbmFtZV07XG4gICAgdmFyIGxpdmVFdmVudHMgPSBbXTtcblxuICAgIGlmIChldnRzICYmIGNhbGxiYWNrKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gZXZ0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBpZiAoZXZ0c1tpXS5mbiAhPT0gY2FsbGJhY2sgJiYgZXZ0c1tpXS5mbi5fICE9PSBjYWxsYmFjaylcbiAgICAgICAgICBsaXZlRXZlbnRzLnB1c2goZXZ0c1tpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGV2ZW50IGZyb20gcXVldWUgdG8gcHJldmVudCBtZW1vcnkgbGVha1xuICAgIC8vIFN1Z2dlc3RlZCBieSBodHRwczovL2dpdGh1Yi5jb20vbGF6ZFxuICAgIC8vIFJlZjogaHR0cHM6Ly9naXRodWIuY29tL3Njb3R0Y29yZ2FuL3RpbnktZW1pdHRlci9jb21taXQvYzZlYmZhYTliYzk3M2IzM2QxMTBhODRhMzA3NzQyYjdjZjk0Yzk1MyNjb21taXRjb21tZW50LTUwMjQ5MTBcblxuICAgIChsaXZlRXZlbnRzLmxlbmd0aClcbiAgICAgID8gZVtuYW1lXSA9IGxpdmVFdmVudHNcbiAgICAgIDogZGVsZXRlIGVbbmFtZV07XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFO1xubW9kdWxlLmV4cG9ydHMuVGlueUVtaXR0ZXIgPSBFO1xuIiwiaW1wb3J0IHsgRmlsZVR5cGUgfSBmcm9tICd3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZCdcblxuaW1wb3J0IHR5cGUge1xuICBCYXNpY1ByZXNlbnRhdGlvbkZhY2FkZSxcbiAgQ29sbGFib3JhdG9yRmFjYWRlLFxuICBBZGRSYW5nZUxvY2tQYXJhbXMsXG4gIEFkZFNoZWV0TG9ja1BhcmFtcyxcbiAgQ29udGVudCxcbiAgQ29udGVudEZhY2FkZSxcbiAgRGlzY3Vzc2lvbkZhY2FkZSxcbiAgRG9jc1JhbmdlRmFjYWRlLFxuICBEb2NzUmFuZ2VWYWx1ZSxcbiAgRG9jc1NlYXJjaEZhY2FkZSxcbiAgRG9jc1NlbGVjdGlvbkZhY2FkZSxcbiAgRG9jc1NldHRpbmdzRmFjYWRlLFxuICBEb2NzU2lkZWJhckZhY2FkZSxcbiAgRG9jc091dGxpbmVGYWNhZGUsXG4gIERvY3NUYWJsZUNlbGxGYWNhZGUsXG4gIERvY3NUYWJsZUZhY2FkZSxcbiAgRG9jc1RhYmxlUmFuZ2VGYWNhZGUsXG4gIERvY3NUYWJsZVNlbGVjdGlvbixcbiAgRG9jc1RhYmxlc0ZhY2FkZSxcbiAgRXh0ZXJuYWxBcHBGYWNhZGUsXG4gIEhpc3RvcnlGYWNhZGUsXG4gIExvY2tzRmFjYWRlLFxuICBNZW50aW9uRmFjYWRlLFxuICBNZW50aW9uVHlwZXMsXG4gIE9mZmljZVNES1Jvb3RGYWNhZGVTdGF0ZSxcbiAgUHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvbkZhY2FkZSxcbiAgUHJlc2VudGF0aW9uU2hhcGUsXG4gIFByZXNlbnRhdGlvblNoYXBlQmFzZSxcbiAgUHJlc2VudGF0aW9uVGV4dFNoYXBlLFxuICBQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvblNsaWRlRmFjYWRlLFxuICBQcmVzZW50YXRpb25TbGlkZXNGYWNhZGUsXG4gIFByZXNlbnRhdGlvblRhYmxlQ2VsbCxcbiAgUHJlc2VudGF0aW9uVGFibGVJdGVtLFxuICBQcmVzZW50YXRpb25UYWJsZVJhbmdlLFxuICBQcmVzZW50YXRpb25UYWJsZVNlbGVjdGlvbixcbiAgUHJlc2VudGF0aW9uVGV4dEZhY2FkZSxcbiAgUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlLFxuICBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSxcbiAgUHJlc2VudGF0aW9uWm9vbUZhY2FkZSxcbiAgUmVtb3ZlUmFuZ2VMb2Nrc1BhcmFtcyxcbiAgUmVtb3ZlU2hlZXRMb2NrUGFyYW1zLFxuICBSZXZpc2lvbkNyZWF0ZU9wdGlvbnMsXG4gIFNoZWV0Q2hhcnRzRmFjYWRlLFxuICBTaGVldENlbGxGYWNhZGUsXG4gIFNoZWV0UmFuZ2VGYWNhZGUsXG4gIFNoZWV0UmFuZ2VWYWx1ZSxcbiAgU2hlZXRTZWxlY3Rpb24sXG4gIFNoZWV0U2VsZWN0aW9uc0ZhY2FkZSxcbiAgU2hlZXRXb3JrYm9va0ZhY2FkZSxcbiAgU2hlZXRXb3Jrc2hlZXRGYWNhZGUsXG4gIFRpdGxlRmFjYWRlLFxuICBWZXJzaW9uRmFjYWRlXG59IGZyb20gJy4vT2ZmaWNlU0RLLmZhY2FkZS50eXBlcydcblxudHlwZSBFZGl0b3JGYWNhZGVDYWxsYmFjayA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbmludGVyZmFjZSBGYWNhZGVIb3N0IHtcbiAgZmlsZVR5cGU6IEZpbGVUeXBlXG4gIGludm9rZUVkaXRvckZhY2FkZTxUPihtZXRob2Q6IHN0cmluZywgYXJncz86IHVua25vd25bXSk6IFByb21pc2U8VD5cbiAgbGlzdGVuRWRpdG9yRXZlbnQ8VD4oXG4gICAgZXZlbnQ6IHN0cmluZyxcbiAgICBsaXN0ZW5lcjogKHBheWxvYWQ6IFQpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZFxuICBjcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8VCBleHRlbmRzIG9iamVjdD4oXG4gICAgcHJlZml4OiBzdHJpbmcsXG4gICAgc3RhdGljRmllbGRzPzogUGFydGlhbDxUPlxuICApOiBUXG4gIGNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxvY2F0b3I6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHN0YXRpY0ZpZWxkczogUGFydGlhbDxUPlxuICApOiBUXG4gIHJlZ2lzdGVyRWRpdG9yRmFjYWRlTGlzdGVuZXI8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgbGlzdGVuZXI6IChwYXlsb2FkOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWRcbiAgcmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFjazogRWRpdG9yRmFjYWRlQ2FsbGJhY2spOiBzdHJpbmdcbiAgdW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrKGNhbGxiYWNrSWQ6IHN0cmluZyk6IHZvaWRcbn1cblxuZnVuY3Rpb24gY3JlYXRlRG9jc1JhbmdlRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyIH0gfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBEb2NzUmFuZ2VGYWNhZGUgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxEb2NzUmFuZ2VGYWNhZGU+KFxuICAgICdzZWxlY3Rpb24ucmFuZ2UnLFxuICAgIGxvY2F0b3IsXG4gICAge1xuICAgICAgc3RhcnQ6IGxvY2F0b3Iuc3RhcnQsXG4gICAgICBlbmQ6IGxvY2F0b3IuZW5kLFxuICAgICAgaXNDYXJldDogbG9jYXRvci5zdGFydCA9PT0gbG9jYXRvci5lbmRcbiAgICB9XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlRG9jc1RhYmxlRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOiB7IHRhYmxlSWQ6IHN0cmluZyB9XG4pOiBEb2NzVGFibGVGYWNhZGUge1xuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxEb2NzVGFibGVGYWNhZGU+KCd0YWJsZXMuaXRlbScsIGxvY2F0b3IsIHtcbiAgICB0YWJsZUlkOiBsb2NhdG9yLnRhYmxlSWQsXG4gICAgZ2V0Q2VsbDogYXN5bmMgKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgbmV4dExvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgIHRhYmxlSWQ6IHN0cmluZ1xuICAgICAgICByb3c6IG51bWJlclxuICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgfSB8IG51bGw+KCd0YWJsZXMuaXRlbS5nZXRDZWxsJywgW2xvY2F0b3IsIHJvdywgY29sdW1uXSlcbiAgICAgIGlmICghbmV4dExvY2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICAgIHJldHVybiBob3N0LmNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPERvY3NUYWJsZUNlbGxGYWNhZGU+KFxuICAgICAgICAndGFibGVzLmNlbGwnLFxuICAgICAgICBuZXh0TG9jYXRvcixcbiAgICAgICAge1xuICAgICAgICAgIHRhYmxlSWQ6IG5leHRMb2NhdG9yLnRhYmxlSWQsXG4gICAgICAgICAgcm93OiBuZXh0TG9jYXRvci5yb3csXG4gICAgICAgICAgY29sdW1uOiBuZXh0TG9jYXRvci5jb2x1bW5cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0sXG4gICAgZ2V0UmFuZ2U6IGFzeW5jIChzZWxlY3Rpb246IERvY3NUYWJsZVNlbGVjdGlvbikgPT4ge1xuICAgICAgY29uc3QgbmV4dExvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgIHRhYmxlSWQ6IHN0cmluZ1xuICAgICAgICBzZWxlY3Rpb246IERvY3NUYWJsZVNlbGVjdGlvblxuICAgICAgfSB8IG51bGw+KCd0YWJsZXMuaXRlbS5nZXRSYW5nZScsIFtsb2NhdG9yLCBzZWxlY3Rpb25dKVxuICAgICAgaWYgKCFuZXh0TG9jYXRvcikge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8RG9jc1RhYmxlUmFuZ2VGYWNhZGU+KFxuICAgICAgICAndGFibGVzLnJhbmdlJyxcbiAgICAgICAgbmV4dExvY2F0b3IsXG4gICAgICAgIHtcbiAgICAgICAgICB0YWJsZUlkOiBuZXh0TG9jYXRvci50YWJsZUlkLFxuICAgICAgICAgIHNlbGVjdGlvbjogbmV4dExvY2F0b3Iuc2VsZWN0aW9uXG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNoZWV0UmFuZ2VGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6XG4gICAgfCB7XG4gICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgICAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICAgICB9XG4gICAgfCBudWxsXG4gICAgfCB1bmRlZmluZWRcbik6IFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxTaGVldFJhbmdlRmFjYWRlPihcbiAgICAnc2hlZXQucmFuZ2UnLFxuICAgIGxvY2F0b3IsXG4gICAgbG9jYXRvclxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNoZWV0Q2VsbEZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjpcbiAgICB8IHtcbiAgICAgICAgc2hlZXRJZD86IHN0cmluZ1xuICAgICAgICByb3c6IG51bWJlclxuICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgfVxuICAgIHwgbnVsbFxuICAgIHwgdW5kZWZpbmVkXG4pOiBTaGVldENlbGxGYWNhZGUgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxTaGVldENlbGxGYWNhZGU+KFxuICAgICdzaGVldC5jZWxsJyxcbiAgICBsb2NhdG9yLFxuICAgIGxvY2F0b3JcbiAgKVxufVxuXG5pbnRlcmZhY2UgU2hlZXRTZWxlY3Rpb25Mb2NhdG9yIHtcbiAga2luZDogJ3NoZWV0LnNlbGVjdGlvbidcbiAgc2hlZXRJZDogc3RyaW5nXG4gIHNlbGVjdGlvbklkOiBzdHJpbmdcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2hlZXRTZWxlY3Rpb25GYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IFNoZWV0U2VsZWN0aW9uTG9jYXRvclxuKTogU2hlZXRTZWxlY3Rpb24ge1xuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxTaGVldFNlbGVjdGlvbj4oXG4gICAgJ3NoZWV0LnNlbGVjdGlvbicsXG4gICAgbG9jYXRvciBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHtcbiAgICAgIGlkOiBsb2NhdG9yLnNlbGVjdGlvbklkLFxuICAgICAgZ2V0UmFuZ2U6IGFzeW5jICh2YWx1ZT86IFNoZWV0UmFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCByYW5nZUxvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc2hlZXRJZDogc3RyaW5nXG4gICAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgICAgIHJvd0NvdW50OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICAgICAgIH0gfCBudWxsPihcbiAgICAgICAgICAnc2hlZXQuc2VsZWN0aW9uLmdldFJhbmdlJyxcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gW2xvY2F0b3JdIDogW2xvY2F0b3IsIHZhbHVlXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldFJhbmdlRmFjYWRlKGhvc3QsIHJhbmdlTG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBzZXRSYW5nZTogYXN5bmMgKHZhbHVlOiBTaGVldFJhbmdlVmFsdWUgfCBudWxsKSA9PiB7XG4gICAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdzaGVldC5zZWxlY3Rpb24uc2V0UmFuZ2UnLCBbXG4gICAgICAgICAgbG9jYXRvcixcbiAgICAgICAgICB2YWx1ZVxuICAgICAgICBdKVxuICAgICAgfVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjoge1xuICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICBpZD86IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBhY3RpdmU/OiBib29sZWFuXG4gIH1cbik6IFNoZWV0V29ya3NoZWV0RmFjYWRlIHtcbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8U2hlZXRXb3Jrc2hlZXRGYWNhZGU+KFxuICAgICdzaGVldC53b3Jrc2hlZXQnLFxuICAgIGxvY2F0b3IsXG4gICAge1xuICAgICAgaWQ6IGxvY2F0b3IuaWQsXG4gICAgICBuYW1lOiBsb2NhdG9yLm5hbWUsXG4gICAgICBnZXRTZWxlY3Rpb25zOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBTaGVldFNlbGVjdGlvbkxvY2F0b3JbXSB8IG51bGxcbiAgICAgICAgPignc2hlZXQud29ya3NoZWV0LmdldFNlbGVjdGlvbnMnLCBbbG9jYXRvcl0pXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgc2VsZWN0aW9ucz8ubWFwKChzZWxlY3Rpb24pID0+XG4gICAgICAgICAgICBjcmVhdGVTaGVldFNlbGVjdGlvbkZhY2FkZShob3N0LCBzZWxlY3Rpb24pXG4gICAgICAgICAgKSA/PyBudWxsXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBnZXRSYW5nZTogYXN5bmMgKHZhbHVlOiBTaGVldFJhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgcmFuZ2VMb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgICByb3c6IG51bWJlclxuICAgICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgICAgICAgIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KCdzaGVldC53b3Jrc2hlZXQuZ2V0UmFuZ2UnLCBbbG9jYXRvciwgdmFsdWVdKVxuICAgICAgICByZXR1cm4gY3JlYXRlU2hlZXRSYW5nZUZhY2FkZShob3N0LCByYW5nZUxvY2F0b3IpXG4gICAgICB9LFxuICAgICAgZ2V0Q2VsbDogYXN5bmMgKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjZWxsTG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzaGVldElkPzogc3RyaW5nXG4gICAgICAgICAgcm93OiBudW1iZXJcbiAgICAgICAgICBjb2x1bW46IG51bWJlclxuICAgICAgICB9IHwgbnVsbD4oJ3NoZWV0LndvcmtzaGVldC5nZXRDZWxsJywgW2xvY2F0b3IsIHJvdywgY29sdW1uXSlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVNoZWV0Q2VsbEZhY2FkZShob3N0LCBjZWxsTG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBnZXRBY3RpdmVDZWxsOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNlbGxMb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgICByb3c6IG51bWJlclxuICAgICAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICAgIH0gfCBudWxsPignc2hlZXQud29ya3NoZWV0LmdldEFjdGl2ZUNlbGwnLCBbbG9jYXRvcl0pXG4gICAgICAgIHJldHVybiBjcmVhdGVTaGVldENlbGxGYWNhZGUoaG9zdCwgY2VsbExvY2F0b3IpXG4gICAgICB9XG4gICAgfVxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByZXNlbnRhdGlvblRleHRSYW5nZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8UHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlPihcbiAgICAnc2VsZWN0aW9uLnRleHRSYW5nZScsXG4gICAgbG9jYXRvcixcbiAgICB7XG4gICAgICBzdGFydDogbG9jYXRvci5zdGFydCxcbiAgICAgIGVuZDogbG9jYXRvci5lbmRcbiAgICB9XG4gIClcbn1cblxuaW50ZXJmYWNlIFByZXNlbnRhdGlvblNoYXBlTG9jYXRvciB7XG4gIHNsaWRlSWQ6IHN0cmluZ1xuICBzaGFwZUlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IHN0cmluZ1xuICB0ZXh0Q29udGVudD86IHN0cmluZ1xufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVzZW50YXRpb25TaGFwZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjogUHJlc2VudGF0aW9uU2hhcGVMb2NhdG9yIHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogUHJlc2VudGF0aW9uU2hhcGUgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IHN0YXRpY0ZpZWxkczogUGFydGlhbDxQcmVzZW50YXRpb25TaGFwZUJhc2U+ICYge1xuICAgIGlkOiBzdHJpbmdcbiAgICBuYW1lOiBzdHJpbmdcbiAgICB0eXBlOiBzdHJpbmdcbiAgICB0ZXh0Q29udGVudD86IHN0cmluZ1xuICB9ID0ge1xuICAgIGlkOiBsb2NhdG9yLnNoYXBlSWQsXG4gICAgbmFtZTogbG9jYXRvci5uYW1lLFxuICAgIHR5cGU6IGxvY2F0b3IudHlwZSxcbiAgICB0ZXh0Q29udGVudDogbG9jYXRvci50ZXh0Q29udGVudFxuICB9XG5cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8UHJlc2VudGF0aW9uU2hhcGU+KFxuICAgICdzbGlkZXMuc2xpZGUuc2hhcGUnLFxuICAgIGxvY2F0b3IgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBzdGF0aWNGaWVsZHMgYXMgUGFydGlhbDxQcmVzZW50YXRpb25TaGFwZT5cbiAgKVxufVxuXG5pbnRlcmZhY2UgUHJlc2VudGF0aW9uVGFibGVMb2NhdG9yIHtcbiAga2luZDogJ3ByZXNlbnRhdGlvbi50YWJsZSdcbiAgc2xpZGVJZDogc3RyaW5nXG4gIHRhYmxlSWQ6IHN0cmluZ1xuICBpZDogc3RyaW5nXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxufVxuXG5pbnRlcmZhY2UgUHJlc2VudGF0aW9uVGFibGVDZWxsTG9jYXRvciB7XG4gIGtpbmQ6ICdwcmVzZW50YXRpb24udGFibGUuY2VsbCdcbiAgc2xpZGVJZDogc3RyaW5nXG4gIHRhYmxlSWQ6IHN0cmluZ1xuICByb3c6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxufVxuXG5pbnRlcmZhY2UgUHJlc2VudGF0aW9uVGFibGVSYW5nZUxvY2F0b3Ige1xuICBraW5kOiAncHJlc2VudGF0aW9uLnRhYmxlLnJhbmdlJ1xuICBzbGlkZUlkOiBzdHJpbmdcbiAgdGFibGVJZDogc3RyaW5nXG4gIHJhbmdlOiBQcmVzZW50YXRpb25UYWJsZVNlbGVjdGlvblxufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVzZW50YXRpb25UYWJsZUNlbGxGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IFByZXNlbnRhdGlvblRhYmxlQ2VsbExvY2F0b3IgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBQcmVzZW50YXRpb25UYWJsZUNlbGwgfCBudWxsIHtcbiAgaWYgKCFsb2NhdG9yKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gaG9zdC5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTxQcmVzZW50YXRpb25UYWJsZUNlbGw+KFxuICAgICdzbGlkZXMuc2xpZGUudGFibGUuY2VsbCcsXG4gICAgbG9jYXRvciBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHt9XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJlc2VudGF0aW9uVGFibGVSYW5nZUZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdCxcbiAgbG9jYXRvcjogUHJlc2VudGF0aW9uVGFibGVSYW5nZUxvY2F0b3IgfCBudWxsIHwgdW5kZWZpbmVkXG4pOiBQcmVzZW50YXRpb25UYWJsZVJhbmdlIHwgbnVsbCB7XG4gIGlmICghbG9jYXRvcikge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8UHJlc2VudGF0aW9uVGFibGVSYW5nZT4oXG4gICAgJ3NsaWRlcy5zbGlkZS50YWJsZS5yYW5nZScsXG4gICAgbG9jYXRvciBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHt9XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlUHJlc2VudGF0aW9uVGFibGVGYWNhZGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3QsXG4gIGxvY2F0b3I6IFByZXNlbnRhdGlvblRhYmxlTG9jYXRvclxuKTogUHJlc2VudGF0aW9uVGFibGVJdGVtIHtcbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8UHJlc2VudGF0aW9uVGFibGVJdGVtPihcbiAgICAnc2xpZGVzLnNsaWRlLnRhYmxlJyxcbiAgICBsb2NhdG9yIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAge1xuICAgICAgaWQ6IGxvY2F0b3IuaWQsXG4gICAgICByb3dDb3VudDogbG9jYXRvci5yb3dDb3VudCxcbiAgICAgIGNvbHVtbkNvdW50OiBsb2NhdG9yLmNvbHVtbkNvdW50LFxuICAgICAgZ2V0Q2VsbDogYXN5bmMgKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBjZWxsTG9jYXRvciA9XG4gICAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8UHJlc2VudGF0aW9uVGFibGVDZWxsTG9jYXRvciB8IG51bGw+KFxuICAgICAgICAgICAgJ3NsaWRlcy5zbGlkZS50YWJsZS5nZXRDZWxsJyxcbiAgICAgICAgICAgIFtsb2NhdG9yLCByb3csIGNvbHVtbl1cbiAgICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25UYWJsZUNlbGxGYWNhZGUoaG9zdCwgY2VsbExvY2F0b3IpXG4gICAgICB9LFxuICAgICAgZ2V0UmFuZ2U6IGFzeW5jIChyYW5nZTogUHJlc2VudGF0aW9uVGFibGVTZWxlY3Rpb24pID0+IHtcbiAgICAgICAgY29uc3QgcmFuZ2VMb2NhdG9yID1cbiAgICAgICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxQcmVzZW50YXRpb25UYWJsZVJhbmdlTG9jYXRvciB8IG51bGw+KFxuICAgICAgICAgICAgJ3NsaWRlcy5zbGlkZS50YWJsZS5nZXRSYW5nZScsXG4gICAgICAgICAgICBbbG9jYXRvciwgcmFuZ2VdXG4gICAgICAgICAgKVxuICAgICAgICByZXR1cm4gY3JlYXRlUHJlc2VudGF0aW9uVGFibGVSYW5nZUZhY2FkZShob3N0LCByYW5nZUxvY2F0b3IpXG4gICAgICB9XG4gICAgfVxuICApXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0LFxuICBsb2NhdG9yOiB7XG4gICAgc2xpZGVJZDogc3RyaW5nXG4gIH1cbik6IFByZXNlbnRhdGlvblNsaWRlRmFjYWRlIHtcbiAgY29uc3QgaW5zZXJ0U2hhcGUgPSAoYXN5bmMgKG9wdGlvbnM6IHVua25vd24pID0+IHtcbiAgICBjb25zdCBzaGFwZSA9XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxQcmVzZW50YXRpb25TaGFwZUxvY2F0b3IgfCBudWxsPihcbiAgICAgICAgJ3NsaWRlcy5zbGlkZS5pbnNlcnRTaGFwZScsXG4gICAgICAgIFtsb2NhdG9yLCBvcHRpb25zXVxuICAgICAgKVxuICAgIGNvbnN0IGZhY2FkZSA9IGNyZWF0ZVByZXNlbnRhdGlvblNoYXBlRmFjYWRlKGhvc3QsIHNoYXBlKVxuICAgIGlmICghZmFjYWRlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3ByZXNlbnRhdGlvbiBzaGFwZSBub3QgZm91bmQnKVxuICAgIH1cbiAgICByZXR1cm4gZmFjYWRlXG4gIH0pIGFzIFByZXNlbnRhdGlvblNsaWRlRmFjYWRlWydpbnNlcnRTaGFwZSddXG5cbiAgcmV0dXJuIGhvc3QuY3JlYXRlVmFsdWVPYmplY3RGYWNhZGU8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGU+KFxuICAgICdzbGlkZXMuc2xpZGUnLFxuICAgIGxvY2F0b3IsXG4gICAge1xuICAgICAgaWQ6IGxvY2F0b3Iuc2xpZGVJZCxcbiAgICAgIGdldFNoYXBlczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaGFwZXMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBQcmVzZW50YXRpb25TaGFwZUxvY2F0b3JbXVxuICAgICAgICA+KCdzbGlkZXMuc2xpZGUuZ2V0U2hhcGVzJywgW2xvY2F0b3JdKVxuICAgICAgICByZXR1cm4gc2hhcGVzXG4gICAgICAgICAgLm1hcCgoc2hhcGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblNoYXBlRmFjYWRlKGhvc3QsIHNoYXBlKSlcbiAgICAgICAgICAuZmlsdGVyKChzaGFwZSk6IHNoYXBlIGlzIFByZXNlbnRhdGlvblNoYXBlID0+IHNoYXBlICE9PSBudWxsKVxuICAgICAgfSxcbiAgICAgIGdldFRhYmxlczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZXMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBQcmVzZW50YXRpb25UYWJsZUxvY2F0b3JbXVxuICAgICAgICA+KCdzbGlkZXMuc2xpZGUuZ2V0VGFibGVzJywgW2xvY2F0b3JdKVxuICAgICAgICByZXR1cm4gdGFibGVzLm1hcCgodGFibGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblRhYmxlRmFjYWRlKGhvc3QsIHRhYmxlKSlcbiAgICAgIH0sXG4gICAgICBpbnNlcnRTaGFwZSxcbiAgICAgIGluc2VydFRleHRCb3g6IGFzeW5jIChvcHRpb25zKSA9PiB7XG4gICAgICAgIGNvbnN0IHNoYXBlID1cbiAgICAgICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxQcmVzZW50YXRpb25TaGFwZUxvY2F0b3IgfCBudWxsPihcbiAgICAgICAgICAgICdzbGlkZXMuc2xpZGUuaW5zZXJ0VGV4dEJveCcsXG4gICAgICAgICAgICBbbG9jYXRvciwgb3B0aW9uc11cbiAgICAgICAgICApXG4gICAgICAgIGNvbnN0IGZhY2FkZSA9IGNyZWF0ZVByZXNlbnRhdGlvblNoYXBlRmFjYWRlKGhvc3QsIHNoYXBlKVxuICAgICAgICBpZiAoIWZhY2FkZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncHJlc2VudGF0aW9uIHRleHQgc2hhcGUgbm90IGZvdW5kJylcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFjYWRlIGFzIFByZXNlbnRhdGlvblRleHRTaGFwZVxuICAgICAgfSxcbiAgICAgIGluc2VydFRhYmxlOiBhc3luYyAob3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCB0YWJsZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFByZXNlbnRhdGlvblRhYmxlTG9jYXRvcj4oXG4gICAgICAgICAgJ3NsaWRlcy5zbGlkZS5pbnNlcnRUYWJsZScsXG4gICAgICAgICAgW2xvY2F0b3IsIG9wdGlvbnNdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVByZXNlbnRhdGlvblRhYmxlRmFjYWRlKGhvc3QsIHRhYmxlKVxuICAgICAgfVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQcmVzZW50YXRpb25GYWNhZGUoaG9zdDogRmFjYWRlSG9zdCk6IFByZXNlbnRhdGlvbkZhY2FkZSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGFzeW5jIChpbmRleD86IG51bWJlcikgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoXG4gICAgICAgICdwcmVzZW50YXRpb24uc3RhcnQnLFxuICAgICAgICB0eXBlb2YgaW5kZXggPT09ICdudW1iZXInID8gW2luZGV4XSA6IFtdXG4gICAgICApXG4gICAgfSxcbiAgICBxdWl0OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgncHJlc2VudGF0aW9uLnF1aXQnKVxuICAgIH0sXG4gICAgc3RhcnRGcm9tQ3VycmVudDogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydEZyb21DdXJyZW50JylcbiAgICB9LFxuICAgIHN0YXJ0UmVtb3RlTGl2ZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFJlbW90ZUxpdmUnKVxuICAgIH0sXG4gICAgc3RhcnRTcGVha2VyVmlldzogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ3ByZXNlbnRhdGlvbi5zdGFydFNwZWFrZXJWaWV3JylcbiAgICB9LFxuICAgIGFkZENoYW5nZUxpc3RlbmVyOiAobGlzdGVuZXI6IChwYXlsb2FkOiB1bmtub3duKSA9PiB2b2lkKSA9PlxuICAgICAgaG9zdC5yZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyKFxuICAgICAgICAncHJlc2VudGF0aW9uLmFkZENoYW5nZUxpc3RlbmVyJyxcbiAgICAgICAgbGlzdGVuZXJcbiAgICAgIClcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEb2N1bWVudFByZXNlbnRhdGlvbkZhY2FkZShcbiAgaG9zdDogRmFjYWRlSG9zdFxuKTogQmFzaWNQcmVzZW50YXRpb25GYWNhZGUge1xuICByZXR1cm4ge1xuICAgIHN0YXJ0OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgncHJlc2VudGF0aW9uLnN0YXJ0JylcbiAgICB9LFxuICAgIHF1aXQ6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdwcmVzZW50YXRpb24ucXVpdCcpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNwcmVhZHNoZWV0UHJlc2VudGF0aW9uRmFjYWRlKFxuICBob3N0OiBGYWNhZGVIb3N0XG4pOiBCYXNpY1ByZXNlbnRhdGlvbkZhY2FkZSB7XG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdzdGFydERlbW9uc3RyYXRpb24nKVxuICAgIH0sXG4gICAgcXVpdDogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2VuZERlbW9uc3RyYXRpb24nKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRSb290RmFjYWRlU3RhdGUoXG4gIGhvc3Q6IEZhY2FkZUhvc3Rcbik6IE9mZmljZVNES1Jvb3RGYWNhZGVTdGF0ZSB7XG4gIGNvbnN0IHRpdGxlRmFjYWRlOiBUaXRsZUZhY2FkZSA9IHtcbiAgICBhZGRDaGFuZ2VkTGlzdGVuZXI6IChsaXN0ZW5lcjogKHRpdGxlOiBzdHJpbmcpID0+IHZvaWQpID0+IHtcbiAgICAgIHJldHVybiBob3N0Lmxpc3RlbkVkaXRvckV2ZW50PHN0cmluZz4oJ3RpdGxlQ2hhbmdlJywgbGlzdGVuZXIpXG4gICAgfSxcbiAgICBzZXRUaXRsZTogYXN5bmMgKHRpdGxlOiBzdHJpbmcpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCd0aXRsZS5zZXRUaXRsZScsIFt0aXRsZV0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29tbWVudHNGYWNhZGUgPSB7XG4gICAgc2hvdzogYXN5bmMgKHR5cGU/OiAnbGlzdCcgfCAnY2FyZCcpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKFxuICAgICAgICAnY29tbWVudHMuc2hvdycsXG4gICAgICAgIHR5cGVvZiB0eXBlID09PSAndW5kZWZpbmVkJyA/IFtdIDogW3R5cGVdXG4gICAgICApXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAodHlwZT86ICdsaXN0JyB8ICdjYXJkJykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoXG4gICAgICAgICdjb21tZW50cy5oaWRlJyxcbiAgICAgICAgdHlwZW9mIHR5cGUgPT09ICd1bmRlZmluZWQnID8gW10gOiBbdHlwZV1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoaXN0b3J5RmFjYWRlOiBIaXN0b3J5RmFjYWRlID0ge1xuICAgIHNob3c6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdoaXN0b3J5LnNob3cnKVxuICAgIH0sXG4gICAgaGlkZTogYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2hpc3RvcnkuaGlkZScpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlzY3Vzc2lvbkZhY2FkZTogRGlzY3Vzc2lvbkZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnZGlzY3Vzc2lvbi5zaG93JylcbiAgICB9LFxuICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdkaXNjdXNzaW9uLmhpZGUnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbGxhYm9yYXRvckZhY2FkZTogQ29sbGFib3JhdG9yRmFjYWRlID0ge1xuICAgIHNob3c6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdjb2xsYWJvcmF0b3Iuc2hvdycpXG4gICAgfSxcbiAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnY29sbGFib3JhdG9yLmhpZGUnKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4dGVybmFsQXBwRmFjYWRlOiBFeHRlcm5hbEFwcEZhY2FkZSA9IHtcbiAgICBpbnNlcnQ6IGFzeW5jICh1cmwsIHBhcmFtcykgPT4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdpbnNlcnRFeHRlcm5hbEFwcCcsIFt1cmwsIHBhcmFtc10pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbG9ja3NGYWNhZGU6IExvY2tzRmFjYWRlID0ge1xuICAgIHNob3c6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5zaG93JylcbiAgICB9LFxuICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5oaWRlJylcbiAgICB9LFxuICAgIGFkZFJhbmdlTG9jazogYXN5bmMgKG9wdGlvbnM6IEFkZFJhbmdlTG9ja1BhcmFtcykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2xvY2tzLmFkZFJhbmdlTG9jaycsIFtvcHRpb25zXSlcbiAgICB9LFxuICAgIGFkZFNoZWV0TG9jazogYXN5bmMgKG9wdGlvbnM6IEFkZFNoZWV0TG9ja1BhcmFtcykgPT4ge1xuICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2xvY2tzLmFkZFNoZWV0TG9jaycsIFtvcHRpb25zXSlcbiAgICB9LFxuICAgIHJlbW92ZVJhbmdlTG9ja3NJblJhbmdlczogYXN5bmMgKG9wdGlvbnM6IFJlbW92ZVJhbmdlTG9ja3NQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5yZW1vdmVSYW5nZUxvY2tzSW5SYW5nZXMnLCBbb3B0aW9uc10pXG4gICAgfSxcbiAgICByZW1vdmVTaGVldExvY2s6IGFzeW5jIChvcHRpb25zOiBSZW1vdmVTaGVldExvY2tQYXJhbXMpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdsb2Nrcy5yZW1vdmVTaGVldExvY2snLCBbb3B0aW9uc10pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVudGlvbkZhY2FkZTogTWVudGlvbkZhY2FkZSA9IHtcbiAgICBsb2NhdGVDZWxsQnlHdWlkOiBhc3luYyAoZ3VpZDogc3RyaW5nLCBub3RpZmljYXRpb25UeXBlPzogTWVudGlvblR5cGVzKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnbWVudGlvbi5sb2NhdGVDZWxsQnlHdWlkJywgW1xuICAgICAgICBndWlkLFxuICAgICAgICBub3RpZmljYXRpb25UeXBlXG4gICAgICBdKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnRGYWNhZGU6IENvbnRlbnRGYWNhZGUgPSB7XG4gICAgc2V0Q29udGVudDogYXN5bmMgKGNvbnRlbnQ6IENvbnRlbnQpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdjb250ZW50LnNldENvbnRlbnQnLCBbY29udGVudF0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdmVyc2lvbkZhY2FkZTogVmVyc2lvbkZhY2FkZSA9IHtcbiAgICBzaG93OiBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndmVyc2lvbi5zaG93JylcbiAgICB9LFxuICAgIGhpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCd2ZXJzaW9uLmhpZGUnKVxuICAgIH0sXG4gICAgY3JlYXRlUmV2aXNpb246IGFzeW5jIChvcHRpb25zPzogUmV2aXNpb25DcmVhdGVPcHRpb25zKSA9PiB7XG4gICAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgndmVyc2lvbi5jcmVhdGVSZXZpc2lvbicsIFtvcHRpb25zXSlcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBjb25zdCBiYXRjaENoYW5nZXNGYWNhZGUgPSBhc3luYyA8VD4oXG4gICAgY2FsbGJhY2s6ICgpID0+IFQgfCBQcm9taXNlPFQ+XG4gICk6IFByb21pc2U8QXdhaXRlZDxUPj4gPT4ge1xuICAgIGNvbnN0IGNhbGxiYWNrSWQgPSBob3N0LnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2spXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnYmF0Y2hDaGFuZ2VzJywgW2NhbGxiYWNrSWRdKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBob3N0LnVucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFja0lkKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHByaW50RmFjYWRlID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdwcmludCcpXG4gIH1cblxuICBjb25zdCBleHBvcnRGYWNhZGUgPSBhc3luYyAodHlwZTogc3RyaW5nKSA9PiB7XG4gICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ2V4cG9ydCcsIFt0eXBlXSlcbiAgfVxuXG4gIGNvbnN0IHNldEZvY3VzRmFjYWRlID0gYXN5bmMgKGlzRm9jdXM6IGJvb2xlYW4pID0+IHtcbiAgICBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZSgnc2V0Rm9jdXMnLCBbaXNGb2N1c10pXG4gIH1cblxuICBjb25zdCBkb2NzU2VsZWN0aW9uRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxEb2NzU2VsZWN0aW9uRmFjYWRlPignc2VsZWN0aW9uJywge1xuICAgICAgZ2V0UmFuZ2U6IGFzeW5jICh2YWx1ZT86IERvY3NSYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IGxvY2F0b3IgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7XG4gICAgICAgICAgc3RhcnQ6IG51bWJlclxuICAgICAgICAgIGVuZDogbnVtYmVyXG4gICAgICAgIH0gfCBudWxsPihcbiAgICAgICAgICAnc2VsZWN0aW9uLmdldFJhbmdlJyxcbiAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnID8gW10gOiBbdmFsdWVdXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuIGNyZWF0ZURvY3NSYW5nZUZhY2FkZShob3N0LCBsb2NhdG9yKVxuICAgICAgfSxcbiAgICAgIGdldFdob2xlUmFuZ2U6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbG9jYXRvciA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHtcbiAgICAgICAgICBzdGFydDogbnVtYmVyXG4gICAgICAgICAgZW5kOiBudW1iZXJcbiAgICAgICAgfSB8IG51bGw+KCdzZWxlY3Rpb24uZ2V0V2hvbGVSYW5nZScpXG4gICAgICAgIHJldHVybiBjcmVhdGVEb2NzUmFuZ2VGYWNhZGUoaG9zdCwgbG9jYXRvcilcbiAgICAgIH0sXG4gICAgICBhZGRSYW5nZUxpc3RlbmVyOiAobGlzdGVuZXI6IChwYXlsb2FkOiBEb2NzUmFuZ2VWYWx1ZSB8IG51bGwpID0+IHZvaWQpID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnc2VsZWN0aW9uLmFkZFJhbmdlTGlzdGVuZXInLFxuICAgICAgICAgIGxpc3RlbmVyXG4gICAgICAgIClcbiAgICB9KVxuXG4gIGNvbnN0IGRvY3NUYWJsZXNGYWNhZGUgPSBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxEb2NzVGFibGVzRmFjYWRlPihcbiAgICAndGFibGVzJyxcbiAgICB7XG4gICAgICBnZXRBbGw6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdGFibGVzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyB0YWJsZUlkOiBzdHJpbmcgfT5cbiAgICAgICAgPigndGFibGVzLmdldEFsbCcpXG4gICAgICAgIHJldHVybiB0YWJsZXMubWFwKCh0YWJsZSkgPT4gY3JlYXRlRG9jc1RhYmxlRmFjYWRlKGhvc3QsIHRhYmxlKSlcbiAgICAgIH0sXG4gICAgICBnZXRPbmU6IGFzeW5jICh0YWJsZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgdGFibGUgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7IHRhYmxlSWQ6IHN0cmluZyB9IHwgbnVsbD4oXG4gICAgICAgICAgJ3RhYmxlcy5nZXRPbmUnLFxuICAgICAgICAgIFt0YWJsZUlkXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiB0YWJsZSA/IGNyZWF0ZURvY3NUYWJsZUZhY2FkZShob3N0LCB0YWJsZSkgOiBudWxsXG4gICAgICB9XG4gICAgfVxuICApXG5cbiAgY29uc3Qgc2hlZXRXb3JrYm9va0ZhY2FkZSA9XG4gICAgaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8U2hlZXRXb3JrYm9va0ZhY2FkZT4oJ3dvcmtib29rJywge1xuICAgICAgZ2V0V29ya3NoZWV0czogYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB3b3Jrc2hlZXRzID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8XG4gICAgICAgICAgQXJyYXk8eyBzaGVldElkPzogc3RyaW5nOyBpZD86IHN0cmluZzsgbmFtZT86IHN0cmluZyB9PlxuICAgICAgICA+KCd3b3JrYm9vay5nZXRXb3Jrc2hlZXRzJylcbiAgICAgICAgcmV0dXJuIHdvcmtzaGVldHMubWFwKChzaGVldCkgPT5cbiAgICAgICAgICBjcmVhdGVTaGVldFdvcmtzaGVldEZhY2FkZShob3N0LCBzaGVldClcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIGdldFdvcmtzaGVldEJ5SWQ6IGFzeW5jIChzaGVldElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya3NoZWV0ID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgICBpZD86IHN0cmluZ1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICAgICAgfSB8IG51bGw+KCd3b3JrYm9vay5nZXRXb3Jrc2hlZXRCeUlkJywgW3NoZWV0SWRdKVxuICAgICAgICByZXR1cm4gd29ya3NoZWV0ID8gY3JlYXRlU2hlZXRXb3Jrc2hlZXRGYWNhZGUoaG9zdCwgd29ya3NoZWV0KSA6IG51bGxcbiAgICAgIH0sXG4gICAgICBnZXRBY3RpdmVXb3Jrc2hlZXQ6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgd29ya3NoZWV0ID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHNoZWV0SWQ/OiBzdHJpbmdcbiAgICAgICAgICBpZD86IHN0cmluZ1xuICAgICAgICAgIG5hbWU/OiBzdHJpbmdcbiAgICAgICAgICBhY3RpdmU/OiBib29sZWFuXG4gICAgICAgIH0+KCd3b3JrYm9vay5nZXRBY3RpdmVXb3Jrc2hlZXQnKVxuICAgICAgICByZXR1cm4gY3JlYXRlU2hlZXRXb3Jrc2hlZXRGYWNhZGUoaG9zdCwgd29ya3NoZWV0KVxuICAgICAgfVxuICAgIH0pXG5cbiAgY29uc3QgcHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlID1cbiAgICBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxQcmVzZW50YXRpb25TbGlkZXNGYWNhZGU+KCdzbGlkZXMnLCB7XG4gICAgICBnZXRDdXJyZW50U2xpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGUgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7IHNsaWRlSWQ6IHN0cmluZyB9PihcbiAgICAgICAgICAnc2xpZGVzLmdldEN1cnJlbnRTbGlkZSdcbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gY3JlYXRlUHJlc2VudGF0aW9uU2xpZGVGYWNhZGUoaG9zdCwgc2xpZGUpXG4gICAgICB9LFxuICAgICAgZ2V0U2xpZGVzOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlcyA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFxuICAgICAgICAgIEFycmF5PHsgc2xpZGVJZDogc3RyaW5nIH0+XG4gICAgICAgID4oJ3NsaWRlcy5nZXRTbGlkZXMnKVxuICAgICAgICByZXR1cm4gc2xpZGVzLm1hcCgoc2xpZGUpID0+IGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKSlcbiAgICAgIH0sXG4gICAgICBnZXRTbGlkZUJ5SWQ6IGFzeW5jIChzbGlkZUlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGUgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7IHNsaWRlSWQ6IHN0cmluZyB9IHwgbnVsbD4oXG4gICAgICAgICAgJ3NsaWRlcy5nZXRTbGlkZUJ5SWQnLFxuICAgICAgICAgIFtzbGlkZUlkXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBzbGlkZSA/IGNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlKGhvc3QsIHNsaWRlKSA6IG51bGxcbiAgICAgIH0sXG4gICAgICBnZXRTZWxlY3RlZFNsaWRlczogYXN5bmMgKGlkcz86IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGNvbnN0IHNsaWRlcyA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPFxuICAgICAgICAgIEFycmF5PHsgc2xpZGVJZDogc3RyaW5nIH0+XG4gICAgICAgID4oJ3NsaWRlcy5nZXRTZWxlY3RlZFNsaWRlcycsIHR5cGVvZiBpZHMgPT09ICd1bmRlZmluZWQnID8gW10gOiBbaWRzXSlcbiAgICAgICAgcmV0dXJuIHNsaWRlcy5tYXAoKHNsaWRlKSA9PiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShob3N0LCBzbGlkZSkpXG4gICAgICB9LFxuICAgICAgYWRkU2xpZGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2xpZGUgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTx7IHNsaWRlSWQ6IHN0cmluZyB9PihcbiAgICAgICAgICAnc2xpZGVzLmFkZFNsaWRlJ1xuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShob3N0LCBzbGlkZSlcbiAgICAgIH0sXG4gICAgICBkdXBsaWNhdGVTbGlkZTogYXN5bmMgKHNsaWRlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBzbGlkZSA9IGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlPHsgc2xpZGVJZDogc3RyaW5nIH0+KFxuICAgICAgICAgICdzbGlkZXMuZHVwbGljYXRlU2xpZGUnLFxuICAgICAgICAgIFtzbGlkZUlkXVxuICAgICAgICApXG4gICAgICAgIHJldHVybiBjcmVhdGVQcmVzZW50YXRpb25TbGlkZUZhY2FkZShob3N0LCBzbGlkZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gIGNvbnN0IHByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZSA9XG4gICAgaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8UHJlc2VudGF0aW9uU2VsZWN0aW9uRmFjYWRlPignc2VsZWN0aW9uJywge1xuICAgICAgZ2V0VGV4dFJhbmdlOiBhc3luYyAodmFsdWU/OiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBsb2NhdG9yID0gYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGU8e1xuICAgICAgICAgIHN0YXJ0OiBzdHJpbmdcbiAgICAgICAgICBlbmQ6IHN0cmluZ1xuICAgICAgICB9IHwgbnVsbD4oXG4gICAgICAgICAgJ3NlbGVjdGlvbi5nZXRUZXh0UmFuZ2UnLFxuICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgPyBbXSA6IFt2YWx1ZV1cbiAgICAgICAgKVxuICAgICAgICByZXR1cm4gY3JlYXRlUHJlc2VudGF0aW9uVGV4dFJhbmdlRmFjYWRlKGhvc3QsIGxvY2F0b3IpXG4gICAgICB9LFxuICAgICAgYWRkUmFuZ2VMaXN0ZW5lcjogKFxuICAgICAgICBsaXN0ZW5lcjogKHBheWxvYWQ6IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlIHwgbnVsbCkgPT4gdm9pZFxuICAgICAgKSA9PlxuICAgICAgICBob3N0LnJlZ2lzdGVyRWRpdG9yRmFjYWRlTGlzdGVuZXIoXG4gICAgICAgICAgJ3NlbGVjdGlvbi5hZGRSYW5nZUxpc3RlbmVyJyxcbiAgICAgICAgICBsaXN0ZW5lclxuICAgICAgICApLFxuICAgICAgZ2V0U2VsZWN0ZWRTaGFwZXM6IGFzeW5jIChpZHM/OiBzdHJpbmdbXSkgPT4ge1xuICAgICAgICBjb25zdCBzaGFwZXMgPSBhd2FpdCBob3N0Lmludm9rZUVkaXRvckZhY2FkZTxcbiAgICAgICAgICBQcmVzZW50YXRpb25TaGFwZUxvY2F0b3JbXSB8IG51bGxcbiAgICAgICAgPihcbiAgICAgICAgICAnc2VsZWN0aW9uLmdldFNlbGVjdGVkU2hhcGVzJyxcbiAgICAgICAgICB0eXBlb2YgaWRzID09PSAndW5kZWZpbmVkJyA/IFtdIDogW2lkc11cbiAgICAgICAgKVxuICAgICAgICBpZiAoIXNoYXBlcykge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNoYXBlc1xuICAgICAgICAgIC5tYXAoKHNoYXBlKSA9PiBjcmVhdGVQcmVzZW50YXRpb25TaGFwZUZhY2FkZShob3N0LCBzaGFwZSkpXG4gICAgICAgICAgLmZpbHRlcigoc2hhcGUpOiBzaGFwZSBpcyBQcmVzZW50YXRpb25TaGFwZSA9PiBzaGFwZSAhPT0gbnVsbClcbiAgICAgIH1cbiAgICB9KVxuXG4gIGNvbnN0IHByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlOiBQcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZSA9XG4gICAge1xuICAgICAgYWRkRXJyb3JMaXN0ZW5lcjogKFxuICAgICAgICBsaXN0ZW5lcjogKGVycm9yOiB7IGNvZGU6IG51bWJlciB8IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9KSA9PiB2b2lkXG4gICAgICApID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnZXZlbnRTdWJzY3JpcHRpb24uYWRkRXJyb3JMaXN0ZW5lcicsXG4gICAgICAgICAgbGlzdGVuZXJcbiAgICAgICAgKSxcbiAgICAgIGFkZExvYWRlZExpc3RlbmVyOiAobGlzdGVuZXI6ICgpID0+IHZvaWQpID0+XG4gICAgICAgIGhvc3QucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcihcbiAgICAgICAgICAnZXZlbnRTdWJzY3JpcHRpb24uYWRkTG9hZGVkTGlzdGVuZXInLFxuICAgICAgICAgIGxpc3RlbmVyXG4gICAgICAgIClcbiAgICB9XG5cbiAgY29uc3QgZG9jc091dGxpbmVGYWNhZGUgPSBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxEb2NzT3V0bGluZUZhY2FkZT4oXG4gICAgJ291dGxpbmUnLFxuICAgIHtcbiAgICAgIHNob3c6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgaG9zdC5pbnZva2VFZGl0b3JGYWNhZGUoJ291dGxpbmUuc2V0T3BlbicsIFt0cnVlXSlcbiAgICAgIH0sXG4gICAgICBoaWRlOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IGhvc3QuaW52b2tlRWRpdG9yRmFjYWRlKCdvdXRsaW5lLnNldE9wZW4nLCBbZmFsc2VdKVxuICAgICAgfVxuICAgIH1cbiAgKVxuXG4gIHN3aXRjaCAoaG9zdC5maWxlVHlwZSkge1xuICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnQ6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogdGl0bGVGYWNhZGUsXG4gICAgICAgIGhpc3Rvcnk6IGhpc3RvcnlGYWNhZGUsXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50c0ZhY2FkZSxcbiAgICAgICAgZGlzY3Vzc2lvbjogZGlzY3Vzc2lvbkZhY2FkZSxcbiAgICAgICAgY29sbGFib3JhdG9yOiBjb2xsYWJvcmF0b3JGYWNhZGUsXG4gICAgICAgIGV4dGVybmFsQXBwOiBleHRlcm5hbEFwcEZhY2FkZSxcbiAgICAgICAgdmVyc2lvbjogdmVyc2lvbkZhY2FkZSxcbiAgICAgICAgcHJlc2VudGF0aW9uOiBjcmVhdGVEb2N1bWVudFByZXNlbnRhdGlvbkZhY2FkZShob3N0KSxcbiAgICAgICAgc2VsZWN0aW9uOiBkb2NzU2VsZWN0aW9uRmFjYWRlLFxuICAgICAgICBzZXR0aW5nczogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8RG9jc1NldHRpbmdzRmFjYWRlPihcbiAgICAgICAgICAnc2V0dGluZ3MnLFxuICAgICAgICAgIHt9XG4gICAgICAgICksXG4gICAgICAgIHNlYXJjaDogaG9zdC5jcmVhdGVFZGl0b3JGYWNhZGVNb2R1bGU8RG9jc1NlYXJjaEZhY2FkZT4oJ3NlYXJjaCcsIHt9KSxcbiAgICAgICAgb3V0bGluZTogZG9jc091dGxpbmVGYWNhZGUsXG4gICAgICAgIHNpZGViYXI6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPERvY3NTaWRlYmFyRmFjYWRlPihcbiAgICAgICAgICAnc2lkZWJhcicsXG4gICAgICAgICAge31cbiAgICAgICAgKSxcbiAgICAgICAgdGFibGVzOiBkb2NzVGFibGVzRmFjYWRlLFxuICAgICAgICBiYXRjaENoYW5nZXM6IGJhdGNoQ2hhbmdlc0ZhY2FkZSxcbiAgICAgICAgcHJpbnQ6IHByaW50RmFjYWRlXG4gICAgICB9XG4gICAgY2FzZSBGaWxlVHlwZS5TcHJlYWRzaGVldDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGhpc3Rvcnk6IGhpc3RvcnlGYWNhZGUsXG4gICAgICAgIGNvbW1lbnRzOiBjb21tZW50c0ZhY2FkZSxcbiAgICAgICAgbG9ja3M6IGxvY2tzRmFjYWRlLFxuICAgICAgICBtZW50aW9uOiBtZW50aW9uRmFjYWRlLFxuICAgICAgICBjb250ZW50OiBjb250ZW50RmFjYWRlLFxuICAgICAgICB2ZXJzaW9uOiB2ZXJzaW9uRmFjYWRlLFxuICAgICAgICBwcmVzZW50YXRpb246IGNyZWF0ZVNwcmVhZHNoZWV0UHJlc2VudGF0aW9uRmFjYWRlKGhvc3QpLFxuICAgICAgICB3b3JrYm9vazogc2hlZXRXb3JrYm9va0ZhY2FkZSxcbiAgICAgICAgYWN0aXZlU2hlZXQ6IGNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlKGhvc3QsIHsgYWN0aXZlOiB0cnVlIH0pLFxuICAgICAgICBjaGFydHM6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFNoZWV0Q2hhcnRzRmFjYWRlPignY2hhcnRzJywge30pLFxuICAgICAgICBzZWxlY3Rpb25zOiBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxTaGVldFNlbGVjdGlvbnNGYWNhZGU+KFxuICAgICAgICAgICdzZWxlY3Rpb25zJyxcbiAgICAgICAgICB7fVxuICAgICAgICApLFxuICAgICAgICBiYXRjaENoYW5nZXM6IGJhdGNoQ2hhbmdlc0ZhY2FkZSxcbiAgICAgICAgcHJpbnQ6IHByaW50RmFjYWRlLFxuICAgICAgICBleHBvcnQ6IGV4cG9ydEZhY2FkZSxcbiAgICAgICAgc2V0Rm9jdXM6IHNldEZvY3VzRmFjYWRlXG4gICAgICB9XG4gICAgY2FzZSBGaWxlVHlwZS5QcmVzZW50YXRpb246XG4gICAgICByZXR1cm4ge1xuICAgICAgICBoaXN0b3J5OiBoaXN0b3J5RmFjYWRlLFxuICAgICAgICBjb21tZW50czogY29tbWVudHNGYWNhZGUsXG4gICAgICAgIHZlcnNpb246IHZlcnNpb25GYWNhZGUsXG4gICAgICAgIHByZXNlbnRhdGlvbjogY3JlYXRlUHJlc2VudGF0aW9uRmFjYWRlKGhvc3QpLFxuICAgICAgICBzbGlkZXM6IHByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSxcbiAgICAgICAgc2VsZWN0aW9uOiBwcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGUsXG4gICAgICAgIHRleHQ6IGhvc3QuY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFByZXNlbnRhdGlvblRleHRGYWNhZGU+KCd0ZXh0Jywge30pLFxuICAgICAgICB6b29tOiBob3N0LmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZTxQcmVzZW50YXRpb25ab29tRmFjYWRlPignem9vbScsIHt9KSxcbiAgICAgICAgZXZlbnRTdWJzY3JpcHRpb246IHByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlLFxuICAgICAgICBiYXRjaENoYW5nZXM6IGJhdGNoQ2hhbmdlc0ZhY2FkZSxcbiAgICAgICAgcHJpbnQ6IHByaW50RmFjYWRlLFxuICAgICAgICBleHBvcnQ6IGV4cG9ydEZhY2FkZVxuICAgICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4ge31cbiAgfVxufVxuIiwiaW1wb3J0IHR5cGUgeyBEb2N1bWVudEVycm9yTWVzc2FnZSwgRXh0ZXJuYWxBcHBQYXJhbXMgfSBmcm9tICcuL3R5cGVzL0RvY3VtZW50J1xuXG5leHBvcnQgaW50ZXJmYWNlIFRpdGxlRmFjYWRlIHtcbiAgYWRkQ2hhbmdlZExpc3RlbmVyOiAobGlzdGVuZXI6ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkXG4gIHNldFRpdGxlOiAodGl0bGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRzRmFjYWRlIHtcbiAgc2hvdzogKHR5cGU/OiAnbGlzdCcgfCAnY2FyZCcpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKHR5cGU/OiAnbGlzdCcgfCAnY2FyZCcpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIaXN0b3J5RmFjYWRlIHtcbiAgc2hvdzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzY3Vzc2lvbkZhY2FkZSB7XG4gIHNob3c6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbGxhYm9yYXRvckZhY2FkZSB7XG4gIHNob3c6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaGlkZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVybmFsQXBwRmFjYWRlIHtcbiAgaW5zZXJ0OiAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGFyYW1zPzogRXh0ZXJuYWxBcHBQYXJhbXNcbiAgKSA9PiBQcm9taXNlPG51bGwgfCBEb2N1bWVudEVycm9yTWVzc2FnZT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmFuZ2VCb3VuZGluZyB7XG4gIHRvcDogbnVtYmVyXG4gIHJpZ2h0OiBudW1iZXJcbiAgYm90dG9tOiBudW1iZXJcbiAgbGVmdDogbnVtYmVyXG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmFuZ2VWYWx1ZSB7XG4gIHN0YXJ0OiBudW1iZXJcbiAgZW5kOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmVwbGFjZVBhcmFtcyB7XG4gIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzUmVwbGFjZVJlc3VsdCB7XG4gIGlkOiBzdHJpbmdcbiAgb2xkVmFsdWU6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBEb2NzU2VhcmNoRGlyZWN0aW9uID0gJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJ1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NTZWFyY2hQYXJhbXMge1xuICBjb250ZW50OiBzdHJpbmdcbiAgaGlnaGxpZ2h0PzogYm9vbGVhblxuICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhblxuICB3aG9sZVdvcmQ/OiBib29sZWFuXG4gIHVzZVJlZ2V4PzogYm9vbGVhblxuICBzZWFyY2hEaXJlY3Rpb24/OiBEb2NzU2VhcmNoRGlyZWN0aW9uXG4gIHJhbmdlPzogRG9jc1JhbmdlVmFsdWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2VhcmNoUmVzdWx0IHtcbiAga2V5d29yZDogc3RyaW5nXG4gIGlkOiBzdHJpbmdcbiAgcmFuZ2U6IERvY3NSYW5nZVZhbHVlXG4gIGlzUHJvdGVjdGVkPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBEb2NzQ29udGludWVXcml0aW5nVHlwZSA9ICd0ZXh0JyB8ICdodG1sJyB8ICdtYXJrZG93bidcbmV4cG9ydCB0eXBlIERvY3NCdWxsZXRMaXN0U3R5bGUgPSAnZGlzYycgfCAnY2lyY2xlJyB8ICdzcXVhcmUnXG5leHBvcnQgdHlwZSBEb2NzT3JkZXJlZExpc3RTdHlsZSA9ICdkZWNpbWFsJyB8ICdsb3dlci1hbHBoYScgfCAnbG93ZXItcm9tYW4nXG5leHBvcnQgdHlwZSBEb2NzTGlzdFN0eWxlID1cbiAgfCB7IHR5cGU6ICdub25lJyB9XG4gIHwgeyB0eXBlOiAnb3JkZXJlZCc7IHN0eWxlPzogRG9jc09yZGVyZWRMaXN0U3R5bGUgfVxuICB8IHsgdHlwZTogJ2J1bGxldCc7IHN0eWxlPzogRG9jc0J1bGxldExpc3RTdHlsZSB9XG4gIHwgeyB0eXBlOiAndGFzaycgfVxuZXhwb3J0IHR5cGUgRG9jc1BhZ2VXaWR0aCA9ICdzdGFuZGFyZCcgfCAnd2lkZScgfCAnZnVsbCdcbmV4cG9ydCB0eXBlIERvY3NQYXJhZ3JhcGhUeXBlID1cbiAgfCAncGFyYWdyYXBoJ1xuICB8ICd0aXRsZSdcbiAgfCAnc3VidGl0bGUnXG4gIHwgJ2gxJ1xuICB8ICdoMidcbiAgfCAnaDMnXG4gIHwgJ2g0J1xuICB8ICdoNSdcbiAgfCAnaDYnXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RleHRTdHlsZSB7XG4gIGJvbGQ/OiBib29sZWFuXG4gIGl0YWxpYz86IGJvb2xlYW5cbiAgdW5kZXJsaW5lPzogYm9vbGVhblxuICBzdHJpa2V0aHJvdWdoPzogYm9vbGVhblxuICBjb2xvcj86IHN0cmluZ1xuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmdcbiAgZm9udEZhbWlseT86IHN0cmluZ1xuICBmb250U2l6ZT86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NQYXJhZ3JhcGhTdHlsZSB7XG4gIGFsaWduPzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHwgJ2p1c3RpZnknXG4gIHZlcnRpY2FsPzogJ3RvcCcgfCAnbWlkZGxlJyB8ICdib3R0b20nXG59XG5cbmV4cG9ydCB0eXBlIERvY3NUYWJsZUNlbGxTdHlsZSA9IERvY3NUZXh0U3R5bGUgJiBEb2NzUGFyYWdyYXBoU3R5bGVcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzRGVmYXVsdFN0eWxlIHtcbiAgY29sb3I6IHN0cmluZ1xuICBmb250U2l6ZTogc3RyaW5nXG4gIGZvbnRGYW1pbHk6IHN0cmluZ1xuICBsaW5lU3BhY2luZzogc3RyaW5nXG4gIGZvbnQ6IHN0cmluZ1xuICBzaXplOiBzdHJpbmdcbiAgbGluZXNwYWNpbmc6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBEb2NzS25vd25Db2RlQmxvY2tMYW5ndWFnZSA9XG4gIHwgJ3BsYWludGV4dCdcbiAgfCAnYXJkdWlubydcbiAgfCAnYmFzaCdcbiAgfCAnYmFzaWMnXG4gIHwgJ2NzaGFycCdcbiAgfCAnY3BwJ1xuICB8ICdjc3MnXG4gIHwgJ2Nsb2p1cmUnXG4gIHwgJ2NvZmZlZXNjcmlwdCdcbiAgfCAnZGFydCdcbiAgfCAnZGlmZidcbiAgfCAnZG9ja2VyJ1xuICB8ICdlbGl4aXInXG4gIHwgJ2VybGFuZydcbiAgfCAnZnNoYXJwJ1xuICB8ICdmb3J0cmFuJ1xuICB8ICdnbHNsJ1xuICB8ICdnaGVya2luJ1xuICB8ICdnbydcbiAgfCAnZ3Jvb3Z5J1xuICB8ICdodG1sJ1xuICB8ICdoYXNrZWxsJ1xuICB8ICdqc29uJ1xuICB8ICdqYXZhJ1xuICB8ICdqYXZhc2NyaXB0J1xuICB8ICdsZXNzJ1xuICB8ICdsaXNwJ1xuICB8ICdsdWEnXG4gIHwgJ21ha2VmaWxlJ1xuICB8ICdtYXJrZG93bidcbiAgfCAnbWF0bGFiJ1xuICB8ICduaXgnXG4gIHwgJ29jYW1sJ1xuICB8ICdvYmplY3RpdmVjJ1xuICB8ICdwaHAnXG4gIHwgJ3BlcmwnXG4gIHwgJ3Bvd2Vyc2hlbGwnXG4gIHwgJ3Byb2xvZydcbiAgfCAncHJvdG9idWYnXG4gIHwgJ3B5dGhvbidcbiAgfCAncidcbiAgfCAncnVieSdcbiAgfCAncnVzdCdcbiAgfCAnc2NzcydcbiAgfCAnc3FsJ1xuICB8ICdzY2FsYSdcbiAgfCAnc2NoZW1lJ1xuICB8ICdzaGVsbHNlc3Npb24nXG4gIHwgJ3N3aWZ0J1xuICB8ICd0eXBlc2NyaXB0J1xuICB8ICd2Ym5ldCdcbiAgfCAndmFsYSdcbiAgfCAndmVyaWxvZydcbiAgfCAoc3RyaW5nICYge30pXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0NvZGVCbG9ja0F0dHJzIHtcbiAgbGFuZ3VhZ2U/OiBEb2NzS25vd25Db2RlQmxvY2tMYW5ndWFnZVxuICB3b3JkV3JhcD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgRG9jc0NvZGVCbG9ja0RpcmVjdGlvbiA9ICdsdHInIHwgJ3J0bCdcbmV4cG9ydCB0eXBlIERvY3NDb2RlQmxvY2tBbGlnbm1lbnQgPSAnc3RhcnQnIHwgJ2VuZCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5J1xuZXhwb3J0IHR5cGUgRG9jc0NvZGVCbG9ja0luZGVudCA9IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiB8IDcgfCA4XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc0NvZGVCbG9ja1RleHROb2RlIHtcbiAgZWxlbWVudDogJ3RleHQnXG4gIHRleHQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NDb2RlQmxvY2tQYXJhZ3JhcGhBdHRycyB7XG4gIGRpcmVjdGlvbj86IERvY3NDb2RlQmxvY2tEaXJlY3Rpb25cbiAgbGluZUhlaWdodD86IHN0cmluZ1xuICB0ZXh0SW5kZW50Pzogc3RyaW5nXG4gIGFsaWdubWVudD86IERvY3NDb2RlQmxvY2tBbGlnbm1lbnRcbiAgaW5kZW50PzogRG9jc0NvZGVCbG9ja0luZGVudFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NDb2RlQmxvY2tQYXJhZ3JhcGhOb2RlIHtcbiAgZWxlbWVudDogJ3BhcmFncmFwaCdcbiAgYXR0cnM6IERvY3NDb2RlQmxvY2tQYXJhZ3JhcGhBdHRycyB8IG51bGxcbiAgY29udGVudDogRG9jc0NvZGVCbG9ja1RleHROb2RlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzQ29kZUJsb2NrSW5zZXJ0T3B0aW9ucyB7XG4gIGF0dHJzPzogRG9jc0NvZGVCbG9ja0F0dHJzXG4gIGNvbnRlbnQ/OiBEb2NzQ29kZUJsb2NrUGFyYWdyYXBoTm9kZVtdXG59XG5cbmV4cG9ydCB0eXBlIFRPQ05vZGVUeXBlID1cbiAgfCAnaGVhZGluZydcbiAgfCAnb3JkZXJlZC1saXN0J1xuICB8ICdidWxsZXQtbGlzdCdcbiAgfCAndGFzaydcbiAgfCBzdHJpbmdcblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVE9DSXRlbSB7XG4gIGlkOiBzdHJpbmdcbiAgbGV2ZWw6IHN0cmluZ1xuICB0ZXh0OiBzdHJpbmdcbiAgcG9zOiBudW1iZXJcbiAgbm9kZVR5cGU6IFRPQ05vZGVUeXBlXG4gIGxlYWRpbmdTeW1ib2w6IHN0cmluZyB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzU2lkZWJhclN0YXRlIHtcbiAgdmlzaWJsZTogYm9vbGVhblxuICBzZWxlY3RlZFRhYjogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlU2VsZWN0aW9uIHtcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgcm93Q291bnQ6IG51bWJlclxuICBjb2x1bW5Db3VudDogbnVtYmVyXG59XG5cbmV4cG9ydCBlbnVtIEVkaXRvclNhdmVTdGF0dXMge1xuICBOb0NoYW5nZSA9IDAsXG4gIFN1Y2Nlc3MgPSAxLFxuICBGYWlsID0gMlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvclNhdmVSZXN1bHQge1xuICBzdGF0dXM6IEVkaXRvclNhdmVTdGF0dXNcbn1cblxuZXhwb3J0IHR5cGUgQ29udGVudCA9IHN0cmluZyB8IEFycmF5QnVmZmVyIHwgUmVjb3JkPHN0cmluZywgbmV2ZXI+IHwgb2JqZWN0XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpcGJvYXJkUGFzdGVQYXJhbXMge1xuICBodG1sOiBzdHJpbmdcbiAgdGV4dDogc3RyaW5nXG4gIGJhc2U2NEZpbGU/OiBzdHJpbmdcbiAgcmVtb3ZlVHJhaWxpbmdFbXB0eVJvd3M/OiBib29sZWFuXG4gIHJlbW92ZVRyYWlsaW5nRW1wdHlDb2x1bW5zPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBTaGVldEFwcGVuZERhdGFBeGlzID0gJ3JvdycgfCAnY29sdW1uJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0U2VsZWN0aW9uIHtcbiAgLyoqIOW9k+WJjSBpZnJhbWUgcnVudGltZSDlhoXnqLPlrprnmoTpgInljLrmoIfor4bjgIIgKi9cbiAgaWQ6IHN0cmluZ1xuICBnZXRSYW5nZTogKHZhbHVlPzogU2hlZXRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsPlxuICBzZXRSYW5nZTogKHZhbHVlOiBTaGVldFJhbmdlVmFsdWUgfCBudWxsKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBlbnVtIFNoZWV0UmFuZ2VUeXBlIHtcbiAgQ2VsbHMgPSAnY2VsbHMnLFxuICBSb3dzID0gJ3Jvd3MnLFxuICBDb2x1bW5zID0gJ2NvbHVtbnMnLFxuICBTaGVldCA9ICdzaGVldCdcbn1cblxuZXhwb3J0IHR5cGUgU2hlZXRSYW5nZVZhbHVlID1cbiAgfCB7XG4gICAgICB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5DZWxsc31gXG4gICAgICByb3c6IG51bWJlclxuICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgICAgY29sdW1uOiBudW1iZXJcbiAgICAgIGNvbHVtbkNvdW50OiBudW1iZXJcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogYCR7U2hlZXRSYW5nZVR5cGUuUm93c31gXG4gICAgICByb3c6IG51bWJlclxuICAgICAgcm93Q291bnQ6IG51bWJlclxuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBgJHtTaGVldFJhbmdlVHlwZS5Db2x1bW5zfWBcbiAgICAgIGNvbHVtbjogbnVtYmVyXG4gICAgICBjb2x1bW5Db3VudDogbnVtYmVyXG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IGAke1NoZWV0UmFuZ2VUeXBlLlNoZWV0fWBcbiAgICB9XG5cbmV4cG9ydCB0eXBlIFNoZWV0Q2VsbFJhbmdlID0gT21pdDxcbiAgRXh0cmFjdDxTaGVldFJhbmdlVmFsdWUsIHsgdHlwZTogYCR7U2hlZXRSYW5nZVR5cGUuQ2VsbHN9YCB9PixcbiAgJ3R5cGUnXG4+XG5cbmV4cG9ydCB0eXBlIFNoZWV0UmFuZ2VUZXh0ID0gc3RyaW5nIHwgc3RyaW5nW11bXVxuXG5leHBvcnQgdHlwZSBTaGVldENlbGxWYWx1ZSA9XG4gIHwgeyB0eXBlOiAncHJpbWl0aXZlJzsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2RhdGUnOyB2YWx1ZTogbnVtYmVyIH1cbiAgfCB7IHR5cGU6ICdjYWxjRXJyb3InOyB2YWx1ZTogeyBlcnJvcjogc3RyaW5nIH0gfVxuXG5leHBvcnQgdHlwZSBTaGVldFdyaXRhYmxlQ2VsbFZhbHVlID0gRXhjbHVkZTxcbiAgU2hlZXRDZWxsVmFsdWUsXG4gIHsgdHlwZTogJ2NhbGNFcnJvcicgfVxuPlxuXG5leHBvcnQgdHlwZSBGb3JtYXRDYXRlZ29yeSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgQWxpZ25WYWx1ZSA9ICdsZWZ0JyB8ICdyaWdodCcgfCAnY2VudGVyJyB8ICdqdXN0aWZ5J1xuZXhwb3J0IHR5cGUgVmVydGljYWxWYWx1ZSA9ICd0b3AnIHwgJ21pZGRsZScgfCAnYm90dG9tJ1xuZXhwb3J0IHR5cGUgV3JhcFZhbHVlID0gJ292ZXJmbG93JyB8ICd3cmFwJyB8ICdjbGlwJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEJvcmRlclN0eWxlIHtcbiAgc3R5bGU/OiBzdHJpbmdcbiAgY29sb3I/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSaWNoVGV4dEl0ZW0ge1xuICB0ZXh0OiBzdHJpbmdcbiAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0V3JpdGFibGVDZWxsTWV0YSB7XG4gIGZvcm1hdENhdGVnb3J5PzogRm9ybWF0Q2F0ZWdvcnlcbiAgY29sb3I/OiBzdHJpbmdcbiAgYmFja2dyb3VuZD86IHN0cmluZ1xuICBmb250RmFtaWx5Pzogc3RyaW5nXG4gIGZvbnRTaXplPzogbnVtYmVyXG4gIGFsaWduPzogQWxpZ25WYWx1ZVxuICBib2xkPzogYm9vbGVhblxuICBpdGFsaWM/OiBib29sZWFuXG4gIHVuZGVybGluZT86IGJvb2xlYW5cbiAgc3RyaWtlPzogYm9vbGVhblxuICB2ZXJ0aWNhbD86IFZlcnRpY2FsVmFsdWVcbiAgd3JhcD86IFdyYXBWYWx1ZVxuICB0ZXh0Um90YXRpb24/OiBudW1iZXJcbiAgdGV4dEluZGVudD86IG51bWJlclxuICBib3JkZXJUb3A/OiBCb3JkZXJTdHlsZVxuICBib3JkZXJSaWdodD86IEJvcmRlclN0eWxlXG4gIGJvcmRlckJvdHRvbT86IEJvcmRlclN0eWxlXG4gIGJvcmRlckxlZnQ/OiBCb3JkZXJTdHlsZVxuICBkaWFnb25hbERvd24/OiBCb3JkZXJTdHlsZVxuICBkaWFnb25hbFVwPzogQm9yZGVyU3R5bGVcbiAgcHJlY2lzaW9uPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRDZWxsRGF0YSBleHRlbmRzIFNoZWV0V3JpdGFibGVDZWxsTWV0YSB7XG4gIHZhbHVlOiBTaGVldENlbGxWYWx1ZSB8IG51bGxcbiAgZm9ybXVsYTogc3RyaW5nIHwgbnVsbFxuICB0ZXh0OiBzdHJpbmdcbiAgZm9ybWF0Pzogc3RyaW5nXG4gIHNwYW4/OiBTaGVldENlbGxSYW5nZVxuICByaWNoVGV4dD86IFJpY2hUZXh0SXRlbVtdXG59XG5cbmV4cG9ydCB0eXBlIFNoZWV0V3JpdGFibGVDZWxsRGF0YSA9XG4gIHwgKHsgdmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgbnVsbCB9ICYgU2hlZXRXcml0YWJsZUNlbGxNZXRhKVxuICB8ICh7XG4gICAgICBmb3JtdWxhOiBzdHJpbmcgfCBudWxsXG4gICAgICBxdW90ZVByZWZpeD86IGJvb2xlYW5cbiAgICB9ICYgU2hlZXRXcml0YWJsZUNlbGxNZXRhKVxuICB8ICh7XG4gICAgICB0ZXh0OiBzdHJpbmcgfCBudWxsXG4gICAgICByaWNoVGV4dD86IFJpY2hUZXh0SXRlbVtdXG4gICAgfSAmIFNoZWV0V3JpdGFibGVDZWxsTWV0YSlcblxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hNYXRjaCB7XG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHRleHQ6IHN0cmluZ1xuICBpc0xpbmtDZWxsPzogYm9vbGVhblxuICBmb3JtdWxhSW5mbz86IHtcbiAgICBmb3JtdWxhVGV4dDogc3RyaW5nXG4gICAgaGFzRm9ybXVsYTogYm9vbGVhblxuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcm1pc3Npb25EaWN0ID0gUmVjb3JkPG51bWJlciwgUGVybWlzc2lvbkxldmVsPlxuXG5leHBvcnQgZW51bSBQZXJtaXNzaW9uTGV2ZWwge1xuICBFZGl0YWJsZSA9IDAsXG4gIFJlYWRPbmx5ID0gMSxcbiAgUHJpdmF0ZSA9IDJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRSYW5nZUxvY2tQYXJhbXMge1xuICByYW5nZXM/OiBTaGVldENlbGxSYW5nZVtdXG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXNlclBlcm1pc3Npb25zOiBQZXJtaXNzaW9uRGljdFxuICBkZXBhcnRtZW50UGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uRGljdFxuICB2aXNpdG9yUGVybWlzc2lvbj86IFBlcm1pc3Npb25MZXZlbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZFNoZWV0TG9ja1BhcmFtcyB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgdXNlclBlcm1pc3Npb25zOiBQZXJtaXNzaW9uRGljdFxuICBkZXBhcnRtZW50UGVybWlzc2lvbnM/OiBQZXJtaXNzaW9uRGljdFxuICB2aXNpdG9yUGVybWlzc2lvbj86IFBlcm1pc3Npb25MZXZlbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW92ZVJhbmdlTG9ja3NQYXJhbXMge1xuICBzaGVldElkPzogc3RyaW5nXG4gIHJhbmdlcz86IFNoZWV0Q2VsbFJhbmdlW11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVTaGVldExvY2tQYXJhbXMge1xuICBzaGVldElkPzogc3RyaW5nXG59XG5cbmV4cG9ydCBlbnVtIE1lbnRpb25UeXBlcyB7XG4gIENvbW1lbnQgPSAnY29tbWVudCcsXG4gIE1lbnRpb24gPSAnbWVudGlvbl9hdCcsXG4gIERhdGVNZW50aW9uID0gJ2RhdGVfbWVudGlvbidcbn1cblxuZXhwb3J0IHR5cGUgUmV2aXNpb25DcmVhdGVPcHRpb25zID0gc3RyaW5nIHwgeyBuYW1lOiBzdHJpbmcgfVxuXG5leHBvcnQgdHlwZSBTaGVldENoYXJ0Rmlyc3RBcyA9XG4gIHwgJ2F1dG8nXG4gIHwgJ3Nlcmllc0xhYmVsJ1xuICB8ICdjYXRlZ29yeUxhYmVsJ1xuICB8ICdub25lJ1xuZXhwb3J0IHR5cGUgU2hlZXRDaGFydFNlcmllc09yaWVudGF0aW9uID0gJ2F1dG8nIHwgJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuZXhwb3J0IHR5cGUgU2hlZXRDaGFydFR5cGUgPVxuICB8ICdwaWUnXG4gIHwgJ2RvdWdobnV0J1xuICB8ICdjaGluYU1hcCdcbiAgfCAnZnVubmVsJ1xuICB8ICdzdW5idXJzdCdcbiAgfCAnZ2F1Z2UnXG4gIHwgJ2dhbnR0J1xuICB8ICdhYnN0cmFjdCdcbiAgfCAnY29sdW1uQ2x1c3RlcmVkJ1xuICB8ICdjb2x1bW5TdGFja2VkJ1xuICB8ICdjb2x1bW5TdGFja2VkMTAwJ1xuICB8ICdiYXJDbHVzdGVyZWQnXG4gIHwgJ2JhclN0YWNrZWQnXG4gIHwgJ2JhclN0YWNrZWQxMDAnXG4gIHwgJ2xpbmUnXG4gIHwgJ2xpbmVTdGFja2VkJ1xuICB8ICdsaW5lU3RhY2tlZDEwMCdcbiAgfCAnbGluZU1hcmtlcnMnXG4gIHwgJ2xpbmVNYXJrZXJzU3RhY2tlZCdcbiAgfCAnbGluZU1hcmtlcnNTdGFja2VkMTAwJ1xuICB8ICdhcmVhJ1xuICB8ICdhcmVhU3RhY2tlZCdcbiAgfCAnYXJlYVN0YWNrZWQxMDAnXG4gIHwgJ3N0b2NrT0hMQydcbiAgfCAneHlTY2F0dGVyJ1xuICB8ICdidWJibGUnXG4gIHwgJ2hpc3RvZ3JhbSdcbiAgfCAnd2F0ZXJmYWxsJ1xuICB8ICdjb21iaW5hdGlvbidcblxuZXhwb3J0IGludGVyZmFjZSBBZGRDaGFydEZyb21TZWxlY3Rpb25CdWlsdGluUGFyYW1zIHtcbiAgY2hhcnRUeXBlPzogU2hlZXRDaGFydFR5cGVcbiAgc2VyaWVzPzoge1xuICAgIG9yaWVudGF0aW9uPzogU2hlZXRDaGFydFNlcmllc09yaWVudGF0aW9uXG4gICAgdHJpbVBhZGRpbmdzPzogYm9vbGVhblxuICAgIGZpcnN0QXM/OiBTaGVldENoYXJ0Rmlyc3RBc1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkQ2hhcnRGcm9tU2VsZWN0aW9uRXh0ZXJuYWxQYXJhbXNcbiAgZXh0ZW5kcyBBZGRDaGFydEZyb21TZWxlY3Rpb25CdWlsdGluUGFyYW1zIHtcbiAgcmVjb21tZW5kYXRpb25Nb2RlPzogJ2J1aWx0aW4nIHwgJ2V4dGVybmFsJ1xufVxuXG5leHBvcnQgdHlwZSBBZGRDaGFydEZyb21TZWxlY3Rpb25QYXJhbXMgPVxuICB8IEFkZENoYXJ0RnJvbVNlbGVjdGlvbkJ1aWx0aW5QYXJhbXNcbiAgfCBBZGRDaGFydEZyb21TZWxlY3Rpb25FeHRlcm5hbFBhcmFtc1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZENoYXJ0RnJvbVNlbGVjdGlvblJlc3VsdCB7XG4gIGNoYXJ0SWQ6IHN0cmluZ1xuICBjaGFydFR5cGU6IFNoZWV0Q2hhcnRUeXBlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yVGV4dEZvcm1hdDxDb2xvciA9IHN0cmluZz4ge1xuICBib2xkOiBib29sZWFuXG4gIGl0YWxpYzogYm9vbGVhblxuICB1bmRlcmxpbmU6IGJvb2xlYW5cbiAgc3RyaWtlOiBib29sZWFuXG4gIGNvbG9yOiBDb2xvclxuICBoaWdobGlnaHQ6IENvbG9yXG4gIHNpemU6IG51bWJlciB8IHN0cmluZ1xuICBmYW1pbHk6IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25Ib3Jpem9udGFsQWxpZ24gPVxuICB8ICdsZWZ0J1xuICB8ICdjZW50ZXInXG4gIHwgJ3JpZ2h0J1xuICB8ICdqdXN0aWZ5J1xuICB8ICdkaXN0J1xuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25WZXJ0aWNhbEFsaWduID1cbiAgfCAndG9wJ1xuICB8ICdtaWQnXG4gIHwgJ2JvdHRvbSdcbiAgfCAnd29yZEFydFZlcnQnXG4gIHwgJ2VhVmVydCdcbiAgfCAnbW9uZ29saWFuVmVydCdcbiAgfCAndmVydCdcbiAgfCAndmVydDI3MCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25JbmRlbnQge1xuICBsZWZ0PzogbnVtYmVyXG4gIHJpZ2h0PzogbnVtYmVyXG4gIGZpcnN0TGluZT86IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaW5lU3BhY2VSdWxlID0gJ2F0TGVhc3QnIHwgJ2F1dG8nIHwgJ2V4YWN0J1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uQnVsbGV0U3ViVHlwZSA9IHN0cmluZ1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uT3JkZXJlZFN1YlR5cGUgPVxuICB8ICdhcmFiaWNQZXJpb2QnXG4gIHwgJ2FyYWJpY1BhcmVuQm90aCdcbiAgfCAnZWExQ2hzUGVyaW9kJ1xuICB8ICdjaGluZXNlTnVtYmVyUGFyZW5Cb3RoJ1xuICB8ICdhbHBoYUxjUGFyZW5SJ1xuICB8ICdyb21hbkxjUGVyaW9kJ1xuICB8ICdhbHBoYVVjUGVyaW9kJ1xuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaXN0VHlwZSA9XG4gIHwgeyB0eXBlOiAnbm9uZScgfVxuICB8IHsgdHlwZTogJ2J1bGxldCc7IHN1YlR5cGU/OiBQcmVzZW50YXRpb25CdWxsZXRTdWJUeXBlOyBjaGFyPzogc3RyaW5nIH1cbiAgfCB7XG4gICAgICB0eXBlOiAnb3JkZXJlZCdcbiAgICAgIHN1YlR5cGU/OiBQcmVzZW50YXRpb25PcmRlcmVkU3ViVHlwZVxuICAgICAgc3RhcnRBdD86IG51bWJlclxuICAgIH1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25QYXJhZ3JhcGhTcGFjaW5nIHtcbiAgbGluZT86IG51bWJlclxuICBsaW5lUnVsZT86IFByZXNlbnRhdGlvbkxpbmVTcGFjZVJ1bGVcbiAgYmVmb3JlPzogbnVtYmVyXG4gIGFmdGVyPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uUGFyYWdyYXBoU3R5bGUge1xuICBhbGlnbj86IFByZXNlbnRhdGlvbkhvcml6b250YWxBbGlnblxuICB2ZXJ0aWNhbD86IFByZXNlbnRhdGlvblZlcnRpY2FsQWxpZ25cbiAgZGlyZWN0aW9uPzogJ2x0cicgfCAncnRsJ1xuICBpbmRlbnQ/OiBQcmVzZW50YXRpb25JbmRlbnRcbiAgc3BhY2luZz86IFByZXNlbnRhdGlvblBhcmFncmFwaFNwYWNpbmdcbiAgbGlzdFR5cGU/OiBQcmVzZW50YXRpb25MaXN0VHlwZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRTdHlsZSB7XG4gIGJvbGQ/OiBib29sZWFuXG4gIGl0YWxpYz86IGJvb2xlYW5cbiAgdW5kZXJsaW5lPzogYm9vbGVhblxuICBzdHJpa2V0aHJvdWdoPzogYm9vbGVhblxuICBmb250U2l6ZT86IG51bWJlclxuICBmb250RmFtaWx5Pzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uUGFyYWdyYXBoIHtcbiAgdGV4dDogc3RyaW5nXG4gIHRleHRTdHlsZT86IFByZXNlbnRhdGlvblRleHRTdHlsZVxuICBwYXJhZ3JhcGhTdHlsZT86IFByZXNlbnRhdGlvblBhcmFncmFwaFN0eWxlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uT2Zmc2V0IHtcbiAgeDogbnVtYmVyXG4gIHk6IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNpemUge1xuICB3aWR0aDogbnVtYmVyXG4gIGhlaWdodDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVGaWxsIHtcbiAgdHlwZT86ICdzb2xpZCcgfCAnbm9uZSdcbiAgY29sb3I/OiBzdHJpbmdcbiAgdHJhbnNwYXJlbmN5PzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVMYXlvdXQge1xuICByb3RhdGlvbj86IG51bWJlclxuICBmbGlwSG9yaXpvbnRhbD86IGJvb2xlYW5cbiAgZmxpcFZlcnRpY2FsPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25TaGFwZURhc2hUeXBlID1cbiAgfCAnZGFzaCdcbiAgfCAnZGFzaERvdCdcbiAgfCAnZG90J1xuICB8ICdsZ0Rhc2gnXG4gIHwgJ2xnRGFzaERvdCdcbiAgfCAnbGdEYXNoRG90RG90J1xuICB8ICdzb2xpZCdcblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TaGFwZUxpbmUge1xuICB2aXNpYmxlPzogYm9vbGVhblxuICBjb2xvcj86IHN0cmluZ1xuICB0cmFuc3BhcmVuY3k/OiBudW1iZXJcbiAgd2lkdGg/OiBudW1iZXJcbiAgZGFzaFR5cGU/OiBQcmVzZW50YXRpb25TaGFwZURhc2hUeXBlXG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblNoYXBlQ29udGVudCA9IHN0cmluZyB8IFByZXNlbnRhdGlvblBhcmFncmFwaFtdXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25MaW5lU2hhcGVUeXBlID1cbiAgfCAnbGluZSdcbiAgfCAnbGluZVdpdGhBcnJvdydcbiAgfCAnbGluZVdpdGhUd29BcnJvd3MnXG4gIHwgJ2JlbnRDb25uZWN0b3I1J1xuICB8ICdiZW50Q29ubmVjdG9yNVdpdGhBcnJvdydcbiAgfCAnYmVudENvbm5lY3RvcjVXaXRoVHdvQXJyb3dzJ1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzJ1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzV2l0aEFycm93J1xuICB8ICdjdXJ2ZWRDb25uZWN0b3IzV2l0aFR3b0Fycm93cydcbiAgfCAnc3BsaW5lJ1xuZXhwb3J0IHR5cGUgUHJlc2VudGF0aW9uU2hhcGVUeXBlID0gc3RyaW5nXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVCYXNlT3B0aW9ucyB7XG4gIG9mZnNldDogUHJlc2VudGF0aW9uT2Zmc2V0XG4gIHNpemU6IFByZXNlbnRhdGlvblNpemVcbiAgZmlsbD86IFByZXNlbnRhdGlvblNoYXBlRmlsbFxuICBsaW5lPzogUHJlc2VudGF0aW9uU2hhcGVMaW5lXG4gIGxheW91dD86IFByZXNlbnRhdGlvblNoYXBlTGF5b3V0XG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvbkluc2VydFNoYXBlT3B0aW9ucyA9XG4gIHwgKFByZXNlbnRhdGlvblNoYXBlQmFzZU9wdGlvbnMgJiB7XG4gICAgICB0eXBlOiBQcmVzZW50YXRpb25MaW5lU2hhcGVUeXBlXG4gICAgICBjb250ZW50PzogbmV2ZXJcbiAgICB9KVxuICB8IChQcmVzZW50YXRpb25TaGFwZUJhc2VPcHRpb25zICYge1xuICAgICAgdHlwZTogUHJlc2VudGF0aW9uVGV4dFNoYXBlVHlwZVxuICAgICAgY29udGVudD86IFByZXNlbnRhdGlvblNoYXBlQ29udGVudFxuICAgIH0pXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uU2hhcGVCYXNlIHtcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgdHlwZTogUHJlc2VudGF0aW9uU2hhcGVUeXBlXG4gIHNldEZpbGw6IChmaWxsOiBQcmVzZW50YXRpb25TaGFwZUZpbGwpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0TGluZTogKGxpbmU6IFByZXNlbnRhdGlvblNoYXBlTGluZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRMYXlvdXQ6IChsYXlvdXQ6IFByZXNlbnRhdGlvblNoYXBlTGF5b3V0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbW92ZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25UZXh0U2hhcGVUeXBlID0gRXhjbHVkZTxcbiAgUHJlc2VudGF0aW9uU2hhcGVUeXBlLFxuICBQcmVzZW50YXRpb25MaW5lU2hhcGVUeXBlXG4+XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGV4dFNoYXBlIGV4dGVuZHMgUHJlc2VudGF0aW9uU2hhcGVCYXNlIHtcbiAgdHlwZTogUHJlc2VudGF0aW9uVGV4dFNoYXBlVHlwZVxuICB0ZXh0Q29udGVudD86IHN0cmluZ1xuICBzZXRDb250ZW50OiAoY29udGVudDogUHJlc2VudGF0aW9uU2hhcGVDb250ZW50KSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFwcGVuZFRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgYXBwZW5kUGFyYWdyYXBoczogKHBhcmFncmFwaHM6IFByZXNlbnRhdGlvblBhcmFncmFwaFtdKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblNoYXBlID0gUHJlc2VudGF0aW9uU2hhcGVCYXNlIHwgUHJlc2VudGF0aW9uVGV4dFNoYXBlXG5cbmV4cG9ydCB0eXBlIFByZXNlbnRhdGlvblBhcmFncmFwaExpbmVTcGFjaW5nID1cbiAgfCAwLjlcbiAgfCAxLjBcbiAgfCAxLjE1XG4gIHwgMS41XG4gIHwgMi4wXG4gIHwgMi41XG4gIHwgMy4wXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGFibGVDZWxsIHtcbiAgc2V0U3R5bGU6IChzdHlsZTogUHJlc2VudGF0aW9uVGFibGVDZWxsU3R5bGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25UYWJsZUNlbGxTdHlsZSA9IFByZXNlbnRhdGlvblRleHRTdHlsZSAmXG4gIFByZXNlbnRhdGlvblBhcmFncmFwaFN0eWxlXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlc2VudGF0aW9uVGFibGVTZWxlY3Rpb24ge1xuICByb3c6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxuICByb3dDb3VudDogbnVtYmVyXG4gIGNvbHVtbkNvdW50OiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZVJhbmdlIHtcbiAgc2V0U3R5bGU6IChzdHlsZTogUHJlc2VudGF0aW9uVGFibGVDZWxsU3R5bGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHJlbW92ZVNwYW46ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25UYWJsZUl0ZW0ge1xuICBpZDogc3RyaW5nXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxuICByZW1vdmU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0Um93czogKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBwbGFjZW1lbnQ/OiAnYmVmb3JlJyB8ICdhZnRlcidcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydENvbHVtbnM6IChcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGNvdW50OiBudW1iZXIsXG4gICAgcGxhY2VtZW50PzogJ2JlZm9yZScgfCAnYWZ0ZXInXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVSb3dzOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVDb2x1bW5zOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRSb3dIZWlnaHQ6IChpbmRleDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDb2x1bW5XaWR0aDogKGluZGV4OiBudW1iZXIsIHdpZHRoOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Q2VsbDogKFxuICAgIHJvdzogbnVtYmVyLFxuICAgIGNvbHVtbjogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25UYWJsZUNlbGwgfCBudWxsPlxuICBnZXRSYW5nZTogKFxuICAgIHJhbmdlOiBQcmVzZW50YXRpb25UYWJsZVNlbGVjdGlvblxuICApID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGFibGVSYW5nZSB8IG51bGw+XG4gIHNldERpcmVjdGlvbjogKGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRhYmxlT3B0aW9ucyB7XG4gIG9mZnNldDogUHJlc2VudGF0aW9uT2Zmc2V0XG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxuICByb3dIZWlnaHRzOiBudW1iZXJbXVxuICBjb2x1bW5XaWR0aHM6IG51bWJlcltdXG4gIGNvbnRlbnQ/OiBzdHJpbmcgfCBQcmVzZW50YXRpb25QYXJhZ3JhcGhbXVxufVxuXG5leHBvcnQgdHlwZSBQcmVzZW50YXRpb25UZXh0Qm94RGlyZWN0aW9uID0gJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRCb3hPcHRpb25zXG4gIGV4dGVuZHMgUHJlc2VudGF0aW9uU2hhcGVCYXNlT3B0aW9ucyB7XG4gIGNvbnRlbnQ/OiBQcmVzZW50YXRpb25TaGFwZUNvbnRlbnRcbiAgZGlyZWN0aW9uPzogUHJlc2VudGF0aW9uVGV4dEJveERpcmVjdGlvblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlIHtcbiAgc3RhcnQ6IHN0cmluZ1xuICBlbmQ6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvY2tzRmFjYWRlIHtcbiAgc2hvdzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGFkZFJhbmdlTG9jazogKG9wdGlvbnM6IEFkZFJhbmdlTG9ja1BhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRTaGVldExvY2s6IChvcHRpb25zOiBBZGRTaGVldExvY2tQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlUmFuZ2VMb2Nrc0luUmFuZ2VzOiAob3B0aW9uczogUmVtb3ZlUmFuZ2VMb2Nrc1BhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTaGVldExvY2s6IChvcHRpb25zOiBSZW1vdmVTaGVldExvY2tQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW50aW9uRmFjYWRlIHtcbiAgbG9jYXRlQ2VsbEJ5R3VpZDogKFxuICAgIGd1aWQ6IHN0cmluZyxcbiAgICBub3RpZmljYXRpb25UeXBlPzogTWVudGlvblR5cGVzXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRGYWNhZGUge1xuICBzZXRDb250ZW50OiAoY29udGVudDogQ29udGVudCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25GYWNhZGUge1xuICBzaG93PzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlPzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjcmVhdGVSZXZpc2lvbjogKFxuICAgIG9wdGlvbnM/OiBSZXZpc2lvbkNyZWF0ZU9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPHVuZGVmaW5lZCB8IG51bGwgfCBEb2N1bWVudEVycm9yTWVzc2FnZT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNpY1ByZXNlbnRhdGlvbkZhY2FkZSB7XG4gIHN0YXJ0OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHF1aXQ6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25GYWNhZGUgZXh0ZW5kcyBCYXNpY1ByZXNlbnRhdGlvbkZhY2FkZSB7XG4gIHN0YXJ0OiAoaW5kZXg/OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc3RhcnRGcm9tQ3VycmVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzdGFydFJlbW90ZUxpdmU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc3RhcnRTcGVha2VyVmlldzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRDaGFuZ2VMaXN0ZW5lcjogKGxpc3RlbmVyOiAocGF5bG9hZDogdW5rbm93bikgPT4gdm9pZCkgPT4gKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgdHlwZSBPZmZpY2VTREtQcmVzZW50YXRpb25GYWNhZGUgPVxuICB8IEJhc2ljUHJlc2VudGF0aW9uRmFjYWRlXG4gIHwgUHJlc2VudGF0aW9uRmFjYWRlXG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1JhbmdlRmFjYWRlIHtcbiAgc3RhcnQ6IG51bWJlclxuICBlbmQ6IG51bWJlclxuICBpc0NhcmV0OiBib29sZWFuXG4gIGdldFRleHQ6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBnZXRIdG1sOiAoKSA9PiBQcm9taXNlPHN0cmluZz5cbiAgc2V0VGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRIdG1sOiAoaHRtbDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEJvdW5kaW5nOiAoKSA9PiBQcm9taXNlPERvY3NSYW5nZUJvdW5kaW5nIHwgbnVsbD5cbiAgc2V0U3R5bGU6IChzdHlsZTogRG9jc1RleHRTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBjb250aW51ZVdyaXRpbmc6IChcbiAgICBjb250ZW50OiBzdHJpbmcsXG4gICAgdHlwZTogRG9jc0NvbnRpbnVlV3JpdGluZ1R5cGUsXG4gICAgYWJvcnQ/OiAoKSA9PiB2b2lkXG4gICkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBzZXRMaXN0U3R5bGU6IChzdHlsZTogRG9jc0xpc3RTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRMaW5rOiAoXG4gICAgaHJlZjogc3RyaW5nLFxuICAgIHRleHQ6IHN0cmluZyxcbiAgICB2aWV3VHlwZTogJ2xpbmsnIHwgJ2NhcmQnIHwgJ3ByZXZpZXcnXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRJbWFnZTogKGRhdGE6IEZpbGUgfCBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0QXR0YWNobWVudDogKFxuICAgIGRhdGE6IEZpbGUsXG4gICAgdmlld1R5cGU6ICdsaW5rJyB8ICdjYXJkJyB8ICdwcmV2aWV3J1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgc2V0UGFyYWdyYXBoVHlwZTogKHR5cGU6IERvY3NQYXJhZ3JhcGhUeXBlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyQWxsOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEhvcml6b250YWxSdWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydFF1b3RlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NlbGVjdGlvbkZhY2FkZSB7XG4gIGdldFJhbmdlOiAodmFsdWU/OiBEb2NzUmFuZ2VWYWx1ZSkgPT4gUHJvbWlzZTxEb2NzUmFuZ2VGYWNhZGUgfCBudWxsPlxuICBzZXRSYW5nZTogKHZhbHVlOiBEb2NzUmFuZ2VWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbiAgYWRkUmFuZ2VMaXN0ZW5lcjogKFxuICAgIGxpc3RlbmVyOiAodmFsdWU6IERvY3NSYW5nZVZhbHVlIHwgbnVsbCkgPT4gdm9pZFxuICApID0+ICgpID0+IHZvaWRcbiAgZ2V0V2hvbGVSYW5nZTogKCkgPT4gUHJvbWlzZTxEb2NzUmFuZ2VGYWNhZGUgfCBudWxsPlxuICBpbnNlcnRUZXh0OiAodGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPERvY3NSYW5nZVZhbHVlPlxuICBpbnNlcnRIdG1sOiAoaHRtbDogc3RyaW5nKSA9PiBQcm9taXNlPERvY3NSYW5nZVZhbHVlPlxuICBpbnNlcnRUYWJsZTogKFxuICAgIHJvd0NvdW50OiBudW1iZXIsXG4gICAgY29sdW1uQ291bnQ6IG51bWJlclxuICApID0+IFByb21pc2U8eyB0YWJsZUlkOiBzdHJpbmcgfT5cbiAgaW5zZXJ0Q29kZUJsb2NrOiAob3B0aW9ucz86IERvY3NDb2RlQmxvY2tJbnNlcnRPcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NlYXJjaEZhY2FkZSB7XG4gIGZpbmRPbmU6IChwYXJhbXM6IERvY3NTZWFyY2hQYXJhbXMpID0+IFByb21pc2U8RG9jc1NlYXJjaFJlc3VsdCB8IG51bGw+XG4gIGZpbmRBbGw6IChwYXJhbXM6IERvY3NTZWFyY2hQYXJhbXMpID0+IFByb21pc2U8RG9jc1NlYXJjaFJlc3VsdFtdIHwgbnVsbD5cbiAgcmVwbGFjZU9uZTogKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBEb2NzUmVwbGFjZVBhcmFtc1xuICApID0+IFByb21pc2U8RG9jc1JlcGxhY2VSZXN1bHQgfCBudWxsPlxuICByZXBsYWNlQWxsOiAocGFyYW1zOiBEb2NzUmVwbGFjZVBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhcjogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NPdXRsaW5lRmFjYWRlIHtcbiAgc2hvdzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBoaWRlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldE9wZW46ICgpID0+IFByb21pc2U8Ym9vbGVhbj5cbiAgc2V0T3BlbjogKGlzT3BlbjogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRBbGw6ICgpID0+IFByb21pc2U8RG9jc1RPQ0l0ZW1bXT5cbiAgZ2V0T25lOiAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxEb2NzVE9DSXRlbSB8IG51bGw+XG4gIGRlbGV0ZUFsbDogKCkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBkZWxldGVPbmU6IChpZDogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIGFkZDogKGl0ZW06IE9taXQ8RG9jc1RPQ0l0ZW0sICdpZCc+KSA9PiBQcm9taXNlPGJvb2xlYW4+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NpZGViYXJGYWNhZGUge1xuICBzaG93OiAodGFiPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsb3NlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFN0YXRlOiAoKSA9PiBQcm9taXNlPERvY3NTaWRlYmFyU3RhdGU+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1RhYmxlQ2VsbEZhY2FkZSB7XG4gIHRhYmxlSWQ6IHN0cmluZ1xuICByb3c6IG51bWJlclxuICBjb2x1bW46IG51bWJlclxuICBzZXRGb3JtdWxhOiAoXG4gICAgZm9ybXVsYTogJ3N1bScgfCAnYXZlcmFnZScsXG4gICAgcmFuZ2VzOiBEb2NzVGFibGVTZWxlY3Rpb25bXVxuICApID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlRm9ybXVsYTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRTdHlsZTogKHN0eWxlOiBEb2NzVGFibGVDZWxsU3R5bGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUYWJsZVJhbmdlRmFjYWRlIHtcbiAgdGFibGVJZDogc3RyaW5nXG4gIHNlbGVjdGlvbjogRG9jc1RhYmxlU2VsZWN0aW9uXG4gIHNldFN0eWxlOiAoc3R5bGU6IERvY3NUYWJsZUNlbGxTdHlsZSkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhclN0eWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFNwYW46ICgpID0+IFByb21pc2U8dm9pZD5cbiAgcmVtb3ZlU3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvY3NUYWJsZUZhY2FkZSB7XG4gIHRhYmxlSWQ6IHN0cmluZ1xuICBpbnNlcnRSb3dzOiAoXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBjb3VudDogbnVtYmVyLFxuICAgIHBsYWNlbWVudD86ICdiZWZvcmUnIHwgJ2FmdGVyJ1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0Q29sdW1uczogKFxuICAgIGluZGV4OiBudW1iZXIsXG4gICAgY291bnQ6IG51bWJlcixcbiAgICBwbGFjZW1lbnQ/OiAnYmVmb3JlJyB8ICdhZnRlcidcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZVJvd3M6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGRlbGV0ZUNvbHVtbnM6IChpbmRleDogbnVtYmVyLCBjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFJvd0hlaWdodDogKGluZGV4OiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldENvbHVtbldpZHRoOiAoaW5kZXg6IG51bWJlciwgd2lkdGg6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRGdWxsc2NyZWVuOiAoc3RhdHVzOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldENlbGw6IChyb3c6IG51bWJlciwgY29sdW1uOiBudW1iZXIpID0+IFByb21pc2U8RG9jc1RhYmxlQ2VsbEZhY2FkZSB8IG51bGw+XG4gIGdldFJhbmdlOiAoXG4gICAgc2VsZWN0aW9uOiBEb2NzVGFibGVTZWxlY3Rpb25cbiAgKSA9PiBQcm9taXNlPERvY3NUYWJsZVJhbmdlRmFjYWRlIHwgbnVsbD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzVGFibGVzRmFjYWRlIHtcbiAgZ2V0QWxsOiAoKSA9PiBQcm9taXNlPERvY3NUYWJsZUZhY2FkZVtdPlxuICBnZXRPbmU6ICh0YWJsZUlkOiBzdHJpbmcpID0+IFByb21pc2U8RG9jc1RhYmxlRmFjYWRlIHwgbnVsbD5cbiAgZGVsZXRlT25lOiAodGFibGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jc1NldHRpbmdzRmFjYWRlIHtcbiAgZ2V0UGFnZVdpZHRoOiAoKSA9PiBQcm9taXNlPERvY3NQYWdlV2lkdGg+XG4gIHNldFBhZ2VXaWR0aDogKHdpZHRoOiBEb2NzUGFnZVdpZHRoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldERlZmF1bHRTdHlsZTogKCkgPT4gUHJvbWlzZTxEb2NzRGVmYXVsdFN0eWxlPlxuICBzZXREZWZhdWx0U3R5bGU6IChzdHlsZTogUGFydGlhbDxEb2NzRGVmYXVsdFN0eWxlPikgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0UmFuZ2VGYWNhZGUge1xuICBzaGVldElkPzogc3RyaW5nXG4gIHJvdzogbnVtYmVyXG4gIGNvbHVtbjogbnVtYmVyXG4gIHJvd0NvdW50OiBudW1iZXJcbiAgY29sdW1uQ291bnQ6IG51bWJlclxuICBnZXRCb3VuZGluZzogKCkgPT4gUHJvbWlzZTx7XG4gICAgbGVmdDogbnVtYmVyXG4gICAgdG9wOiBudW1iZXJcbiAgICB3aWR0aDogbnVtYmVyXG4gICAgaGVpZ2h0OiBudW1iZXJcbiAgfSB8IG51bGw+XG4gIGdldFRleHQ6IChmb3JtYXQ/OiAncGxhaW4nIHwgJ21hdHJpeCcpID0+IFByb21pc2U8c3RyaW5nIHwgc3RyaW5nW11bXT5cbiAgc2V0VGV4dDogKHRleHQ6IFNoZWV0UmFuZ2VUZXh0KSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldEh0bWw6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRIdG1sOiAoaHRtbDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFZhbHVlOiAoKSA9PiBQcm9taXNlPChTaGVldENlbGxWYWx1ZSB8IG51bGwpW11bXT5cbiAgc2V0VmFsdWU6ICh2YWx1ZXM6IChTaGVldFdyaXRhYmxlQ2VsbFZhbHVlIHwgbnVsbClbXVtdKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldERhdGE6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsRGF0YVtdW10+XG4gIGdldEZvcm11bGE6ICgpID0+IFByb21pc2U8KHN0cmluZyB8IG51bGwpW11bXT5cbiAgc2V0Rm9ybXVsYTogKGZvcm11bGE6IChzdHJpbmcgfCBudWxsKVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0RGF0YTogKGRhdGE6IFNoZWV0V3JpdGFibGVDZWxsRGF0YVtdW10pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0U3BhbjogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICByZW1vdmVTcGFuOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFNwYW5zOiAoKSA9PiBQcm9taXNlPFNoZWV0Q2VsbFJhbmdlW10gfCBudWxsPlxuICBjbGVhckNvbnRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJTdHlsZTogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckFsbDogKCkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q2VsbEZhY2FkZSB7XG4gIHNoZWV0SWQ/OiBzdHJpbmdcbiAgcm93OiBudW1iZXJcbiAgY29sdW1uOiBudW1iZXJcbiAgZ2V0Q2VsbFRleHQ6ICgpID0+IFByb21pc2U8c3RyaW5nPlxuICBzZXRDZWxsVGV4dDogKHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRDZWxsVmFsdWU6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsVmFsdWUgfCBudWxsPlxuICBnZXRDZWxsRGF0YTogKCkgPT4gUHJvbWlzZTxTaGVldENlbGxEYXRhPlxuICBnZXRDZWxsRm9ybXVsYTogKCkgPT4gUHJvbWlzZTxzdHJpbmcgfCBudWxsPlxuICBzZXRDZWxsRm9ybXVsYTogKGZvcm11bGE6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRDZWxsVmFsdWU6ICh2YWx1ZTogU2hlZXRXcml0YWJsZUNlbGxWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2VsbERhdGE6IChkYXRhOiBTaGVldFdyaXRhYmxlQ2VsbERhdGEpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q2hlY2tib3g6IChjaGVja2VkOiBib29sZWFuKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFNjb3JlOiAoc2NvcmU6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSkgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRQcm9ncmVzczogKHByb2dyZXNzOiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0SW1hZ2U6IChkYXRhOiBGaWxlIHwgc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydE1lbnRpb246ICh1c2VySWQ6IG51bWJlciwgdXNlck5hbWU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50TGluazogKGRhdGE6IEZpbGUpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJDb250ZW50OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyU3R5bGU6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgY2xlYXJBbGw6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFdvcmtzaGVldEZhY2FkZSB7XG4gIGlkPzogc3RyaW5nXG4gIG5hbWU/OiBzdHJpbmdcbiAgZ2V0U2VsZWN0aW9uczogKCkgPT4gUHJvbWlzZTxTaGVldFNlbGVjdGlvbltdIHwgbnVsbD5cbiAgZ2V0UmFuZ2U6ICh2YWx1ZTogU2hlZXRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPFNoZWV0UmFuZ2VGYWNhZGUgfCBudWxsPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZToge1xuICAgICAgc2hlZXQ6IHN0cmluZ1xuICAgICAgcmFuZ2VzOiBTaGVldFJhbmdlVmFsdWVbXSB8IG51bGxcbiAgICB9KSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICAvKiogQGRlcHJlY2F0ZWQg5YWIIGF3YWl0IHdvcmtzaGVldC5nZXRSYW5nZShyYW5nZSnvvIzlho3osIPnlKggcmFuZ2U/LmdldEJvdW5kaW5nKCnjgIIgKi9cbiAgZ2V0Qm91bmRpbmc6IChyYW5nZTogU2hlZXRSYW5nZVZhbHVlKSA9PiBQcm9taXNlPHtcbiAgICBsZWZ0OiBudW1iZXJcbiAgICB0b3A6IG51bWJlclxuICAgIHdpZHRoOiBudW1iZXJcbiAgICBoZWlnaHQ6IG51bWJlclxuICB9IHwgbnVsbD5cbiAgbG9jYXRlQ2VsbDogKHJvdzogbnVtYmVyLCBjb2x1bW46IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBnZXRDZWxsOiAocm93OiBudW1iZXIsIGNvbHVtbjogbnVtYmVyKSA9PiBQcm9taXNlPFNoZWV0Q2VsbEZhY2FkZSB8IG51bGw+XG4gIGdldEFjdGl2ZUNlbGw6ICgpID0+IFByb21pc2U8U2hlZXRDZWxsRmFjYWRlIHwgbnVsbD5cbiAgc2V0QWN0aXZlQ2VsbDogKG9wdGlvbnM6IHsgcm93OiBudW1iZXI7IGNvbHVtbjogbnVtYmVyIH0pID0+IFByb21pc2U8dm9pZD5cbiAgc2VhcmNoOiAoXG4gICAgdGV4dDogc3RyaW5nLFxuICAgIHJhbmdlPzogU2hlZXRSYW5nZVZhbHVlIHwgU2hlZXRSYW5nZVZhbHVlW11cbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNhbmNlbFNlYXJjaDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBwYXN0ZTogKHBhcmFtczogQ2xpcGJvYXJkUGFzdGVQYXJhbXMpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Vmlld3BvcnRTaXplOiAoKSA9PiBQcm9taXNlPHsgd2lkdGg6IG51bWJlcjsgaGVpZ2h0OiBudW1iZXIgfT5cbiAgZW5kRWRpdDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSb3dzOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRDb2x1bW5zOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVSb3dzOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVDb2x1bW5zOiAoaW5kZXg6IG51bWJlciwgY291bnQ6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBhcHBlbmREYXRhOiAoXG4gICAgZGF0YTogU2hlZXRXcml0YWJsZUNlbGxEYXRhW11bXSxcbiAgICBheGlzPzogU2hlZXRBcHBlbmREYXRhQXhpc1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Um93c0hlaWdodDogKGRhdGE6IEFycmF5PHsgcm93OiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0+KSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldENvbHVtbnNXaWR0aDogKFxuICAgIGRhdGE6IEFycmF5PHsgY29sdW1uOiBudW1iZXI7IHdpZHRoOiBudW1iZXIgfT5cbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFJvd3NWaXNpYmxlOiAocm93czogbnVtYmVyW10sIHZpc2libGU6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0Q29sdW1uc1Zpc2libGU6IChjb2x1bW5zOiBudW1iZXJbXSwgdmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRGcm96ZW5Sb3dDb3VudDogKGNvdW50OiBudW1iZXIpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0RnJvemVuQ29sdW1uQ291bnQ6IChjb3VudDogbnVtYmVyKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldFRhYkNvbG9yOiAoY29sb3I6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuICByZW5hbWU6IChuYW1lOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0VmlzaWJsZTogKHZpc2libGU6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGVldFdvcmtib29rRmFjYWRlIHtcbiAgZ2V0V29ya3NoZWV0czogKCkgPT4gUHJvbWlzZTxTaGVldFdvcmtzaGVldEZhY2FkZVtdPlxuICBnZXRXb3Jrc2hlZXRCeUlkOiAoc2hlZXRJZDogc3RyaW5nKSA9PiBQcm9taXNlPFNoZWV0V29ya3NoZWV0RmFjYWRlIHwgbnVsbD5cbiAgZ2V0QWN0aXZlV29ya3NoZWV0OiAoKSA9PiBQcm9taXNlPFNoZWV0V29ya3NoZWV0RmFjYWRlPlxuICBzZXRBY3RpdmVXb3Jrc2hlZXQ6IChzaGVldElkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgc2F2ZTogKCkgPT4gUHJvbWlzZTxFZGl0b3JTYXZlUmVzdWx0PlxuICBhZGRXb3Jrc2hlZXQ6IChuYW1lPzogc3RyaW5nLCBpbmRleD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBkZWxldGVXb3Jrc2hlZXQ6IChzaGVldElkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgbW92ZVdvcmtzaGVldDogKHNoZWV0SWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWV0Q2hhcnRzRmFjYWRlIHtcbiAgYWRkQ2hhcnRGcm9tU2VsZWN0aW9uOiAoXG4gICAgcGFyYW1zPzogQWRkQ2hhcnRGcm9tU2VsZWN0aW9uUGFyYW1zXG4gICkgPT4gUHJvbWlzZTxBZGRDaGFydEZyb21TZWxlY3Rpb25SZXN1bHQgfCB1bmRlZmluZWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlZXRTZWxlY3Rpb25zRmFjYWRlIHtcbiAgZ2V0QWxsOiAoKSA9PiBQcm9taXNlPFNoZWV0UmFuZ2VWYWx1ZVtdPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNsaWRlRmFjYWRlIHtcbiAgaWQ6IHN0cmluZ1xuICBnZXRJbmRleDogKCkgPT4gUHJvbWlzZTxudW1iZXI+XG4gIGdldFNoYXBlczogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TaGFwZVtdPlxuICBnZXRUYWJsZXM6ICgpID0+IFByb21pc2U8UHJlc2VudGF0aW9uVGFibGVJdGVtW10+XG4gIGluc2VydFNoYXBlOiB7XG4gICAgKFxuICAgICAgb3B0aW9uczogRXh0cmFjdDxcbiAgICAgICAgUHJlc2VudGF0aW9uSW5zZXJ0U2hhcGVPcHRpb25zLFxuICAgICAgICB7IHR5cGU6IFByZXNlbnRhdGlvbkxpbmVTaGFwZVR5cGUgfVxuICAgICAgPlxuICAgICk6IFByb21pc2U8UHJlc2VudGF0aW9uU2hhcGVCYXNlPlxuICAgIChcbiAgICAgIG9wdGlvbnM6IEV4dHJhY3Q8XG4gICAgICAgIFByZXNlbnRhdGlvbkluc2VydFNoYXBlT3B0aW9ucyxcbiAgICAgICAgeyB0eXBlOiBQcmVzZW50YXRpb25UZXh0U2hhcGVUeXBlIH1cbiAgICAgID5cbiAgICApOiBQcm9taXNlPFByZXNlbnRhdGlvblRleHRTaGFwZT5cbiAgfVxuICBpbnNlcnRUZXh0Qm94OiAoXG4gICAgb3B0aW9uczogUHJlc2VudGF0aW9uVGV4dEJveE9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblRleHRTaGFwZT5cbiAgaW5zZXJ0VGFibGU6IChcbiAgICBvcHRpb25zOiBQcmVzZW50YXRpb25UYWJsZU9wdGlvbnNcbiAgKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblRhYmxlSXRlbT5cbiAgaW5zZXJ0SW1hZ2U6IChcbiAgICBpbWFnZTogRmlsZSxcbiAgICBzaXplPzogUHJlc2VudGF0aW9uU2l6ZSxcbiAgICBvZmZzZXQ/OiBQcmVzZW50YXRpb25PZmZzZXRcbiAgKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGluc2VydEF1ZGlvOiAoXG4gICAgZGF0YTogRmlsZSxcbiAgICBzaXplPzogUHJlc2VudGF0aW9uU2l6ZSxcbiAgICBvZmZzZXQ/OiBQcmVzZW50YXRpb25PZmZzZXQsXG4gICAgbmFtZT86IHN0cmluZ1xuICApID0+IFByb21pc2U8dm9pZD5cbiAgaW5zZXJ0VmlkZW86IChcbiAgICBkYXRhOiBGaWxlLFxuICAgIHNpemU/OiBQcmVzZW50YXRpb25TaXplLFxuICAgIG9mZnNldD86IFByZXNlbnRhdGlvbk9mZnNldCxcbiAgICBuYW1lPzogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRBdHRhY2htZW50OiAoXG4gICAgZmlsZTogRmlsZSxcbiAgICBzaXplPzogUHJlc2VudGF0aW9uU2l6ZSxcbiAgICBvZmZzZXQ/OiBQcmVzZW50YXRpb25PZmZzZXQsXG4gICAgbmFtZT86IHN0cmluZ1xuICApID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25TbGlkZXNGYWNhZGUge1xuICBnZXRDdXJyZW50U2xpZGU6ICgpID0+IFByb21pc2U8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGU+XG4gIHNldEN1cnJlbnRTbGlkZUluZGV4OiAoc2xpZGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGdldFNsaWRlSW5kZXg6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8bnVtYmVyPlxuICBnZXRTbGlkZXNDb3VudDogKCkgPT4gUHJvbWlzZTxudW1iZXI+XG4gIGdldFNsaWRlczogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZVtdPlxuICBnZXRTbGlkZUJ5SWQ6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGUgfCBudWxsPlxuICBnZXRTZWxlY3RlZFNsaWRlczogKGlkcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblNsaWRlRmFjYWRlW10+XG4gIHNldFNlbGVjdGVkU2xpZGVzOiAoaWRzOiBzdHJpbmdbXSkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRTbGlkZTogKCkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TbGlkZUZhY2FkZT5cbiAgZHVwbGljYXRlU2xpZGU6IChzbGlkZUlkOiBzdHJpbmcpID0+IFByb21pc2U8UHJlc2VudGF0aW9uU2xpZGVGYWNhZGU+XG4gIGRlbGV0ZVNsaWRlOiAoc2xpZGVJZDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGhpZGVTbGlkZTogKHNsaWRlSWQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRSYW5nZUZhY2FkZSB7XG4gIHN0YXJ0OiBzdHJpbmdcbiAgZW5kOiBzdHJpbmdcbiAgZ2V0VGV4dDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG4gIHNldFRleHQ6ICh0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0SHRtbDogKCkgPT4gUHJvbWlzZTxzdHJpbmc+XG4gIHNldEh0bWw6IChodG1sOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Qm91bmRpbmc6ICgpID0+IFByb21pc2U8e1xuICAgIGxlZnQ6IG51bWJlclxuICAgIHRvcDogbnVtYmVyXG4gICAgd2lkdGg6IG51bWJlclxuICAgIGhlaWdodDogbnVtYmVyXG4gIH0gfCBudWxsPlxuICBzZXRTdHlsZTogKHN0eWxlOiBQcmVzZW50YXRpb25UZXh0U3R5bGUpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0VmVydGljYWxBbGlnbjogKHZlcnRpY2FsOiBQcmVzZW50YXRpb25WZXJ0aWNhbEFsaWduKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEhvcml6b250YWxBbGlnbjogKGFsaWduOiBQcmVzZW50YXRpb25Ib3Jpem9udGFsQWxpZ24pID0+IFByb21pc2U8dm9pZD5cbiAgc2V0TGlzdFN0eWxlOiAoc3R5bGU6IFByZXNlbnRhdGlvbkxpc3RUeXBlKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldExpbmVTcGFjaW5nOiAoc3BhY2luZzogUHJlc2VudGF0aW9uUGFyYWdyYXBoTGluZVNwYWNpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgaW5jcmVhc2VJbmRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgZGVjcmVhc2VJbmRlbnQ6ICgpID0+IFByb21pc2U8dm9pZD5cbiAgc2V0VGV4dERpcmVjdGlvbjogKGRpcmVjdGlvbjogJ2x0cicgfCAncnRsJykgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhclN0eWxlOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIGNsZWFyQ29udGVudDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBjbGVhckFsbDogKCkgPT4gUHJvbWlzZTx2b2lkPlxuICBpbnNlcnRMaW5rOiAodXJsOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZSB7XG4gIGdldFRleHRSYW5nZTogKFxuICAgIHZhbHVlPzogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWVcbiAgKSA9PiBQcm9taXNlPFByZXNlbnRhdGlvblRleHRSYW5nZUZhY2FkZSB8IG51bGw+XG4gIHNldFRleHRSYW5nZTogKHZhbHVlOiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSB8IG51bGwpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0U2VsZWN0ZWRTaGFwZXM6IChpZHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxQcmVzZW50YXRpb25TaGFwZVtdIHwgbnVsbD5cbiAgc2V0U2VsZWN0ZWRTaGFwZXM6IChpZHM6IHN0cmluZ1tdIHwgbnVsbCkgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRSYW5nZUxpc3RlbmVyOiAoXG4gICAgbGlzdGVuZXI6ICh2YWx1ZTogUHJlc2VudGF0aW9uVGV4dFJhbmdlVmFsdWUgfCBudWxsKSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblRleHRGYWNhZGUge1xuICBnZXQ6IChcbiAgICByYW5nZT86IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlXG4gICkgPT4gUHJvbWlzZTxQYXJ0aWFsPEVkaXRvclRleHRGb3JtYXQ+PlxuICBhcHBseTogKFxuICAgIGZvcm1hdDogUGFydGlhbDxFZGl0b3JUZXh0Rm9ybWF0PixcbiAgICByYW5nZT86IFByZXNlbnRhdGlvblRleHRSYW5nZVZhbHVlXG4gICkgPT4gUHJvbWlzZTxQYXJ0aWFsPEVkaXRvclRleHRGb3JtYXQ+PlxuICBjbGVhcjogKHJhbmdlOiBQcmVzZW50YXRpb25UZXh0UmFuZ2VWYWx1ZSkgPT4gUHJvbWlzZTx2b2lkPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByZXNlbnRhdGlvblpvb21GYWNhZGUge1xuICBnZXRQZXJjZW50YWdlOiAoKSA9PiBQcm9taXNlPG51bWJlcj5cbiAgc2V0UGVyY2VudGFnZTogKHBlcmNlbnRhZ2U6IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPlxuICBzZXRGaXRNb2RlOiAobW9kZTogJ25vbmUnIHwgJ3dpbmRvdycpID0+IFByb21pc2U8dm9pZD5cbiAgZ2V0Rml0TW9kZTogKCkgPT4gUHJvbWlzZTwnbm9uZScgfCAnd2luZG93Jz5cbiAgem9vbUluOiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHpvb21PdXQ6ICgpID0+IFByb21pc2U8dm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZSB7XG4gIGFkZEVycm9yTGlzdGVuZXI6IChcbiAgICBsaXN0ZW5lcjogKGVycm9yOiB7IGNvZGU6IG51bWJlciB8IHN0cmluZzsgbWVzc2FnZT86IHN0cmluZyB9KSA9PiB2b2lkXG4gICkgPT4gKCkgPT4gdm9pZFxuICBhZGRMb2FkZWRMaXN0ZW5lcjogKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2ZmaWNlU0RLUm9vdEZhY2FkZVN0YXRlIHtcbiAgdGl0bGU/OiBUaXRsZUZhY2FkZVxuICBoaXN0b3J5PzogSGlzdG9yeUZhY2FkZVxuICBjb21tZW50cz86IENvbW1lbnRzRmFjYWRlXG4gIGRpc2N1c3Npb24/OiBEaXNjdXNzaW9uRmFjYWRlXG4gIGNvbGxhYm9yYXRvcj86IENvbGxhYm9yYXRvckZhY2FkZVxuICBleHRlcm5hbEFwcD86IEV4dGVybmFsQXBwRmFjYWRlXG4gIGxvY2tzPzogTG9ja3NGYWNhZGVcbiAgbWVudGlvbj86IE1lbnRpb25GYWNhZGVcbiAgY29udGVudD86IENvbnRlbnRGYWNhZGVcbiAgdmVyc2lvbj86IFZlcnNpb25GYWNhZGVcbiAgcHJlc2VudGF0aW9uPzogT2ZmaWNlU0RLUHJlc2VudGF0aW9uRmFjYWRlXG4gIHNlbGVjdGlvbj86IERvY3NTZWxlY3Rpb25GYWNhZGUgfCBQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGVcbiAgc2VhcmNoPzogRG9jc1NlYXJjaEZhY2FkZVxuICBvdXRsaW5lPzogRG9jc091dGxpbmVGYWNhZGVcbiAgc2lkZWJhcj86IERvY3NTaWRlYmFyRmFjYWRlXG4gIHRhYmxlcz86IERvY3NUYWJsZXNGYWNhZGVcbiAgc2V0dGluZ3M/OiBEb2NzU2V0dGluZ3NGYWNhZGVcbiAgd29ya2Jvb2s/OiBTaGVldFdvcmtib29rRmFjYWRlXG4gIGFjdGl2ZVNoZWV0PzogU2hlZXRXb3Jrc2hlZXRGYWNhZGVcbiAgY2hhcnRzPzogU2hlZXRDaGFydHNGYWNhZGVcbiAgc2VsZWN0aW9ucz86IFNoZWV0U2VsZWN0aW9uc0ZhY2FkZVxuICBzbGlkZXM/OiBQcmVzZW50YXRpb25TbGlkZXNGYWNhZGVcbiAgdGV4dD86IFByZXNlbnRhdGlvblRleHRGYWNhZGVcbiAgem9vbT86IFByZXNlbnRhdGlvblpvb21GYWNhZGVcbiAgZXZlbnRTdWJzY3JpcHRpb24/OiBQcmVzZW50YXRpb25FdmVudFN1YnNjcmlwdGlvbkZhY2FkZVxuICBiYXRjaENoYW5nZXM/OiA8VD4oY2FsbGJhY2s6ICgpID0+IFQgfCBQcm9taXNlPFQ+KSA9PiBQcm9taXNlPEF3YWl0ZWQ8VD4+XG4gIGV4cG9ydD86ICh0eXBlOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgcHJpbnQ/OiAoKSA9PiBQcm9taXNlPHZvaWQ+XG4gIHNldEZvY3VzPzogKGlzRm9jdXM6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cbn1cbiIsImltcG9ydCB7IEludm9rZU1ldGhvZCB9IGZyb20gJ3dlYm9mZmljZS1qcy1zZGstc2hhcmVkJ1xuXG5leHBvcnQgY29uc3QgSEVBREVSX0JBUlNfTUVUSE9EID0ge1xuICBnZXRWaXNpYmxlOiAnaGVhZGVyQmFycy5nZXRWaXNpYmxlJyxcbiAgc2V0VmlzaWJsZTogJ2hlYWRlckJhcnMuc2V0VmlzaWJsZScsXG4gIGFkZENvbW1hbmQ6ICdoZWFkZXJCYXJzLmFkZENvbW1hbmQnLFxuICBnZXRDb21tYW5kOiAnaGVhZGVyQmFycy5nZXRDb21tYW5kJyxcbiAgc2V0Q29tbWFuZFZpc2libGU6ICdoZWFkZXJCYXJzLnNldENvbW1hbmRWaXNpYmxlJyxcbiAgc2V0Q29tbWFuZERpc2FibGVkOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kRGlzYWJsZWQnLFxuICBzZXRDb21tYW5kQWN0aXZlOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kQWN0aXZlJyxcbiAgc2V0Q29tbWFuZFNyYzogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZFNyYycsXG4gIHNldENvbW1hbmRMYWJlbDogJ2hlYWRlckJhcnMuc2V0Q29tbWFuZExhYmVsJyxcbiAgc2V0Q29tbWFuZEVkaXRhYmxlOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kRWRpdGFibGUnLFxuICBzZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkOiAnaGVhZGVyQmFycy5zZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkJyxcbiAgbGlzdFZpZXdDb21tYW5kczogJ2hlYWRlckJhcnMubGlzdFZpZXdDb21tYW5kcycsXG4gIGhhbmRsZUNvbW1hbmRDbGljazogJ2hlYWRlckJhcnMuaGFuZGxlQ29tbWFuZENsaWNrJ1xufSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgSEVBREVSX0JBUlNfQ0hBTkdFRF9FVkVOVCA9ICdoZWFkZXJCYXJzOmNoYW5nZWQnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NvbW1hbmREZWZpbml0aW9uIHtcbiAgaWQ6IHN0cmluZ1xuICBzZWN0aW9uPzogc3RyaW5nXG4gIG9yZGVyPzogbnVtYmVyXG4gIGxhYmVsPzogc3RyaW5nXG4gIHZpc2libGU/OiBib29sZWFuXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBhY3RpdmU/OiBib29sZWFuXG4gIGVkaXRhYmxlPzogYm9vbGVhblxuICB0eXBlPzogJ2FjdGlvbicgfCAnc3RydWN0dXJhbCdcbiAgcmVuZGVyVHlwZT86IHN0cmluZ1xuICBzcmM/OiBzdHJpbmdcbiAgb25DbGljaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZSBleHRlbmRzIEhlYWRlckJhcnNDb21tYW5kRGVmaW5pdGlvbiB7XG4gIHR5cGU6ICdhY3Rpb24nIHwgJ3N0cnVjdHVyYWwnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0NvbW1hbmRSZWYge1xuICByZWFkb25seSBpZDogc3RyaW5nXG4gIHZpc2libGU6IGJvb2xlYW5cbiAgZGlzYWJsZWQ6IGJvb2xlYW5cbiAgYWN0aXZlOiBib29sZWFuXG4gIHNyYz86IHN0cmluZ1xuICBsYWJlbD86IHN0cmluZ1xuICBlZGl0YWJsZT86IGJvb2xlYW5cbiAgb25Db21tYW5kQ2xpY2s/OiAoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxuICBnZXRTdGF0ZTogKCkgPT4gSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZSB8IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgdHlwZSBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyID0gKFxuICB0aXRsZTogc3RyaW5nXG4pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZGVyQmFyc0ZhY2FkZSB7XG4gIHZpc2libGU6IGJvb2xlYW5cbiAgb25UaXRsZUNoYW5nZT86IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXJcbiAgZ2V0VmlzaWJsZTogKCkgPT4gUHJvbWlzZTxib29sZWFuPlxuICBzZXRWaXNpYmxlOiAodmlzaWJsZTogYm9vbGVhbikgPT4gUHJvbWlzZTx2b2lkPlxuICBhZGRDb21tYW5kOiAoXG4gICAgY29tbWFuZDogSGVhZGVyQmFyc0NvbW1hbmREZWZpbml0aW9uLFxuICAgIHBvc0NvbW1hbmQ6IHN0cmluZyxcbiAgICBwb3M/OiAnYmVmb3JlJyB8ICdhZnRlcidcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+XG4gIGdldENvbW1hbmQ6IChpZDogc3RyaW5nKSA9PiBIZWFkZXJCYXJzQ29tbWFuZFJlZlxuICBsaXN0Vmlld0NvbW1hbmRzOiAoKSA9PiBQcm9taXNlPEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXT5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBIZWFkZXJCYXJzQ2hhbmdlZFBheWxvYWQge1xuICByZWFzb24/OiBzdHJpbmdcbiAgY29tbWFuZElkPzogc3RyaW5nXG4gIHZlcnNpb24/OiBudW1iZXJcbiAgc25hcHNob3Q/OiB7XG4gICAgdmlzaWJsZTogYm9vbGVhblxuICAgIGNvbW1hbmRzOiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlW11cbiAgfVxufVxuXG5pbnRlcmZhY2UgSGVhZGVyQmFyc0hvc3Qge1xuICBnZXRWaXNpYmxlU3RhdGUoKTogYm9vbGVhblxuICBzZXRWaXNpYmxlU3RhdGUodmlzaWJsZTogYm9vbGVhbik6IHZvaWRcbiAgZ2V0Q29tbWFuZHNNYXAoKTogTWFwPHN0cmluZywgSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZT5cbiAgZ2V0T3ZlcnJpZGVzTWFwKCk6IE1hcDxzdHJpbmcsICgoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikgfCB1bmRlZmluZWQ+XG4gIGdldFJlZnNNYXAoKTogTWFwPHN0cmluZywgSGVhZGVyQmFyc0NvbW1hbmRSZWY+XG4gIGdldFRpdGxlSGFuZGxlcigpOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkXG4gIHNldFRpdGxlSGFuZGxlcihoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKTogdm9pZFxuICBpc1RpdGxlU3Vic2NyaWJlZCgpOiBib29sZWFuXG4gIHNldFRpdGxlU3Vic2NyaWJlZChzdWJzY3JpYmVkOiBib29sZWFuKTogdm9pZFxuICBpbnZva2VIZWFkZXJCYXJzPFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBQcm9taXNlPFQ+XG4gIGVtaXRIZWFkZXJCYXJzRXJyb3IobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pOiB2b2lkXG4gIG9uSW50ZXJuYWxUaXRsZUNoYW5nZShsaXN0ZW5lcjogKHRpdGxlOiB1bmtub3duKSA9PiB2b2lkKTogdm9pZFxuICBzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZSgpOiBQcm9taXNlPHZvaWQ+XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0SGVhZGVyQmFyc0ZhY2FkZShob3N0OiBIZWFkZXJCYXJzSG9zdCk6IEhlYWRlckJhcnNGYWNhZGUge1xuICBjb25zdCBmYWNhZGU6IEhlYWRlckJhcnNGYWNhZGUgPSB7XG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgb25UaXRsZUNoYW5nZTogdW5kZWZpbmVkLFxuICAgIGdldFZpc2libGU6IGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBhd2FpdCBzeW5jSGVhZGVyQmFyc1Zpc2libGUoaG9zdClcbiAgICB9LFxuICAgIHNldFZpc2libGU6IGFzeW5jICh2aXNpYmxlOiBib29sZWFuKSA9PiB7XG4gICAgICBhd2FpdCBzZXRIZWFkZXJCYXJzVmlzaWJsZShob3N0LCB2aXNpYmxlKVxuICAgIH0sXG4gICAgYWRkQ29tbWFuZDogYXN5bmMgKFxuICAgICAgY29tbWFuZDogSGVhZGVyQmFyc0NvbW1hbmREZWZpbml0aW9uLFxuICAgICAgcG9zQ29tbWFuZDogc3RyaW5nLFxuICAgICAgcG9zOiAnYmVmb3JlJyB8ICdhZnRlcicgPSAnYWZ0ZXInXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCB7IG9uQ2xpY2ssIC4uLmNvbW1hbmRQYXlsb2FkIH0gPSBjb21tYW5kXG4gICAgICBjb25zdCBhZGRlZCA9IGF3YWl0IGhvc3QuaW52b2tlSGVhZGVyQmFyczxib29sZWFuPihcbiAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELmFkZENvbW1hbmQsXG4gICAgICAgIHsgY29tbWFuZDogY29tbWFuZFBheWxvYWQsIHBvc0NvbW1hbmQsIHBvcyB9XG4gICAgICApXG4gICAgICBjb25zdCBjbGlja0hhbmRsZXIgPSBvbkNsaWNrXG4gICAgICBpZiAoYWRkZWQgJiYgdHlwZW9mIGNsaWNrSGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBob3N0LmdldE92ZXJyaWRlc01hcCgpLnNldChjb21tYW5kLmlkLCBjbGlja0hhbmRsZXIpXG4gICAgICAgIGF3YWl0IGhvc3QuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KFxuICAgICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBjb21tYW5kLmlkLFxuICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFkZGVkXG4gICAgfSxcbiAgICBnZXRDb21tYW5kOiAoaWQ6IHN0cmluZykgPT4gZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYoaG9zdCwgaWQpLFxuICAgIGxpc3RWaWV3Q29tbWFuZHM6IGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbW1hbmRzID0gYXdhaXQgaG9zdC5pbnZva2VIZWFkZXJCYXJzPEhlYWRlckJhcnNDb21tYW5kU3RhdGVbXT4oXG4gICAgICAgIEhFQURFUl9CQVJTX01FVEhPRC5saXN0Vmlld0NvbW1hbmRzXG4gICAgICApXG4gICAgICBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzKGhvc3QsIGNvbW1hbmRzKVxuICAgICAgcmV0dXJuIGNvbW1hbmRzXG4gICAgfVxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZhY2FkZSwgJ3Zpc2libGUnLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiAoKSA9PiBob3N0LmdldFZpc2libGVTdGF0ZSgpLFxuICAgIHNldDogKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIHNldEhlYWRlckJhcnNWaXNpYmxlKGhvc3QsIG5leHQpLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKCdzZXQgaGVhZGVyQmFycy52aXNpYmxlIGZhaWxlZCcsIGVycilcbiAgICAgIH0pXG4gICAgfVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmYWNhZGUsICdvblRpdGxlQ2hhbmdlJywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogKCkgPT4gaG9zdC5nZXRUaXRsZUhhbmRsZXIoKSxcbiAgICBzZXQ6IChoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBob3N0LnNldFRpdGxlSGFuZGxlcihoYW5kbGVyKVxuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZW5zdXJlSGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaXB0aW9uKGhvc3QpLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKCdzdWJzY3JpYmUgaGVhZGVyQmFycyB0aXRsZUNoYW5nZSBmYWlsZWQnLCBlcnIpXG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gZmFjYWRlXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24oXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0XG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKGhvc3QuaXNUaXRsZVN1YnNjcmliZWQoKSkge1xuICAgIHJldHVyblxuICB9XG4gIGhvc3Quc2V0VGl0bGVTdWJzY3JpYmVkKHRydWUpXG4gIGhvc3Qub25JbnRlcm5hbFRpdGxlQ2hhbmdlKCh0aXRsZTogdW5rbm93bikgPT4ge1xuICAgIGlmICh0eXBlb2YgdGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaG9zdC5nZXRUaXRsZUhhbmRsZXIoKT8uKHRpdGxlKVxuICB9KVxuICB0cnkge1xuICAgIGF3YWl0IGhvc3Quc3Vic2NyaWJlRWRpdG9yVGl0bGVDaGFuZ2UoKVxuICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgIGhvc3Quc2V0VGl0bGVTdWJzY3JpYmVkKGZhbHNlKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN5bmNIZWFkZXJCYXJzQ29tbWFuZHMoXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0LFxuICBjb21tYW5kczogSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdXG4pIHtcbiAgY29uc3QgY29tbWFuZE1hcCA9IGhvc3QuZ2V0Q29tbWFuZHNNYXAoKVxuICBjb21tYW5kTWFwLmNsZWFyKClcbiAgZm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG4gICAgY29tbWFuZE1hcC5zZXQoY29tbWFuZC5pZCwgY29tbWFuZClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3QsXG4gIHBheWxvYWQ/OiBIZWFkZXJCYXJzQ2hhbmdlZFBheWxvYWRcbikge1xuICBjb25zdCBzbmFwc2hvdCA9IHBheWxvYWQ/LnNuYXBzaG90XG4gIGlmICghc25hcHNob3QpIHtcbiAgICByZXR1cm5cbiAgfVxuICBob3N0LnNldFZpc2libGVTdGF0ZShzbmFwc2hvdC52aXNpYmxlKVxuICBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzKGhvc3QsIHNuYXBzaG90LmNvbW1hbmRzKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3luY0hlYWRlckJhcnNWaXNpYmxlKFxuICBob3N0OiBIZWFkZXJCYXJzSG9zdFxuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHBheWxvYWQgPSBhd2FpdCBob3N0Lmludm9rZUhlYWRlckJhcnM8eyB2aXNpYmxlOiBib29sZWFuIH0+KFxuICAgIEhFQURFUl9CQVJTX01FVEhPRC5nZXRWaXNpYmxlXG4gIClcbiAgaG9zdC5zZXRWaXNpYmxlU3RhdGUocGF5bG9hZC52aXNpYmxlKVxuICByZXR1cm4gaG9zdC5nZXRWaXNpYmxlU3RhdGUoKVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2V0SGVhZGVyQmFyc1Zpc2libGUoXG4gIGhvc3Q6IEhlYWRlckJhcnNIb3N0LFxuICB2aXNpYmxlOiBib29sZWFuXG4pIHtcbiAgaG9zdC5zZXRWaXNpYmxlU3RhdGUodmlzaWJsZSlcbiAgYXdhaXQgaG9zdC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldFZpc2libGUsIHtcbiAgICB2aXNpYmxlXG4gIH0pXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRIZWFkZXJCYXJzQ29tbWFuZFJlZihcbiAgaG9zdDogSGVhZGVyQmFyc0hvc3QsXG4gIGlkOiBzdHJpbmdcbik6IEhlYWRlckJhcnNDb21tYW5kUmVmIHtcbiAgY29uc3QgcmVmcyA9IGhvc3QuZ2V0UmVmc01hcCgpXG4gIGNvbnN0IGV4aXN0aW5nID0gcmVmcy5nZXQoaWQpXG4gIGlmIChleGlzdGluZykge1xuICAgIHJldHVybiBleGlzdGluZ1xuICB9XG5cbiAgY29uc3QgY29tbWFuZHMgPSBob3N0LmdldENvbW1hbmRzTWFwKClcbiAgaWYgKCFjb21tYW5kcy5oYXMoaWQpKSB7XG4gICAgaG9zdFxuICAgICAgLmludm9rZUhlYWRlckJhcnM8eyBjb21tYW5kOiBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlIHwgbnVsbCB9PihcbiAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELmdldENvbW1hbmQsXG4gICAgICAgIHsgaWQgfVxuICAgICAgKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQuY29tbWFuZCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgcGF5bG9hZC5jb21tYW5kKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKCdmZXRjaCBoZWFkZXJCYXJzIGNvbW1hbmQgZmFpbGVkJywgZXJyKVxuICAgICAgfSlcbiAgfVxuXG4gIGNvbnN0IHJlZjogSGVhZGVyQmFyc0NvbW1hbmRSZWYgPSB7XG4gICAgaWQsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgYWN0aXZlOiBmYWxzZSxcbiAgICBzcmM6IHVuZGVmaW5lZCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIGVkaXRhYmxlOiB1bmRlZmluZWQsXG4gICAgb25Db21tYW5kQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICBnZXRTdGF0ZTogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKVxuICB9XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVmLCB7XG4gICAgdmlzaWJsZToge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8udmlzaWJsZSAhPT0gZmFsc2UsXG4gICAgICBzZXQ6IChuZXh0OiBib29sZWFuKSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIHZpc2libGU6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZFZpc2libGUsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdmlzaWJsZTogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcihcbiAgICAgICAgICAgICAgJ3NldCBoZWFkZXJCYXJzIGNvbW1hbmQgdmlzaWJsZSBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgZGlzYWJsZWQ6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGNvbW1hbmRzLmdldChpZCk/LmRpc2FibGVkID09PSB0cnVlLFxuICAgICAgc2V0OiAobmV4dDogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY29tbWFuZHMuZ2V0KGlkKVxuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBkaXNhYmxlZDogbmV4dCB9KVxuICAgICAgICB9XG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KEhFQURFUl9CQVJTX01FVEhPRC5zZXRDb21tYW5kRGlzYWJsZWQsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IG5leHRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoXG4gICAgICAgICAgICAgICdzZXQgaGVhZGVyQmFycyBjb21tYW5kIGRpc2FibGVkIGZhaWxlZCcsXG4gICAgICAgICAgICAgIGVyclxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBhY3RpdmU6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGNvbW1hbmRzLmdldChpZCk/LmFjdGl2ZSA9PT0gdHJ1ZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgYWN0aXZlOiBuZXh0IH0pXG4gICAgICAgIH1cbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRBY3RpdmUsIHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgYWN0aXZlOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCBhY3RpdmUgZmFpbGVkJyxcbiAgICAgICAgICAgICAgZXJyXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIHNyYzoge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogKCkgPT4gY29tbWFuZHMuZ2V0KGlkKT8uc3JjLFxuICAgICAgc2V0OiAobmV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgbmV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyZW50ID0gY29tbWFuZHMuZ2V0KGlkKVxuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgIGNvbW1hbmRzLnNldChpZCwgeyAuLi5jdXJyZW50LCBzcmM6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZFNyYywge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBzcmM6IG5leHRcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBob3N0LmVtaXRIZWFkZXJCYXJzRXJyb3IoJ3NldCBoZWFkZXJCYXJzIGNvbW1hbmQgc3JjIGZhaWxlZCcsIGVycilcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFiZWw6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGNvbW1hbmRzLmdldChpZCk/LmxhYmVsLFxuICAgICAgc2V0OiAobmV4dDogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgbmV4dCAhPT0gJ3N0cmluZycgfHxcbiAgICAgICAgICBpZCA9PT0gJ3RpdGxlJyB8fFxuICAgICAgICAgIGlkID09PSAnc2F2ZS1zdGF0dXMnXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjb21tYW5kcy5nZXQoaWQpXG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgY29tbWFuZHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIGxhYmVsOiBuZXh0IH0pXG4gICAgICAgIH1cbiAgICAgICAgaG9zdFxuICAgICAgICAgIC5pbnZva2VIZWFkZXJCYXJzPHVuZGVmaW5lZD4oSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRMYWJlbCwge1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBsYWJlbDogbmV4dFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgIGhvc3QuZW1pdEhlYWRlckJhcnNFcnJvcignc2V0IGhlYWRlckJhcnMgY29tbWFuZCBsYWJlbCBmYWlsZWQnLCBlcnIpXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIGVkaXRhYmxlOiB7XG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiAoKSA9PiBjb21tYW5kcy5nZXQoaWQpPy5lZGl0YWJsZSxcbiAgICAgIHNldDogKG5leHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaWYgKGlkICE9PSAndGl0bGUnKSB7XG4gICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgJ2hlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdGl0bGUnLFxuICAgICAgICAgICAgbmV3IEVycm9yKCdoZWFkZXJCYXJzIGNvbW1hbmQgZWRpdGFibGUgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRpdGxlJylcbiAgICAgICAgICApXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNvbW1hbmRzLmdldChpZClcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICBjb21tYW5kcy5zZXQoaWQsIHsgLi4uY3VycmVudCwgZWRpdGFibGU6IG5leHQgfSlcbiAgICAgICAgfVxuICAgICAgICBob3N0XG4gICAgICAgICAgLmludm9rZUhlYWRlckJhcnM8dW5kZWZpbmVkPihIRUFERVJfQkFSU19NRVRIT0Quc2V0Q29tbWFuZEVkaXRhYmxlLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIGVkaXRhYmxlOiBuZXh0XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCBlZGl0YWJsZSBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgb25Db21tYW5kQ2xpY2s6IHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQ6ICgpID0+IGhvc3QuZ2V0T3ZlcnJpZGVzTWFwKCkuZ2V0KGlkKSxcbiAgICAgIHNldDogKGhhbmRsZXI6ICgoKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgaG9zdC5nZXRPdmVycmlkZXNNYXAoKS5zZXQoaWQsIGhhbmRsZXIpXG4gICAgICAgIGhvc3RcbiAgICAgICAgICAuaW52b2tlSGVhZGVyQmFyczx1bmRlZmluZWQ+KFxuICAgICAgICAgICAgSEVBREVSX0JBUlNfTUVUSE9ELnNldENvbW1hbmRDYWxsYmFja0VuYWJsZWQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBlbmFibGVkOiB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgaG9zdC5lbWl0SGVhZGVyQmFyc0Vycm9yKFxuICAgICAgICAgICAgICAnc2V0IGhlYWRlckJhcnMgY29tbWFuZCBjYWxsYmFjayBmYWlsZWQnLFxuICAgICAgICAgICAgICBlcnJcbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cbiAgfSlcblxuICByZWZzLnNldChpZCwgcmVmKVxuICByZXR1cm4gcmVmXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdWJzY3JpYmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2UoXG4gIGludm9rZTogPFQ+KG1ldGhvZDogc3RyaW5nLCBhcmdzOiB1bmtub3duW10pID0+IFByb21pc2U8VD5cbikge1xuICBhd2FpdCBpbnZva2UoSW52b2tlTWV0aG9kLkxpc3RlbkVkaXRvckV2ZW50LCBbJ3RpdGxlQ2hhbmdlJ10pXG59XG4iLCJpbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvcHJvbWlzZSdcbmltcG9ydCAnY29yZS1qcy9mZWF0dXJlcy91cmwnXG5pbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvYXJyYXkvaW5jbHVkZXMnXG5pbXBvcnQgJ2NvcmUtanMvZmVhdHVyZXMvb2JqZWN0L2Fzc2lnbidcbmltcG9ydCAncHJveHktcG9seWZpbGwnXG5pbXBvcnQge1xuICBPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsLFxuICBPZmZpY2VTREtNZXNzYWdlRXZlbnQsXG4gIGlzT2ZmaWNlU0RLTWVzc2FnZUV2ZW50TGlrZSxcbiAgT2ZmaWNlU0RLRXZlbnRMaWtlXG59IGZyb20gJ29mZmljZXNkay1icm9hZGNhc3QtY2hhbm5lbCdcbmltcG9ydCB7IFN0YXJ0UGFyYW1zIH0gZnJvbSAnd2Vib2ZmaWNlLXN0YXJ0cGFyYW1zJ1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnXG5pbXBvcnQgeyBUaW55RW1pdHRlciB9IGZyb20gJ3RpbnktZW1pdHRlcidcbmltcG9ydCBnZXRHbG9iYWwgZnJvbSAnZ2xvYmFsdGhpcy9wb2x5ZmlsbCdcbmltcG9ydCB7XG4gIENvbnRhaW5lck1ldGhvZCxcbiAgQ29udGFpbmVyUmVjdCxcbiAgRGlzYWJsZU1lbnRpb25DYXJkcyxcbiAgRmlsZVR5cGUsXG4gIEludm9rZU1ldGhvZCxcbiAgTW91c2VNb3ZlUGF5bG9hZCxcbiAgUmVhZHlTdGF0ZSxcbiAgUGVyZm9ybWFuY2VFbnRyeSxcbiAgRGV2aWNlTW9kZSxcbiAgR2VuZXJhdGVVcmxIYW5kbGVyLFxuICBHZW5lcmF0ZVVybEluZm8sXG4gIEFQSUFkYXB0b3IsXG4gIFJlcXVlc3RDb250ZXh0LFxuICBTREtFdmVudCxcbiAgU2hvd1RvYXN0T3B0aW9ucyxcbiAgQ3JlZGVudGlhbHNcbn0gZnJvbSAnd2Vib2ZmaWNlLWpzLXNkay1zaGFyZWQnXG5pbXBvcnQgRXhwaXJlU2V0IGZyb20gJ2V4cGlyZS1zZXQnXG5cbmltcG9ydCB7XG4gIERvY3VtZW50LFxuICBEb2N1bWVudFBybyxcbiAgUHJlc2VudGF0aW9uLFxuICBTcHJlYWRzaGVldCxcbiAgVGFibGUsXG4gIEZvcm0sXG4gIEZsb3djaGFydFxufSBmcm9tICcuJ1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnLi9hc3NlcnQnXG5pbXBvcnQge1xuICBFbXB0eVBhZ2VPcHRpb25zLFxuICBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9ucyxcbiAgbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9uc1xufSBmcm9tICcuL3R5cGVzL0VtcHR5UGFnZSdcbmltcG9ydCB7XG4gIEJhc2VFZGl0b3IsXG4gIENvbGxhYm9yYXRvcixcbiAgQ29sbGFib3JhdG9yc0NoYW5nZWRQYXlsb2FkXG59IGZyb20gJy4vdHlwZXMvQmFzZUVkaXRvcidcbmltcG9ydCB7XG4gIFNsYXNoTWVudUJ1dHRvbixcbiAgU2xhc2hNZW51RW50cnksXG4gIFNsYXNoTWVudU9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcy9TbGFzaE1lbnUnXG5pbXBvcnQgdHlwZSB7IENvbm5lY3RWMkZpbGVUeXBlLCBDb250ZW50VmVyc2lvbiB9IGZyb20gJy4vdHlwZXMvQ29ubmVjdFYyJ1xuaW1wb3J0IHsgY3JlYXRlUHJlbG9hZEluaXRQYXlsb2FkLCB0eXBlIFByZWxvYWRJbml0UGF5bG9hZCB9IGZyb20gJy4vcHJlbG9hZCdcbmltcG9ydCB7XG4gIGFwcGx5SGVhZGVyQmFyc0NoYW5nZWQsXG4gIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbixcbiAgZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYsXG4gIEhFQURFUl9CQVJTX0NIQU5HRURfRVZFTlQsXG4gIEhFQURFUl9CQVJTX01FVEhPRCxcbiAgaW5pdEhlYWRlckJhcnNGYWNhZGUsXG4gIHNldEhlYWRlckJhcnNWaXNpYmxlLFxuICBzeW5jSGVhZGVyQmFyc0NvbW1hbmRzLFxuICBzeW5jSGVhZGVyQmFyc1Zpc2libGVcbn0gZnJvbSAnLi9PZmZpY2VTREsuaGVhZGVyQmFycydcbmltcG9ydCB7IGJ1aWxkUm9vdEZhY2FkZVN0YXRlIH0gZnJvbSAnLi9PZmZpY2VTREsuZmFjYWRlJ1xuaW1wb3J0IHR5cGUge1xuICBDb2xsYWJvcmF0b3JGYWNhZGUsXG4gIENvbW1lbnRzRmFjYWRlLFxuICBDb250ZW50RmFjYWRlLFxuICBEaXNjdXNzaW9uRmFjYWRlLFxuICBEb2NzT3V0bGluZUZhY2FkZSxcbiAgRG9jc1NlYXJjaEZhY2FkZSxcbiAgRG9jc1NlbGVjdGlvbkZhY2FkZSxcbiAgRG9jc1NldHRpbmdzRmFjYWRlLFxuICBEb2NzU2lkZWJhckZhY2FkZSxcbiAgRG9jc1RhYmxlc0ZhY2FkZSxcbiAgRXh0ZXJuYWxBcHBGYWNhZGUsXG4gIEhpc3RvcnlGYWNhZGUsXG4gIExvY2tzRmFjYWRlLFxuICBNZW50aW9uRmFjYWRlLFxuICBPZmZpY2VTREtQcmVzZW50YXRpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlLFxuICBQcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGUsXG4gIFByZXNlbnRhdGlvblNsaWRlc0ZhY2FkZSxcbiAgUHJlc2VudGF0aW9uVGV4dEZhY2FkZSxcbiAgUHJlc2VudGF0aW9uWm9vbUZhY2FkZSxcbiAgU2hlZXRDaGFydHNGYWNhZGUsXG4gIFNoZWV0U2VsZWN0aW9uc0ZhY2FkZSxcbiAgU2hlZXRXb3JrYm9va0ZhY2FkZSxcbiAgU2hlZXRXb3Jrc2hlZXRGYWNhZGUsXG4gIFRpdGxlRmFjYWRlLFxuICBWZXJzaW9uRmFjYWRlXG59IGZyb20gJy4vT2ZmaWNlU0RLLmZhY2FkZS50eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgSGVhZGVyQmFyc0NoYW5nZWRQYXlsb2FkLFxuICBIZWFkZXJCYXJzQ29tbWFuZFJlZixcbiAgSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZSxcbiAgSGVhZGVyQmFyc0ZhY2FkZSxcbiAgSGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlclxufSBmcm9tICcuL09mZmljZVNESy5oZWFkZXJCYXJzJ1xuXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESy5mYWNhZGUudHlwZXMnXG5leHBvcnQgKiBmcm9tICcuL09mZmljZVNESy5oZWFkZXJCYXJzJ1xuXG5jb25zdCBnbG9iYWxUaGlzID0gZ2V0R2xvYmFsKClcbmNvbnN0IEFVRCA9ICdzbWpzc2RrJ1xuY29uc3QgU01fUEFSQU1TX0tFWSA9ICdzbVBhcmFtcydcbmNvbnN0IExPQURJTkdfT1BUSU9OU19LRVkgPSAnbG9hZGluZ09wdGlvbnMnXG5jb25zdCBMRUdBQ1lfTEFOR1VBR0VfTUFQID0ge1xuICBlbjogJ2VuLVVTJyxcbiAgamE6ICdqYS1KUCdcbn0gYXMgY29uc3RcbmNvbnN0IFNVUFBPUlRFRF9MQU5HVUFHRVMgPSBbXG4gICd6aC1DTicsXG4gICd6aC1UVycsXG4gICdlbi1VUycsXG4gICdqYS1KUCcsXG4gICdrby1LUicsXG4gICdlcy1FUycsXG4gICdwdC1QVCcsXG4gICdkZS1ERScsXG4gICdmci1GUicsXG4gICdpdC1JVCcsXG4gICdydS1SVScsXG4gICdpZC1JRCcsXG4gICd2aS1WTicsXG4gICd0aC1USCcsXG4gICdtcy1NWScsXG4gICdhci1TQSdcbl0gYXMgY29uc3RcbnR5cGUgU3VwcG9ydGVkTGFuZ3VhZ2UgPSAodHlwZW9mIFNVUFBPUlRFRF9MQU5HVUFHRVMpW251bWJlcl1cbnR5cGUgTGVnYWN5TGFuZ3VhZ2UgPSBrZXlvZiB0eXBlb2YgTEVHQUNZX0xBTkdVQUdFX01BUFxuY29uc3QgRURJVE9SX0ZBQ0FERV9DQUxMQkFDS19NRVRIT0QgPSAnZWRpdG9yRmFjYWRlLmhhbmRsZUNhbGxiYWNrJ1xuY29uc3QgU0xBU0hfTUVOVV9NRVRIT0QgPSB7XG4gIGhhbmRsZUJ1dHRvbkNsaWNrOiAnc2xhc2hNZW51LmhhbmRsZUJ1dHRvbkNsaWNrJ1xufSBhcyBjb25zdFxuY29uc3QgUFJFTE9BRF9NRVNTQUdFX1RZUEUgPSB7XG4gIFJFQURZOiAnU0RLX1BSRUxPQURfUkVBRFknLFxuICBJTklUOiAnU0RLX1BSRUxPQURfSU5JVCcsXG4gIEFDSzogJ1NES19QUkVMT0FEX0FDSycsXG4gIERPTkU6ICdTREtfUFJFTE9BRF9ET05FJyxcbiAgRVJST1I6ICdTREtfUFJFTE9BRF9FUlJPUicsXG4gIENSRURFTlRJQUxTX1JFUVVFU1Q6ICdTREtfUFJFTE9BRF9DUkVERU5USUFMU19SRVFVRVNUJyxcbiAgQ1JFREVOVElBTFNfUkVTUE9OU0U6ICdTREtfUFJFTE9BRF9DUkVERU5USUFMU19SRVNQT05TRSdcbn0gYXMgY29uc3RcbmNvbnN0IEZBQ0FERV9QUk9YWV9TS0lQUEVEX1BST1BTID0gbmV3IFNldChbXG4gICd0aGVuJyxcbiAgJ2NhdGNoJyxcbiAgJ2ZpbmFsbHknLFxuICAndG9KU09OJ1xuXSlcblxudHlwZSBFZGl0b3JGYWNhZGVDYWxsYmFjayA9ICguLi5hcmdzOiB1bmtub3duW10pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+XG5cbmludGVyZmFjZSBTZXJpYWxpemVkU2xhc2hNZW51QnV0dG9uIGV4dGVuZHMgT21pdDxTbGFzaE1lbnVCdXR0b24sICdjYWxsYmFjayc+IHtcbiAgY2FsbGJhY2tJZD86IHN0cmluZ1xufVxuXG5pbnRlcmZhY2UgU2VyaWFsaXplZFNsYXNoTWVudUVudHJ5IGV4dGVuZHMgT21pdDxTbGFzaE1lbnVFbnRyeSwgJ2NoaWxkcmVuJz4ge1xuICBjaGlsZHJlbj86IFNlcmlhbGl6ZWRTbGFzaE1lbnVJdGVtW11cbn1cblxudHlwZSBTZXJpYWxpemVkU2xhc2hNZW51SXRlbSA9XG4gIHwgU2VyaWFsaXplZFNsYXNoTWVudUJ1dHRvblxuICB8IFNlcmlhbGl6ZWRTbGFzaE1lbnVFbnRyeVxuXG5pbnRlcmZhY2UgU2VyaWFsaXplZFNsYXNoTWVudU9wdGlvbnMge1xuICBlbnRyaWVzOiBTZXJpYWxpemVkU2xhc2hNZW51SXRlbVtdXG59XG5cbi8qKlxuICog5YW85a655pen54mI6K+t6KiA57yp5YaZ77yM5bm257uf5LiA5pig5bCE5Li65qCH5YeG6K+t6KiA5Luj56CB44CCXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxhbmd1YWdlKGxhbmc6IHN0cmluZyk6IFN1cHBvcnRlZExhbmd1YWdlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IExFR0FDWV9MQU5HVUFHRV9NQVBbbGFuZyBhcyBMZWdhY3lMYW5ndWFnZV0gPz8gbGFuZ1xuXG4gIGlmICgoU1VQUE9SVEVEX0xBTkdVQUdFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMobm9ybWFsaXplZCkpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZCBhcyBTdXBwb3J0ZWRMYW5ndWFnZVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiBpc1NsYXNoTWVudUVudHJ5KFxuICBpdGVtOiBTbGFzaE1lbnVFbnRyeSB8IFNsYXNoTWVudUJ1dHRvblxuKTogaXRlbSBpcyBTbGFzaE1lbnVFbnRyeSB7XG4gIHJldHVybiBpdGVtLnR5cGUgPT09ICdlbnRyeSdcbn1cblxuZnVuY3Rpb24gc2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcChwcm9wOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIEZBQ0FERV9QUk9YWV9TS0lQUEVEX1BST1BTLmhhcyhwcm9wKVxufVxuXG5leHBvcnQgY29uc3QgTWVzc2FnZUV2ZW50ID0gSW52b2tlTWV0aG9kXG5cbmV4cG9ydCBjbGFzcyBPZmZpY2VTREsgZXh0ZW5kcyBUaW55RW1pdHRlciB7XG4gIC8qKlxuICAgKiDnvJbovpHlmajpobXpnaLlr7nlupTnmoQgaWZyYW1lIOWFg+e0oOOAgumcgOimgeazqOaEj+iwg+aVtOeItuWFg+e0oOWkp+Wwj+adpeaOp+WItiBpZnJhbWUg5aSn5bCP44CCXG4gICAqL1xuICBlbGVtZW50OiBIVE1MSUZyYW1lRWxlbWVudFxuICByZWFkb25seSB1dWlkOiBzdHJpbmdcbiAgcmVhZG9ubHkgdXNlclV1aWQ/OiBzdHJpbmdcblxuICAvKipcbiAgICog5Lyg57uf5paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnRQcm8/OiBEb2N1bWVudFByby5FZGl0b3JcblxuICAvKipcbiAgICog6L275paH5qGj57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZG9jdW1lbnQ/OiBEb2N1bWVudC5FZGl0b3JcblxuICAvKipcbiAgICog6KGo5qC857yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgc3ByZWFkc2hlZXQ/OiBTcHJlYWRzaGVldC5FZGl0b3JcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5qCH6aKY6IO95Yqb44CCXG4gICAqL1xuICB0aXRsZT86IFRpdGxlRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWOhuWPsuiDveWKm+OAglxuICAgKi9cbiAgaGlzdG9yeT86IEhpc3RvcnlGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6K+E6K666IO95Yqb44CCXG4gICAqL1xuICBjb21tZW50cz86IENvbW1lbnRzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOiuqOiuuuiDveWKm+OAglxuICAgKi9cbiAgZGlzY3Vzc2lvbj86IERpc2N1c3Npb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE57yW5YaZ6ICF5L6n6L655qCP6IO95Yqb44CCXG4gICAqL1xuICBjb2xsYWJvcmF0b3I/OiBDb2xsYWJvcmF0b3JGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE56ys5LiJ5pa55bqU55So5o+S5YWl6IO95Yqb44CCXG4gICAqL1xuICBleHRlcm5hbEFwcD86IEV4dGVybmFsQXBwRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOmUgeWumuiDveWKm+OAglxuICAgKi9cbiAgbG9ja3M/OiBMb2Nrc0ZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmj5Dlj4rlrprkvY3og73lipvjgIJcbiAgICovXG4gIG1lbnRpb24/OiBNZW50aW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWGheWuueWGmeWFpeiDveWKm+OAglxuICAgKi9cbiAgY29udGVudD86IENvbnRlbnRGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE54mI5pys6IO95Yqb44CCXG4gICAqL1xuICB2ZXJzaW9uPzogVmVyc2lvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmvJTnpLrog73lipvjgIJcbiAgICog5paH5qGj5LiO6KGo5qC85pSv5oyBIHN0YXJ0IC8gcXVpdO+8jOW5u+eBr+eJh+Wll+S7tumineWkluaUr+aMgeWujOaVtOa8lOekuuiDveWKm+OAglxuICAgKi9cbiAgcHJlc2VudGF0aW9uPzogT2ZmaWNlU0RLUHJlc2VudGF0aW9uRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOmAieWMuuiDveWKm+OAglxuICAgKi9cbiAgc2VsZWN0aW9uPzogRG9jc1NlbGVjdGlvbkZhY2FkZSB8IFByZXNlbnRhdGlvblNlbGVjdGlvbkZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmkJzntKLog73lipvjgIJcbiAgICovXG4gIHNlYXJjaD86IERvY3NTZWFyY2hGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE55uu5b2V6IO95Yqb44CCXG4gICAqL1xuICBvdXRsaW5lPzogRG9jc091dGxpbmVGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5L6n6L655qCP6IO95Yqb44CCXG4gICAqL1xuICBzaWRlYmFyPzogRG9jc1NpZGViYXJGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE6KGo5qC86ZuG5ZCI6IO95Yqb44CCXG4gICAqL1xuICB0YWJsZXM/OiBEb2NzVGFibGVzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOiuvue9ruiDveWKm+OAglxuICAgKi9cbiAgc2V0dGluZ3M/OiBEb2NzU2V0dGluZ3NGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5bel5L2c57C/6IO95Yqb44CCXG4gICAqL1xuICB3b3JrYm9vaz86IFNoZWV0V29ya2Jvb2tGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5b2T5YmN5bel5L2c6KGo6IO95Yqb44CCXG4gICAqL1xuICBhY3RpdmVTaGVldD86IFNoZWV0V29ya3NoZWV0RmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWbvuihqOiDveWKm+OAglxuICAgKi9cbiAgY2hhcnRzPzogU2hlZXRDaGFydHNGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5aSa6YCJ5Yy66IO95Yqb44CCXG4gICAqL1xuICBzZWxlY3Rpb25zPzogU2hlZXRTZWxlY3Rpb25zRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOW5u+eBr+eJh+mbhuWQiOiDveWKm+OAglxuICAgKi9cbiAgc2xpZGVzPzogUHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlXG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOaWh+acrOiDveWKm+OAglxuICAgKi9cbiAgdGV4dD86IFByZXNlbnRhdGlvblRleHRGYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE57yp5pS+6IO95Yqb44CCXG4gICAqL1xuICB6b29tPzogUHJlc2VudGF0aW9uWm9vbUZhY2FkZVxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTkuovku7borqLpmIXog73lipvjgIJcbiAgICovXG4gIGV2ZW50U3Vic2NyaXB0aW9uPzogUHJlc2VudGF0aW9uRXZlbnRTdWJzY3JpcHRpb25GYWNhZGVcblxuICAvKipcbiAgICog5b2T5YmN5aWX5Lu25pSv5oyB55qE5om56YeP5Y+Y5pu06IO95Yqb44CCXG4gICAqL1xuICBiYXRjaENoYW5nZXM/OiA8VD4oY2FsbGJhY2s6ICgpID0+IFQgfCBQcm9taXNlPFQ+KSA9PiBQcm9taXNlPEF3YWl0ZWQ8VD4+XG5cbiAgLyoqXG4gICAqIOW9k+WJjeWll+S7tuaUr+aMgeeahOWvvOWHuuiDveWKm+OAglxuICAgKi9cbiAgZXhwb3J0PzogKHR5cGU6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTmiZPljbDog73lipvjgIJcbiAgICovXG4gIHByaW50PzogKCkgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDlvZPliY3lpZfku7bmlK/mjIHnmoTogZrnhKbog73lipvjgIJcbiAgICovXG4gIHNldEZvY3VzPzogKGlzRm9jdXM6IGJvb2xlYW4pID0+IFByb21pc2U8dm9pZD5cblxuICAvKipcbiAgICog5bqU55So6KGo5qC857yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgdGFibGU/OiBUYWJsZS5FZGl0b3JcblxuICAvKipcbiAgICog6KGo5Y2V57yW6L6R5Zmo5a6e5L6LXG4gICAqIEBkZXByZWNhdGVkIC0g55SoIGBzZGsuZ2V0RWRpdG9yPFQ+KClgIOabv+S7o1xuICAgKi9cbiAgZm9ybT86IEZvcm0uRWRpdG9yXG5cbiAgLyoqXG4gICAqIOWbvuiwsee8lui+keWZqOWunuS+i1xuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLmdldEVkaXRvcjxUPigpYCDmm7/ku6NcbiAgICovXG4gIGZsb3djaGFydD86IEZsb3djaGFydC5FZGl0b3JcbiAgcmVhZG9ubHkgaGVhZGVyQmFyczogSGVhZGVyQmFyc0ZhY2FkZVxuXG4gIHByaXZhdGUgX2ZpbGVUeXBlOiBGaWxlVHlwZSA9IEZpbGVUeXBlLlVua25vd25cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlSGFuZGxlcjogKGV2dDogZ2xvYmFsVGhpcy5NZXNzYWdlRXZlbnQpID0+IHZvaWQgPVxuICAgICgpID0+IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiDlhoXpg6ggZXZlbnQgZW1pdHRlcu+8jOavlOWmgueUqOadpeS4rei9rCBlZGl0b3Ig5LqL5Lu2XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVtaXR0ZXI6IFRpbnlFbWl0dGVyID0gbmV3IFRpbnlFbWl0dGVyKClcblxuICBwcml2YXRlIGNoYW5uZWw6IE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWxcbiAgcHJpdmF0ZSByZWFkb25seSBjb25uZWN0T3B0aW9uczogT2ZmaWNlU0RLT3B0aW9ucyAmIHtcbiAgICB0eXBlPzogQ29ubmVjdFYyRmlsZVR5cGVcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGVudFZlcnNpb24/OiBDb250ZW50VmVyc2lvblxuXG4gIHByaXZhdGUgX3JlYWR5U3RhdGU6IFJlYWR5U3RhdGUgPSBSZWFkeVN0YXRlLkxvYWRpbmdcbiAgcHJpdmF0ZSBlZGl0b3I6IGFueVxuICBwcml2YXRlIHJlYWRvbmx5IHN0YXJ0UGFyYW1zOiBTdGFydFBhcmFtc1xuICBwcml2YXRlIGNvbGxhYm9yYXRvcnM6IENvbGxhYm9yYXRvcltdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlBZGFwdG9yQ29udGV4dDogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgaGFuZGxlZE1lc3NhZ2VDYWNoZTogRXhwaXJlU2V0PHN0cmluZz5cbiAgLyoqXG4gICAqIOa2iOaBr+i/h+acn+aXtumXtO+8jOWNleS9jeavq+enku+8jOm7mOiupCA1IOWIhumSn1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtZXNzYWdlRXhwaXJlczogbnVtYmVyXG4gIC8qKlxuICAgKiBTREsg5pyN5Yqh5Zmo55qE5Zyw5Z2AXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50OiBVUkxcbiAgcHJpdmF0ZSByZWFkb25seSBzYW1lT3JpZ2luOiBib29sZWFuXG4gIHByaXZhdGUgaGVhZGVyQmFyc1Zpc2libGUgPSB0cnVlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJCYXJzQ29tbWFuZHMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBIZWFkZXJCYXJzQ29tbWFuZFN0YXRlXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICAoKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHwgdW5kZWZpbmVkXG4gID4oKVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2xhc2hNZW51Q2FsbGJhY2tzID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IHZvaWQ+KClcbiAgcHJpdmF0ZSByZWFkb25seSBlZGl0b3JGYWNhZGVDYWxsYmFja3MgPSBuZXcgTWFwPFxuICAgIHN0cmluZyxcbiAgICBFZGl0b3JGYWNhZGVDYWxsYmFja1xuICA+KClcblxuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRlckJhcnNDb21tYW5kUmVmcyA9IG5ldyBNYXA8XG4gICAgc3RyaW5nLFxuICAgIEhlYWRlckJhcnNDb21tYW5kUmVmXG4gID4oKVxuXG4gIHByaXZhdGUgaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlcj86IEhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXJcbiAgcHJpdmF0ZSBoZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkID0gZmFsc2VcblxuICBwcml2YXRlIHJlYWRvbmx5IG9uVmlld3BvcnRSZXNpemU6ICgpID0+IHZvaWRcblxuICAvKipcbiAgICog5b2S5LiA5YyW5ZCO55qE57y655yB6aG16YWN572u77yM5p6E6YCg5pe25LiA5qyh566X5a6M77yM5ZCO57ut5LuF6K+75Y+W44CCXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IG5vcm1hbGl6ZWRFbXB0eVBhZ2U6IE5vcm1hbGl6ZWRFbXB0eVBhZ2VPcHRpb25zXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZENyZWRlbnRpYWxzTWVzc2FnZUhhbmRsZXI6IChcbiAgICBldmVudDogTWVzc2FnZUV2ZW50XG4gICkgPT4gdm9pZFxuXG4gIHByaXZhdGUgcGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3JIYW5kbGVyPzogKGVycm9yOiBFcnJvcikgPT4gdm9pZFxuICBwcml2YXRlIHBlbmRpbmdJbml0aWFsaXphdGlvbkVycm9yPzogRXJyb3JcbiAgcHJpdmF0ZSBwcmVsb2FkQ3JlZGVudGlhbHNQcm9taXNlPzogUHJvbWlzZTxDcmVkZW50aWFscz5cbiAgcHJpdmF0ZSBkaXNjb25uZWN0ZWQgPSBmYWxzZVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZEFja1RpbWVvdXRNcyA9IDIwMDBcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkRG9uZVRpbWVvdXRNcyA9IDgwMDBcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkUmVhZHlUaW1lb3V0TXMgPSAzMDAwXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT2ZmaWNlU0RLT3B0aW9ucywgY29udGVudFZlcnNpb24/OiBDb250ZW50VmVyc2lvbikge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuY29ubmVjdE9wdGlvbnMgPSBvcHRpb25zIGFzIE9mZmljZVNES09wdGlvbnMgJiB7XG4gICAgICB0eXBlPzogQ29ubmVjdFYyRmlsZVR5cGVcbiAgICB9XG4gICAgdGhpcy5jb250ZW50VmVyc2lvbiA9IGNvbnRlbnRWZXJzaW9uXG4gICAgdGhpcy51dWlkID0gdXVpZCgpXG4gICAgdGhpcy51c2VyVXVpZCA9IG9wdGlvbnMudXNlclV1aWRcbiAgICB0aGlzLm5vcm1hbGl6ZWRFbXB0eVBhZ2UgPSBub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zKG9wdGlvbnMuZW1wdHlQYWdlKVxuXG4gICAgYXNzZXJ0PEhUTUxFbGVtZW50PihcbiAgICAgIG9wdGlvbnMuY29udGFpbmVyLFxuICAgICAgKGlucHV0KSA9PiBpbnB1dCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50LFxuICAgICAgYGNvbnRhaW5lciBpcyBub3QgYW4gSFRNTEVsZW1lbnQ6IFwiJHtTdHJpbmcob3B0aW9ucy5jb250YWluZXIpfVwiYFxuICAgIClcbiAgICBhc3NlcnQ8SFRNTEVsZW1lbnQ+KFxuICAgICAgb3B0aW9ucy5jb250YWluZXIsXG4gICAgICAoaW5wdXQ6IEhUTUxFbGVtZW50KSA9PlxuICAgICAgICAhWydpZnJhbWUnLCAnZnJhbWUnLCAnZW1iZWQnLCAnb2JqZWN0J10uaW5jbHVkZXMoXG4gICAgICAgICAgaW5wdXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICksXG4gICAgICBgaW52YWxpZCBjb250YWluZXIgZWxlbWVudCB0eXBlOiBcIiR7b3B0aW9ucy5jb250YWluZXIudGFnTmFtZX1cIu+8jERJViBhcmUgcmVjb21tZW5kZWQuYFxuICAgIClcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmVuZHBvaW50ID0gbmV3IFVSTChvcHRpb25zLmVuZHBvaW50KVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBlbmRwb2ludDogXCIke29wdGlvbnMuZW5kcG9pbnR9XCJgKVxuICAgIH1cbiAgICB0aGlzLnNhbWVPcmlnaW4gPSB0aGlzLmVuZHBvaW50Lm9yaWdpbiA9PT0gZ2xvYmFsVGhpcy5sb2NhdGlvbi5vcmlnaW5cblxuICAgIGlmICgvXFwvc2RrXFwvdjJcXC8qL2kudGVzdCh0aGlzLmVuZHBvaW50LnBhdGhuYW1lKSA9PT0gZmFsc2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEdlbmVyYWxseSB0aGUgZW5kcG9pbnQgc2hvdWxkIGVuZCB3aXRoIFwiL3Nkay92MlwiLCBwbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGNvcnJlY3Q6IFwiJHt0aGlzLmVuZHBvaW50LnRvU3RyaW5nKCl9XCJgXG4gICAgICApXG4gICAgfVxuXG4gICAgdGhpcy5hcGlBZGFwdG9yID0gb3B0aW9ucy5hcGlBZGFwdG9yID8gb3B0aW9ucy5hcGlBZGFwdG9yLnRvU3RyaW5nKCkgOiAnJ1xuICAgIHRoaXMuYXBpQWRhcHRvckNvbnRleHQgPSBvcHRpb25zLmFwaUFkYXB0b3JDb250ZXh0XG4gICAgICA/IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMuYXBpQWRhcHRvckNvbnRleHQpXG4gICAgICA6ICcnXG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5zdGFydFBhcmFtcyA9IG5ldyBTdGFydFBhcmFtcyhcbiAgICAgICAgb3B0aW9ucy5zbVBhcmFtcyA/P1xuICAgICAgICAgIG5ldyBVUkxTZWFyY2hQYXJhbXMoZ2xvYmFsVGhpcy5sb2NhdGlvbj8uc2VhcmNoKS5nZXQoU01fUEFSQU1TX0tFWSkgPz9cbiAgICAgICAgICAnJ1xuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhcnRQYXJhbXMgPSBuZXcgU3RhcnRQYXJhbXMoKVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZWJ1ZyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zLmRlYnVnID0gdGhpcy5jb25uZWN0T3B0aW9ucy5kZWJ1Z1xuICAgIH1cblxuICAgIHRoaXMub25WaWV3cG9ydFJlc2l6ZSA9ICgpID0+IHtcbiAgICAgIDsoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwucG9zdE1lc3NhZ2Uoe1xuICAgICAgICAgIGV2ZW50OiBTREtFdmVudC5WaWV3cG9ydFJlc2l6ZSxcbiAgICAgICAgICBwYXlsb2FkOiB0aGlzLmdldENvbnRhaW5lclJlY3QoKVxuICAgICAgICB9KVxuICAgICAgfSkoKS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdChcbiAgICAgICAgICAnZXJyb3InLFxuICAgICAgICAgIG5ldyBFcnJvcihgRmFpbGVkIHRvIGVtaXQgcmVzaXplIGV2ZW50OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5pbml0Q2hhbm5lbCgpXG4gICAgdGhpcy5wcmVsb2FkQ3JlZGVudGlhbHNNZXNzYWdlSGFuZGxlciA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICB2b2lkIHRoaXMuaGFuZGxlUHJlbG9hZE1lc3NhZ2UoZXZlbnQpXG4gICAgfVxuICAgIHRoaXMuaGVhZGVyQmFycyA9IHRoaXMuaW5pdEhlYWRlckJhcnNGYWNhZGUoKVxuXG4gICAgbGV0IG1lc3NhZ2VFeHBpcmVzID0gb3B0aW9ucy5tZXNzYWdlRXhwaXJlc1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZUV4cGlyZXMgIT09ICdudW1iZXInKSB7XG4gICAgICBtZXNzYWdlRXhwaXJlcyA9IDYwICogNSAqIDEwMDBcbiAgICB9XG4gICAgdGhpcy5tZXNzYWdlRXhwaXJlcyA9IGFzc2VydChcbiAgICAgIG1lc3NhZ2VFeHBpcmVzLFxuICAgICAgKGlucHV0KSA9PiAhaXNOYU4oaW5wdXQpICYmIGlucHV0ID4gMCxcbiAgICAgIGBcIm1lc3NhZ2VFeHBpcmVzXCIgaXMgbm90IGFuIHZhbGlkIG51bWJlcjogXCIke21lc3NhZ2VFeHBpcmVzfVwiYFxuICAgIClcbiAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUgPSBuZXcgRXhwaXJlU2V0PHN0cmluZz4obWVzc2FnZUV4cGlyZXMpXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgLy8g5rOo5YaM5Y+v5Lul5Y+N5rOo5YaM55qE5Ye95pWwXG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyID0gKGV2dDogZ2xvYmFsVGhpcy5NZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgLy8g5bCG5raI5oGv6L2s5YWlIE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwg5aSE55CGXG4gICAgICAgIGNvbnN0IGRhdGEgPSBldnQuZGF0YVxuICAgICAgICBpZiAoXG4gICAgICAgICAgaXNPZmZpY2VTREtNZXNzYWdlRXZlbnRMaWtlKGRhdGEpICYmXG4gICAgICAgICAgdGhpcy5zaG91bGRIYW5kbGVNZXNzYWdlKGRhdGEpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlZE1lc3NhZ2VDYWNoZS5hZGQoZGF0YS5pZClcbiAgICAgICAgICB0aGlzLmNoYW5uZWxcbiAgICAgICAgICAgIC5kaXN0cmlidXRlTWVzc2FnZShldnQuZGF0YSBhcyBPZmZpY2VTREtNZXNzYWdlRXZlbnQpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgZmlsZVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbGVUeXBlXG4gIH1cblxuICBnZXQgcmVhZHlTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZHlTdGF0ZVxuICB9XG5cbiAgLyoqXG4gICAqIOWIpOaWreW9k+WJjeWunuS+i+aYr+WQpuW6lOivpeWQkSBpZnJhbWUg5pq06ZyyIHNsYXNoTWVudeOAglxuICAgKiDovpPlhaXvvJrml6DvvIzor7vlj5blvZPliY3mlofku7bnsbvlnovkuI4gc3RhcnRQYXJhbXMudHlwZSDmj5DnpLrjgIJcbiAgICog6L6T5Ye677ya5LuF5Zyo5piO56Gu5pivIGRvY3PvvIzmiJblsJrmnKrmi7/liLDmlofku7bnsbvlnovkuJTmsqHmnInmmI7noa7pnZ4gZG9jcyDmj5DnpLrml7bov5Tlm54gdHJ1ZeOAglxuICAgKi9cbiAgcHJpdmF0ZSBzaG91bGRFeHBvc2VTbGFzaE1lbnUoKSB7XG4gICAgaWYgKCF0aGlzLmNvbm5lY3RPcHRpb25zLnNsYXNoTWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsZVR5cGUgPT09IEZpbGVUeXBlLkRvY3VtZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGlmICh0aGlzLmZpbGVUeXBlICE9PSBGaWxlVHlwZS5Vbmtub3duKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBjb25zdCBoaW50ZWRUeXBlID0gdGhpcy5nZXRTbGFzaE1lbnVUeXBlSGludCgpXG4gICAgaWYgKHR5cGVvZiBoaW50ZWRUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gWydkb2MnLCAnZG9jcycsICdkb2N1bWVudCddLmluY2x1ZGVzKGhpbnRlZFR5cGUpXG4gIH1cblxuICAvKipcbiAgICog5LuOIHN0YXJ0UGFyYW1zIOS4reaPkOWPluaWh+S7tuexu+Wei+aPkOekuuOAglxuICAgKiDovpPlhaXvvJrml6DjgIJcbiAgICog6L6T5Ye677ya5qCH5YeG5YyW5ZCO55qEIHR5cGUg5a2X56ym5Liy77yb6Iul5pyq6YWN572u5YiZ6L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSBnZXRTbGFzaE1lbnVUeXBlSGludCgpIHtcbiAgICBjb25zdCB0eXBlID0gKHRoaXMuc3RhcnRQYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGVcbiAgICBpZiAodHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHR5cGUudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgICByZXR1cm4gbm9ybWFsaXplZCB8fCB1bmRlZmluZWRcbiAgfVxuXG4gIC8qKlxuICAgKiDlsIblrr/kuLvkvKDlhaXnmoQgc2xhc2hNZW51IOi9rOaIkOWPr+i3qCBpZnJhbWUg5Lyg6L6T55qE57qv5pWw5o2u57uT5p6E44CCXG4gICAqIOi+k+WFpe+8muW9k+WJjeWunuS+i+S4iueahCBgT2ZmaWNlU0RLT3B0aW9ucy5zbGFzaE1lbnVg44CCXG4gICAqIOi+k+WHuu+8muWOu+mZpOecn+WunuWHveaVsOOAgemZhOW4piBjYWxsYmFja0lkIOeahCBzbGFzaE1lbnUg6YWN572u77yb5LiN6YCC55So5pe26L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVTZXJpYWxpemVkU2xhc2hNZW51KCk6IFNlcmlhbGl6ZWRTbGFzaE1lbnVPcHRpb25zIHwgdW5kZWZpbmVkIHtcbiAgICB0aGlzLnNsYXNoTWVudUNhbGxiYWNrcy5jbGVhcigpXG5cbiAgICBpZiAoIXRoaXMuc2hvdWxkRXhwb3NlU2xhc2hNZW51KCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IHNsYXNoTWVudSB9ID0gdGhpcy5jb25uZWN0T3B0aW9uc1xuICAgIGlmICghc2xhc2hNZW51IHx8ICFBcnJheS5pc0FycmF5KHNsYXNoTWVudS5lbnRyaWVzKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlbnRyaWVzOiB0aGlzLnNlcmlhbGl6ZVNsYXNoTWVudUl0ZW1zKHNsYXNoTWVudS5lbnRyaWVzLCBbJ2VudHJpZXMnXSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog6YCS5b2S5bqP5YiX5YyWIHNsYXNoTWVudSDoj5zljZXpobnvvIzlubbnmbvorrAgYnV0dG9uIGNhbGxiYWNr44CCXG4gICAqIOi+k+WFpe+8muiPnOWNlemhueaVsOe7hOS4juW9k+WJjemAkuW9kui3r+W+hOOAglxuICAgKiDovpPlh7rvvJrku4XljIXlkKvnu5PmnoTljJblhYvpmoblronlhajlrZfmrrXnmoToj5zljZXpobnmlbDnu4TjgIJcbiAgICovXG4gIHByaXZhdGUgc2VyaWFsaXplU2xhc2hNZW51SXRlbXMoXG4gICAgaXRlbXM6IEFycmF5PFNsYXNoTWVudUVudHJ5IHwgU2xhc2hNZW51QnV0dG9uPixcbiAgICBwYXRoOiBzdHJpbmdbXVxuICApOiBTZXJpYWxpemVkU2xhc2hNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFBhdGggPSBbLi4ucGF0aCwgYCR7aW5kZXh9YCwgaXRlbS5uYW1lXVxuICAgICAgaWYgKGlzU2xhc2hNZW51RW50cnkoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGNoaWxkcmVuOiBpdGVtLmNoaWxkcmVuXG4gICAgICAgICAgICA/IHRoaXMuc2VyaWFsaXplU2xhc2hNZW51SXRlbXMoaXRlbS5jaGlsZHJlbiwgbmV4dFBhdGgpXG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNhbGxiYWNrSWQgPSB0aGlzLnJlZ2lzdGVyU2xhc2hNZW51Q2FsbGJhY2sobmV4dFBhdGgsIGl0ZW0uY2FsbGJhY2spXG4gICAgICBjb25zdCBzZXJpYWxpemVkSXRlbTogU2VyaWFsaXplZFNsYXNoTWVudUJ1dHRvbiA9IHtcbiAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXG4gICAgICAgIGRpc2FibGVkOiBpdGVtLmRpc2FibGVkLFxuICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcbiAgICAgICAgaWNvbjogaXRlbS5pY29uXG4gICAgICB9XG5cbiAgICAgIGlmIChjYWxsYmFja0lkKSB7XG4gICAgICAgIHNlcmlhbGl6ZWRJdGVtLmNhbGxiYWNrSWQgPSBjYWxsYmFja0lkXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZXJpYWxpemVkSXRlbVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog5Li6IHNsYXNoTWVudSBidXR0b24gY2FsbGJhY2sg55Sf5oiQ56iz5a6aIGlkIOW5tuazqOWGjOWIsOWGheWtmOihqOOAglxuICAgKiDovpPlhaXvvJroj5zljZXot6/lvoTkuI7lj6/pgIkgY2FsbGJhY2vjgIJcbiAgICog6L6T5Ye677ya5rOo5YaM5ZCO55qEIGNhbGxiYWNrSWTvvJvoi6XmnKrmj5DkvpsgY2FsbGJhY2sg5YiZ6L+U5ZueIHVuZGVmaW5lZOOAglxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlclNsYXNoTWVudUNhbGxiYWNrKHBhdGg6IHN0cmluZ1tdLCBjYWxsYmFjaz86ICgpID0+IHZvaWQpIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGBzbGFzaC1tZW51OiR7cGF0aC5qb2luKCc6Jyl9YFxuICAgIHRoaXMuc2xhc2hNZW51Q2FsbGJhY2tzLnNldChjYWxsYmFja0lkLCBjYWxsYmFjaylcbiAgICByZXR1cm4gY2FsbGJhY2tJZFxuICB9XG5cbiAgZ2V0RWRpdG9yPFxuICAgIFQgZXh0ZW5kc1xuICAgICAgfCBCYXNlRWRpdG9yXG4gICAgICB8IERvY3VtZW50LkVkaXRvclxuICAgICAgfCBEb2N1bWVudFByby5FZGl0b3JcbiAgICAgIHwgUHJlc2VudGF0aW9uLkVkaXRvclxuICAgICAgfCBTcHJlYWRzaGVldC5FZGl0b3JcbiAgICAgIHwgRm9ybS5FZGl0b3JcbiAgICAgIHwgRmxvd2NoYXJ0LkVkaXRvclxuICAgICAgfCBUYWJsZS5FZGl0b3IgPSBCYXNlRWRpdG9yXG4gID4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yIGFzIFRcbiAgfVxuXG4gIC8qKlxuICAgKiDmm7TmlrDpibTmnYMgc2lnbmF0dXJlIOWSjCB0b2tlblxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgT2ZmaWNlU0RLT3B0aW9ucy5nZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldENyZWRlbnRpYWxzKHBheWxvYWQ6IHsgc2lnbmF0dXJlOiBzdHJpbmc7IHRva2VuOiBzdHJpbmcgfSkge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbcGF5bG9hZF0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruefs+WiqOeahOmJtOadgyBzaWduYXR1cmXjgILnlKjkuo7lrp7ml7bmm7TmlrDpibTmnYPkv6Hmga/vvIzkvJjljJbnlKjmiLflh7rnjrDlm6Dplb/ml7bpl7TmlL7nva7vvIzpibTmnYPlpLHotKXogIzlvJXotbfnmoTkvZPpqozpl67popjjgIJcbiAgICogQGRlcHJlY2F0ZWQgLSDnlKggYHNkay5zZXRDcmVkZW50aWFscygpYCDmm7/ku6NcbiAgICovXG4gIGFzeW5jIHNldFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyBzaWduYXR1cmUgfV0sIHtcbiAgICAgIGF1ZGllbmNlOiBBVURcbiAgICB9KVxuICB9XG5cbiAgLyoqXG4gICAqIOiuvue9ruaCqOezu+e7n+eahOmJtOadgyB0b2tlbuOAgueUqOS6juWunuaXtuabtOaWsOmJtOadg+S/oeaBr++8jOS8mOWMlueUqOaIt+WHuueOsOWboOmVv+aXtumXtOaUvue9ru+8jOmJtOadg+Wksei0peiAjOW8lei1t+eahOS9k+mqjOmXrumimOOAglxuICAgKiBAZGVwcmVjYXRlZCAtIOeUqCBgc2RrLnNldENyZWRlbnRpYWxzKClgIOabv+S7o1xuICAgKi9cbiAgYXN5bmMgc2V0VG9rZW4odG9rZW46IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoSW52b2tlTWV0aG9kLlNldENyZWRlbnRpYWxzLCBbeyB0b2tlbiB9XSwge1xuICAgICAgYXVkaWVuY2U6IEFVRFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5oCn6IO95L+h5oGv54mH5q615YiX6KGo77yM55Sx5LqO5oCn6IO95qCH6K6w5piv5YiG5q6155qE44CB5byC5q2l55qE77yM5Zug5q2k5q+P5qyh6LCD55So5pe26I635Y+W55qE5YiX6KGo5pyJ5Y+v6IO95LiN5LiA6Ie0XG4gICAqL1xuICBhc3luYyBnZXRQZXJmb3JtYW5jZUVudHJpZXMoKTogUHJvbWlzZTxQZXJmb3JtYW5jZUVudHJ5W10+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgIEludm9rZU1ldGhvZC5SZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzLFxuICAgICAgW10sXG4gICAgICB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuZGlzY29ubmVjdGVkID0gdHJ1ZVxuICAgIHRoaXMucGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3JIYW5kbGVyID0gdW5kZWZpbmVkXG4gICAgdGhpcy5wZW5kaW5nSW5pdGlhbGl6YXRpb25FcnJvciA9IHVuZGVmaW5lZFxuICAgIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzUHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2xhc2hNZW51Q2FsbGJhY2tzLmNsZWFyKClcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5jbGVhcigpXG4gICAgaWYgKHRoaXMuZWxlbWVudD8ucGFyZW50RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICB0aGlzLmVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpXG4gICAgfVxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5tZXNzYWdlSGFuZGxlcilcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzTWVzc2FnZUhhbmRsZXIpXG4gICAgaWYgKHdpbmRvdy52aXN1YWxWaWV3cG9ydCkge1xuICAgICAgd2luZG93LnZpc3VhbFZpZXdwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMub25WaWV3cG9ydFJlc2l6ZSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICog5Yid5aeL5YyWIFNES++8jOi/lOWbniBQcm9taXNl77yM5b2TIFJlYWRTdGF0ZSDlj5jkuLogUmVhZHkg5oiWIEZhaWxlZCDml7bvvIxQcm9taXNlIOWwhuiiqyByZXNvbHZl44CCXG4gICAqIFByb21pc2UgcmVzb3ZsZWQg5LiN5Luj6KGo57yW6L6R5Zmo5bey57uP5a6M5pW05Yqg6L295a6M5q+V77yM5Y+q5Luj6KGoIFNESyDlt7Lnu4/lh4blpIflpb3kuobjgIJcbiAgICog5ZCM5pe2IFByb21pc2Ug5LiA55u0IHBlbmRpbmcg5Lmf5LiN5Luj6KGo57yW6L6R5Zmo5Yqg6L295aSx6LSl77yM5Y+q5Luj6KGo5peg5rOV6YCa6L+HIFNESyDlkoznvJbovpHlmajkuqTkupLjgIJcbiAgICog5q+U5aaC5Y+X5rWP6KeI5Zmo6ZmQ5Yi25peg5rOV5Y+R5Ye6IHBvc3RNZXNzYWdlKCkg5pe277yMUHJvbWlzZSDlsIbkvJrkuIDnm7QgcGVuZGluZ+OAglxuICAgKi9cbiAgYXN5bmMgaW5pdCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZHlTdGF0ZSAhPT0gUmVhZHlTdGF0ZS5Mb2FkaW5nKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkeVN0YXRlID0gUmVhZHlTdGF0ZS5Mb2FkaW5nRWRpdG9yXG5cbiAgICBpZiAoIXRoaXMuc2FtZU9yaWdpbikge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm1lc3NhZ2VIYW5kbGVyKVxuICAgIH1cbiAgICBpZiAodGhpcy5jb25uZWN0T3B0aW9ucy50eXBlKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzTWVzc2FnZUhhbmRsZXIpXG4gICAgfVxuXG4gICAgdGhpcy5lbGVtZW50ID0gYXdhaXQgdGhpcy5pbml0SWZyYW1lKClcblxuICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZWxlbWVudClcbiAgICBhd2FpdCB0aGlzLnJ1blByZWxvYWRIYW5kc2hha2UoKVxuXG4gICAgdGhpcy5lZGl0b3IgPSB0aGlzLmluaXRFZGl0b3IoKVxuXG4gICAgLyoqXG4gICAgICog562J5b6F57yW6L6R5ZmoIFJlYWR5U3RhdGUg5Y+Y5YyW5Zue6LCDXG4gICAgICovXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgbGV0IGRvbmUgPSBmYWxzZVxuICAgICAgY29uc3QgcmVhZHlTdGF0ZUhhbmRsZXIgPSAocGF5bG9hZDogUmVhZHlTdGF0ZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIGVycm9yLCBmaWxlVHlwZSB9ID0gcGF5bG9hZFxuXG4gICAgICAgIHRoaXMuX3JlYWR5U3RhdGUgPSBzdGF0ZVxuXG4gICAgICAgIGlmIChmaWxlVHlwZSAmJiB0aGlzLl9maWxlVHlwZSA9PT0gRmlsZVR5cGUuVW5rbm93bikge1xuICAgICAgICAgIHRoaXMuX2ZpbGVUeXBlID0gZmlsZVR5cGVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIGRvbmUgPSB0cnVlXG4gICAgICAgICAgcmVqZWN0KHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBuZXcgRXJyb3IoZXJyb3IpIDogZXJyb3IpXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09IFJlYWR5U3RhdGUuUmVhZHkpIHtcbiAgICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICB0aGlzLm9mZihFdmVudC5SZWFkeVN0YXRlLCByZWFkeVN0YXRlSGFuZGxlcilcbiAgICAgICAgICB0aGlzLnBlbmRpbmdJbml0aWFsaXphdGlvbkVycm9ySGFuZGxlciA9IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMucGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3JIYW5kbGVyID0gKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICBkb25lID0gdHJ1ZVxuICAgICAgICB0aGlzLm9mZihFdmVudC5SZWFkeVN0YXRlLCByZWFkeVN0YXRlSGFuZGxlcilcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdGlhbGl6YXRpb25FcnJvckhhbmRsZXIgPSB1bmRlZmluZWRcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMucGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnBlbmRpbmdJbml0aWFsaXphdGlvbkVycm9yXG4gICAgICAgIHRoaXMucGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3IgPSB1bmRlZmluZWRcbiAgICAgICAgdGhpcy5wZW5kaW5nSW5pdGlhbGl6YXRpb25FcnJvckhhbmRsZXIoZXJyb3IpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICB0aGlzLm9uKEV2ZW50LlJlYWR5U3RhdGUsIHJlYWR5U3RhdGVIYW5kbGVyKVxuICAgIH0pXG5cbiAgICBzd2l0Y2ggKHRoaXMuZmlsZVR5cGUpIHtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnQ6XG4gICAgICAgIHRoaXMuZG9jdW1lbnQgPSB0aGlzLmVkaXRvciBhcyBEb2N1bWVudC5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRG9jdW1lbnRQcm86XG4gICAgICAgIHRoaXMuZG9jdW1lbnRQcm8gPSB0aGlzLmVkaXRvciBhcyBEb2N1bWVudFByby5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuU3ByZWFkc2hlZXQ6XG4gICAgICAgIHRoaXMuc3ByZWFkc2hlZXQgPSB0aGlzLmVkaXRvciBhcyBTcHJlYWRzaGVldC5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuVGFibGU6XG4gICAgICAgIHRoaXMudGFibGUgPSB0aGlzLmVkaXRvciBhcyBUYWJsZS5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRm9ybTpcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5lZGl0b3IgYXMgRm9ybS5FZGl0b3JcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgRmlsZVR5cGUuRmxvd2NoYXJ0OlxuICAgICAgICB0aGlzLmZsb3djaGFydCA9IHRoaXMuZWRpdG9yIGFzIEZsb3djaGFydC5FZGl0b3JcbiAgICB9XG5cbiAgICB0aGlzLmluc3RhbGxSb290RmFjYWRlKClcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzTWVzc2FnZUhhbmRsZXIpXG4gIH1cblxuICAvKipcbiAgICog562J5b6FIFNESyDov5vlhaUgUmVhZHkg54q25oCB44CC6Iul5beyIHJlYWR577yM5YiZ55u05o6l6L+U5Zue44CCXG4gICAqL1xuICBhc3luYyByZWFkeSgpIHtcbiAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09PSBSZWFkeVN0YXRlLlJlYWR5KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgYXdhaXQgdGhpcy5pbml0KClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaW5pdElmcmFtZSgpIHtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5jb25uZWN0T3B0aW9uc1xuXG4gICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJylcbiAgICBpZnJhbWUuc3R5bGUuYm9yZGVyID0gJ25vbmUnXG4gICAgaWZyYW1lLnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbidcbiAgICBpZnJhbWUuc3R5bGUud2lkdGggPSAnMTAwJSdcbiAgICBpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnXG4gICAgLy8g6Kej5Yaz6aG16Z2i5Ye6546w5rua5Yqo5p2hICYg6aG26YOo6KKr5oiq5pat55qE6Zeu6aKYXG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG5cbiAgICBpZiAoJ2FsbG93JyBpbiBpZnJhbWUpIHtcbiAgICAgIGlmcmFtZS5hbGxvdyA9XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuYWxsb3dQb2xpY3kgPz9cbiAgICAgICAgJ2Z1bGxzY3JlZW4gKjtjbGlwYm9hcmQtcmVhZCAqO2NsaXBib2FyZC13cml0ZSAqOydcbiAgICB9IGVsc2Uge1xuICAgICAgOyhpZnJhbWUgYXMgYW55KS5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5lbmRwb2ludFxuICAgIHVybC5wYXRobmFtZSA9IGAke3VybC5wYXRobmFtZX0vYXBpLyR7YXNzZXJ0PHN0cmluZz4oXG4gICAgICBvcHRpb25zLmZpbGVJZCxcbiAgICAgIG5vdEVtcHR5U3RyaW5nLFxuICAgICAgYFwiZmlsZUlkXCIgaXMgbWlzc2luZyBvciBlbXB0eTogJHtvcHRpb25zLmZpbGVJZH1gXG4gICAgKX0vcHJlbG9hZGAucmVwbGFjZSgvXFwvKy9nLCAnLycpXG5cbiAgICBjb25zdCBwYXJhbXMgPSBvcHRpb25zLnBhcmFtc1xuICAgIGlmIChwYXJhbXMpIHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KGtleSwgcGFyYW1zW2tleV0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXZpY2VNb2RlID09PSAnc3RyaW5nJykge1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2RldmljZU1vZGUnLCBvcHRpb25zLmRldmljZU1vZGUudHJpbSgpKVxuICAgIH1cblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KFNNX1BBUkFNU19LRVksIHRoaXMuc3RhcnRQYXJhbXMudG9TdHJpbmcoKSlcblxuICAgIGlmIChvcHRpb25zLnNob3dMb2FkaW5nRWZmZWN0IHx8IG9wdGlvbnMuc2hvd0xvYWRpbmcpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdsb2FkaW5nRWZmZWN0JywgJ3RydWUnKVxuICAgICAgaWYgKG9wdGlvbnMubG9hZGluZ09wdGlvbnMpIHtcbiAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXG4gICAgICAgICAgTE9BRElOR19PUFRJT05TX0tFWSxcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcHRpb25zLmxvYWRpbmdPcHRpb25zKVxuICAgICAgICApXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8g6K6+572u5b2T5YmN57yW6L6R5Zmo6K+t6KiAXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmxhbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkTGFuZyA9IG5vcm1hbGl6ZUxhbmd1YWdlKG9wdGlvbnMubGFuZylcbiAgICAgIGlmIChub3JtYWxpemVkTGFuZykge1xuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbGFuZycsIG5vcm1hbGl6ZWRMYW5nKVxuICAgICAgfVxuICAgIH1cblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdqc3ZlcicsIHByb2Nlc3MuZW52LlZFUlNJT04gPz8gJycpXG5cbiAgICBhc3NlcnQ8c3RyaW5nPihcbiAgICAgIG9wdGlvbnMudG9rZW4sXG4gICAgICBub3RFbXB0eVN0cmluZyxcbiAgICAgIGBcInRva2VuXCIgaXMgbWlzc2luZyBvciBlbXB0eTogXCIke29wdGlvbnMudG9rZW59XCJgXG4gICAgKVxuXG4gICAgYXNzZXJ0PHN0cmluZz4oXG4gICAgICBvcHRpb25zLnNpZ25hdHVyZSxcbiAgICAgIG5vdEVtcHR5U3RyaW5nLFxuICAgICAgYFwic2lnbmF0dXJlXCIgaXMgbWlzc2luZyBvciBlbXB0eTogXCIke29wdGlvbnMuc2lnbmF0dXJlfVwiYFxuICAgIClcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndXVpZCcsIHRoaXMudXVpZClcbiAgICB0aGlzLnVzZXJVdWlkICYmIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd1c2VyVXVpZCcsIHRoaXMudXNlclV1aWQpXG5cbiAgICBpZnJhbWUuc3JjID0gdXJsLnRvU3RyaW5nKClcblxuICAgIHJldHVybiBpZnJhbWVcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlUHJlbG9hZE1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2Nvbm5lY3RlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNvdXJjZSA9IHRoaXMuZWxlbWVudD8uY29udGVudFdpbmRvd1xuICAgIGlmICghc291cmNlIHx8IGV2ZW50LnNvdXJjZSAhPT0gc291cmNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZXZlbnQub3JpZ2luICYmIGV2ZW50Lm9yaWdpbiAhPT0gdGhpcy5lbmRwb2ludC5vcmlnaW4pIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSBldmVudC5kYXRhIGFzIHtcbiAgICAgIHR5cGU/OiBzdHJpbmdcbiAgICAgIHJlcXVlc3RJZD86IHN0cmluZ1xuICAgIH1cblxuICAgIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YS50eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuRVJST1IpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSAoZXZlbnQuZGF0YSBhcyB7IGVycm9yPzogeyBtZXNzYWdlPzogc3RyaW5nIH0gfSkuZXJyb3JcbiAgICAgICAgPy5tZXNzYWdlXG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlIHx8ICdpZnJhbWUgaW5pdGlhbGl6YXRpb24gZmFpbGVkJylcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdJbml0aWFsaXphdGlvbkVycm9ySGFuZGxlcikge1xuICAgICAgICB0aGlzLnBlbmRpbmdJbml0aWFsaXphdGlvbkVycm9ySGFuZGxlcihlcnJvcilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGVuZGluZ0luaXRpYWxpemF0aW9uRXJyb3IgPSBlcnJvclxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS50eXBlICE9PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5DUkVERU5USUFMU19SRVFVRVNUIHx8XG4gICAgICB0eXBlb2YgZGF0YS5yZXF1ZXN0SWQgIT09ICdzdHJpbmcnIHx8XG4gICAgICBkYXRhLnJlcXVlc3RJZC5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9IGF3YWl0IHRoaXMuZ2V0UHJlbG9hZENyZWRlbnRpYWxzKClcbiAgICAgIGlmICh0aGlzLmRpc2Nvbm5lY3RlZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgc291cmNlLnBvc3RNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogUFJFTE9BRF9NRVNTQUdFX1RZUEUuQ1JFREVOVElBTFNfUkVTUE9OU0UsXG4gICAgICAgICAgcmVxdWVzdElkOiBkYXRhLnJlcXVlc3RJZCxcbiAgICAgICAgICB0czogRGF0ZS5ub3coKSxcbiAgICAgICAgICBwYXlsb2FkOiBjcmVkZW50aWFsc1xuICAgICAgICB9LFxuICAgICAgICBldmVudC5vcmlnaW4gfHwgdGhpcy5lbmRwb2ludC5vcmlnaW5cbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc291cmNlLnBvc3RNZXNzYWdlKFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogUFJFTE9BRF9NRVNTQUdFX1RZUEUuQ1JFREVOVElBTFNfUkVTUE9OU0UsXG4gICAgICAgICAgcmVxdWVzdElkOiBkYXRhLnJlcXVlc3RJZCxcbiAgICAgICAgICB0czogRGF0ZS5ub3coKSxcbiAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgY29kZTogJ0NSRURFTlRJQUxTX0ZBSUxFRCcsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGV2ZW50Lm9yaWdpbiB8fCB0aGlzLmVuZHBvaW50Lm9yaWdpblxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UHJlbG9hZENyZWRlbnRpYWxzKCk6IFByb21pc2U8Q3JlZGVudGlhbHM+IHtcbiAgICBpZiAodGhpcy5wcmVsb2FkQ3JlZGVudGlhbHNQcm9taXNlKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcmVsb2FkQ3JlZGVudGlhbHNQcm9taXNlXG4gICAgfVxuXG4gICAgY29uc3QgcHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjcmVkZW50aWFscyA9IChhd2FpdCB0aGlzLmNvbm5lY3RPcHRpb25zLmdldENyZWRlbnRpYWxzPy4oKSkgPz8ge1xuICAgICAgICB0b2tlbjogdGhpcy5jb25uZWN0T3B0aW9ucy50b2tlbixcbiAgICAgICAgc2lnbmF0dXJlOiB0aGlzLmNvbm5lY3RPcHRpb25zLnNpZ25hdHVyZVxuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICFjcmVkZW50aWFscyB8fFxuICAgICAgICB0eXBlb2YgY3JlZGVudGlhbHMudG9rZW4gIT09ICdzdHJpbmcnIHx8XG4gICAgICAgIGNyZWRlbnRpYWxzLnRva2VuLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICB0eXBlb2YgY3JlZGVudGlhbHMuc2lnbmF0dXJlICE9PSAnc3RyaW5nJyB8fFxuICAgICAgICBjcmVkZW50aWFscy5zaWduYXR1cmUubGVuZ3RoID09PSAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGNyZWRlbnRpYWxzIHJldHVybmVkIGJ5IGdldENyZWRlbnRpYWxzJylcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNyZWRlbnRpYWxzXG4gICAgfSkoKVxuICAgIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzUHJvbWlzZSA9IHByb21pc2VcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcHJvbWlzZVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGhpcy5wcmVsb2FkQ3JlZGVudGlhbHNQcm9taXNlID09PSBwcm9taXNlKSB7XG4gICAgICAgIHRoaXMucHJlbG9hZENyZWRlbnRpYWxzUHJvbWlzZSA9IHVuZGVmaW5lZFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuUHJlbG9hZEhhbmRzaGFrZSgpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuY29ubmVjdE9wdGlvbnMudG9rZW5cbiAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmNvbm5lY3RPcHRpb25zLnNpZ25hdHVyZVxuICAgIGNvbnN0IGZpbGVHdWlkID0gdGhpcy5jb25uZWN0T3B0aW9ucy5maWxlSWRcbiAgICBjb25zdCByZXF1ZXN0SWQgPSB1dWlkKClcblxuICAgIHR5cGUgUHJlbG9hZE1lc3NhZ2UgPSB7XG4gICAgICB0eXBlPzogc3RyaW5nXG4gICAgICByZXF1ZXN0SWQ/OiBzdHJpbmdcbiAgICAgIHBheWxvYWQ/OiBQcmVsb2FkSW5pdFBheWxvYWRcbiAgICAgIGVycm9yPzoge1xuICAgICAgICBjb2RlPzogc3RyaW5nXG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmdcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVhZHlSZXNvbHZlZCA9IGZhbHNlXG4gICAgbGV0IGFja1Jlc29sdmVkID0gZmFsc2VcbiAgICBsZXQgZG9uZVJlc29sdmVkID0gZmFsc2VcbiAgICBsZXQgYWNrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGxcbiAgICBsZXQgZG9uZVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsXG5cbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgICAgICBpZiAoYWNrVGltZXIpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoYWNrVGltZXIpXG4gICAgICAgICAgYWNrVGltZXIgPSBudWxsXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvbmVUaW1lcikge1xuICAgICAgICAgIGNsZWFyVGltZW91dChkb25lVGltZXIpXG4gICAgICAgICAgZG9uZVRpbWVyID0gbnVsbFxuICAgICAgICB9XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlTWVzc2FnZSlcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc2VuZEluaXQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBjcmVhdGVQcmVsb2FkSW5pdFBheWxvYWQoe1xuICAgICAgICAgIHRva2VuLFxuICAgICAgICAgIHNpZ25hdHVyZSxcbiAgICAgICAgICBmaWxlR3VpZCxcbiAgICAgICAgICBtb2RlOiB0aGlzLmNvbm5lY3RPcHRpb25zLm1vZGUsXG4gICAgICAgICAgdHlwZTogdGhpcy5jb25uZWN0T3B0aW9ucy50eXBlLFxuICAgICAgICAgIGNvbnRlbnRWZXJzaW9uOiB0aGlzLmNvbnRlbnRWZXJzaW9uXG4gICAgICAgIH0pXG5cbiAgICAgICAgdGhpcy5lbGVtZW50Py5jb250ZW50V2luZG93Py5wb3N0TWVzc2FnZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiBQUkVMT0FEX01FU1NBR0VfVFlQRS5JTklULFxuICAgICAgICAgICAgcmVxdWVzdElkLFxuICAgICAgICAgICAgdHM6IERhdGUubm93KCksXG4gICAgICAgICAgICBwYXlsb2FkXG4gICAgICAgICAgfSxcbiAgICAgICAgICAnKidcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LmRhdGEgYXMgUHJlbG9hZE1lc3NhZ2VcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFkYXRhIHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnIHx8XG4gICAgICAgICAgdHlwZW9mIGRhdGEudHlwZSAhPT0gJ3N0cmluZydcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5SRUFEWSAmJiAhcmVhZHlSZXNvbHZlZCkge1xuICAgICAgICAgIHJlYWR5UmVzb2x2ZWQgPSB0cnVlXG4gICAgICAgICAgc2VuZEluaXQoKVxuICAgICAgICAgIGFja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZW5kSW5pdCgpXG4gICAgICAgICAgICBkb25lVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ3ByZWxvYWQgaW5pdCB0aW1lb3V0JykpXG4gICAgICAgICAgICB9LCB0aGlzLnByZWxvYWREb25lVGltZW91dE1zKVxuICAgICAgICAgIH0sIHRoaXMucHJlbG9hZEFja1RpbWVvdXRNcylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkYXRhLnJlcXVlc3RJZCAhPT0gcmVxdWVzdElkKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5BQ0spIHtcbiAgICAgICAgICBhY2tSZXNvbHZlZCA9IHRydWVcbiAgICAgICAgICBpZiAoYWNrVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dChhY2tUaW1lcilcbiAgICAgICAgICAgIGFja1RpbWVyID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIWRvbmVUaW1lcikge1xuICAgICAgICAgICAgZG9uZVRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdwcmVsb2FkIGRvbmUgdGltZW91dCcpKVxuICAgICAgICAgICAgfSwgdGhpcy5wcmVsb2FkRG9uZVRpbWVvdXRNcylcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0YS50eXBlID09PSBQUkVMT0FEX01FU1NBR0VfVFlQRS5ET05FKSB7XG4gICAgICAgICAgZG9uZVJlc29sdmVkID0gdHJ1ZVxuICAgICAgICAgIGNsZWFudXAoKVxuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGEudHlwZSA9PT0gUFJFTE9BRF9NRVNTQUdFX1RZUEUuRVJST1IpIHtcbiAgICAgICAgICBjbGVhbnVwKClcbiAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGRhdGEuZXJyb3I/Lm1lc3NhZ2UgfHwgZGF0YS5lcnJvcj8uY29kZSB8fCAncHJlbG9hZCBpbml0IGZhaWxlZCdcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVNZXNzYWdlKVxuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFyZWFkeVJlc29sdmVkICYmICFhY2tSZXNvbHZlZCAmJiAhZG9uZVJlc29sdmVkKSB7XG4gICAgICAgICAgY2xlYW51cCgpXG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcigncHJlbG9hZCByZWFkeSB0aW1lb3V0JykpXG4gICAgICAgIH1cbiAgICAgIH0sIHRoaXMucHJlbG9hZFJlYWR5VGltZW91dE1zKVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIGluaXRDaGFubmVsKCkge1xuICAgIGNvbnN0IGNoYW5uZWwgPSAodGhpcy5jaGFubmVsID0gbmV3IE9mZmljZVNES0Jyb2FkY2FzdENoYW5uZWwoe1xuICAgICAgY2hhbm5lbElkOiB0aGlzLnN0YXJ0UGFyYW1zLmNoYW5uZWxJZCxcbiAgICAgIGRlYnVnOiB0aGlzLmNvbm5lY3RPcHRpb25zLmRlYnVnLFxuICAgICAgYXV0b1N0cnVjdHVyZWRDbG9uZTogdHJ1ZSxcbiAgICAgIGRlYnVnTmFtZXNwYWNlOiAnU01fU0RLX0NIQU4nXG4gICAgfSkpXG5cbiAgICBpZiAoIXRoaXMuc3RhcnRQYXJhbXMuY2hhbm5lbElkKSB7XG4gICAgICB0aGlzLnN0YXJ0UGFyYW1zLmNoYW5uZWxJZCA9IGNoYW5uZWwuaWRcbiAgICB9XG5cbiAgICBjaGFubmVsLm9uKCdlcnJvcicsIChlcnI6IEVycm9yKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgIH0pXG5cbiAgICBjaGFubmVsLm9uKCdtZXNzYWdlRXJyb3InLCAoZXJyOiBFcnJvcikgPT4ge1xuICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9KVxuXG4gICAgLyoqXG4gICAgICog6Z2eIHNhbWUgb3JpZ2luIOaXtu+8jOeUqOS4jeS6hiBicm9hZGNhc3QgY2hhbm5lbO+8jOmcgOimgeWcqCBwb3N0TWVzc2FnZSDml7bvvIzlsIbmtojmga/ovazliLAgaWZyYW1lXG4gICAgICovXG4gICAgaWYgKCF0aGlzLnNhbWVPcmlnaW4pIHtcbiAgICAgIGNoYW5uZWwub24oXG4gICAgICAgICdwb3N0TWVzc2FnZScsXG4gICAgICAgIChldnQ6IE9mZmljZVNES01lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAgIHRoaXMuZWxlbWVudD8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoZXZ0LCAnKicpXG4gICAgICAgIH0sXG4gICAgICAgIHsgYXVkaWVuY2U6ICcqJyB9XG4gICAgICApXG4gICAgfVxuXG4gICAgY2hhbm5lbC5vbihcbiAgICAgICdtZXNzYWdlJyxcbiAgICAgIChtc2c6IE9mZmljZVNES01lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gbXNnLmRhdGEgYXMgYW55XG4gICAgICAgIC8qKlxuICAgICAgICAgKiDnm5HlkKwgUmVhZHlTdGF0ZSDlj5jmm7RcbiAgICAgICAgICovXG4gICAgICAgIGlmIChkYXRhPy5ldmVudCA9PT0gSW52b2tlTWV0aG9kLlJlYWR5U3RhdGUpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoRXZlbnQuUmVhZHlTdGF0ZSwgZGF0YS5wYXlsb2FkKVxuICAgICAgICB9IGVsc2UgaWYgKGRhdGE/LmV2ZW50ID09PSBFRElUT1JfUkVOREVSRURfRVZFTlQpIHtcbiAgICAgICAgICB0aGlzLmVtaXQoRXZlbnQuRWRpdG9yUmVuZGVyZWQsIGRhdGEucGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog5aSE55CG6ZSZ6K+v5LqL5Lu2XG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkVycm9yLFxuICAgICAgKHBheWxvYWQ6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KEV2ZW50LkVycm9yLCBwYXlsb2FkKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW57yW6L6R5Zmo77yM6K+35rGC6YWN572uXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLlNES0luaXQsXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLmNvbm5lY3RPcHRpb25zKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgaWYgKGsgPT09ICdzbGFzaE1lbnUnKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdiA9IHRoaXMuY29ubmVjdE9wdGlvbnNbayBhcyBrZXlvZiB0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9uc11cbiAgICAgICAgICBvcHRzW2tdID0gdlxuICAgICAgICAgIC8vIOWHveaVsOeUqCBib29sZWFuIOagh+iusOacieiuvue9ruWAvFxuICAgICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgb3B0c1tgaGFzJHtrWzBdLnRvVXBwZXJDYXNlKCl9JHtrLnNsaWNlKDEpfWBdID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzbGFzaE1lbnUgPSB0aGlzLmNyZWF0ZVNlcmlhbGl6ZWRTbGFzaE1lbnUoKVxuICAgICAgICBpZiAoc2xhc2hNZW51KSB7XG4gICAgICAgICAgb3B0cy5zbGFzaE1lbnUgPSBzbGFzaE1lbnVcbiAgICAgICAgfVxuXG4gICAgICAgIG9wdHMuYXBpQWRhcHRvciA9IHRoaXMuYXBpQWRhcHRvclxuICAgICAgICBvcHRzLmFwaUFkYXB0b3JDb250ZXh0ID0gdGhpcy5hcGlBZGFwdG9yQ29udGV4dFxuICAgICAgICAvLyDlvZLkuIDljJblkI7nmoTnvLrnnIHpobXphY3nva7jgIJpZnJhbWUg5L6n77yIbGl6YXJkLXNlcnZpY2UtaWZyYW1lLXNka++8ieebtOaOpea2iOi0ue+8jFxuICAgICAgICAvLyDkuI3pnIDopoHlho0gZmFsbGJhY2sg6buY6K6k5YC844CC5pyq5p2l5aaC6ZyA5omp5bGV5a2X5q6177yM5ZyoIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnMg5YaF57uf5LiA5aSE55CG44CCXG4gICAgICAgIG9wdHMuZW1wdHlQYWdlID0gdGhpcy5ub3JtYWxpemVkRW1wdHlQYWdlXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICAgIHV1aWQ6IHRoaXMudXVpZFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDnm5HlkKwgU0RLIOebuOWFs+eahOS6i+S7tu+8jOWwhuS6i+S7tui9rOWFpSBTREsg5LqL5Lu255uR5ZCs5ZmoXG4gICAgICovXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgSW52b2tlTWV0aG9kLkRpc3BhdGNoU0RLRXZlbnQsXG4gICAgICBhc3luYyAoZXZlbnQ6IHN0cmluZywgYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gSEVBREVSX0JBUlNfQ0hBTkdFRF9FVkVOVCkge1xuICAgICAgICAgIHRoaXMuYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChhcmdzWzBdIGFzIEhlYWRlckJhcnNDaGFuZ2VkUGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXQoZXZlbnQsIC4uLmFyZ3MpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBIRUFERVJfQkFSU19NRVRIT0QuaGFuZGxlQ29tbWFuZENsaWNrLFxuICAgICAgYXN5bmMgKGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMuZ2V0KGlkKVxuICAgICAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoYW5kbGVyKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIFNMQVNIX01FTlVfTUVUSE9ELmhhbmRsZUJ1dHRvbkNsaWNrLFxuICAgICAgYXN5bmMgKGNhbGxiYWNrSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5zbGFzaE1lbnVDYWxsYmFja3MuZ2V0KGNhbGxiYWNrSWQpXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtzbGFzaE1lbnVdIGNhbGxiYWNrIG5vdCBmb3VuZDogJHtTdHJpbmcoY2FsbGJhY2tJZCl9YClcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoaGFuZGxlcigpKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgRURJVE9SX0ZBQ0FERV9DQUxMQkFDS19NRVRIT0QsXG4gICAgICBhc3luYyAoY2FsbGJhY2tJZDogc3RyaW5nLCBhcmdzOiB1bmtub3duW10gPSBbXSkgPT4ge1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gdGhpcy5lZGl0b3JGYWNhZGVDYWxsYmFja3MuZ2V0KGNhbGxiYWNrSWQpXG4gICAgICAgIGlmICh0eXBlb2YgaGFuZGxlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICBgW2VkaXRvckZhY2FkZV0gY2FsbGJhY2sgbm90IGZvdW5kOiAke1N0cmluZyhjYWxsYmFja0lkKX1gXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIoLi4uYXJncykpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICAvKipcbiAgICAgKiDnm5HlkKznvJbovpHlmajnm7jlhbPnmoTkuovku7bvvIzlsIbkuovku7bovazlhaXnvJbovpHlmajkuovku7bnm5HlkKzlmahcbiAgICAgKi9cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBJbnZva2VNZXRob2QuRGlzcGF0Y2hFZGl0b3JFdmVudCxcbiAgICAgIGFzeW5jIChldmVudDogc3RyaW5nLCBwYXlsb2FkOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGlmIChldmVudCA9PT0gJ2NvbGxhYm9yYXRvcnNDaGFuZ2VkJykge1xuICAgICAgICAgIHRoaXMudXBkYXRlQ29sbGFib3JhdG9ycyhwYXlsb2FkKVxuICAgICAgICB9XG4gICAgICAgIC8vIOe8uuecgemhteS6i+S7tuaYryBTREsg57qn5LqL5Lu277yM5Y2z5L2/6LWw5LqGIGVkaXRvciDpgJrpgZPkuZ/nm7TmjqXlpJbmipvliLAgU0RLIOWunuS+i++8jFxuICAgICAgICAvLyDmlrnkvr/lrr/kuLvpgJrov4cgYHNkay5vbignZW1wdHlQYWdlU2hvd24nLCAuLi4pYCDorqLpmIXjgIJcbiAgICAgICAgLy8g5ZCM5pe25LuN5L+d55WZIGVtaXR0ZXIuZW1pdO+8jOmBv+WFjeegtOWdjyBlZGl0b3Iub24g55qE6K6i6ZiF6Lev5b6E44CCXG4gICAgICAgIGlmIChpc0VtcHR5UGFnZUV2ZW50KGV2ZW50KSkge1xuICAgICAgICAgIHRoaXMuZW1pdChldmVudCwgcGF5bG9hZClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVtaXR0ZXIuZW1pdChldmVudCwgcGF5bG9hZClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIHRoaXMuYmluZENvbnRhaW5lck1ldGhvZEhhbmRsZXJzKClcblxuICAgIGlmICh3aW5kb3cudmlzdWFsVmlld3BvcnQpIHtcbiAgICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uVmlld3BvcnRSZXNpemUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uVmlld3BvcnRSZXNpemUpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWIneWni+WMluWkhOeQhue8lui+keWZqOmcgOimgeWuueWZqOi/lOWbnuaVsOaNrueahOaWueazlVxuICAgKi9cbiAgcHJpdmF0ZSBiaW5kQ29udGFpbmVyTWV0aG9kSGFuZGxlcnMoKSB7XG4gICAgY29uc3QgY2hhbm5lbCA9IHRoaXMuY2hhbm5lbFxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsLFxuICAgICAgYXN5bmMgKFxuICAgICAgICBmaWxlSWQ6IHN0cmluZyxcbiAgICAgICAgaW5mbz86IEdlbmVyYXRlVXJsSW5mbyxcbiAgICAgICAgc21QYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3RPcHRpb25zLmdlbmVyYXRlVXJsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7Q29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsfVwiIG5vdCBmb3VuZGApXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLmNvbm5lY3RPcHRpb25zLmdlbmVyYXRlVXJsKGZpbGVJZCwgaW5mbywgc21QYXJhbXMpXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5IYW5kbGVDdXN0b21UYXNrLFxuICAgICAgYXN5bmMgKHRhc2tJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5oYW5kbGVDdXN0b21UYXNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7Q29udGFpbmVyTWV0aG9kLkhhbmRsZUN1c3RvbVRhc2t9XCIgbm90IGZvdW5kYClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuaGFuZGxlQ3VzdG9tVGFzayh0YXNrSWQpXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcblxuICAgIGNoYW5uZWwuYWRkSW52b2tlSGFuZGxlcihcbiAgICAgIENvbnRhaW5lck1ldGhvZC5PcGVuTGluayxcbiAgICAgIGFzeW5jICh1cmw6IHN0cmluZywgdGFyZ2V0Pzogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0T3B0aW9ucy5vcGVuTGluayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCIke0NvbnRhaW5lck1ldGhvZC5PcGVuTGlua31cIiBub3QgZm91bmRgKVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMub3BlbkxpbmsodXJsLCB0YXJnZXQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsLFxuICAgICAgYXN5bmMgKHVybDogc3RyaW5nKSA9PiB7XG4gICAgICAgIC8vIDIwMjQwNjA3IOmSn+eri+WSjOWNoumYs+aUueS6hiBzZGstaWZyYW1lLWFzc2V0cyDnmoQgcGFyc2VVcmwg5Ye95pWw5LmL5ZCO77yMZ2V0RmlsZUluZm9Gcm9tVXJsIOeOsOWcqOW/hemhu+eUseeUqOaIt+aPkOS+m1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMuZ2V0RmlsZUluZm9Gcm9tVXJsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFwiJHtDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsfVwiIG5vdCBhIGZ1bmN0aW9uYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0T3B0aW9ucy5nZXRGaWxlSW5mb0Zyb21VcmwodXJsKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLk1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUsXG4gICAgICBhc3luYyAocGF5bG9hZDogTW91c2VNb3ZlUGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdHlwZW9mIHRoaXMuY29ubmVjdE9wdGlvbnMubWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgXCIke0NvbnRhaW5lck1ldGhvZC5NZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlfVwiIG5vdCBmb3VuZGBcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnICYmIHBheWxvYWQgIT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgICAgICBwYXlsb2FkLnggKz0gcmVjdC54XG4gICAgICAgICAgcGF5bG9hZC55ICs9IHJlY3QueVxuXG4gICAgICAgICAgaWYgKHBheWxvYWQuaXNNZW50aW9uKSB7XG4gICAgICAgICAgICBwYXlsb2FkLm1lbnRpb25JbmZvLmxlZnQgKz0gcmVjdC54XG4gICAgICAgICAgICBwYXlsb2FkLm1lbnRpb25JbmZvLnRvcCArPSByZWN0LnlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb25uZWN0T3B0aW9ucy5tZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlKHBheWxvYWQpXG4gICAgICB9LFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG5cbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0Q29udGFpbmVyUmVjdCxcbiAgICAgIGFzeW5jICgpID0+IHRoaXMuZ2V0Q29udGFpbmVyUmVjdCgpLFxuICAgICAgeyBhdWRpZW5jZTogQVVEIH1cbiAgICApXG4gICAgY2hhbm5lbC5hZGRJbnZva2VIYW5kbGVyKFxuICAgICAgQ29udGFpbmVyTWV0aG9kLlNob3dUb2FzdCxcbiAgICAgIGFzeW5jIChvcHRpb25zOiBTaG93VG9hc3RPcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdE9wdGlvbnMuc2hvd1RvYXN0Py4ob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICB7IGF1ZGllbmNlOiBBVUQgfVxuICAgIClcbiAgICBjaGFubmVsLmFkZEludm9rZUhhbmRsZXIoXG4gICAgICBDb250YWluZXJNZXRob2QuR2V0Q3JlZGVudGlhbHMsXG4gICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbm5lY3RPcHRpb25zLmdldENyZWRlbnRpYWxzPy4oKVxuICAgICAgfSxcbiAgICAgIHsgYXVkaWVuY2U6IEFVRCB9XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0SGVhZGVyQmFyc0ZhY2FkZSgpOiBIZWFkZXJCYXJzRmFjYWRlIHtcbiAgICByZXR1cm4gaW5pdEhlYWRlckJhcnNGYWNhZGUoe1xuICAgICAgZ2V0VmlzaWJsZVN0YXRlOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNWaXNpYmxlLFxuICAgICAgc2V0VmlzaWJsZVN0YXRlOiAodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNWaXNpYmxlID0gdmlzaWJsZVxuICAgICAgfSxcbiAgICAgIGdldENvbW1hbmRzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcyxcbiAgICAgIGdldE92ZXJyaWRlc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcyxcbiAgICAgIGdldFJlZnNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRSZWZzLFxuICAgICAgZ2V0VGl0bGVIYW5kbGVyOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIsXG4gICAgICBzZXRUaXRsZUhhbmRsZXI6IChoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciA9IGhhbmRsZXJcbiAgICAgIH0sXG4gICAgICBpc1RpdGxlU3Vic2NyaWJlZDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkLFxuICAgICAgc2V0VGl0bGVTdWJzY3JpYmVkOiAoc3Vic2NyaWJlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmliZWQgPSBzdWJzY3JpYmVkXG4gICAgICB9LFxuICAgICAgaW52b2tlSGVhZGVyQmFyczogdGhpcy5pbnZva2VIZWFkZXJCYXJzLmJpbmQodGhpcyksXG4gICAgICBlbWl0SGVhZGVyQmFyc0Vycm9yOiAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGAke21lc3NhZ2V9OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkludGVybmFsVGl0bGVDaGFuZ2U6IChsaXN0ZW5lcjogKHRpdGxlOiB1bmtub3duKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdHRlci5vbigndGl0bGVDaGFuZ2UnLCBsaXN0ZW5lcilcbiAgICAgIH0sXG4gICAgICBzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKFxuICAgICAgICAgIEludm9rZU1ldGhvZC5MaXN0ZW5FZGl0b3JFdmVudCxcbiAgICAgICAgICBbJ3RpdGxlQ2hhbmdlJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXVkaWVuY2U6IEFVRFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog6K6i6ZiFIGlmcmFtZSDkvqcgdGl0bGVDaGFuZ2Ug5LqL5Lu277yM5bm25Zyo5a6/5Li76K6+572u5LqGIGhlYWRlckJhcnMub25UaXRsZUNoYW5nZSDml7bovazlj5HmoIfpopjlgLzjgIJcbiAgICog6L6T5YWl77ya5peg44CCXG4gICAqIOi+k+WHuu+8muebkeWQrOW7uueri+aIkOWKn+WQjui/lOWbniBQcm9taXNlPHZvaWQ+77yb6YeN5aSN6LCD55So5Y+q5Lya6K6i6ZiF5LiA5qyh44CCXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGVuc3VyZUhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmlwdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBlbnN1cmVIZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpcHRpb24odGhpcy5jcmVhdGVIZWFkZXJCYXJzSG9zdCgpKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBpbnZva2VIZWFkZXJCYXJzPFQ+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHBheWxvYWQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBhcmdzID0gcGF5bG9hZCA9PT0gdW5kZWZpbmVkID8gW10gOiBbcGF5bG9hZF1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShtZXRob2QgYXMgYW55LCBhcmdzLCB7XG4gICAgICBhdWRpZW5jZTogQVVEXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc3luY0hlYWRlckJhcnNDb21tYW5kcyhjb21tYW5kczogSGVhZGVyQmFyc0NvbW1hbmRTdGF0ZVtdKSB7XG4gICAgc3luY0hlYWRlckJhcnNDb21tYW5kcyh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCksIGNvbW1hbmRzKVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVIZWFkZXJCYXJzSG9zdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ2V0VmlzaWJsZVN0YXRlOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNWaXNpYmxlLFxuICAgICAgc2V0VmlzaWJsZVN0YXRlOiAodmlzaWJsZTogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNWaXNpYmxlID0gdmlzaWJsZVxuICAgICAgfSxcbiAgICAgIGdldENvbW1hbmRzTWFwOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNDb21tYW5kcyxcbiAgICAgIGdldE92ZXJyaWRlc01hcDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzQ29tbWFuZE92ZXJyaWRlcyxcbiAgICAgIGdldFJlZnNNYXA6ICgpID0+IHRoaXMuaGVhZGVyQmFyc0NvbW1hbmRSZWZzLFxuICAgICAgZ2V0VGl0bGVIYW5kbGVyOiAoKSA9PiB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIsXG4gICAgICBzZXRUaXRsZUhhbmRsZXI6IChoYW5kbGVyOiBIZWFkZXJCYXJzVGl0bGVDaGFuZ2VIYW5kbGVyIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgIHRoaXMuaGVhZGVyQmFyc1RpdGxlQ2hhbmdlSGFuZGxlciA9IGhhbmRsZXJcbiAgICAgIH0sXG4gICAgICBpc1RpdGxlU3Vic2NyaWJlZDogKCkgPT4gdGhpcy5oZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkLFxuICAgICAgc2V0VGl0bGVTdWJzY3JpYmVkOiAoc3Vic2NyaWJlZDogYm9vbGVhbikgPT4ge1xuICAgICAgICB0aGlzLmhlYWRlckJhcnNUaXRsZUNoYW5nZVN1YnNjcmliZWQgPSBzdWJzY3JpYmVkXG4gICAgICB9LFxuICAgICAgaW52b2tlSGVhZGVyQmFyczogdGhpcy5pbnZva2VIZWFkZXJCYXJzLmJpbmQodGhpcyksXG4gICAgICBlbWl0SGVhZGVyQmFyc0Vycm9yOiAobWVzc2FnZTogc3RyaW5nLCBlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgdGhpcy5lbWl0KFxuICAgICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKGAke21lc3NhZ2V9OiAke1N0cmluZyhlcnIpfWApXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBvbkludGVybmFsVGl0bGVDaGFuZ2U6IChsaXN0ZW5lcjogKHRpdGxlOiB1bmtub3duKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgIHRoaXMuZW1pdHRlci5vbigndGl0bGVDaGFuZ2UnLCBsaXN0ZW5lcilcbiAgICAgIH0sXG4gICAgICBzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZTogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmNoYW5uZWwuaW52b2tlKFxuICAgICAgICAgIEludm9rZU1ldGhvZC5MaXN0ZW5FZGl0b3JFdmVudCxcbiAgICAgICAgICBbJ3RpdGxlQ2hhbmdlJ10sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXVkaWVuY2U6IEFVRFxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZChwYXlsb2FkPzogSGVhZGVyQmFyc0NoYW5nZWRQYXlsb2FkKSB7XG4gICAgYXBwbHlIZWFkZXJCYXJzQ2hhbmdlZCh0aGlzLmNyZWF0ZUhlYWRlckJhcnNIb3N0KCksIHBheWxvYWQpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN5bmNIZWFkZXJCYXJzVmlzaWJsZSgpIHtcbiAgICByZXR1cm4gYXdhaXQgc3luY0hlYWRlckJhcnNWaXNpYmxlKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0SGVhZGVyQmFyc1Zpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgIGF3YWl0IHNldEhlYWRlckJhcnNWaXNpYmxlKHRoaXMuY3JlYXRlSGVhZGVyQmFyc0hvc3QoKSwgdmlzaWJsZSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYoaWQ6IHN0cmluZyk6IEhlYWRlckJhcnNDb21tYW5kUmVmIHtcbiAgICByZXR1cm4gZ2V0SGVhZGVyQmFyc0NvbW1hbmRSZWYodGhpcy5jcmVhdGVIZWFkZXJCYXJzSG9zdCgpLCBpZClcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jlhozkuIDkuKrlj6/kvpsgaWZyYW1lIOS+p+WPjeWQkeiwg+eUqOeahCBmYWNhZGUgY2FsbGJhY2vjgIJcbiAgICog6L6T5YWl77ya5a6/5Li75L6nIGNhbGxiYWNr44CCXG4gICAqIOi+k+WHuu+8muS+m+i3qOeql+WNj+iuruS9v+eUqOeahCBjYWxsYmFja0lk44CCXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2s6IEVkaXRvckZhY2FkZUNhbGxiYWNrKSB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IGBlZGl0b3ItZmFjYWRlOiR7dXVpZCgpfWBcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJZCwgY2FsbGJhY2spXG4gICAgcmV0dXJuIGNhbGxiYWNrSWRcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jplIDlt7Lms6jlhoznmoQgZmFjYWRlIGNhbGxiYWNr44CCXG4gICAqIOi+k+WFpe+8mmNhbGxiYWNrSWTjgIJcbiAgICog6L6T5Ye677ya5peg44CCXG4gICAqL1xuICBwcml2YXRlIHVucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhjYWxsYmFja0lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVkaXRvckZhY2FkZUNhbGxiYWNrcy5kZWxldGUoY2FsbGJhY2tJZClcbiAgfVxuXG4gIC8qKlxuICAgKiDliJvlu7rln7rkuo4gbWV0aG9kLXBhdGgg55qE5qih5Z2XIGZhY2FkZeOAglxuICAgKiDovpPlhaXvvJrmqKHlnZfliY3nvIDkuI7lsJHph4/oh6rlrprkuYnlrp7njrDopobnm5bjgIJcbiAgICog6L6T5Ye677ya5YW25L2Z5pa55rOV5oyJIGAke3ByZWZpeH0uJHttZXRob2R9YCDoh6rliqjmoaXmjqXjgIJcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIG92ZXJyaWRlczogUGFydGlhbDxUPlxuICApOiBUIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KG92ZXJyaWRlcyBhcyBULCB7XG4gICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcChwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgVF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUVkaXRvckZhY2FkZShgJHtwcmVmaXh9LiR7cHJvcH1gLCBhcmdzKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICog5Li6IHZhbHVlLWJhc2VkIGxvY2F0b3Ig5Yib5bu65pys5Zyw5a+56LGhIGZhY2FkZeOAglxuICAgKiDovpPlhaXvvJptZXRob2QtcGF0aCDliY3nvIDjgIFsb2NhdG9yIOWSjOmdmeaAgeWxnuaAp+OAglxuICAgKiDovpPlh7rvvJrmlK/mjIHnu6fnu63ov5znqIvosIPnlKjnmoTmnKzlnLAgZmFjYWRl44CCXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICAgIHByZWZpeDogc3RyaW5nLFxuICAgIGxvY2F0b3I6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHN0YXRpY0ZpZWxkczogUGFydGlhbDxUPlxuICApOiBUIHtcbiAgICByZXR1cm4gbmV3IFByb3h5KHN0YXRpY0ZpZWxkcyBhcyBULCB7XG4gICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwcm9wICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hvdWxkU2tpcEZhY2FkZVByb3h5UHJvcChwcm9wKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRhcmdldCwgcHJvcCkpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3AgYXMga2V5b2YgVF1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXN5bmMgKC4uLmFyZ3M6IHVua25vd25bXSkgPT5cbiAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZUVkaXRvckZhY2FkZShgJHtwcmVmaXh9LiR7cHJvcH1gLCBbbG9jYXRvciwgLi4uYXJnc10pXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiDms6jlhozkuIDkuKrln7rkuo4gY2FsbGJhY2sg5Y2P6K6u55qEIGxpc3RlbmVy44CCXG4gICAqIOi+k+WFpe+8muazqOWGjOaWueazleWQjeS4juebkeWQrOWZqOOAglxuICAgKiDovpPlh7rvvJrkvpvlrr/kuLvkvqflj5bmtojms6jlhoznmoTlh73mlbDjgIJcbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lcjxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBsaXN0ZW5lcjogKHBheWxvYWQ6IFQpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2tJZCA9IHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjayhhc3luYyAocGF5bG9hZDogVCkgPT5cbiAgICAgIGxpc3RlbmVyKHBheWxvYWQpXG4gICAgKVxuICAgIHRoaXMuaW52b2tlRWRpdG9yRmFjYWRlKG1ldGhvZCwgW2NhbGxiYWNrSWRdKS5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoXG4gICAgICAgIEV2ZW50LkVycm9yLFxuICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvclxuICAgICAgICAgID8gZXJyXG4gICAgICAgICAgOiBuZXcgRXJyb3IoYHJlZ2lzdGVyIGVkaXRvciBmYWNhZGUgbGlzdGVuZXIgZmFpbGVkOiAke1N0cmluZyhlcnIpfWApXG4gICAgICApXG4gICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy51bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2soY2FsbGJhY2tJZClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxSb290RmFjYWRlKCkge1xuICAgIHRoaXMuY2xlYXJSb290RmFjYWRlKClcbiAgICBPYmplY3QuYXNzaWduKFxuICAgICAgdGhpcyxcbiAgICAgIGJ1aWxkUm9vdEZhY2FkZVN0YXRlKHtcbiAgICAgICAgZmlsZVR5cGU6IHRoaXMuZmlsZVR5cGUsXG4gICAgICAgIGludm9rZUVkaXRvckZhY2FkZTogdGhpcy5pbnZva2VFZGl0b3JGYWNhZGUuYmluZCh0aGlzKSxcbiAgICAgICAgbGlzdGVuRWRpdG9yRXZlbnQ6IHRoaXMubGlzdGVuRWRpdG9yRXZlbnQuYmluZCh0aGlzKSxcbiAgICAgICAgY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlOiB0aGlzLmNyZWF0ZUVkaXRvckZhY2FkZU1vZHVsZS5iaW5kKHRoaXMpLFxuICAgICAgICBjcmVhdGVWYWx1ZU9iamVjdEZhY2FkZTogdGhpcy5jcmVhdGVWYWx1ZU9iamVjdEZhY2FkZS5iaW5kKHRoaXMpLFxuICAgICAgICByZWdpc3RlckVkaXRvckZhY2FkZUxpc3RlbmVyOlxuICAgICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lci5iaW5kKHRoaXMpLFxuICAgICAgICByZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrOlxuICAgICAgICAgIHRoaXMucmVnaXN0ZXJFZGl0b3JGYWNhZGVDYWxsYmFjay5iaW5kKHRoaXMpLFxuICAgICAgICB1bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2s6XG4gICAgICAgICAgdGhpcy51bnJlZ2lzdGVyRWRpdG9yRmFjYWRlQ2FsbGJhY2suYmluZCh0aGlzKVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICAvKipcbiAgICog6YeN572u5qC557qn6IO95Yqb5ZG95ZCN56m66Ze077yM6YG/5YWN5LiN5ZCM5aWX5Lu26Ze05a2X5q615q6L55WZ44CCXG4gICAqIOi+k+WFpe+8muaXoOOAglxuICAgKiDovpPlh7rvvJrlsIbmiYDmnIkgZmFjYWRlIOWtl+autee9ruepuuOAglxuICAgKi9cbiAgcHJpdmF0ZSBjbGVhclJvb3RGYWNhZGUoKSB7XG4gICAgdGhpcy50aXRsZSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuaGlzdG9yeSA9IHVuZGVmaW5lZFxuICAgIHRoaXMuY29tbWVudHMgPSB1bmRlZmluZWRcbiAgICB0aGlzLmxvY2tzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5tZW50aW9uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5jb250ZW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy52ZXJzaW9uID0gdW5kZWZpbmVkXG4gICAgdGhpcy5wcmVzZW50YXRpb24gPSB1bmRlZmluZWRcbiAgICB0aGlzLnNlbGVjdGlvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2VhcmNoID0gdW5kZWZpbmVkXG4gICAgdGhpcy5vdXRsaW5lID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zaWRlYmFyID0gdW5kZWZpbmVkXG4gICAgdGhpcy50YWJsZXMgPSB1bmRlZmluZWRcbiAgICB0aGlzLnNldHRpbmdzID0gdW5kZWZpbmVkXG4gICAgdGhpcy53b3JrYm9vayA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYWN0aXZlU2hlZXQgPSB1bmRlZmluZWRcbiAgICB0aGlzLmNoYXJ0cyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2VsZWN0aW9ucyA9IHVuZGVmaW5lZFxuICAgIHRoaXMuc2xpZGVzID0gdW5kZWZpbmVkXG4gICAgdGhpcy50ZXh0ID0gdW5kZWZpbmVkXG4gICAgdGhpcy56b29tID0gdW5kZWZpbmVkXG4gICAgdGhpcy5ldmVudFN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZFxuICAgIHRoaXMuYmF0Y2hDaGFuZ2VzID0gdW5kZWZpbmVkXG4gICAgdGhpcy5leHBvcnQgPSB1bmRlZmluZWRcbiAgICB0aGlzLnByaW50ID0gdW5kZWZpbmVkXG4gICAgdGhpcy5zZXRGb2N1cyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIOiwg+eUqOaYvuW8jyBlZGl0b3IgZmFjYWRlIG1ldGhvZC1wYXRo44CCXG4gICAqIOi+k+WFpe+8mm1ldGhvZC1wYXRoIOS4juWPguaVsOaVsOe7hOOAglxuICAgKiDovpPlh7rvvJrov5Tlm54gaWZyYW1lIOS+p+W6j+WIl+WMlue7k+aenOOAglxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBpbnZva2VFZGl0b3JGYWNhZGU8VD4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgYXJnczogdW5rbm93bltdID0gW11cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY2hhbm5lbC5pbnZva2UoXG4gICAgICBJbnZva2VNZXRob2QuSW52b2tlRWRpdG9yTWV0aG9kLFxuICAgICAgW21ldGhvZCwgYXJnc10sXG4gICAgICB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICog5Li657uT5p6E5YyWIGZhY2FkZSDlu7rnq4sgZWRpdG9yIOS6i+S7tuebkeWQrO+8jOW5tui/lOWbnuWPlua2iOebkeWQrOWHveaVsOOAglxuICAgKiDovpPlhaXvvJrkuovku7blkI3kuI7nm5HlkKzlmajjgIJcbiAgICog6L6T5Ye677ya6L+U5Zue5LiA5Liq5Y+v5Y+W5raI5b2T5YmN55uR5ZCs55qE5Ye95pWw44CCXG4gICAqL1xuICBwcml2YXRlIGxpc3RlbkVkaXRvckV2ZW50PFQ+KFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgbGlzdGVuZXI6IChwYXlsb2FkOiBUKSA9PiB2b2lkXG4gICk6ICgpID0+IHZvaWQge1xuICAgIHRoaXMuZW1pdHRlci5vbihldmVudCwgbGlzdGVuZXIgYXMgRXZlbnRDYWxsYmFjaylcbiAgICB0aGlzLmNoYW5uZWxcbiAgICAgIC5pbnZva2UoSW52b2tlTWV0aG9kLkxpc3RlbkVkaXRvckV2ZW50LCBbZXZlbnRdLCB7XG4gICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycjogdW5rbm93bikgPT4ge1xuICAgICAgICB0aGlzLmVtaXQoXG4gICAgICAgICAgRXZlbnQuRXJyb3IsXG4gICAgICAgICAgZXJyIGluc3RhbmNlb2YgRXJyb3JcbiAgICAgICAgICAgID8gZXJyXG4gICAgICAgICAgICA6IG5ldyBFcnJvcihgbGlzdGVuIGVkaXRvciBldmVudCBmYWlsZWQ6ICR7U3RyaW5nKGVycil9YClcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5lbWl0dGVyLm9mZihldmVudCwgbGlzdGVuZXIgYXMgRXZlbnRDYWxsYmFjaylcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRFZGl0b3IoKSB7XG4gICAgY29uc3QgYWRqdXN0RXZlbnROYW1lID0gKGV2ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgICAgLy8g5YW85a655pen5LqL5Lu25ZCNXG4gICAgICBpZiAoZXZlbnQgPT09ICdzYXZlU3RhdHVzRGlkQ2hhbmdlJykge1xuICAgICAgICByZXR1cm4gJ3NhdmVTdGF0dXNDaGFuZ2VkJ1xuICAgICAgfVxuICAgICAgcmV0dXJuIGV2ZW50XG4gICAgfVxuXG4gICAgY29uc3QgaW5zdCA9IHtcbiAgICAgIG9uOiBhc3luYyAoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IEV2ZW50Q2FsbGJhY2spID0+IHtcbiAgICAgICAgZXZlbnQgPSBhZGp1c3RFdmVudE5hbWUoZXZlbnQpXG4gICAgICAgIHRoaXMuZW1pdHRlci5vbihldmVudCwgY2FsbGJhY2spXG5cbiAgICAgICAgYXdhaXQgdGhpcy5jaGFubmVsLmludm9rZShJbnZva2VNZXRob2QuTGlzdGVuRWRpdG9yRXZlbnQsIFtldmVudF0sIHtcbiAgICAgICAgICBhdWRpZW5jZTogQVVEXG4gICAgICAgIH0pXG4gICAgICB9LFxuXG4gICAgICBvZmY6IChldmVudDogc3RyaW5nLCBjYWxsYmFjazogRXZlbnRDYWxsYmFjaykgPT4ge1xuICAgICAgICBldmVudCA9IGFkanVzdEV2ZW50TmFtZShldmVudClcbiAgICAgICAgdGhpcy5lbWl0dGVyLm9mZihldmVudCwgY2FsbGJhY2spXG4gICAgICB9LFxuXG4gICAgICBnZXRDb2xsYWJvcmF0b3JzOiAoKSA9PiBbLi4udGhpcy5jb2xsYWJvcmF0b3JzXVxuICAgIH1cblxuICAgIC8vIOWIm+W7uuW1jOWllyBQcm94eSDku6XmlK/mjIHlpJrlsYLnuqfosIPnlKhcbiAgICBjb25zdCBjcmVhdGVOZXN0ZWRQcm94eSA9IChwYXRoOiBzdHJpbmdbXSA9IFtdKTogYW55ID0+IHtcbiAgICAgIGNvbnN0IHByb3h5RnVuYyA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5RnVuYywge1xuICAgICAgICBnZXQ6ICh0YXJnZXQsIHByb3ApID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnICYmIHNob3VsZFNraXBGYWNhZGVQcm94eVByb3AocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyDlpoLmnpzmmK/moLnnuqfliKvnmoTpooTlrprkuYnmlrnms5XvvIhvbi9vZmbvvInvvIznm7TmjqXov5Tlm55cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGluc3QsIHByb3ApXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gKGluc3QgYXMgYW55KVtwcm9wXVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIOWvueS6juWHveaVsOeahOWGhee9ruWxnuaAp++8iOWmgiBjYWxs44CBYXBwbHnjgIFiaW5kIOetie+8iVxuICAgICAgICAgIC8vIOi/lOWbnuWOn+WHveaVsOeahOWvueW6lOWxnuaAp++8jOi/meagt+e8luivkeWQjueahOS7o+eggeaJjeiDveato+W4uOW3peS9nFxuICAgICAgICAgIC8vIOS+i+Wmgu+8mmVkaXRvci50ZXN0KCkg57yW6K+R5ZCO5Y+Y5oiQIGVkaXRvci50ZXN0LmNhbGwoKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgWydjYWxsJywgJ2FwcGx5JywgJ2JpbmQnXS5pbmNsdWRlcyhwcm9wKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuICh0YXJnZXQgYXMgYW55KVtwcm9wXVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIOWvueS6juWFtuS7luWxnuaAp++8jOi/lOWbnuaWsOeahOW1jOWllyBQcm94eVxuICAgICAgICAgIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVOZXN0ZWRQcm94eShbLi4ucGF0aCwgcHJvcF0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9LFxuICAgICAgICBhcHBseTogKF90YXJnZXQsIF90aGlzQXJnLCBhcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAvLyDlvZPkvZzkuLrlh73mlbDosIPnlKjml7bvvIzlsIblrozmlbTot6/lvoTlkozlj4LmlbDlj5HpgIHnu5nnvJbovpHlmahcbiAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsLmludm9rZShcbiAgICAgICAgICAgICAgSW52b2tlTWV0aG9kLkludm9rZUVkaXRvck1ldGhvZCxcbiAgICAgICAgICAgICAgW3BhdGguam9pbignLicpLCBhcmdzXSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGF1ZGllbmNlOiBBVURcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBjb25zdCBwID0gY3JlYXRlTmVzdGVkUHJveHkoKVxuXG4gICAgcmV0dXJuIHBcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkSGFuZGxlTWVzc2FnZShldnQ6IE9mZmljZVNES0V2ZW50TGlrZSk6IGJvb2xlYW4ge1xuICAgIGlmIChcbiAgICAgIC8vIOS4jeaYr+W9k+WJjSBjaGFubmVsIOeahOa2iOaBr1xuICAgICAgZXZ0LmNoYW5uZWxJZCAhPT0gdGhpcy5jaGFubmVsLmlkIHx8XG4gICAgICAvLyDmtojmga/lt7Lnu4/ov4fmnJ9cbiAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcmVzdHJpY3QtcGx1cy1vcGVyYW5kcyAqL1xuICAgICAgZXZ0LnRpbWUgKyB0aGlzLm1lc3NhZ2VFeHBpcmVzIDwgRGF0ZS5ub3coKSB8fFxuICAgICAgLy8g5bey57uP5aSE55CG6L+HXG4gICAgICB0aGlzLmhhbmRsZWRNZXNzYWdlQ2FjaGUuaGFzKGV2dC5jb250ZXh0Lm1lc3NhZ2VJZClcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwcml2YXRlIGdldENvbnRhaW5lclJlY3QoKSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IHBheWxvYWQ6IENvbnRhaW5lclJlY3QgPSB7XG4gICAgICB2aWV3cG9ydFdpZHRoOiB3aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgIHZpZXdwb3J0SGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQsXG4gICAgICB0b3A6IHJlY3QudG9wLFxuICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgYm90dG9tOiByZWN0LmJvdHRvbSxcbiAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0LFxuICAgICAgc2Nyb2xsVG9wOiBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50Py5zY3JvbGxUb3AsXG4gICAgICB2aXN1YWxWaWV3cG9ydDoge31cbiAgICB9XG5cbiAgICBpZiAod2luZG93LnZpc3VhbFZpZXdwb3J0KSB7XG4gICAgICBwYXlsb2FkLnZpc3VhbFZpZXdwb3J0ID0ge1xuICAgICAgICB3aWR0aDogd2luZG93LnZpc3VhbFZpZXdwb3J0LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5oZWlnaHQsXG4gICAgICAgIG9mZnNldExlZnQ6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0LFxuICAgICAgICBvZmZzZXRUb3A6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AsXG4gICAgICAgIHBhZ2VMZWZ0OiB3aW5kb3cudmlzdWFsVmlld3BvcnQucGFnZUxlZnQsXG4gICAgICAgIHBhZ2VUb3A6IHdpbmRvdy52aXN1YWxWaWV3cG9ydC5wYWdlVG9wLFxuICAgICAgICBzY2FsZTogd2luZG93LnZpc3VhbFZpZXdwb3J0LnNjYWxlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBheWxvYWRcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ29sbGFib3JhdG9ycyhwYXlsb2FkOiB1bmtub3duKSB7XG4gICAgaWYgKFxuICAgICAgcGF5bG9hZCAmJlxuICAgICAgdHlwZW9mIHBheWxvYWQgPT09ICdvYmplY3QnICYmXG4gICAgICBBcnJheS5pc0FycmF5KFxuICAgICAgICAocGF5bG9hZCBhcyBQYXJ0aWFsPENvbGxhYm9yYXRvcnNDaGFuZ2VkUGF5bG9hZD4pLmNvbGxhYm9yYXRvcnNcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBwYXlsb2FkIGFzIENvbGxhYm9yYXRvcnNDaGFuZ2VkUGF5bG9hZFxuICAgICAgdGhpcy5jb2xsYWJvcmF0b3JzID0gWy4uLmRhdGEuY29sbGFib3JhdG9yc11cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbm90RW1wdHlTdHJpbmcoaW5wdXQ/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgJiYgaW5wdXQudHJpbSgpLmxlbmd0aCA+IDBcbn1cblxuY29uc3QgRU1QVFlfUEFHRV9FVkVOVFMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAnZW1wdHlQYWdlU2hvd24nLFxuICAnZW1wdHlQYWdlQWN0aW9uJyxcbiAgJ2VtcHR5UGFnZUhpZGRlbidcbl0pXG5cbmZ1bmN0aW9uIGlzRW1wdHlQYWdlRXZlbnQoZXZlbnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gRU1QVFlfUEFHRV9FVkVOVFMuaGFzKGV2ZW50KVxufVxuXG4vKipcbiAqIOmcgOimgeWuueWZqOaPkOS+m+e7mee8lui+keWZqOS9v+eUqOeahOaWueazlVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lck1ldGhvZHMge1xuICAvKipcbiAgICog6I635Y+W5a655Zmo5bC65a+4562J5L+h5oGvXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkdldENvbnRhaW5lclJlY3RdPzogKCkgPT4gQ29udGFpbmVyUmVjdFxuXG4gIC8qKlxuICAgKiDlpITnkIbnn7PloqjmlofmoaPlhoXngrnlh7vpk77mjqXkuovku7ZcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuT3BlbkxpbmtdPzogKFxuICAgIC8qKlxuICAgICAqIOebruagh+mTvuaOpVxuICAgICAqL1xuICAgIHVybDogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICog5oSP5LmJ5ZKMIHdpbmRvdy5vcGVuIOeahOesrOS6jOS4quWPguaVsOS4gOagt++8jOWxnuS6juefs+WiqOW7uuiurueahOWAvO+8jOWFt+S9k+aYr+WQpumcgOimgeS9v+eUqOivt+aOpeWFpeaWueiHquihjOWIpOaWreOAglxuICAgICAqL1xuICAgIHRhcmdldD86IHN0cmluZ1xuICApID0+IHZvaWRcblxuICAvKipcbiAgICog55Sf5oiQ5o+S5YWl5Yiw55+z5aKo5paH5qGj5Lit55qE6ZO+5o6l77yM55So5LqO5aSE55CGIEAg5paH5Lu2562J5Yqf6IO96ZyA6KaB5o+S5YWl55qE6ZO+5o6lXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLkdlbmVyYXRlVXJsXT86IEdlbmVyYXRlVXJsSGFuZGxlclxuXG4gIC8qKlxuICAgKiDnlKjkuo7np7vliqjnq6/lpITnkIYgQCDngrnlh7vkuovku7ZcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZV0/OiAoXG4gICAgcGF5bG9hZDogTW91c2VNb3ZlUGF5bG9hZFxuICApID0+IHZvaWRcblxuICAvKipcbiAgICog55So5LqO5LuO5a6i5oi35Lia5YqhIFVSTCDkuK3ojrflj5blr7nlupTnmoTmlofku7YgSUTvvIzkvpvnvJbovpHlmajkvb/nlKjjgIJcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuR2V0RmlsZUluZm9Gcm9tVXJsXT86ICh1cmw6IHN0cmluZykgPT4gUHJvbWlzZTxcbiAgICB8IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOaWh+S7tiBJRFxuICAgICAgICAgKi9cbiAgICAgICAgZmlsZUlkOiBzdHJpbmdcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZFxuICA+XG5cbiAgLyoqXG4gICAqIOeUqOS6juaYvuekuuWuouaIt+iHquWumuS5iXRvYXN044CCXG4gICAqL1xuICBbQ29udGFpbmVyTWV0aG9kLlNob3dUb2FzdF0/OiAob3B0aW9uczogU2hvd1RvYXN0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPlxuXG4gIC8qKlxuICAgKiDpgJrnn6XnlKjmiLfmiafooYzoh6rlrprkuYnmk43kvZzvvIzmk43kvZznlLHnlKjmiLfoh6rlrprkuYnmjInpkq7op6blj5FcbiAgICovXG4gIFtDb250YWluZXJNZXRob2QuSGFuZGxlQ3VzdG9tVGFza10/OiAodGFza0lkOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD5cbiAgLyoqXG4gICAqIOivt+axguWuueWZqOiOt+WPlumJtOadg+S/oeaBr1xuICAgKiBAcmV0dXJucyB7Q3JlZGVudGlhbHN9IOmJtOadg+S/oeaBr1xuICAgKi9cbiAgW0NvbnRhaW5lck1ldGhvZC5HZXRDcmVkZW50aWFsc106ICgpID0+IFByb21pc2U8Q3JlZGVudGlhbHM+XG59XG5cbmV4cG9ydCBlbnVtIEV2ZW50IHtcbiAgLyoqXG4gICAqIFNESyDliJ3lp4vljJbkuovku7bvvIznlKjkuo7lhoXpg6jpgLvovpFcbiAgICovXG4gIFNES0luaXQgPSAnU0RLSW5pdCcsXG5cbiAgLyoqXG4gICAqIOmUmeivr+S6i+S7tu+8jOWMheWQq+e8lui+keWZqOaKm+WHuueahOmUmeivr1xuICAgKi9cbiAgRXJyb3IgPSAnZXJyb3InLFxuXG4gIC8qKlxuICAgKiBPZmZpY2VTREsg54q25oCB5Y+Y5YyW5LqL5Lu2XG4gICAqL1xuICBSZWFkeVN0YXRlID0gJ3JlYWR5U3RhdGUnLFxuXG4gIC8qKlxuICAgKiDnvJbovpHlmajnnJ/mraPlrozmiJBcIummluWxj+a4suafk1wi55qE5L+h5Y+344CCXG4gICAqXG4gICAqIOeUsSBpZnJhbWUg5YaF57yW6L6R5Zmo5Zyo6Ieq6Lqr5riy5p+T56iz5a6a5ZCO6YCa6L+HIGNoYW5uZWwg5Y+R6YCB77yMU0RLIOS+p+i9rOWPkeS4uuacrOS6i+S7tuOAglxuICAgKiDlrr/kuLvlj6/mjInpnIDnm5HlkKzlroPmnaXljLrliIYgU0RLIFJlYWR5IOS4jue8lui+keWZqOinhuiniemmluWxj+WujOaIkOOAglxuICAgKi9cbiAgRWRpdG9yUmVuZGVyZWQgPSAnZWRpdG9yUmVuZGVyZWQnLFxuXG4gIC8qKlxuICAgKiDnvJbovpHlmajkuovku7ZcbiAgICovXG4gIEVkaXRvckV2ZW50ID0gJ2VkaXRvckV2ZW50J1xufVxuXG4vKipcbiAqIGlmcmFtZSDlhoXkvqfnlKjmnaXkuIrmiqVcIue8lui+keWZqOW3suWujOaIkOmmluWxj+a4suafk1wi55qEIGNoYW5uZWwg5LqL5Lu25ZCN44CCXG4gKlxuICog5LiOIGBJbnZva2VNZXRob2QuUmVhZHlTdGF0ZWAg55qE5p6a5Li+5YC85L+d5oyB5Zyo5ZCM5LiA5ZG95ZCN56m66Ze077yM5L2G5LiN5YWlIHNoYXJlZCDljIXvvIxcbiAqIOS7peWFjei3qOerr+eJiOacrOiApuWQiOOAgmlmcmFtZSDkvqfnuqblrprlhpnlrZfnrKbkuLLljbPlj6/jgIJcbiAqL1xuZXhwb3J0IGNvbnN0IEVESVRPUl9SRU5ERVJFRF9FVkVOVCA9ICdlZGl0b3JSZW5kZXJlZCdcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlIHtcbiAgdXVpZD86IHN0cmluZ1xuICBldmVudDogc3RyaW5nXG4gIGJvZHk6IGFueVxuICBlcnJvcj86IEVycm9yXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUV2ZW50UGF5bG9hZCB7XG4gIGV2ZW50OiBJbnZva2VNZXRob2RcbiAgZGF0YTogdW5rbm93bltdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyTWV0aG9kUGF5bG9hZCB7XG4gIG1ldGhvZDogQ29udGFpbmVyTWV0aG9kXG4gIGFyZ3M6IHVua25vd25bXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWR5U3RhdGVFdmVudCB7XG4gIHN0YXRlOiBSZWFkeVN0YXRlXG4gIGZpbGVUeXBlOiBGaWxlVHlwZVxuICBlcnJvcj86IEVycm9yIHwgc3RyaW5nXG59XG5cbi8qKlxuICog5LqL5Lu25Zue6LCD5Ye95pWwXG4gKi9cbmV4cG9ydCB0eXBlIEV2ZW50Q2FsbGJhY2sgPSAoLi4uYXJnczogYW55W10pID0+IGFueVxuXG4vKipcbiAqIFNESyB0b2FzdCDmlofmoYjphY3nva7vvIzlgLzku4XlhYHorrjlrZfnrKbkuLLmiJbltYzlpZflr7nosaHjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTREtUb2FzdE9wdGlvbnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBTREtUb2FzdE9wdGlvbnMgfCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiDpgI/kvKDnu5kgaWZyYW1lIOe8lui+keWZqOeahOS4u+mimOmFjee9ruOAglxuICog5b2T5YmNIHdlYm9mZmljZS1qcy1zZGsg5LuF6LSf6LSj6LeoIGlmcmFtZSDkvKDovpPvvIzkuI3lnKjlrr/kuLvkvqfnuqbmnZ/lrZfmrrXnu4boioLjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25UaGVtZUNvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd25cbn1cblxuLyoqXG4gKiBpZnJhbWUg5YaF572u5Yqg6L296aG16YWN572u77yM5Y+q5pSv5oyB5Y+v5bqP5YiX5YyW5a2X5q6144CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZGluZ09wdGlvbnMge1xuICAvKipcbiAgICog6Ieq5a6a5LmJ5Yqg6L296aG1IExvZ2/jgILkvKDlrZfnrKbkuLLml7bkvZzkuLrlm77niYcgVVJMIC8gZGF0YVVSTCDkvb/nlKjvvJtcbiAgICog5LygIGZhbHNlIOaXtumakOiXjyBMb2dv77yb5LiN5Lyg5pe25L2/55SoIGlmcmFtZSDlhoXpu5jorqTnn7PloqggTG9nb+OAglxuICAgKi9cbiAgbG9nbz86IHN0cmluZyB8IGZhbHNlXG4gIC8qKlxuICAgKiDoh6rlrprkuYnliqDovb3pobXmj5DnpLrmlofmoYjjgILkuI3kvKDml7bkvb/nlKggaWZyYW1lIOWGhem7mOiupOaWh+ahiOOAglxuICAgKi9cbiAgdGlwPzogc3RyaW5nXG59XG5cbi8qKlxuICogT2ZmaWNlU0RLIOWIneWni+WMluWPguaVsFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9mZmljZVNES09wdGlvbnNcbiAgZXh0ZW5kcyBPbWl0PENvbnRhaW5lck1ldGhvZHMsICdnZXRDb250YWluZXJSZWN0Jz4ge1xuICAvKipcbiAgICog55+z5aKoIFNESyDmnI3liqHlmajlnLDlnYBcbiAgICovXG4gIGVuZHBvaW50OiBzdHJpbmdcblxuICAvKipcbiAgICog5oKo6KaB5omT5byA55qE5paH5qGjIElEXG4gICAqL1xuICBmaWxlSWQ6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiDnlKjkuo7nn7PloqggU0RLIOmJtOadg+eUqOeahOetvuWQjVxuICAgKi9cbiAgc2lnbmF0dXJlOiBzdHJpbmdcblxuICAvKipcbiAgICogaWZyYW1lIOaMgui9veeahOebruagh+WuueWZqFxuICAgKi9cbiAgY29udGFpbmVyOiBIVE1MRWxlbWVudFxuXG4gIC8qKlxuICAgKiDnlKjkuo7mgqjns7vnu5/pibTmnYPkvb/nlKjnmoQgdG9rZW5cbiAgICovXG4gIHRva2VuOiBzdHJpbmdcblxuICAvKipcbiAgICog5Yi35paw6Ym05p2D5L+h5oGv55qE6Ze06ZqU5pe26Ze077yM5Y2V5L2N5Li65q+r56eSXG4gICAqL1xuICByZWZyZXNoQ3JlZGVudGlhbHNJbnRlcnZhbDogbnVtYmVyXG5cbiAgLyoqXG4gICAqIOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqFxuICAgKi9cbiAgcGFyYW1zPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICB9XG5cbiAgLyoqXG4gICAqIOW9k+WJjeaJk+W8gOaooeW8j+OAgmBwcmV2aWV3YCDnlKjkuo7pooTop4jmgIHvvIzlhbbkvZnlnLrmma/pu5jorqTmjIkgYGVkaXRgIOWkhOeQhuOAglxuICAgKi9cbiAgbW9kZT86ICdlZGl0JyB8ICdwcmV2aWV3J1xuXG4gIC8qKlxuICAgKiDnn7PloqggU0RLIFVSTCDlj4LmlbAgdXJsP3NtUGFyYW1zPXtwYXJhbXN977yM55So5LqO5Lyg6YCS55+z5aKoIFNESyDlhoXpg6jpnIDopoHnmoTlj4LmlbDjgIJcbiAgICovXG4gIHNtUGFyYW1zPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICB8IEFycmF5PHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuXG4gIC8qKlxuICAgKiDmjIflrprnn7PloqggU0RLIOe8lui+keWZqOeVjOmdouivreiogO+8jOa3u+WKoOWIsCBpZnJhbWUgVVJMU2VhcmNoUGFyYW1zIOeahOWPguaVsOWIl+ihqOOAglxuICAgKiDoi6XmnKrmjIflrprvvIzliJkgaWZyYW1lIOS9v+eUqOacjeWKoeWZqOiuvue9rueahOm7mOiupOivreiogOOAglxuICAgKlxuICAgKiDnm67liY3mlK/mjIHnmoTmoIflh4bor63oqIDlj5blgLzvvJpcbiAgICogMS4gemgtQ07vvIjnroDkvZPkuK3mlofvvIlcbiAgICogMi4gemgtVFfvvIjnuYHkvZPkuK3mlofvvIlcbiAgICogMy4gZW4tVVPvvIjoi7HmlofvvIlcbiAgICogNC4gamEtSlDvvIjml6XmlofvvIlcbiAgICogNS4ga28tS1LvvIjpn6nmlofvvIlcbiAgICogNi4gZXMtRVPvvIjopb/nj63niZnor63vvIlcbiAgICogNy4gcHQtUFTvvIjokaHokITniZnor63vvIlcbiAgICogOC4gZGUtREXvvIjlvrfor63vvIlcbiAgICogOS4gZnItRlLvvIjms5Xor63vvIlcbiAgICogMTAuIGl0LUlU77yI5oSP5aSn5Yip6K+t77yJXG4gICAqIDExLiBydS1SVe+8iOS/hOivre+8iVxuICAgKiAxMi4gaWQtSUTvvIjljbDlsLzor63vvIlcbiAgICogMTMuIHZpLVZO77yI6LaK5Y2X6K+t77yJXG4gICAqIDE0LiB0aC1USO+8iOazsOivre+8iVxuICAgKiAxNS4gbXMtTVnvvIjpqazmnaXor63vvIlcbiAgICogMTYuIGFyLVNB77yI6Zi/5ouJ5Lyv6K+t77yJXG4gICAqXG4gICAqIOS4uuWFvOWuueaXp+eJiOWGmeazle+8jOS7jeaOpeWPlyBlbuOAgWph77yM5Lyg5YWl5ZCO5Lya6Ieq5Yqo5pig5bCE5Li6IGVuLVVT44CBamEtSlDjgIJcbiAgICovXG4gIGxhbmc/OlxuICAgIHwgJ3poLUNOJ1xuICAgIHwgJ3poLVRXJ1xuICAgIHwgJ2VuLVVTJ1xuICAgIHwgJ2phLUpQJ1xuICAgIHwgJ2tvLUtSJ1xuICAgIHwgJ2VzLUVTJ1xuICAgIHwgJ3B0LVBUJ1xuICAgIHwgJ2RlLURFJ1xuICAgIHwgJ2ZyLUZSJ1xuICAgIHwgJ2l0LUlUJ1xuICAgIHwgJ3J1LVJVJ1xuICAgIHwgJ2lkLUlEJ1xuICAgIHwgJ3ZpLVZOJ1xuICAgIHwgJ3RoLVRIJ1xuICAgIHwgJ21zLU1ZJ1xuICAgIHwgJ2FyLVNBJ1xuICAgIHwgJ2VuJ1xuICAgIHwgJ2phJ1xuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjmj5Dlj4rnmoTmta7liqjljaHniYfnu4Tku7ZcbiAgICovXG4gIGRpc2FibGVNZW50aW9uQ2FyZHM/OiBEaXNhYmxlTWVudGlvbkNhcmRzXG5cbiAgLyoqXG4gICAqIOeUqOS6juimhueblue8lui+keWZqOWGhemDqOWIhiB0b2FzdCDmlofmoYjjgIJcbiAgICog5pSv5oyB5aWX5Lu257G75Z6L77yaZm9ybeOAgWRvY3VtZW50UHJv44CBcHJlc2VudGF0aW9u44CBc3ByZWFkc2hlZXTjgIF0YWJsZe+8iOS7heWvueaUr+aMgSB1aSDphY3nva7nmoTlpZfku7bnlJ/mlYjvvInjgIJcbiAgICog5b2T5YmN5bey5paH5qGj5YyW5pSv5oyB5a2X5q6177yadWkudG9hc3QudGlwcy5lZGl0Lm5vUGVybWlzc2lvbuOAglxuICAgKiDlhbbku5blrZfmrrXmmoLkuI3kvZzkuLrnqLPlrprlhazlhbEgQVBJIOaJv+ivuuOAglxuICAgKi9cbiAgdWk/OiB7XG4gICAgdG9hc3Q/OiBTREtUb2FzdE9wdGlvbnNcbiAgfVxuXG4gIC8qKlxuICAgKiDnlKjkuo7mjqfliLYgaWZyYW1lIGZlYXR1cmUgcG9saWN5IChodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVFRQL0hlYWRlcnMvRmVhdHVyZS1Qb2xpY3kpIOOAglxuICAgKiDkvJropobnm5bpu5jorqTnmoQgcG9saWN577yM5Zug5q2k5L2/55So5pe26ZyA6KaB5rOo5oSP5oqK6ZyA6KaB55qEIHBvbGljeSDlhpnlrozmlbTjgIJcbiAgICovXG4gIGFsbG93UG9saWN5Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIOaYr+WQpuW8gOWQr+iwg+ivleaooeW8j++8jHRydWUg5Lya6YCa6L+HIGNvbnNvbGUg5omT5Y2w5LiA5Lqb5L+h5oGvXG4gICAqL1xuICBkZWJ1Zz86IGJvb2xlYW5cblxuICAvKipcbiAgICog57yW6L6R5Zmo5o+S5Lu26YWN572u77yM5LiN5piv5omA5pyJ57G75Z6L55qE5aWX5Lu26YO95pSv5oyB77yM5Lul5aWX5Lu25piv5ZCm5o+Q5L6bIFBsdWdpbk9wdGlvbnMg5Li65YeGXG4gICAqL1xuICBwbHVnaW5zPzogU3ByZWFkc2hlZXQuUGx1Z2luT3B0aW9ucyB8IFRhYmxlLlBsdWdpbk9wdGlvbnNcblxuICAvKipcbiAgICogaWZyYW1lIHBvc3RNZXNzYWdlIOeahOebruaghyBvcmlnaW7vvIzpu5jorqTmmK/lvZPliY3pobXpnaLnmoQgbG9jYXRpb24ub3JpZ2lu44CCXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICB0YXJnZXRPcmlnaW4/OiBzdHJpbmdcblxuICAvKipcbiAgICog5L2/55So5LuA5LmI6K6+5aSH57G75Z6L5qih5byP77yM5Lya55u05o6l5b2x5ZON5Yqf6IO95ZKM5qC35byP77yM5LiN5Lyg5YC85oiW56m65a2X56ym5Liy5YiZ6buY6K6k55SoIHVzZXItYWdlbnQg6Ieq5Yqo5Yik5pat44CC5Y+X54mI5pys6ZmQ5Yi277yM5LiN5piv5omA5pyJ57G75Z6L6YO95pSv5oyB44CCXG4gICAqL1xuICBkZXZpY2VNb2RlPzogRGV2aWNlTW9kZVxuXG4gIC8qKlxuICAgKiDmmK/lkKbnpoHnlKjpu5jorqTnmoTnrb7lkI3nu4Tku7bvvIzku6XmlK/mjIHoh6rlrprkuYnnrb7lkI3nu4Tku7bjgILlj5fniYjmnKzpmZDliLbvvIzpg6jliIbniYjmnKznmoTnibnlrprnsbvlnovmlofmoaPmiY3mlK/mjIHjgIJcbiAgICovXG4gIGRpc2FibGVTaWduYXR1cmVDb21wb25lbnQ/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOaOp+WItiBoZWFkZXJiYXIg57uE5Lu25piv5ZCm5bGV56S677yMZmFsc2Ug6KGo56S66ZqQ6JeP44CCXG4gICAqL1xuICBoZWFkZXJCYXJzVmlzaWJsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICog5piv5ZCm6ZqQ6JePIGlmcmFtZSDlhoUgQUkg5YWl5Y+j44CCXG4gICAqIOWvueW6lCBpZnJhbWUg5YaFIE9mZmljZVNESyDnmoTnjrDmnIkgQUkg5YWl5Y+j5byA5YWz6IO95Yqb44CCXG4gICAqL1xuICBkaXNhYmxlQWlFbnRyeT86IGJvb2xlYW5cblxuICAvKipcbiAgICog57yW6L6R5Zmo5Li76aKY6YWN572u44CCXG4gICAqIOivpeWPguaVsOS8mumAj+S8oOWIsCBpZnJhbWUg5YaF5ZCE5aWX5Lu25Yid5aeL5YyW6ZO+6Lev77yb5pyq5Lyg5pe25L+d5oyBIGlmcmFtZSDpu5jorqTkuLvpopjjgIJcbiAgICovXG4gIHRoZW1lPzogQ29tbW9uVGhlbWVDb25maWdcblxuICAvKipcbiAgICogZG9jcyDmlpzmnaDoj5zljZXphY3nva7jgIJcbiAgICog5LuFIGRvY3Mg5paH5Lu257G75Z6L55Sf5pWI77ybYGJ1dHRvbi5jYWxsYmFja2Ag5a6e6ZmF6L+Q6KGM5Zyo5a6/5Li76aG177yMXG4gICAqIOS8muWcqCBpZnJhbWUg5YaF54K55Ye76I+c5Y2V5oyJ6ZKu5ZCO6YCa6L+HIHBvc3RNZXNzYWdlL2NoYW5uZWwg5Zue6LCD6Kem5Y+R44CCXG4gICAqL1xuICBzbGFzaE1lbnU/OiBTbGFzaE1lbnVPcHRpb25zXG5cbiAgLyoqXG4gICAqIOaYr+WQpuaYvuekuuWGhee9rueahOWKoOi9veWKqOeUu++8jOWPquWcqOmdmeaAgei1hOa6kOWKoOi9veWIsOe8lui+keWZqOa4suafk+i/meS4qumYtuauteaYvuekulxuICAgKi9cbiAgc2hvd0xvYWRpbmdFZmZlY3Q/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIOaYr+WQpuWQr+eUqCBpZnJhbWUg5YaF572u6buY6K6k5Yqg6L296aG177yM6buY6K6kIGZhbHNl44CCXG4gICAqIOmakOiXj+WQjuaOpeWFpeaWueWPr+iHquWumuS5ieWklumDqCBsb2FkaW5n44CCXG4gICAqL1xuICBzaG93TG9hZGluZz86IGJvb2xlYW5cblxuICAvKipcbiAgICogaWZyYW1lIOWGhee9ruWKoOi9vemhtemFjee9ruOAguS7heWcqCBgc2hvd0xvYWRpbmcgPT09IHRydWVgXG4gICAqIOaIliBgc2hvd0xvYWRpbmdFZmZlY3QgPT09IHRydWVgIOaXtumAj+S8oOe7mSBpZnJhbWXjgIJcbiAgICovXG4gIGxvYWRpbmdPcHRpb25zPzogTG9hZGluZ09wdGlvbnNcblxuICAvKipcbiAgICog55So5LqO5Zyo57yW6L6R5Zmo5Y+R6LW3IEFQSSDor7fmsYLml7bvvIzlr7nor7fmsYLlj4LmlbDov5vooYzkv67mlLnnmoTlh73mlbDjgILor6bnu4bnlKjms5Xop4HmlofmoaPjgIJcbiAgICovXG4gIGFwaUFkYXB0b3I/OiBBUElBZGFwdG9yXG5cbiAgLyoqXG4gICAqIOeUqOS6juWcqOe8lui+keWZqOWPkei1tyBBUEkg6K+35rGC5pe277yM5a+56K+35rGC5Y+C5pWw6L+b6KGM5L+u5pS555qE5Ye95pWw5pe25Lyg5YWl55qE5LiK5LiL5paH5pWw5o2u44CCXG4gICAqL1xuICBhcGlBZGFwdG9yQ29udGV4dD86IFJlcXVlc3RDb250ZXh0XG5cbiAgLyoqXG4gICAqIOeUqOS6juWIpOaWremAmuS/oea2iOaBr+i/h+acn+aXtumXtO+8jOi/h+acn+WQjueahOa2iOaBr+S8muiiq+aKm+W8g++8jOm7mOiupCA1IOWIhumSn+OAglxuICAgKi9cbiAgbWVzc2FnZUV4cGlyZXM/OiBudW1iZXJcblxuICAvKipcbiAgICog5Yqg5a+G5ZCO55qE55So5oi3aWRcbiAgICovXG4gIHVzZXJVdWlkPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIOe8uuecgemhte+8iEVtcHR5IFBhZ2XvvInphY3nva7jgIJcbiAgICogLSDkuI3kvKDmiJbkvKAgYHRydWVg77ya5ZCv55So6buY6K6k57y655yB6aG16IO95Yqb77yI5pyJ5YaF572u5Zu+54mH5LiO6buY6K6k5paH5qGI77yMKirml6DmjInpkq4qKu+8iVxuICAgKiAtIOS8oCBgZmFsc2Vg77ya5a6M5YWo5YWz6ZetXG4gICAqIC0g5Lyg5a+56LGh77ya57K+57uG5o6n5Yi25ZCv55So55qEIHNjZW5l44CBdG9rZW4g6L+H5pyf562W55Wl77yM5Lul5Y+K5q+P5LiqIHNjZW5lIOeahFxuICAgKiAgIOaWh+ahiC/mjInpkq7oh6rlrprkuYnvvIhgb3ZlcnJpZGVzYO+8ieOAgum7mOiupOS4jea4suafk+S7u+S9leaMiemSru+8jOWuv+S4u+mcgOimgeaMiemSruaXtuW/hemhu1xuICAgKiAgIOWcqCBgb3ZlcnJpZGVzW3NjZW5lXS5wcmltYXJ5L3NlY29uZGFyeWAg6YeM5pi+5byP6YWN572uIGxhYmVs77yM54K55Ye757uf5LiA6Kem5Y+RXG4gICAqICAgYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu255Sx5a6/5Li75aSE55CG44CCXG4gICAqXG4gICAqIOebuOWFs+S6i+S7tu+8mmBlbXB0eVBhZ2VTaG93bmAgLyBgZW1wdHlQYWdlQWN0aW9uYCAvIGBlbXB0eVBhZ2VIaWRkZW5g44CCXG4gICAqIOivpuingSBgLi90eXBlcy9FbXB0eVBhZ2UudHNg44CCXG4gICAqL1xuICBlbXB0eVBhZ2U/OiBib29sZWFuIHwgRW1wdHlQYWdlT3B0aW9uc1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGFzc2VydDxUPihcbiAgaW5wdXQ6IGFueSxcbiAgY29uZGl0aW9uOiAoaW5wdXQ6IGFueSkgPT4gYm9vbGVhbixcbiAgbWVzc2FnZTogc3RyaW5nXG4pOiBUIHtcbiAgaWYgKGNvbmRpdGlvbihpbnB1dCkpIHtcbiAgICByZXR1cm4gaW5wdXRcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxufVxuIiwiaW1wb3J0IHsgT2ZmaWNlU0RLLCBPZmZpY2VTREtPcHRpb25zIH0gZnJvbSAnLi9PZmZpY2VTREsnXG5pbXBvcnQge1xuICB2YWxpZGF0ZUNvbm5lY3RWMk9wdGlvbnMsXG4gIHR5cGUgQ29udGVudFZlcnNpb24sXG4gIHR5cGUgQ29ubmVjdFYyRmlsZVR5cGVcbn0gZnJvbSAnLi90eXBlcy9Db25uZWN0VjInXG5cbmV4cG9ydCB7XG4gIENPTk5FQ1RfVjJfRklMRV9UWVBFUyxcbiAgaXNDb25uZWN0VjJGaWxlVHlwZSxcbiAgaXNDb25uZWN0VjJNb2RlLFxuICB2YWxpZGF0ZUNvbm5lY3RWMk9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcy9Db25uZWN0VjInXG5leHBvcnQgdHlwZSB7IENvbm5lY3RWMkZpbGVUeXBlIH0gZnJvbSAnLi90eXBlcy9Db25uZWN0VjInXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdE9wdGlvbnMgZXh0ZW5kcyBPZmZpY2VTREtPcHRpb25zIHt9XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdFYyT3B0aW9ucyBleHRlbmRzIENvbm5lY3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFYyIOWll+S7tuexu+Wei+OAguW9k+WJjeeUqOS6jiBpZnJhbWUg5L6n6LWE5rqQ6YCJ5oup6aKE55WZ44CCXG4gICAqL1xuICB0eXBlOiBDb25uZWN0VjJGaWxlVHlwZVxuXG4gIC8qKlxuICAgKiBWMiDmiZPlvIDmqKHlvI/jgIJcbiAgICovXG4gIG1vZGU6ICdlZGl0JyB8ICdwcmV2aWV3J1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0SW50ZXJuYWwoXG4gIG9wdGlvbnM6IENvbm5lY3RPcHRpb25zICYgeyB0eXBlPzogQ29ubmVjdFYyRmlsZVR5cGUgfSxcbiAgY29udGVudFZlcnNpb24/OiBDb250ZW50VmVyc2lvblxuKTogUHJvbWlzZTxPZmZpY2VTREs+IHtcbiAgbGV0IHNkazogT2ZmaWNlU0RLIHwgdW5kZWZpbmVkXG4gIHRyeSB7XG4gICAgc2RrID0gbmV3IE9mZmljZVNESyhvcHRpb25zLCBjb250ZW50VmVyc2lvbilcbiAgICBhd2FpdCBzZGsuaW5pdCgpXG4gICAgcmV0dXJuIHNka1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKG9wdGlvbnMudHlwZSkge1xuICAgICAgc2RrPy5kaXNjb25uZWN0KClcbiAgICB9XG4gICAgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBpbml0IE9mZmljZVNESycsIHtcbiAgICAgIGVycm9yOiBlLFxuICAgICAgb3B0aW9uc1xuICAgIH0pXG4gICAgdGhyb3cgZVxuICB9XG59XG5cbi8qKlxuICog5Yid5aeL5YyWIFNES++8jOi/lOWbniBQcm9taXNl77yM5b2TIFJlYWRTdGF0ZSDlj5jkuLogUmVhZHkg5oiWIEZhaWxlZCDml7bvvIxQcm9taXNlIOWwhuiiqyByZXNvbHZl44CCXG4gKiBQcm9taXNlIHJlc292bGVkIOS4jeS7o+ihqOe8lui+keWZqOW3sue7j+WujOaVtOWKoOi9veWujOavle+8jOWPquS7o+ihqCBTREsg5bey57uP5YeG5aSH5aW95LqG44CCXG4gKiDlkIzml7YgUHJvbWlzZSDkuIDnm7QgcGVuZGluZyDkuZ/kuI3ku6PooajnvJbovpHlmajliqDovb3lpLHotKXvvIzlj6rku6Pooajml6Dms5XpgJrov4cgU0RLIOWSjOe8lui+keWZqOS6pOS6kuOAglxuICog5q+U5aaC5Y+X5rWP6KeI5Zmo6ZmQ5Yi25peg5rOV5Y+R5Ye6IHBvc3RNZXNzYWdlKCkg5pe277yMUHJvbWlzZSDlsIbkvJrkuIDnm7QgcGVuZGluZ+OAglxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdChvcHRpb25zOiBDb25uZWN0T3B0aW9ucyk6IFByb21pc2U8T2ZmaWNlU0RLPiB7XG4gIHJldHVybiBhd2FpdCBjb25uZWN0SW50ZXJuYWwob3B0aW9ucylcbn1cblxuLyoqXG4gKiDliJ3lp4vljJYgVjIg57uf5LiA57yW6L6RIC8g6aKE6KeI5YWl5Y+j44CCXG4gKlxuICogVjIg5Zyo6L+Q6KGM5pe25by65Yi25qCh6aqMIHR5cGUg5ZKMIG1vZGXvvIzlupXlsYIgaWZyYW1lIOWIneWni+WMlua1geeoi+S4juaXpyBjb25uZWN0IOWFseeUqOOAglxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29ubmVjdFYyKG9wdGlvbnM6IENvbm5lY3RWMk9wdGlvbnMpOiBQcm9taXNlPE9mZmljZVNESz4ge1xuICB2YWxpZGF0ZUNvbm5lY3RWMk9wdGlvbnMob3B0aW9ucylcblxuICByZXR1cm4gYXdhaXQgY29ubmVjdEludGVybmFsKG9wdGlvbnMsICd2MicpXG59XG4iLCJpbXBvcnQgKiBhcyBEb2N1bWVudFBybyBmcm9tICcuL3R5cGVzL0RvY3VtZW50UHJvJ1xuaW1wb3J0ICogYXMgRG9jdW1lbnQgZnJvbSAnLi90eXBlcy9Eb2N1bWVudCdcbmltcG9ydCAqIGFzIFNwcmVhZHNoZWV0IGZyb20gJy4vdHlwZXMvU3ByZWFkc2hlZXQnXG5pbXBvcnQgKiBhcyBQcmVzZW50YXRpb24gZnJvbSAnLi90eXBlcy9QcmVzZW50YXRpb24nXG5pbXBvcnQgKiBhcyBUYWJsZSBmcm9tICcuL3R5cGVzL1RhYmxlJ1xuaW1wb3J0ICogYXMgRm9ybSBmcm9tICcuL3R5cGVzL0Zvcm0nXG5pbXBvcnQgKiBhcyBGbG93Y2hhcnQgZnJvbSAnLi90eXBlcy9GbG93Q2hhcnQnXG5pbXBvcnQgeyBFdmVudE1hcCBhcyBCYXNlRXZlbnRNYXAsIEJhc2VFZGl0b3IgfSBmcm9tICcuL3R5cGVzL0Jhc2VFZGl0b3InXG5cbmV4cG9ydCAqIGZyb20gJ3dlYm9mZmljZS1qcy1zZGstc2hhcmVkJ1xuXG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3QnXG5cbmV4cG9ydCAqIGZyb20gJy4vT2ZmaWNlU0RLJ1xuXG5leHBvcnQgdHlwZSB7XG4gIEVtcHR5UGFnZVNjZW5lLFxuICBFbXB0eVBhZ2VPcHRpb25zLFxuICBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZSxcbiAgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlLFxuICBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9ucyxcbiAgRW1wdHlQYWdlU2hvd25QYXlsb2FkLFxuICBFbXB0eVBhZ2VBY3Rpb25QYXlsb2FkLFxuICBFbXB0eVBhZ2VIaWRkZW5QYXlsb2FkLFxuICBGaWxlT3BlbkZhaWxlZFJlYXNvbixcbiAgVG9rZW5FeHBpcmVkU3RyYXRlZ3lcbn0gZnJvbSAnLi90eXBlcy9FbXB0eVBhZ2UnXG5leHBvcnQgdHlwZSB7XG4gIFNsYXNoTWVudUJ1dHRvbixcbiAgU2xhc2hNZW51RW50cnksXG4gIFNsYXNoTWVudU9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcy9TbGFzaE1lbnUnXG5leHBvcnQge1xuICBBTExfRU1QVFlfUEFHRV9TQ0VORVMsXG4gIG5vcm1hbGl6ZUVtcHR5UGFnZU9wdGlvbnNcbn0gZnJvbSAnLi90eXBlcy9FbXB0eVBhZ2UnXG5cbmV4cG9ydCB7XG4gIEJhc2VFZGl0b3IsXG4gIERvY3VtZW50UHJvLFxuICBEb2N1bWVudCxcbiAgU3ByZWFkc2hlZXQsXG4gIFByZXNlbnRhdGlvbixcbiAgVGFibGUsXG4gIEZvcm0sXG4gIEZsb3djaGFydCxcbiAgQmFzZUV2ZW50TWFwXG59XG5cbmV4cG9ydCBjb25zdCBTVEFSVF9QQVJBTVNfRklFTEQgPSAnc21QYXJhbXMnXG4iLCJpbXBvcnQgdHlwZSB7IENvbm5lY3RWMkZpbGVUeXBlLCBDb250ZW50VmVyc2lvbiB9IGZyb20gJy4vdHlwZXMvQ29ubmVjdFYyJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZWxvYWRJbml0UGF5bG9hZCB7XG4gIHRva2VuPzogc3RyaW5nXG4gIHNpZ25hdHVyZT86IHN0cmluZ1xuICBmaWxlR3VpZD86IHN0cmluZ1xuICBtb2RlPzogJ2VkaXQnIHwgJ3ByZXZpZXcnXG4gIHR5cGU/OiBDb25uZWN0VjJGaWxlVHlwZVxuICBjb250ZW50VmVyc2lvbj86IENvbnRlbnRWZXJzaW9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlUHJlbG9hZEluaXRQYXlsb2FkT3B0aW9ucyBleHRlbmRzIFByZWxvYWRJbml0UGF5bG9hZCB7XG4gIGNvbnRlbnRWZXJzaW9uPzogQ29udGVudFZlcnNpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByZWxvYWRJbml0UGF5bG9hZChcbiAgb3B0aW9uczogQ3JlYXRlUHJlbG9hZEluaXRQYXlsb2FkT3B0aW9uc1xuKTogUHJlbG9hZEluaXRQYXlsb2FkIHtcbiAgY29uc3QgcGF5bG9hZDogUHJlbG9hZEluaXRQYXlsb2FkID0ge1xuICAgIHRva2VuOiBvcHRpb25zLnRva2VuLFxuICAgIHNpZ25hdHVyZTogb3B0aW9ucy5zaWduYXR1cmUsXG4gICAgZmlsZUd1aWQ6IG9wdGlvbnMuZmlsZUd1aWQsXG4gICAgbW9kZTogb3B0aW9ucy5tb2RlLFxuICAgIHR5cGU6IG9wdGlvbnMudHlwZVxuICB9XG5cbiAgaWYgKG9wdGlvbnMuY29udGVudFZlcnNpb24gPT09ICd2MicpIHtcbiAgICBwYXlsb2FkLmNvbnRlbnRWZXJzaW9uID0gJ3YyJ1xuICB9XG5cbiAgcmV0dXJuIHBheWxvYWRcbn1cbiIsIi8qKlxuICogVjIg57uf5LiA5YWl5Y+j5pSv5oyB55qE5YmN56uv5aWX5Lu257G75Z6L44CCXG4gKlxuICog5b2T5YmN5LuF55So5LqOIGNvbm5lY3RWMiDlj4LmlbDmoKHpqozlkowgaWZyYW1lIOS+p+i1hOa6kOmAieaLqemihOeVme+8jFxuICog5LiN5Y+C5LiO5ZCO56uv5paH5Lu25Yib5bu644CB5a+85YWl5oiW57yW6L6R5YeG5aSH5Yik5pat44CCXG4gKi9cbmV4cG9ydCBjb25zdCBDT05ORUNUX1YyX0ZJTEVfVFlQRVMgPSBbXG4gICdmaWxlJyxcbiAgJ2RvY3VtZW50JyxcbiAgJ2RvY3VtZW50UHJvJyxcbiAgJ3dyaXRlcicsXG4gICdzcHJlYWRzaGVldCcsXG4gICdwcmVzZW50YXRpb24nLFxuICAndGFibGUnLFxuICAnZm9ybSdcbl0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgQ29ubmVjdFYyRmlsZVR5cGUgPSAodHlwZW9mIENPTk5FQ1RfVjJfRklMRV9UWVBFUylbbnVtYmVyXVxuXG4vKipcbiAqIFByZWxvYWQg6Lev55Sx54mI5pys5qCH6K+G44CC5Y+q5pyJ5a6M5pW055qEIGB2MmAg5omN5ZCv55SoIFYyIOi3r+W+hO+8jOe8uuWkseaIluWFtuS7luWAvOaMiSBWMSDlpITnkIbjgIJcbiAqL1xuZXhwb3J0IHR5cGUgQ29udGVudFZlcnNpb24gPSAndjEnIHwgJ3YyJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNDb25uZWN0VjJGaWxlVHlwZShcbiAgdmFsdWU6IHVua25vd25cbik6IHZhbHVlIGlzIENvbm5lY3RWMkZpbGVUeXBlIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgKENPTk5FQ1RfVjJfRklMRV9UWVBFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXModmFsdWUpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29ubmVjdFYyTW9kZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzICdlZGl0JyB8ICdwcmV2aWV3JyB7XG4gIHJldHVybiB2YWx1ZSA9PT0gJ2VkaXQnIHx8IHZhbHVlID09PSAncHJldmlldydcbn1cblxuLyoqXG4gKiDmoKHpqowgY29ubmVjdFYyIOeahOS4pOS4quaWsOWinuW/heWhq+WPguaVsOOAglxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDb25uZWN0VjJPcHRpb25zKG9wdGlvbnM6IHtcbiAgdHlwZT86IHVua25vd25cbiAgbW9kZT86IHVua25vd25cbn0pOiB2b2lkIHtcbiAgaWYgKCFpc0Nvbm5lY3RWMkZpbGVUeXBlKG9wdGlvbnM/LnR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNvbm5lY3RWMiBcInR5cGVcIjogJHtTdHJpbmcob3B0aW9ucz8udHlwZSl9YClcbiAgfVxuXG4gIGlmICghaXNDb25uZWN0VjJNb2RlKG9wdGlvbnM/Lm1vZGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNvbm5lY3RWMiBcIm1vZGVcIjogJHtTdHJpbmcob3B0aW9ucz8ubW9kZSl9YClcbiAgfVxufVxuIiwiLyoqXG4gKiDnvLrnnIHpobXog73lipvnmoTlr7nlpJblpZHnuqbnsbvlnovjgIJcbiAqXG4gKiDlhbPkuo4gc2NlbmUg5p6a5Li+5b2S5bGe77yI5bey56Gu5a6a77yJ77yaXG4gKiAgIFAxflA0IOWunuaWveacn++8jOS4pOS+p++8iHdlYm9mZmljZS1qcy1zZGsg5LiOIGxpemFyZC1zZXJ2aWNlLWlmcmFtZS1zZGvvvInlnKjmnKzlnLAgdHlwZXNcbiAqICAg5paH5Lu26YeM5omL5bel5L+d5oyB5a2X6Z2i6YeP5LiA6Ie077yb6IGU6LCD56iz5a6a5ZCO5rKJ5reA5YiwIGB3ZWJvZmZpY2UtanMtc2RrLXNoYXJlZGAg55qE5bi46YeP5Lit44CCXG4gKi9cblxuLyoqXG4gKiDnvLrnnIHpobXlnLrmma/mnprkuL7vvIzlv4XpobvkuI4gYGxpemFyZC1zZXJ2aWNlLWlmcmFtZS1zZGtgIOS+p+WujOWFqOS4gOiHtOOAglxuICovXG5leHBvcnQgdHlwZSBFbXB0eVBhZ2VTY2VuZSA9XG4gIHwgJ2ZpbGUtb3Blbi1mYWlsZWQnXG4gIHwgJ25vLXBlcm1pc3Npb24nXG4gIHwgJ25ldHdvcmstZXJyb3InXG4gIHwgJ3Rva2VuLWV4cGlyZWQnXG5cbi8qKlxuICogYGZpbGUtb3Blbi1mYWlsZWRgIOS4i+WPr+e7huWIhueahOWtkOWOn+WboO+8jOaJv+i9vSBIVFRQIOWNj+iurue6p+W3ruW8gu+8m1xuICog5L+d5oyBIHNjZW5lIOaemuS4vueykuW6pueos+Wumu+8jOe7huiKgumAmui/hyByZWFzb24g5LiL6ZK744CCXG4gKi9cbmV4cG9ydCB0eXBlIEZpbGVPcGVuRmFpbGVkUmVhc29uID1cbiAgfCAnZmlsZS1ub3QtZm91bmQnXG4gIHwgJ2ZpbGUtZGVsZXRlZCdcbiAgfCAnZmlsZS1sb2FkLWZhaWxlZCdcbiAgfCAndW5rbm93bidcblxuZXhwb3J0IHR5cGUgVG9rZW5FeHBpcmVkU3RyYXRlZ3kgPSAncmVmcmVzaC1maXJzdCcgfCAnc2hvdy1pbW1lZGlhdGVseSdcblxuLyoqXG4gKiDljZXkuKrmjInpkq7nmoToh6rlrprkuYnjgILngrnlh7vlkI7nu5/kuIDop6blj5EgYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu277yMXG4gKiDlrr/kuLvnm5HlkKzkuovku7blkI7oh6rooYzlhrPlrprlkI7nu63ooYzkuLrvvIjph43nmbsgLyDph43or5UgLyDpmpDol4/nrYnvvInjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZSB7XG4gIC8qKiDmjInpkq7mlofmoYjjgILlv4XloavjgIIgKi9cbiAgbGFiZWw6IHN0cmluZ1xufVxuXG4vKipcbiAqIOWNleS4qiBzY2VuZSDnmoTmlofmoYgv5oyJ6ZKu6Ieq5a6a5LmJ44CC5pyq5o+Q5L6b55qE5a2X5q616LWw5YaF572u6buY6K6k77yI5paH5qGI6LWw6buY6K6k77yM5oyJ6ZKu5LiN5riy5p+T77yJ44CCXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlIHtcbiAgLyoqIOimhuebluagh+mimOOAgiAqL1xuICB0aXRsZT86IHN0cmluZ1xuICAvKiog6KaG55uW5o+P6L+w44CCICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIC8qKiDkuLvmjInpkq7jgILkuI3kvKDliJnkuI3muLLmn5PkuLvmjInpkq7jgIIgKi9cbiAgcHJpbWFyeT86IEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlXG4gIC8qKiDmrKHmjInpkq7jgILkuI3kvKDliJnkuI3muLLmn5PmrKHmjInpkq7jgIIgKi9cbiAgc2Vjb25kYXJ5PzogRW1wdHlQYWdlQWN0aW9uT3ZlcnJpZGVcbn1cblxuLyoqXG4gKiDlrr/kuLvpgJrov4cgYGNvbm5lY3QoeyBlbXB0eVBhZ2UgfSlgIOS8oOWFpeeahOmFjee9ruOAguaJgOacieWtl+auteWdh+WPr+mAieOAglxuICpcbiAqIOm7mOiupOihjOS4uu+8mlxuICogLSDlm77niYcgLyDmlofmoYjvvIh0aXRsZSAvIGRlc2NyaXB0aW9u77yJ5Z2H5YaF572u77yM5a6/5Li75peg6ZyA5LygXG4gKiAtICoq6buY6K6k5LiN5riy5p+T5Lu75L2V5oyJ6ZKuKirjgILlpoLpnIDmjInpkq7vvIzlv4XpobvlnKggYG92ZXJyaWRlc1tzY2VuZV0ucHJpbWFyeS9zZWNvbmRhcnlgXG4gKiAgIOmHjOaYvuW8j+mFjee9riBsYWJlbOOAguaMiemSrueCueWHu+e7n+S4gOinpuWPkSBgZW1wdHlQYWdlQWN0aW9uYCDkuovku7bjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIOaAu+W8gOWFs++8jOm7mOiupCB0cnVl44CCXG4gICAqL1xuICBlbmFibGVkPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiDlkK/nlKjnmoTlnLrmma/nmb3lkI3ljZXjgILmnKrmjIflrprml7blhajpg6jlkK/nlKjjgIJcbiAgICovXG4gIHNjZW5lcz86IEVtcHR5UGFnZVNjZW5lW11cblxuICAvKipcbiAgICogdG9rZW4g6L+H5pyf5Zy65pmv55qE5a6a5Yi2562W55Wl77yaXG4gICAqIC0gYHJlZnJlc2gtZmlyc3Rg77yI6buY6K6k77yJ77ya5YWI6LWw5LiA5qyhIGdldENyZWRlbnRpYWxzIOWIt+aWsO+8jOWksei0peWGjeWxleekuue8uuecgemhtVxuICAgKiAgIC0g5LuF5Zyo5a6/5Li75Lyg5LqGIGBnZXRDcmVkZW50aWFsc2Ag5pe255Sf5pWIXG4gICAqICAgLSDmnIDlpJrph43or5UgMSDmrKHvvIw1cyDotoXml7bmjInlpLHotKXlpITnkIZcbiAgICogLSBgc2hvdy1pbW1lZGlhdGVseWDvvJrnq4vljbPlsZXnpLrvvIzkuI3lgZrliLfmlrDlsJ3or5VcbiAgICpcbiAgICog5pyq5LygIGBnZXRDcmVkZW50aWFsc2Ag5pe277yM5peg6K666YWN572u5aaC5L2V6YO95oyJIGBzaG93LWltbWVkaWF0ZWx5YCDmiafooYzjgIJcbiAgICovXG4gIHRva2VuRXhwaXJlZFN0cmF0ZWd5PzogVG9rZW5FeHBpcmVkU3RyYXRlZ3lcblxuICAvKipcbiAgICog5oyJIHNjZW5lIOiHquWumuS5ieaWh+ahiOWSjOaMiemSruOAguacqumFjee9riBzY2VuZSDotbDpu5jorqTooYzkuLrvvIjpu5jorqTmlofmoYggKyDml6DmjInpkq7vvInjgIJcbiAgICovXG4gIG92ZXJyaWRlcz86IFBhcnRpYWw8UmVjb3JkPEVtcHR5UGFnZVNjZW5lLCBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGU+PlxufVxuXG4vKipcbiAqIOW9kuS4gOWMluWQjueahOe8uuecgemhtemFjee9ru+8jOmAj+S8oOe7mSBpZnJhbWUg5L2/55So44CCXG4gKiDmiYDmnInln7rnoYDlrZfmrrXpg73mmK/lv4XloavkuJTlrozmlbTloavlhYXvvIxpZnJhbWUg5L6n5LiN6ZyA6KaB5YaN6KGl6buY6K6k5YC844CCXG4gKiBgb3ZlcnJpZGVzYCDkv53mjIHnqIDnlo/vvIjku4XmkLrluKblrr/kuLvmmL7lvI/kvKDlhaXnmoTlrZfmrrXvvInvvIzpgb/lhY3pgI/kvKDlpJrkvZnmlbDmja7jgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkRW1wdHlQYWdlT3B0aW9ucyB7XG4gIGVuYWJsZWQ6IGJvb2xlYW5cbiAgc2NlbmVzOiBFbXB0eVBhZ2VTY2VuZVtdXG4gIHRva2VuRXhwaXJlZFN0cmF0ZWd5OiBUb2tlbkV4cGlyZWRTdHJhdGVneVxuICBvdmVycmlkZXM6IFBhcnRpYWw8UmVjb3JkPEVtcHR5UGFnZVNjZW5lLCBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGU+PlxufVxuXG4vKipcbiAqIGBlbXB0eVBhZ2VTaG93bmAg5LqL5Lu2IHBheWxvYWTjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VTaG93blBheWxvYWQge1xuICBzY2VuZTogRW1wdHlQYWdlU2NlbmVcbiAgLyoqXG4gICAqIHNjZW5lIOWGheeahOWtkOexu+Wei++8iOWmgiBGaWxlT3BlbkZhaWxlZFJlYXNvbu+8ie+8jOWuv+S4u+WPr+eUqOS6juWumuWItuaWh+ahiOaIluWfi+eCueOAglxuICAgKi9cbiAgcmVhc29uPzogRmlsZU9wZW5GYWlsZWRSZWFzb24gfCBzdHJpbmdcbiAgaHR0cFN0YXR1cz86IG51bWJlclxuICByZXRyeWFibGU/OiBib29sZWFuXG59XG5cbi8qKlxuICogYGVtcHR5UGFnZUFjdGlvbmAg5LqL5Lu2IHBheWxvYWTvvIzmjInpkq7ooqvngrnlh7vml7bop6blj5HjgIJcbiAqIOWuv+S4u+agueaNriBzY2VuZSArIGFjdGlvbiDlhrPlrprkuJrliqHooYzkuLrvvIjph43nmbsgLyDph43or5UgLyDpmpDol4/nrYnvvInjgIJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXB0eVBhZ2VBY3Rpb25QYXlsb2FkIHtcbiAgc2NlbmU6IEVtcHR5UGFnZVNjZW5lXG4gIGFjdGlvbjogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeSdcbn1cblxuLyoqXG4gKiBgZW1wdHlQYWdlSGlkZGVuYCDkuovku7YgcGF5bG9hZOOAglxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVtcHR5UGFnZUhpZGRlblBheWxvYWQge1xuICBzY2VuZTogRW1wdHlQYWdlU2NlbmVcbn1cblxuLyoqXG4gKiDlrozmlbTnmoQgc2NlbmUg5YiX6KGo77yM55So5LqO5L2c5Li66buY6K6k5YC85LiO5ZCI5rOV5oCn5qCh6aqM44CCXG4gKi9cbmV4cG9ydCBjb25zdCBBTExfRU1QVFlfUEFHRV9TQ0VORVM6IEVtcHR5UGFnZVNjZW5lW10gPSBbXG4gICdmaWxlLW9wZW4tZmFpbGVkJyxcbiAgJ25vLXBlcm1pc3Npb24nLFxuICAnbmV0d29yay1lcnJvcicsXG4gICd0b2tlbi1leHBpcmVkJ1xuXVxuXG5mdW5jdGlvbiByZXNvbHZlU2NlbmVzKGlucHV0OiBFbXB0eVBhZ2VTY2VuZVtdIHwgdW5kZWZpbmVkKTogRW1wdHlQYWdlU2NlbmVbXSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4gWy4uLkFMTF9FTVBUWV9QQUdFX1NDRU5FU11cbiAgfVxuXG4gIGNvbnN0IGZpbHRlcmVkOiBFbXB0eVBhZ2VTY2VuZVtdID0gW11cbiAgZm9yIChjb25zdCBzY2VuZSBvZiBpbnB1dCkge1xuICAgIGlmIChBTExfRU1QVFlfUEFHRV9TQ0VORVMuaW5jbHVkZXMoc2NlbmUpKSB7XG4gICAgICBmaWx0ZXJlZC5wdXNoKHNjZW5lKVxuICAgIH1cbiAgfVxuXG4gIGlmIChmaWx0ZXJlZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gWy4uLkFMTF9FTVBUWV9QQUdFX1NDRU5FU11cbiAgfVxuXG4gIHJldHVybiBmaWx0ZXJlZFxufVxuXG5mdW5jdGlvbiByZXNvbHZlVG9rZW5FeHBpcmVkU3RyYXRlZ3koXG4gIGlucHV0OiBUb2tlbkV4cGlyZWRTdHJhdGVneSB8IHVuZGVmaW5lZFxuKTogVG9rZW5FeHBpcmVkU3RyYXRlZ3kge1xuICBpZiAoaW5wdXQgPT09ICdzaG93LWltbWVkaWF0ZWx5Jykge1xuICAgIHJldHVybiAnc2hvdy1pbW1lZGlhdGVseSdcbiAgfVxuICByZXR1cm4gJ3JlZnJlc2gtZmlyc3QnXG59XG5cbmZ1bmN0aW9uIHBpY2tTdHJpbmcodmFsdWU6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFjdGlvbihcbiAgaW5wdXQ6IEVtcHR5UGFnZUFjdGlvbk92ZXJyaWRlIHwgdW5kZWZpbmVkXG4pOiBFbXB0eVBhZ2VBY3Rpb25PdmVycmlkZSB8IHVuZGVmaW5lZCB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuICBjb25zdCBsYWJlbCA9IHBpY2tTdHJpbmcoaW5wdXQubGFiZWwpXG4gIGlmICghbGFiZWwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgcmV0dXJuIHsgbGFiZWwgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQ29udGVudE92ZXJyaWRlKFxuICBpbnB1dDogRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlIHwgdW5kZWZpbmVkXG4pOiBFbXB0eVBhZ2VDb250ZW50T3ZlcnJpZGUgfCB1bmRlZmluZWQge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCByZXN1bHQ6IEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZSA9IHt9XG4gIGNvbnN0IHRpdGxlID0gcGlja1N0cmluZyhpbnB1dC50aXRsZSlcbiAgaWYgKHRpdGxlKSB7XG4gICAgcmVzdWx0LnRpdGxlID0gdGl0bGVcbiAgfVxuICBjb25zdCBkZXNjcmlwdGlvbiA9IHBpY2tTdHJpbmcoaW5wdXQuZGVzY3JpcHRpb24pXG4gIGlmIChkZXNjcmlwdGlvbikge1xuICAgIHJlc3VsdC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uXG4gIH1cbiAgY29uc3QgcHJpbWFyeSA9IHJlc29sdmVBY3Rpb24oaW5wdXQucHJpbWFyeSlcbiAgaWYgKHByaW1hcnkpIHtcbiAgICByZXN1bHQucHJpbWFyeSA9IHByaW1hcnlcbiAgfVxuICBjb25zdCBzZWNvbmRhcnkgPSByZXNvbHZlQWN0aW9uKGlucHV0LnNlY29uZGFyeSlcbiAgaWYgKHNlY29uZGFyeSkge1xuICAgIHJlc3VsdC5zZWNvbmRhcnkgPSBzZWNvbmRhcnlcbiAgfVxuXG4gIC8vIOWFqOmDqOWtl+autemDvee8uuWkseaXtuinhuS4ulwi5pyq6YWN572uXCLvvIzorqnmtojotLnkvqfotbDpu5jorqTliIbmlK9cbiAgaWYgKFxuICAgIHJlc3VsdC50aXRsZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgcmVzdWx0LmRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQgJiZcbiAgICByZXN1bHQucHJpbWFyeSA9PT0gdW5kZWZpbmVkICYmXG4gICAgcmVzdWx0LnNlY29uZGFyeSA9PT0gdW5kZWZpbmVkXG4gICkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU92ZXJyaWRlcyhcbiAgaW5wdXQ6IEVtcHR5UGFnZU9wdGlvbnNbJ292ZXJyaWRlcyddXG4pOiBQYXJ0aWFsPFJlY29yZDxFbXB0eVBhZ2VTY2VuZSwgRW1wdHlQYWdlQ29udGVudE92ZXJyaWRlPj4ge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUGFydGlhbDxSZWNvcmQ8RW1wdHlQYWdlU2NlbmUsIEVtcHR5UGFnZUNvbnRlbnRPdmVycmlkZT4+ID0ge31cbiAgZm9yIChjb25zdCBzY2VuZSBvZiBBTExfRU1QVFlfUEFHRV9TQ0VORVMpIHtcbiAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmVDb250ZW50T3ZlcnJpZGUoaW5wdXRbc2NlbmVdKVxuICAgIGlmIChyZXNvbHZlZCkge1xuICAgICAgcmVzdWx0W3NjZW5lXSA9IHJlc29sdmVkXG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiDmiorlrr/kuLvkvKDlhaXnmoQgYGVtcHR5UGFnZWAg6YWN572u5b2S5LiA5YyW5oiQ5a6M5pW05a+56LGh44CCXG4gKlxuICogLSDmnKrkvKAgLyB1bmRlZmluZWTvvJrlkK/nlKjlhajpg6ggc2NlbmXvvIzkvb/nlKjpu5jorqQgdG9rZW5FeHBpcmVkU3RyYXRlZ3nvvIzkuI3mkLrluKYgb3ZlcnJpZGVzXG4gKiAtIOS8oCB0cnVl77ya562J5Lu35LqOIGB7IGVuYWJsZWQ6IHRydWUgfWBcbiAqIC0g5LygIGZhbHNl77ya562J5Lu35LqOIGB7IGVuYWJsZWQ6IGZhbHNlIH1g77yM5YW25L2Z5a2X5q615LuN5aGr5YWF6buY6K6k5Lul5L+d6K+B5b2i54q25LiA6Ie0XG4gKiAtIOS8oOWvueixoe+8muaMieWtl+auteimhueblu+8jOacquimhueblumDqOWIhuS9v+eUqOm7mOiupFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRW1wdHlQYWdlT3B0aW9ucyhcbiAgaW5wdXQ/OiBib29sZWFuIHwgRW1wdHlQYWdlT3B0aW9uc1xuKTogTm9ybWFsaXplZEVtcHR5UGFnZU9wdGlvbnMge1xuICBpZiAoaW5wdXQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxuICAgICAgc2NlbmVzOiBbLi4uQUxMX0VNUFRZX1BBR0VfU0NFTkVTXSxcbiAgICAgIHRva2VuRXhwaXJlZFN0cmF0ZWd5OiAncmVmcmVzaC1maXJzdCcsXG4gICAgICBvdmVycmlkZXM6IHt9XG4gICAgfVxuICB9XG5cbiAgaWYgKGlucHV0ID09PSB0cnVlIHx8IGlucHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHNjZW5lczogWy4uLkFMTF9FTVBUWV9QQUdFX1NDRU5FU10sXG4gICAgICB0b2tlbkV4cGlyZWRTdHJhdGVneTogJ3JlZnJlc2gtZmlyc3QnLFxuICAgICAgb3ZlcnJpZGVzOiB7fVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW5hYmxlZDogdHlwZW9mIGlucHV0LmVuYWJsZWQgPT09ICdib29sZWFuJyA/IGlucHV0LmVuYWJsZWQgOiB0cnVlLFxuICAgIHNjZW5lczogcmVzb2x2ZVNjZW5lcyhpbnB1dC5zY2VuZXMpLFxuICAgIHRva2VuRXhwaXJlZFN0cmF0ZWd5OiByZXNvbHZlVG9rZW5FeHBpcmVkU3RyYXRlZ3koXG4gICAgICBpbnB1dC50b2tlbkV4cGlyZWRTdHJhdGVneVxuICAgICksXG4gICAgb3ZlcnJpZGVzOiByZXNvbHZlT3ZlcnJpZGVzKGlucHV0Lm92ZXJyaWRlcylcbiAgfVxufVxuIiwiLy8gVW5pcXVlIElEIGNyZWF0aW9uIHJlcXVpcmVzIGEgaGlnaCBxdWFsaXR5IHJhbmRvbSAjIGdlbmVyYXRvci4gSW4gdGhlIGJyb3dzZXIgd2UgdGhlcmVmb3JlXG4vLyByZXF1aXJlIHRoZSBjcnlwdG8gQVBJIGFuZCBkbyBub3Qgc3VwcG9ydCBidWlsdC1pbiBmYWxsYmFjayB0byBsb3dlciBxdWFsaXR5IHJhbmRvbSBudW1iZXJcbi8vIGdlbmVyYXRvcnMgKGxpa2UgTWF0aC5yYW5kb20oKSkuXG52YXIgZ2V0UmFuZG9tVmFsdWVzO1xudmFyIHJuZHM4ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcm5nKCkge1xuICAvLyBsYXp5IGxvYWQgc28gdGhhdCBlbnZpcm9ubWVudHMgdGhhdCBuZWVkIHRvIHBvbHlmaWxsIGhhdmUgYSBjaGFuY2UgdG8gZG8gc29cbiAgaWYgKCFnZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBnZXRSYW5kb21WYWx1ZXMgbmVlZHMgdG8gYmUgaW52b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgXCJ0aGlzXCIgaXMgYSBDcnlwdG8gaW1wbGVtZW50YXRpb24uIEFsc28sXG4gICAgLy8gZmluZCB0aGUgY29tcGxldGUgaW1wbGVtZW50YXRpb24gb2YgY3J5cHRvIChtc0NyeXB0bykgb24gSUUxMS5cbiAgICBnZXRSYW5kb21WYWx1ZXMgPSB0eXBlb2YgY3J5cHRvICE9PSAndW5kZWZpbmVkJyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pIHx8IHR5cGVvZiBtc0NyeXB0byAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PT0gJ2Z1bmN0aW9uJyAmJiBtc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChtc0NyeXB0byk7XG5cbiAgICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBnZXRSYW5kb21WYWx1ZXMocm5kczgpO1xufSIsImV4cG9ydCBkZWZhdWx0IC9eKD86WzAtOWEtZl17OH0tWzAtOWEtZl17NH0tWzEtNV1bMC05YS1mXXszfS1bODlhYl1bMC05YS1mXXszfS1bMC05YS1mXXsxMn18MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwKSQvaTsiLCJpbXBvcnQgUkVHRVggZnJvbSAnLi9yZWdleC5qcyc7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKHV1aWQpIHtcbiAgcmV0dXJuIHR5cGVvZiB1dWlkID09PSAnc3RyaW5nJyAmJiBSRUdFWC50ZXN0KHV1aWQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2YWxpZGF0ZTsiLCJpbXBvcnQgdmFsaWRhdGUgZnJvbSAnLi92YWxpZGF0ZS5qcyc7XG4vKipcbiAqIENvbnZlcnQgYXJyYXkgb2YgMTYgYnl0ZSB2YWx1ZXMgdG8gVVVJRCBzdHJpbmcgZm9ybWF0IG9mIHRoZSBmb3JtOlxuICogWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhYXG4gKi9cblxudmFyIGJ5dGVUb0hleCA9IFtdO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7XG4gIGJ5dGVUb0hleC5wdXNoKChpICsgMHgxMDApLnRvU3RyaW5nKDE2KS5zdWJzdHIoMSkpO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkoYXJyKSB7XG4gIHZhciBvZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG4gIC8vIE5vdGU6IEJlIGNhcmVmdWwgZWRpdGluZyB0aGlzIGNvZGUhICBJdCdzIGJlZW4gdHVuZWQgZm9yIHBlcmZvcm1hbmNlXG4gIC8vIGFuZCB3b3JrcyBpbiB3YXlzIHlvdSBtYXkgbm90IGV4cGVjdC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZC9wdWxsLzQzNFxuICB2YXIgdXVpZCA9IChieXRlVG9IZXhbYXJyW29mZnNldCArIDBdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMV1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAyXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDNdXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA1XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDZdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgN11dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA4XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDldXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTBdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTFdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTJdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTNdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTRdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMTVdXSkudG9Mb3dlckNhc2UoKTsgLy8gQ29uc2lzdGVuY3kgY2hlY2sgZm9yIHZhbGlkIFVVSUQuICBJZiB0aGlzIHRocm93cywgaXQncyBsaWtlbHkgZHVlIHRvIG9uZVxuICAvLyBvZiB0aGUgZm9sbG93aW5nOlxuICAvLyAtIE9uZSBvciBtb3JlIGlucHV0IGFycmF5IHZhbHVlcyBkb24ndCBtYXAgdG8gYSBoZXggb2N0ZXQgKGxlYWRpbmcgdG9cbiAgLy8gXCJ1bmRlZmluZWRcIiBpbiB0aGUgdXVpZClcbiAgLy8gLSBJbnZhbGlkIGlucHV0IHZhbHVlcyBmb3IgdGhlIFJGQyBgdmVyc2lvbmAgb3IgYHZhcmlhbnRgIGZpZWxkc1xuXG4gIGlmICghdmFsaWRhdGUodXVpZCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1N0cmluZ2lmaWVkIFVVSUQgaXMgaW52YWxpZCcpO1xuICB9XG5cbiAgcmV0dXJuIHV1aWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmluZ2lmeTsiLCJpbXBvcnQgcm5nIGZyb20gJy4vcm5nLmpzJztcbmltcG9ydCBzdHJpbmdpZnkgZnJvbSAnLi9zdHJpbmdpZnkuanMnOyAvLyAqKmB2MSgpYCAtIEdlbmVyYXRlIHRpbWUtYmFzZWQgVVVJRCoqXG4vL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL0xpb3NLL1VVSUQuanNcbi8vIGFuZCBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvdXVpZC5odG1sXG5cbnZhciBfbm9kZUlkO1xuXG52YXIgX2Nsb2Nrc2VxOyAvLyBQcmV2aW91cyB1dWlkIGNyZWF0aW9uIHRpbWVcblxuXG52YXIgX2xhc3RNU2VjcyA9IDA7XG52YXIgX2xhc3ROU2VjcyA9IDA7IC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQgZm9yIEFQSSBkZXRhaWxzXG5cbmZ1bmN0aW9uIHYxKG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciBpID0gYnVmICYmIG9mZnNldCB8fCAwO1xuICB2YXIgYiA9IGJ1ZiB8fCBuZXcgQXJyYXkoMTYpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIG5vZGUgPSBvcHRpb25zLm5vZGUgfHwgX25vZGVJZDtcbiAgdmFyIGNsb2Nrc2VxID0gb3B0aW9ucy5jbG9ja3NlcSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5jbG9ja3NlcSA6IF9jbG9ja3NlcTsgLy8gbm9kZSBhbmQgY2xvY2tzZXEgbmVlZCB0byBiZSBpbml0aWFsaXplZCB0byByYW5kb20gdmFsdWVzIGlmIHRoZXkncmUgbm90XG4gIC8vIHNwZWNpZmllZC4gIFdlIGRvIHRoaXMgbGF6aWx5IHRvIG1pbmltaXplIGlzc3VlcyByZWxhdGVkIHRvIGluc3VmZmljaWVudFxuICAvLyBzeXN0ZW0gZW50cm9weS4gIFNlZSAjMTg5XG5cbiAgaWYgKG5vZGUgPT0gbnVsbCB8fCBjbG9ja3NlcSA9PSBudWxsKSB7XG4gICAgdmFyIHNlZWRCeXRlcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7XG5cbiAgICBpZiAobm9kZSA9PSBudWxsKSB7XG4gICAgICAvLyBQZXIgNC41LCBjcmVhdGUgYW5kIDQ4LWJpdCBub2RlIGlkLCAoNDcgcmFuZG9tIGJpdHMgKyBtdWx0aWNhc3QgYml0ID0gMSlcbiAgICAgIG5vZGUgPSBfbm9kZUlkID0gW3NlZWRCeXRlc1swXSB8IDB4MDEsIHNlZWRCeXRlc1sxXSwgc2VlZEJ5dGVzWzJdLCBzZWVkQnl0ZXNbM10sIHNlZWRCeXRlc1s0XSwgc2VlZEJ5dGVzWzVdXTtcbiAgICB9XG5cbiAgICBpZiAoY2xvY2tzZXEgPT0gbnVsbCkge1xuICAgICAgLy8gUGVyIDQuMi4yLCByYW5kb21pemUgKDE0IGJpdCkgY2xvY2tzZXFcbiAgICAgIGNsb2Nrc2VxID0gX2Nsb2Nrc2VxID0gKHNlZWRCeXRlc1s2XSA8PCA4IHwgc2VlZEJ5dGVzWzddKSAmIDB4M2ZmZjtcbiAgICB9XG4gIH0gLy8gVVVJRCB0aW1lc3RhbXBzIGFyZSAxMDAgbmFuby1zZWNvbmQgdW5pdHMgc2luY2UgdGhlIEdyZWdvcmlhbiBlcG9jaCxcbiAgLy8gKDE1ODItMTAtMTUgMDA6MDApLiAgSlNOdW1iZXJzIGFyZW4ndCBwcmVjaXNlIGVub3VnaCBmb3IgdGhpcywgc29cbiAgLy8gdGltZSBpcyBoYW5kbGVkIGludGVybmFsbHkgYXMgJ21zZWNzJyAoaW50ZWdlciBtaWxsaXNlY29uZHMpIGFuZCAnbnNlY3MnXG4gIC8vICgxMDAtbmFub3NlY29uZHMgb2Zmc2V0IGZyb20gbXNlY3MpIHNpbmNlIHVuaXggZXBvY2gsIDE5NzAtMDEtMDEgMDA6MDAuXG5cblxuICB2YXIgbXNlY3MgPSBvcHRpb25zLm1zZWNzICE9PSB1bmRlZmluZWQgPyBvcHRpb25zLm1zZWNzIDogRGF0ZS5ub3coKTsgLy8gUGVyIDQuMi4xLjIsIHVzZSBjb3VudCBvZiB1dWlkJ3MgZ2VuZXJhdGVkIGR1cmluZyB0aGUgY3VycmVudCBjbG9ja1xuICAvLyBjeWNsZSB0byBzaW11bGF0ZSBoaWdoZXIgcmVzb2x1dGlvbiBjbG9ja1xuXG4gIHZhciBuc2VjcyA9IG9wdGlvbnMubnNlY3MgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubnNlY3MgOiBfbGFzdE5TZWNzICsgMTsgLy8gVGltZSBzaW5jZSBsYXN0IHV1aWQgY3JlYXRpb24gKGluIG1zZWNzKVxuXG4gIHZhciBkdCA9IG1zZWNzIC0gX2xhc3RNU2VjcyArIChuc2VjcyAtIF9sYXN0TlNlY3MpIC8gMTAwMDA7IC8vIFBlciA0LjIuMS4yLCBCdW1wIGNsb2Nrc2VxIG9uIGNsb2NrIHJlZ3Jlc3Npb25cblxuICBpZiAoZHQgPCAwICYmIG9wdGlvbnMuY2xvY2tzZXEgPT09IHVuZGVmaW5lZCkge1xuICAgIGNsb2Nrc2VxID0gY2xvY2tzZXEgKyAxICYgMHgzZmZmO1xuICB9IC8vIFJlc2V0IG5zZWNzIGlmIGNsb2NrIHJlZ3Jlc3NlcyAobmV3IGNsb2Nrc2VxKSBvciB3ZSd2ZSBtb3ZlZCBvbnRvIGEgbmV3XG4gIC8vIHRpbWUgaW50ZXJ2YWxcblxuXG4gIGlmICgoZHQgPCAwIHx8IG1zZWNzID4gX2xhc3RNU2VjcykgJiYgb3B0aW9ucy5uc2VjcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbnNlY3MgPSAwO1xuICB9IC8vIFBlciA0LjIuMS4yIFRocm93IGVycm9yIGlmIHRvbyBtYW55IHV1aWRzIGFyZSByZXF1ZXN0ZWRcblxuXG4gIGlmIChuc2VjcyA+PSAxMDAwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInV1aWQudjEoKTogQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiAxME0gdXVpZHMvc2VjXCIpO1xuICB9XG5cbiAgX2xhc3RNU2VjcyA9IG1zZWNzO1xuICBfbGFzdE5TZWNzID0gbnNlY3M7XG4gIF9jbG9ja3NlcSA9IGNsb2Nrc2VxOyAvLyBQZXIgNC4xLjQgLSBDb252ZXJ0IGZyb20gdW5peCBlcG9jaCB0byBHcmVnb3JpYW4gZXBvY2hcblxuICBtc2VjcyArPSAxMjIxOTI5MjgwMDAwMDsgLy8gYHRpbWVfbG93YFxuXG4gIHZhciB0bCA9ICgobXNlY3MgJiAweGZmZmZmZmYpICogMTAwMDAgKyBuc2VjcykgJSAweDEwMDAwMDAwMDtcbiAgYltpKytdID0gdGwgPj4+IDI0ICYgMHhmZjtcbiAgYltpKytdID0gdGwgPj4+IDE2ICYgMHhmZjtcbiAgYltpKytdID0gdGwgPj4+IDggJiAweGZmO1xuICBiW2krK10gPSB0bCAmIDB4ZmY7IC8vIGB0aW1lX21pZGBcblxuICB2YXIgdG1oID0gbXNlY3MgLyAweDEwMDAwMDAwMCAqIDEwMDAwICYgMHhmZmZmZmZmO1xuICBiW2krK10gPSB0bWggPj4+IDggJiAweGZmO1xuICBiW2krK10gPSB0bWggJiAweGZmOyAvLyBgdGltZV9oaWdoX2FuZF92ZXJzaW9uYFxuXG4gIGJbaSsrXSA9IHRtaCA+Pj4gMjQgJiAweGYgfCAweDEwOyAvLyBpbmNsdWRlIHZlcnNpb25cblxuICBiW2krK10gPSB0bWggPj4+IDE2ICYgMHhmZjsgLy8gYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgIChQZXIgNC4yLjIgLSBpbmNsdWRlIHZhcmlhbnQpXG5cbiAgYltpKytdID0gY2xvY2tzZXEgPj4+IDggfCAweDgwOyAvLyBgY2xvY2tfc2VxX2xvd2BcblxuICBiW2krK10gPSBjbG9ja3NlcSAmIDB4ZmY7IC8vIGBub2RlYFxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgNjsgKytuKSB7XG4gICAgYltpICsgbl0gPSBub2RlW25dO1xuICB9XG5cbiAgcmV0dXJuIGJ1ZiB8fCBzdHJpbmdpZnkoYik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHYxOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcblxuZnVuY3Rpb24gcGFyc2UodXVpZCkge1xuICBpZiAoIXZhbGlkYXRlKHV1aWQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdJbnZhbGlkIFVVSUQnKTtcbiAgfVxuXG4gIHZhciB2O1xuICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOyAvLyBQYXJzZSAjIyMjIyMjIy0uLi4uLS4uLi4tLi4uLi0uLi4uLi4uLi4uLi5cblxuICBhcnJbMF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMCwgOCksIDE2KSkgPj4+IDI0O1xuICBhcnJbMV0gPSB2ID4+PiAxNiAmIDB4ZmY7XG4gIGFyclsyXSA9IHYgPj4+IDggJiAweGZmO1xuICBhcnJbM10gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tIyMjIy0uLi4uLS4uLi4tLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzRdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDksIDEzKSwgMTYpKSA+Pj4gODtcbiAgYXJyWzVdID0gdiAmIDB4ZmY7IC8vIFBhcnNlIC4uLi4uLi4uLS4uLi4tIyMjIy0uLi4uLS4uLi4uLi4uLi4uLlxuXG4gIGFycls2XSA9ICh2ID0gcGFyc2VJbnQodXVpZC5zbGljZSgxNCwgMTgpLCAxNikpID4+PiA4O1xuICBhcnJbN10gPSB2ICYgMHhmZjsgLy8gUGFyc2UgLi4uLi4uLi4tLi4uLi0uLi4uLSMjIyMtLi4uLi4uLi4uLi4uXG5cbiAgYXJyWzhdID0gKHYgPSBwYXJzZUludCh1dWlkLnNsaWNlKDE5LCAyMyksIDE2KSkgPj4+IDg7XG4gIGFycls5XSA9IHYgJiAweGZmOyAvLyBQYXJzZSAuLi4uLi4uLi0uLi4uLS4uLi4tLi4uLi0jIyMjIyMjIyMjIyNcbiAgLy8gKFVzZSBcIi9cIiB0byBhdm9pZCAzMi1iaXQgdHJ1bmNhdGlvbiB3aGVuIGJpdC1zaGlmdGluZyBoaWdoLW9yZGVyIGJ5dGVzKVxuXG4gIGFyclsxMF0gPSAodiA9IHBhcnNlSW50KHV1aWQuc2xpY2UoMjQsIDM2KSwgMTYpKSAvIDB4MTAwMDAwMDAwMDAgJiAweGZmO1xuICBhcnJbMTFdID0gdiAvIDB4MTAwMDAwMDAwICYgMHhmZjtcbiAgYXJyWzEyXSA9IHYgPj4+IDI0ICYgMHhmZjtcbiAgYXJyWzEzXSA9IHYgPj4+IDE2ICYgMHhmZjtcbiAgYXJyWzE0XSA9IHYgPj4+IDggJiAweGZmO1xuICBhcnJbMTVdID0gdiAmIDB4ZmY7XG4gIHJldHVybiBhcnI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlOyIsImltcG9ydCBzdHJpbmdpZnkgZnJvbSAnLi9zdHJpbmdpZnkuanMnO1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vcGFyc2UuanMnO1xuXG5mdW5jdGlvbiBzdHJpbmdUb0J5dGVzKHN0cikge1xuICBzdHIgPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgdmFyIGJ5dGVzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBieXRlcy5wdXNoKHN0ci5jaGFyQ29kZUF0KGkpKTtcbiAgfVxuXG4gIHJldHVybiBieXRlcztcbn1cblxuZXhwb3J0IHZhciBETlMgPSAnNmJhN2I4MTAtOWRhZC0xMWQxLTgwYjQtMDBjMDRmZDQzMGM4JztcbmV4cG9ydCB2YXIgVVJMID0gJzZiYTdiODExLTlkYWQtMTFkMS04MGI0LTAwYzA0ZmQ0MzBjOCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAobmFtZSwgdmVyc2lvbiwgaGFzaGZ1bmMpIHtcbiAgZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKHZhbHVlLCBuYW1lc3BhY2UsIGJ1Ziwgb2Zmc2V0KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gc3RyaW5nVG9CeXRlcyh2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBuYW1lc3BhY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBuYW1lc3BhY2UgPSBwYXJzZShuYW1lc3BhY2UpO1xuICAgIH1cblxuICAgIGlmIChuYW1lc3BhY2UubGVuZ3RoICE9PSAxNikge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdOYW1lc3BhY2UgbXVzdCBiZSBhcnJheS1saWtlICgxNiBpdGVyYWJsZSBpbnRlZ2VyIHZhbHVlcywgMC0yNTUpJyk7XG4gICAgfSAvLyBDb21wdXRlIGhhc2ggb2YgbmFtZXNwYWNlIGFuZCB2YWx1ZSwgUGVyIDQuM1xuICAgIC8vIEZ1dHVyZTogVXNlIHNwcmVhZCBzeW50YXggd2hlbiBzdXBwb3J0ZWQgb24gYWxsIHBsYXRmb3JtcywgZS5nLiBgYnl0ZXMgPVxuICAgIC8vIGhhc2hmdW5jKFsuLi5uYW1lc3BhY2UsIC4uLiB2YWx1ZV0pYFxuXG5cbiAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheSgxNiArIHZhbHVlLmxlbmd0aCk7XG4gICAgYnl0ZXMuc2V0KG5hbWVzcGFjZSk7XG4gICAgYnl0ZXMuc2V0KHZhbHVlLCBuYW1lc3BhY2UubGVuZ3RoKTtcbiAgICBieXRlcyA9IGhhc2hmdW5jKGJ5dGVzKTtcbiAgICBieXRlc1s2XSA9IGJ5dGVzWzZdICYgMHgwZiB8IHZlcnNpb247XG4gICAgYnl0ZXNbOF0gPSBieXRlc1s4XSAmIDB4M2YgfCAweDgwO1xuXG4gICAgaWYgKGJ1Zikge1xuICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgICAgICBidWZbb2Zmc2V0ICsgaV0gPSBieXRlc1tpXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5KGJ5dGVzKTtcbiAgfSAvLyBGdW5jdGlvbiNuYW1lIGlzIG5vdCBzZXR0YWJsZSBvbiBzb21lIHBsYXRmb3JtcyAoIzI3MClcblxuXG4gIHRyeSB7XG4gICAgZ2VuZXJhdGVVVUlELm5hbWUgPSBuYW1lOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZW1wdHlcbiAgfSBjYXRjaCAoZXJyKSB7fSAvLyBGb3IgQ29tbW9uSlMgZGVmYXVsdCBleHBvcnQgc3VwcG9ydFxuXG5cbiAgZ2VuZXJhdGVVVUlELkROUyA9IEROUztcbiAgZ2VuZXJhdGVVVUlELlVSTCA9IFVSTDtcbiAgcmV0dXJuIGdlbmVyYXRlVVVJRDtcbn0iLCIvKlxuICogQnJvd3Nlci1jb21wYXRpYmxlIEphdmFTY3JpcHQgTUQ1XG4gKlxuICogTW9kaWZpY2F0aW9uIG9mIEphdmFTY3JpcHQgTUQ1XG4gKiBodHRwczovL2dpdGh1Yi5jb20vYmx1ZWltcC9KYXZhU2NyaXB0LU1ENVxuICpcbiAqIENvcHlyaWdodCAyMDExLCBTZWJhc3RpYW4gVHNjaGFuXG4gKiBodHRwczovL2JsdWVpbXAubmV0XG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOlxuICogaHR0cHM6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9NSVRcbiAqXG4gKiBCYXNlZCBvblxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZVxuICogRGlnZXN0IEFsZ29yaXRobSwgYXMgZGVmaW5lZCBpbiBSRkMgMTMyMS5cbiAqIFZlcnNpb24gMi4yIENvcHlyaWdodCAoQykgUGF1bCBKb2huc3RvbiAxOTk5IC0gMjAwOVxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlXG4gKiBTZWUgaHR0cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgbW9yZSBpbmZvLlxuICovXG5mdW5jdGlvbiBtZDUoYnl0ZXMpIHtcbiAgaWYgKHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgbXNnID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGJ5dGVzKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgICBieXRlcyA9IG5ldyBVaW50OEFycmF5KG1zZy5sZW5ndGgpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyArK2kpIHtcbiAgICAgIGJ5dGVzW2ldID0gbXNnLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1kNVRvSGV4RW5jb2RlZEFycmF5KHdvcmRzVG9NZDUoYnl0ZXNUb1dvcmRzKGJ5dGVzKSwgYnl0ZXMubGVuZ3RoICogOCkpO1xufVxuLypcbiAqIENvbnZlcnQgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcyB0byBhbiBhcnJheSBvZiBieXRlc1xuICovXG5cblxuZnVuY3Rpb24gbWQ1VG9IZXhFbmNvZGVkQXJyYXkoaW5wdXQpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICB2YXIgbGVuZ3RoMzIgPSBpbnB1dC5sZW5ndGggKiAzMjtcbiAgdmFyIGhleFRhYiA9ICcwMTIzNDU2Nzg5YWJjZGVmJztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDMyOyBpICs9IDgpIHtcbiAgICB2YXIgeCA9IGlucHV0W2kgPj4gNV0gPj4+IGkgJSAzMiAmIDB4ZmY7XG4gICAgdmFyIGhleCA9IHBhcnNlSW50KGhleFRhYi5jaGFyQXQoeCA+Pj4gNCAmIDB4MGYpICsgaGV4VGFiLmNoYXJBdCh4ICYgMHgwZiksIDE2KTtcbiAgICBvdXRwdXQucHVzaChoZXgpO1xuICB9XG5cbiAgcmV0dXJuIG91dHB1dDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlIG91dHB1dCBsZW5ndGggd2l0aCBwYWRkaW5nIGFuZCBiaXQgbGVuZ3RoXG4gKi9cblxuXG5mdW5jdGlvbiBnZXRPdXRwdXRMZW5ndGgoaW5wdXRMZW5ndGg4KSB7XG4gIHJldHVybiAoaW5wdXRMZW5ndGg4ICsgNjQgPj4+IDkgPDwgNCkgKyAxNCArIDE7XG59XG4vKlxuICogQ2FsY3VsYXRlIHRoZSBNRDUgb2YgYW4gYXJyYXkgb2YgbGl0dGxlLWVuZGlhbiB3b3JkcywgYW5kIGEgYml0IGxlbmd0aC5cbiAqL1xuXG5cbmZ1bmN0aW9uIHdvcmRzVG9NZDUoeCwgbGVuKSB7XG4gIC8qIGFwcGVuZCBwYWRkaW5nICovXG4gIHhbbGVuID4+IDVdIHw9IDB4ODAgPDwgbGVuICUgMzI7XG4gIHhbZ2V0T3V0cHV0TGVuZ3RoKGxlbikgLSAxXSA9IGxlbjtcbiAgdmFyIGEgPSAxNzMyNTg0MTkzO1xuICB2YXIgYiA9IC0yNzE3MzM4Nzk7XG4gIHZhciBjID0gLTE3MzI1ODQxOTQ7XG4gIHZhciBkID0gMjcxNzMzODc4O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkgKz0gMTYpIHtcbiAgICB2YXIgb2xkYSA9IGE7XG4gICAgdmFyIG9sZGIgPSBiO1xuICAgIHZhciBvbGRjID0gYztcbiAgICB2YXIgb2xkZCA9IGQ7XG4gICAgYSA9IG1kNWZmKGEsIGIsIGMsIGQsIHhbaV0sIDcsIC02ODA4NzY5MzYpO1xuICAgIGQgPSBtZDVmZihkLCBhLCBiLCBjLCB4W2kgKyAxXSwgMTIsIC0zODk1NjQ1ODYpO1xuICAgIGMgPSBtZDVmZihjLCBkLCBhLCBiLCB4W2kgKyAyXSwgMTcsIDYwNjEwNTgxOSk7XG4gICAgYiA9IG1kNWZmKGIsIGMsIGQsIGEsIHhbaSArIDNdLCAyMiwgLTEwNDQ1MjUzMzApO1xuICAgIGEgPSBtZDVmZihhLCBiLCBjLCBkLCB4W2kgKyA0XSwgNywgLTE3NjQxODg5Nyk7XG4gICAgZCA9IG1kNWZmKGQsIGEsIGIsIGMsIHhbaSArIDVdLCAxMiwgMTIwMDA4MDQyNik7XG4gICAgYyA9IG1kNWZmKGMsIGQsIGEsIGIsIHhbaSArIDZdLCAxNywgLTE0NzMyMzEzNDEpO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyA3XSwgMjIsIC00NTcwNTk4Myk7XG4gICAgYSA9IG1kNWZmKGEsIGIsIGMsIGQsIHhbaSArIDhdLCA3LCAxNzcwMDM1NDE2KTtcbiAgICBkID0gbWQ1ZmYoZCwgYSwgYiwgYywgeFtpICsgOV0sIDEyLCAtMTk1ODQxNDQxNyk7XG4gICAgYyA9IG1kNWZmKGMsIGQsIGEsIGIsIHhbaSArIDEwXSwgMTcsIC00MjA2Myk7XG4gICAgYiA9IG1kNWZmKGIsIGMsIGQsIGEsIHhbaSArIDExXSwgMjIsIC0xOTkwNDA0MTYyKTtcbiAgICBhID0gbWQ1ZmYoYSwgYiwgYywgZCwgeFtpICsgMTJdLCA3LCAxODA0NjAzNjgyKTtcbiAgICBkID0gbWQ1ZmYoZCwgYSwgYiwgYywgeFtpICsgMTNdLCAxMiwgLTQwMzQxMTAxKTtcbiAgICBjID0gbWQ1ZmYoYywgZCwgYSwgYiwgeFtpICsgMTRdLCAxNywgLTE1MDIwMDIyOTApO1xuICAgIGIgPSBtZDVmZihiLCBjLCBkLCBhLCB4W2kgKyAxNV0sIDIyLCAxMjM2NTM1MzI5KTtcbiAgICBhID0gbWQ1Z2coYSwgYiwgYywgZCwgeFtpICsgMV0sIDUsIC0xNjU3OTY1MTApO1xuICAgIGQgPSBtZDVnZyhkLCBhLCBiLCBjLCB4W2kgKyA2XSwgOSwgLTEwNjk1MDE2MzIpO1xuICAgIGMgPSBtZDVnZyhjLCBkLCBhLCBiLCB4W2kgKyAxMV0sIDE0LCA2NDM3MTc3MTMpO1xuICAgIGIgPSBtZDVnZyhiLCBjLCBkLCBhLCB4W2ldLCAyMCwgLTM3Mzg5NzMwMik7XG4gICAgYSA9IG1kNWdnKGEsIGIsIGMsIGQsIHhbaSArIDVdLCA1LCAtNzAxNTU4NjkxKTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgMTBdLCA5LCAzODAxNjA4Myk7XG4gICAgYyA9IG1kNWdnKGMsIGQsIGEsIGIsIHhbaSArIDE1XSwgMTQsIC02NjA0NzgzMzUpO1xuICAgIGIgPSBtZDVnZyhiLCBjLCBkLCBhLCB4W2kgKyA0XSwgMjAsIC00MDU1Mzc4NDgpO1xuICAgIGEgPSBtZDVnZyhhLCBiLCBjLCBkLCB4W2kgKyA5XSwgNSwgNTY4NDQ2NDM4KTtcbiAgICBkID0gbWQ1Z2coZCwgYSwgYiwgYywgeFtpICsgMTRdLCA5LCAtMTAxOTgwMzY5MCk7XG4gICAgYyA9IG1kNWdnKGMsIGQsIGEsIGIsIHhbaSArIDNdLCAxNCwgLTE4NzM2Mzk2MSk7XG4gICAgYiA9IG1kNWdnKGIsIGMsIGQsIGEsIHhbaSArIDhdLCAyMCwgMTE2MzUzMTUwMSk7XG4gICAgYSA9IG1kNWdnKGEsIGIsIGMsIGQsIHhbaSArIDEzXSwgNSwgLTE0NDQ2ODE0NjcpO1xuICAgIGQgPSBtZDVnZyhkLCBhLCBiLCBjLCB4W2kgKyAyXSwgOSwgLTUxNDAzNzg0KTtcbiAgICBjID0gbWQ1Z2coYywgZCwgYSwgYiwgeFtpICsgN10sIDE0LCAxNzM1MzI4NDczKTtcbiAgICBiID0gbWQ1Z2coYiwgYywgZCwgYSwgeFtpICsgMTJdLCAyMCwgLTE5MjY2MDc3MzQpO1xuICAgIGEgPSBtZDVoaChhLCBiLCBjLCBkLCB4W2kgKyA1XSwgNCwgLTM3ODU1OCk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaSArIDhdLCAxMSwgLTIwMjI1NzQ0NjMpO1xuICAgIGMgPSBtZDVoaChjLCBkLCBhLCBiLCB4W2kgKyAxMV0sIDE2LCAxODM5MDMwNTYyKTtcbiAgICBiID0gbWQ1aGgoYiwgYywgZCwgYSwgeFtpICsgMTRdLCAyMywgLTM1MzA5NTU2KTtcbiAgICBhID0gbWQ1aGgoYSwgYiwgYywgZCwgeFtpICsgMV0sIDQsIC0xNTMwOTkyMDYwKTtcbiAgICBkID0gbWQ1aGgoZCwgYSwgYiwgYywgeFtpICsgNF0sIDExLCAxMjcyODkzMzUzKTtcbiAgICBjID0gbWQ1aGgoYywgZCwgYSwgYiwgeFtpICsgN10sIDE2LCAtMTU1NDk3NjMyKTtcbiAgICBiID0gbWQ1aGgoYiwgYywgZCwgYSwgeFtpICsgMTBdLCAyMywgLTEwOTQ3MzA2NDApO1xuICAgIGEgPSBtZDVoaChhLCBiLCBjLCBkLCB4W2kgKyAxM10sIDQsIDY4MTI3OTE3NCk7XG4gICAgZCA9IG1kNWhoKGQsIGEsIGIsIGMsIHhbaV0sIDExLCAtMzU4NTM3MjIyKTtcbiAgICBjID0gbWQ1aGgoYywgZCwgYSwgYiwgeFtpICsgM10sIDE2LCAtNzIyNTIxOTc5KTtcbiAgICBiID0gbWQ1aGgoYiwgYywgZCwgYSwgeFtpICsgNl0sIDIzLCA3NjAyOTE4OSk7XG4gICAgYSA9IG1kNWhoKGEsIGIsIGMsIGQsIHhbaSArIDldLCA0LCAtNjQwMzY0NDg3KTtcbiAgICBkID0gbWQ1aGgoZCwgYSwgYiwgYywgeFtpICsgMTJdLCAxMSwgLTQyMTgxNTgzNSk7XG4gICAgYyA9IG1kNWhoKGMsIGQsIGEsIGIsIHhbaSArIDE1XSwgMTYsIDUzMDc0MjUyMCk7XG4gICAgYiA9IG1kNWhoKGIsIGMsIGQsIGEsIHhbaSArIDJdLCAyMywgLTk5NTMzODY1MSk7XG4gICAgYSA9IG1kNWlpKGEsIGIsIGMsIGQsIHhbaV0sIDYsIC0xOTg2MzA4NDQpO1xuICAgIGQgPSBtZDVpaShkLCBhLCBiLCBjLCB4W2kgKyA3XSwgMTAsIDExMjY4OTE0MTUpO1xuICAgIGMgPSBtZDVpaShjLCBkLCBhLCBiLCB4W2kgKyAxNF0sIDE1LCAtMTQxNjM1NDkwNSk7XG4gICAgYiA9IG1kNWlpKGIsIGMsIGQsIGEsIHhbaSArIDVdLCAyMSwgLTU3NDM0MDU1KTtcbiAgICBhID0gbWQ1aWkoYSwgYiwgYywgZCwgeFtpICsgMTJdLCA2LCAxNzAwNDg1NTcxKTtcbiAgICBkID0gbWQ1aWkoZCwgYSwgYiwgYywgeFtpICsgM10sIDEwLCAtMTg5NDk4NjYwNik7XG4gICAgYyA9IG1kNWlpKGMsIGQsIGEsIGIsIHhbaSArIDEwXSwgMTUsIC0xMDUxNTIzKTtcbiAgICBiID0gbWQ1aWkoYiwgYywgZCwgYSwgeFtpICsgMV0sIDIxLCAtMjA1NDkyMjc5OSk7XG4gICAgYSA9IG1kNWlpKGEsIGIsIGMsIGQsIHhbaSArIDhdLCA2LCAxODczMzEzMzU5KTtcbiAgICBkID0gbWQ1aWkoZCwgYSwgYiwgYywgeFtpICsgMTVdLCAxMCwgLTMwNjExNzQ0KTtcbiAgICBjID0gbWQ1aWkoYywgZCwgYSwgYiwgeFtpICsgNl0sIDE1LCAtMTU2MDE5ODM4MCk7XG4gICAgYiA9IG1kNWlpKGIsIGMsIGQsIGEsIHhbaSArIDEzXSwgMjEsIDEzMDkxNTE2NDkpO1xuICAgIGEgPSBtZDVpaShhLCBiLCBjLCBkLCB4W2kgKyA0XSwgNiwgLTE0NTUyMzA3MCk7XG4gICAgZCA9IG1kNWlpKGQsIGEsIGIsIGMsIHhbaSArIDExXSwgMTAsIC0xMTIwMjEwMzc5KTtcbiAgICBjID0gbWQ1aWkoYywgZCwgYSwgYiwgeFtpICsgMl0sIDE1LCA3MTg3ODcyNTkpO1xuICAgIGIgPSBtZDVpaShiLCBjLCBkLCBhLCB4W2kgKyA5XSwgMjEsIC0zNDM0ODU1NTEpO1xuICAgIGEgPSBzYWZlQWRkKGEsIG9sZGEpO1xuICAgIGIgPSBzYWZlQWRkKGIsIG9sZGIpO1xuICAgIGMgPSBzYWZlQWRkKGMsIG9sZGMpO1xuICAgIGQgPSBzYWZlQWRkKGQsIG9sZGQpO1xuICB9XG5cbiAgcmV0dXJuIFthLCBiLCBjLCBkXTtcbn1cbi8qXG4gKiBDb252ZXJ0IGFuIGFycmF5IGJ5dGVzIHRvIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHNcbiAqIENoYXJhY3RlcnMgPjI1NSBoYXZlIHRoZWlyIGhpZ2gtYnl0ZSBzaWxlbnRseSBpZ25vcmVkLlxuICovXG5cblxuZnVuY3Rpb24gYnl0ZXNUb1dvcmRzKGlucHV0KSB7XG4gIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgbGVuZ3RoOCA9IGlucHV0Lmxlbmd0aCAqIDg7XG4gIHZhciBvdXRwdXQgPSBuZXcgVWludDMyQXJyYXkoZ2V0T3V0cHV0TGVuZ3RoKGxlbmd0aDgpKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDg7IGkgKz0gOCkge1xuICAgIG91dHB1dFtpID4+IDVdIHw9IChpbnB1dFtpIC8gOF0gJiAweGZmKSA8PCBpICUgMzI7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuLypcbiAqIEFkZCBpbnRlZ2Vycywgd3JhcHBpbmcgYXQgMl4zMi4gVGhpcyB1c2VzIDE2LWJpdCBvcGVyYXRpb25zIGludGVybmFsbHlcbiAqIHRvIHdvcmsgYXJvdW5kIGJ1Z3MgaW4gc29tZSBKUyBpbnRlcnByZXRlcnMuXG4gKi9cblxuXG5mdW5jdGlvbiBzYWZlQWRkKHgsIHkpIHtcbiAgdmFyIGxzdyA9ICh4ICYgMHhmZmZmKSArICh5ICYgMHhmZmZmKTtcbiAgdmFyIG1zdyA9ICh4ID4+IDE2KSArICh5ID4+IDE2KSArIChsc3cgPj4gMTYpO1xuICByZXR1cm4gbXN3IDw8IDE2IHwgbHN3ICYgMHhmZmZmO1xufVxuLypcbiAqIEJpdHdpc2Ugcm90YXRlIGEgMzItYml0IG51bWJlciB0byB0aGUgbGVmdC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGJpdFJvdGF0ZUxlZnQobnVtLCBjbnQpIHtcbiAgcmV0dXJuIG51bSA8PCBjbnQgfCBudW0gPj4+IDMyIC0gY250O1xufVxuLypcbiAqIFRoZXNlIGZ1bmN0aW9ucyBpbXBsZW1lbnQgdGhlIGZvdXIgYmFzaWMgb3BlcmF0aW9ucyB0aGUgYWxnb3JpdGhtIHVzZXMuXG4gKi9cblxuXG5mdW5jdGlvbiBtZDVjbW4ocSwgYSwgYiwgeCwgcywgdCkge1xuICByZXR1cm4gc2FmZUFkZChiaXRSb3RhdGVMZWZ0KHNhZmVBZGQoc2FmZUFkZChhLCBxKSwgc2FmZUFkZCh4LCB0KSksIHMpLCBiKTtcbn1cblxuZnVuY3Rpb24gbWQ1ZmYoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICByZXR1cm4gbWQ1Y21uKGIgJiBjIHwgfmIgJiBkLCBhLCBiLCB4LCBzLCB0KTtcbn1cblxuZnVuY3Rpb24gbWQ1Z2coYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICByZXR1cm4gbWQ1Y21uKGIgJiBkIHwgYyAmIH5kLCBhLCBiLCB4LCBzLCB0KTtcbn1cblxuZnVuY3Rpb24gbWQ1aGgoYSwgYiwgYywgZCwgeCwgcywgdCkge1xuICByZXR1cm4gbWQ1Y21uKGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7XG59XG5cbmZ1bmN0aW9uIG1kNWlpKGEsIGIsIGMsIGQsIHgsIHMsIHQpIHtcbiAgcmV0dXJuIG1kNWNtbihjIF4gKGIgfCB+ZCksIGEsIGIsIHgsIHMsIHQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZDU7IiwiaW1wb3J0IHYzNSBmcm9tICcuL3YzNS5qcyc7XG5pbXBvcnQgbWQ1IGZyb20gJy4vbWQ1LmpzJztcbnZhciB2MyA9IHYzNSgndjMnLCAweDMwLCBtZDUpO1xuZXhwb3J0IGRlZmF1bHQgdjM7IiwiaW1wb3J0IHJuZyBmcm9tICcuL3JuZy5qcyc7XG5pbXBvcnQgc3RyaW5naWZ5IGZyb20gJy4vc3RyaW5naWZ5LmpzJztcblxuZnVuY3Rpb24gdjQob3B0aW9ucywgYnVmLCBvZmZzZXQpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBybmRzID0gb3B0aW9ucy5yYW5kb20gfHwgKG9wdGlvbnMucm5nIHx8IHJuZykoKTsgLy8gUGVyIDQuNCwgc2V0IGJpdHMgZm9yIHZlcnNpb24gYW5kIGBjbG9ja19zZXFfaGlfYW5kX3Jlc2VydmVkYFxuXG4gIHJuZHNbNl0gPSBybmRzWzZdICYgMHgwZiB8IDB4NDA7XG4gIHJuZHNbOF0gPSBybmRzWzhdICYgMHgzZiB8IDB4ODA7IC8vIENvcHkgYnl0ZXMgdG8gYnVmZmVyLCBpZiBwcm92aWRlZFxuXG4gIGlmIChidWYpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgICAgYnVmW29mZnNldCArIGldID0gcm5kc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgcmV0dXJuIHN0cmluZ2lmeShybmRzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdjQ7IiwiLy8gQWRhcHRlZCBmcm9tIENocmlzIFZlbmVzcycgU0hBMSBjb2RlIGF0XG4vLyBodHRwOi8vd3d3Lm1vdmFibGUtdHlwZS5jby51ay9zY3JpcHRzL3NoYTEuaHRtbFxuZnVuY3Rpb24gZihzLCB4LCB5LCB6KSB7XG4gIHN3aXRjaCAocykge1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiB4ICYgeSBeIH54ICYgejtcblxuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiB4IF4geSBeIHo7XG5cbiAgICBjYXNlIDI6XG4gICAgICByZXR1cm4geCAmIHkgXiB4ICYgeiBeIHkgJiB6O1xuXG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHggXiB5IF4gejtcbiAgfVxufVxuXG5mdW5jdGlvbiBST1RMKHgsIG4pIHtcbiAgcmV0dXJuIHggPDwgbiB8IHggPj4+IDMyIC0gbjtcbn1cblxuZnVuY3Rpb24gc2hhMShieXRlcykge1xuICB2YXIgSyA9IFsweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjLCAweGNhNjJjMWQ2XTtcbiAgdmFyIEggPSBbMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSwgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMF07XG5cbiAgaWYgKHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycpIHtcbiAgICB2YXIgbXNnID0gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGJ5dGVzKSk7IC8vIFVURjggZXNjYXBlXG5cbiAgICBieXRlcyA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyArK2kpIHtcbiAgICAgIGJ5dGVzLnB1c2gobXNnLmNoYXJDb2RlQXQoaSkpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShieXRlcykpIHtcbiAgICAvLyBDb252ZXJ0IEFycmF5LWxpa2UgdG8gQXJyYXlcbiAgICBieXRlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGJ5dGVzKTtcbiAgfVxuXG4gIGJ5dGVzLnB1c2goMHg4MCk7XG4gIHZhciBsID0gYnl0ZXMubGVuZ3RoIC8gNCArIDI7XG4gIHZhciBOID0gTWF0aC5jZWlsKGwgLyAxNik7XG4gIHZhciBNID0gbmV3IEFycmF5KE4pO1xuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCBOOyArK19pKSB7XG4gICAgdmFyIGFyciA9IG5ldyBVaW50MzJBcnJheSgxNik7XG5cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyArK2opIHtcbiAgICAgIGFycltqXSA9IGJ5dGVzW19pICogNjQgKyBqICogNF0gPDwgMjQgfCBieXRlc1tfaSAqIDY0ICsgaiAqIDQgKyAxXSA8PCAxNiB8IGJ5dGVzW19pICogNjQgKyBqICogNCArIDJdIDw8IDggfCBieXRlc1tfaSAqIDY0ICsgaiAqIDQgKyAzXTtcbiAgICB9XG5cbiAgICBNW19pXSA9IGFycjtcbiAgfVxuXG4gIE1bTiAtIDFdWzE0XSA9IChieXRlcy5sZW5ndGggLSAxKSAqIDggLyBNYXRoLnBvdygyLCAzMik7XG4gIE1bTiAtIDFdWzE0XSA9IE1hdGguZmxvb3IoTVtOIC0gMV1bMTRdKTtcbiAgTVtOIC0gMV1bMTVdID0gKGJ5dGVzLmxlbmd0aCAtIDEpICogOCAmIDB4ZmZmZmZmZmY7XG5cbiAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgTjsgKytfaTIpIHtcbiAgICB2YXIgVyA9IG5ldyBVaW50MzJBcnJheSg4MCk7XG5cbiAgICBmb3IgKHZhciB0ID0gMDsgdCA8IDE2OyArK3QpIHtcbiAgICAgIFdbdF0gPSBNW19pMl1bdF07XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX3QgPSAxNjsgX3QgPCA4MDsgKytfdCkge1xuICAgICAgV1tfdF0gPSBST1RMKFdbX3QgLSAzXSBeIFdbX3QgLSA4XSBeIFdbX3QgLSAxNF0gXiBXW190IC0gMTZdLCAxKTtcbiAgICB9XG5cbiAgICB2YXIgYSA9IEhbMF07XG4gICAgdmFyIGIgPSBIWzFdO1xuICAgIHZhciBjID0gSFsyXTtcbiAgICB2YXIgZCA9IEhbM107XG4gICAgdmFyIGUgPSBIWzRdO1xuXG4gICAgZm9yICh2YXIgX3QyID0gMDsgX3QyIDwgODA7ICsrX3QyKSB7XG4gICAgICB2YXIgcyA9IE1hdGguZmxvb3IoX3QyIC8gMjApO1xuICAgICAgdmFyIFQgPSBST1RMKGEsIDUpICsgZihzLCBiLCBjLCBkKSArIGUgKyBLW3NdICsgV1tfdDJdID4+PiAwO1xuICAgICAgZSA9IGQ7XG4gICAgICBkID0gYztcbiAgICAgIGMgPSBST1RMKGIsIDMwKSA+Pj4gMDtcbiAgICAgIGIgPSBhO1xuICAgICAgYSA9IFQ7XG4gICAgfVxuXG4gICAgSFswXSA9IEhbMF0gKyBhID4+PiAwO1xuICAgIEhbMV0gPSBIWzFdICsgYiA+Pj4gMDtcbiAgICBIWzJdID0gSFsyXSArIGMgPj4+IDA7XG4gICAgSFszXSA9IEhbM10gKyBkID4+PiAwO1xuICAgIEhbNF0gPSBIWzRdICsgZSA+Pj4gMDtcbiAgfVxuXG4gIHJldHVybiBbSFswXSA+PiAyNCAmIDB4ZmYsIEhbMF0gPj4gMTYgJiAweGZmLCBIWzBdID4+IDggJiAweGZmLCBIWzBdICYgMHhmZiwgSFsxXSA+PiAyNCAmIDB4ZmYsIEhbMV0gPj4gMTYgJiAweGZmLCBIWzFdID4+IDggJiAweGZmLCBIWzFdICYgMHhmZiwgSFsyXSA+PiAyNCAmIDB4ZmYsIEhbMl0gPj4gMTYgJiAweGZmLCBIWzJdID4+IDggJiAweGZmLCBIWzJdICYgMHhmZiwgSFszXSA+PiAyNCAmIDB4ZmYsIEhbM10gPj4gMTYgJiAweGZmLCBIWzNdID4+IDggJiAweGZmLCBIWzNdICYgMHhmZiwgSFs0XSA+PiAyNCAmIDB4ZmYsIEhbNF0gPj4gMTYgJiAweGZmLCBIWzRdID4+IDggJiAweGZmLCBIWzRdICYgMHhmZl07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNoYTE7IiwiaW1wb3J0IHYzNSBmcm9tICcuL3YzNS5qcyc7XG5pbXBvcnQgc2hhMSBmcm9tICcuL3NoYTEuanMnO1xudmFyIHY1ID0gdjM1KCd2NScsIDB4NTAsIHNoYTEpO1xuZXhwb3J0IGRlZmF1bHQgdjU7IiwiZXhwb3J0IGRlZmF1bHQgJzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCc7IiwiaW1wb3J0IHZhbGlkYXRlIGZyb20gJy4vdmFsaWRhdGUuanMnO1xuXG5mdW5jdGlvbiB2ZXJzaW9uKHV1aWQpIHtcbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignSW52YWxpZCBVVUlEJyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VJbnQodXVpZC5zdWJzdHIoMTQsIDEpLCAxNik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZlcnNpb247IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY29udmVydEZpbGVUeXBlID0gZXhwb3J0cy5GaWxlVHlwZUFsaWFzID0gZXhwb3J0cy5GaWxlVHlwZSA9IHZvaWQgMDtcbi8qKlxuICog55+z5aKo5paH5qGj57G75Z6LXG4gKi9cbnZhciBGaWxlVHlwZTtcbihmdW5jdGlvbiAoRmlsZVR5cGUpIHtcbiAgICAvKipcbiAgICAgKiDkvKDnu5/mlofmoaNcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkRvY3VtZW50UHJvXCJdID0gXCJkb2N1bWVudFByb1wiO1xuICAgIC8qKlxuICAgICAqIOi9u+aWh+aho1xuICAgICAqL1xuICAgIEZpbGVUeXBlW1wiRG9jdW1lbnRcIl0gPSBcImRvY3VtZW50XCI7XG4gICAgLyoqXG4gICAgICog6KGo5qC8XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJTcHJlYWRzaGVldFwiXSA9IFwic3ByZWFkc2hlZXRcIjtcbiAgICAvKipcbiAgICAgKiDkuJPkuJrlubvnga/niYdcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIlByZXNlbnRhdGlvblwiXSA9IFwicHJlc2VudGF0aW9uXCI7XG4gICAgLyoqXG4gICAgICog5bqU55So6KGo5qC8XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJUYWJsZVwiXSA9IFwidGFibGVcIjtcbiAgICAvKipcbiAgICAgKiDooajljZVcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkZvcm1cIl0gPSBcImZvcm1cIjtcbiAgICAvKipcbiAgICAgKiDmtYHnqIvlm75cbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIkZsb3djaGFydFwiXSA9IFwiZmxvd2NoYXJ0XCI7XG4gICAgLyoqXG4gICAgICog5oCd57u05a+85Zu+XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJNaW5kbWFwXCJdID0gXCJtaW5kbWFwXCI7XG4gICAgLyoqXG4gICAgICog55m95p2/XG4gICAgICovXG4gICAgRmlsZVR5cGVbXCJCb2FyZFwiXSA9IFwiYm9hcmRcIjtcbiAgICAvKipcbiAgICAgKiDmnKrnn6XnsbvlnotcbiAgICAgKi9cbiAgICBGaWxlVHlwZVtcIlVua25vd25cIl0gPSBcInVua25vd25cIjtcbn0pKEZpbGVUeXBlID0gZXhwb3J0cy5GaWxlVHlwZSB8fCAoZXhwb3J0cy5GaWxlVHlwZSA9IHt9KSk7XG5leHBvcnRzLkZpbGVUeXBlQWxpYXMgPSAoX2EgPSB7fSxcbiAgICBfYVtGaWxlVHlwZS5Eb2N1bWVudF0gPSAnZG9jcycsXG4gICAgX2FbRmlsZVR5cGUuRG9jdW1lbnRQcm9dID0gJ2RvY3gnLFxuICAgIF9hW0ZpbGVUeXBlLlNwcmVhZHNoZWV0XSA9ICdzaGVldHMnLFxuICAgIF9hW0ZpbGVUeXBlLlByZXNlbnRhdGlvbl0gPSAncHJlc2VudGF0aW9uJyxcbiAgICBfYVtGaWxlVHlwZS5UYWJsZV0gPSAndGFibGUnLFxuICAgIF9hW0ZpbGVUeXBlLkZvcm1dID0gJ2Zvcm0nLFxuICAgIF9hW0ZpbGVUeXBlLk1pbmRtYXBdID0gJ21pbmRtYXAnLFxuICAgIF9hW0ZpbGVUeXBlLkJvYXJkXSA9ICdib2FyZCcsXG4gICAgX2FbRmlsZVR5cGUuRmxvd2NoYXJ0XSA9ICdmbG93Y2hhcnQnLFxuICAgIF9hKTtcbi8qKlxuICog5qC55o2u5Lyg5YWl5YC86L2s5o2i5Li6IEZpbGVUeXBlIOaemuS4vuWAvFxuICovXG5mdW5jdGlvbiBjb252ZXJ0RmlsZVR5cGUodmFsdWUpIHtcbiAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2MgPSBfX3ZhbHVlcyhPYmplY3QuZW50cmllcyhGaWxlVHlwZSkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9lID0gX19yZWFkKF9kLnZhbHVlLCAyKSwgayA9IF9lWzBdLCB2ID0gX2VbMV07XG4gICAgICAgICAgICAgICAgaWYgKGsgPT09IHZhbHVlIHx8IHYgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfZiA9IF9fdmFsdWVzKE9iamVjdC5lbnRyaWVzKGV4cG9ydHMuRmlsZVR5cGVBbGlhcykpLCBfZyA9IF9mLm5leHQoKTsgIV9nLmRvbmU7IF9nID0gX2YubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9oID0gX19yZWFkKF9nLnZhbHVlLCAyKSwgayA9IF9oWzBdLCB2ID0gX2hbMV07XG4gICAgICAgICAgICAgICAgaWYgKHYgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIpIHRocm93IGVfMi5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIC0yOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5Eb2N1bWVudDtcbiAgICAgICAgICAgIGNhc2UgLTQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlNwcmVhZHNoZWV0O1xuICAgICAgICAgICAgY2FzZSAtNjpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRG9jdW1lbnRQcm87XG4gICAgICAgICAgICBjYXNlIC03OlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5NaW5kbWFwO1xuICAgICAgICAgICAgY2FzZSAtODpcbiAgICAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuRm9ybTtcbiAgICAgICAgICAgIGNhc2UgLTk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkJvYXJkO1xuICAgICAgICAgICAgY2FzZSAtMTA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlByZXNlbnRhdGlvbjtcbiAgICAgICAgICAgIGNhc2UgLTExOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5UYWJsZTtcbiAgICAgICAgICAgIGNhc2UgLTEzOlxuICAgICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5GbG93Y2hhcnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEZpbGVUeXBlLlVua25vd247XG59XG5leHBvcnRzLmNvbnZlcnRGaWxlVHlwZSA9IGNvbnZlcnRGaWxlVHlwZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5SZWFkeVN0YXRlID0gZXhwb3J0cy5pc1NES0V2ZW50TWVzc2FnZSA9IGV4cG9ydHMuU0RLRXZlbnQgPSB2b2lkIDA7XG4vKipcbiAqIFNESyDnm7jlhbPnmoTkuovku7bvvIzlkoznvJbovpHlmajml6DlhbNcbiAqL1xuZXhwb3J0cy5TREtFdmVudCA9IE9iamVjdC5mcmVlemUoe1xuICAgIC8qKlxuICAgICAqIOS4gOiIrOaMhyBjb250YWluZXIgdmlld3BvcnQg5Y+R55Sf5Y+Y5YyW5pe26Kem5Y+R77yM5q+U5aaC56qX5Y+j5aSn5bCP5Y+Y5YyW44CC5Lya5LyY5YWI5L2/55SoIHdpbmRvdy52aXN1YWxWaWV3cG9ydCByZXNpemUg5LqL5Lu277yM5LiN5Y+v55So5pe25L2/55SoIHdpbmRvdy5yZXNpemUg5LqL5Lu244CCXG4gICAgICovXG4gICAgVmlld3BvcnRSZXNpemU6ICdWaWV3cG9ydFJlc2l6ZScsXG4gICAgLyoqXG4gICAgICogU0RLIOWSjOe8lui+keWZqOWIneWni+WMlueKtuaAgVxuICAgICAqL1xuICAgIFJlYWR5U3RhdGU6ICdSZWFkeVN0YXRlJyxcbn0pO1xuLyoqXG4gKiDliKTmlq3mmK/lkKbmmK8gU0RLRXZlbnQg5LqL5Lu25raI5oGvXG4gKi9cbmZ1bmN0aW9uIGlzU0RLRXZlbnRNZXNzYWdlKGlucHV0KSB7XG4gICAgdmFyIGV2ZW50O1xuICAgIGlmIChpbnB1dCAhPSBudWxsKSB7XG4gICAgICAgIGV2ZW50ID0gaW5wdXQuZXZlbnQ7XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgZXZlbnQgPT09ICdzdHJpbmcnICYmIGV2ZW50IGluIGV4cG9ydHMuU0RLRXZlbnQ7XG59XG5leHBvcnRzLmlzU0RLRXZlbnRNZXNzYWdlID0gaXNTREtFdmVudE1lc3NhZ2U7XG4vKipcbiAqIFNESyDlkoznvJbovpHlmajliJ3lp4vljJbnirbmgIFcbiAqL1xudmFyIFJlYWR5U3RhdGU7XG4oZnVuY3Rpb24gKFJlYWR5U3RhdGUpIHtcbiAgICAvKipcbiAgICAgKiDmraPlnKjliJ3lp4vljJYgU0RLXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIkxvYWRpbmdcIl0gPSBcImxvYWRpbmdcIjtcbiAgICAvKipcbiAgICAgKiDmraPlnKjliJ3lp4vljJbnvJbovpHlmahcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlW1wiTG9hZGluZ0VkaXRvclwiXSA9IFwibG9hZGluZ0VkaXRvclwiO1xuICAgIC8qKlxuICAgICAqIFNESyDlkoznvJbovpHlmajliJ3lp4vljJblrozmiJDvvIzlm6DnvJbovpHlmajlkKvlvILmraXnu4Tku7bvvIzlm6DmraTku4Xku6Pooajlj6/ku6XlkoznvJbovpHlmajkuqTkupLvvIzkuI3ku6PooajnvJbovpHlmajlrozmiJDlhajpg6jliqDovb3jgIJcbiAgICAgKi9cbiAgICBSZWFkeVN0YXRlW1wiUmVhZHlcIl0gPSBcInJlYWR5XCI7XG4gICAgLyoqXG4gICAgICog5Yid5aeL5YyW5aSx6LSlXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIkZhaWxlZFwiXSA9IFwiZmFpbGVkXCI7XG4gICAgLyoqXG4gICAgICog5bey57uP6KKr6ZSA5q+BXG4gICAgICovXG4gICAgUmVhZHlTdGF0ZVtcIkRpc2Nvbm5lY3RlZFwiXSA9IFwiZGlzY29ubmVjdGVkXCI7XG59KShSZWFkeVN0YXRlID0gZXhwb3J0cy5SZWFkeVN0YXRlIHx8IChleHBvcnRzLlJlYWR5U3RhdGUgPSB7fSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vQVBJQWRhcHRvclwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vRmlsZVwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vZXZlbnRcIiksIGV4cG9ydHMpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlVybFNoYXJpbmdUeXBlID0gZXhwb3J0cy5TcHJlYWRzaGVldFNoYXJpbmdGcm9tID0gZXhwb3J0cy5Db250YWluZXJNZXRob2QgPSBleHBvcnRzLkludm9rZU1ldGhvZCA9IHZvaWQgMDtcbi8qKlxuICogSlMgU0RLIOS5i+mXtOmAmuS/oeeUqOeahOaWueazleOAguS4gOiIrOeUqOWcqCBXZWJvZmZpY2VCcm9hZGNhc3RDaGFubmVsLmludm9rZSgpIOS4reOAglxuICovXG52YXIgSW52b2tlTWV0aG9kO1xuKGZ1bmN0aW9uIChJbnZva2VNZXRob2QpIHtcbiAgICAvKipcbiAgICAgKiBTREsg5Yid5aeL5YyW77yM55So5LqO6I635Y+W6YWN572u5L+h5oGvXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiU0RLSW5pdFwiXSA9IFwiU0RLSW5pdFwiO1xuICAgIC8qKlxuICAgICAqIOeUqOS6jiBlcnJvciDlpITnkIZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJFcnJvclwiXSA9IFwiZXJyb3JcIjtcbiAgICAvKipcbiAgICAgKiDnlKjkuo7lpITnkIYgUmVhZHlTdGF0ZSDlj5jljJZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJSZWFkeVN0YXRlXCJdID0gXCJyZWFkeVN0YXRlXCI7XG4gICAgLyoqXG4gICAgICog55So5LqO5pu05paw6Ym05p2D5L+h5oGvXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiU2V0Q3JlZGVudGlhbHNcIl0gPSBcInNldENyZWRlbnRpYWxzXCI7XG4gICAgLyoqXG4gICAgICog6LCD55So5a655Zmo5pa55rOVXG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiSW52b2tlQ29udGFpbmVyTWV0aG9kXCJdID0gXCJpbnZva2VDb250YWluZXJNZXRob2RcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLosIPnlKjnvJbovpHlmajmlrnms5XvvIzlubblsIbnu5Pmnpzov5Tlm55cbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJJbnZva2VFZGl0b3JNZXRob2RcIl0gPSBcImludm9rZUVkaXRvck1ldGhvZFwiO1xuICAgIC8qKlxuICAgICAqIOa0vuWPkSBTREsg6Ieq6Lqr55u45YWz55qE5LqL5Lu2XG4gICAgICovXG4gICAgSW52b2tlTWV0aG9kW1wiRGlzcGF0Y2hTREtFdmVudFwiXSA9IFwiZGlzcGF0Y2hTREtFdmVudFwiO1xuICAgIC8qKlxuICAgICAqIOa0vuWPkee8lui+keWZqOebuOWFs+eahOS6i+S7tlxuICAgICAqL1xuICAgIEludm9rZU1ldGhvZFtcIkRpc3BhdGNoRWRpdG9yRXZlbnRcIl0gPSBcImRpc3BhdGNoRWRpdG9yRXZlbnRcIjtcbiAgICAvKipcbiAgICAgKiDnm5HlkKznvJbovpHlmajnm7jlhbPnmoTkuovku7ZcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJMaXN0ZW5FZGl0b3JFdmVudFwiXSA9IFwibGlzdGVuRWRpdG9yRXZlbnRcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLmgKfog73kv6Hmga/liJfooahcbiAgICAgKi9cbiAgICBJbnZva2VNZXRob2RbXCJSZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzXCJdID0gXCJyZXF1ZXN0UGVyZm9ybWFuY2VFbnRyaWVzXCI7XG59KShJbnZva2VNZXRob2QgPSBleHBvcnRzLkludm9rZU1ldGhvZCB8fCAoZXhwb3J0cy5JbnZva2VNZXRob2QgPSB7fSkpO1xuLyoqXG4gKiDlrrnlmajog73mj5DkvpvnmoTmlrnms5VcbiAqL1xudmFyIENvbnRhaW5lck1ldGhvZDtcbihmdW5jdGlvbiAoQ29udGFpbmVyTWV0aG9kKSB7XG4gICAgLyoqXG4gICAgICog6I635Y+W5a655Zmo55qE5bC65a+45L+h5oGvXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiR2V0Q29udGFpbmVyUmVjdFwiXSA9IFwiZ2V0Q29udGFpbmVyUmVjdFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOaJk+W8gOmTvuaOpVxuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIk9wZW5MaW5rXCJdID0gXCJvcGVuTGlua1wiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOeUn+aIkCBVUkxcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJHZW5lcmF0ZVVybFwiXSA9IFwiZ2VuZXJhdGVVcmxcIjtcbiAgICAvKipcbiAgICAgKiDor7fmsYLlrrnlmajmiZPlvIDlpITnkIbnp7vliqjnq6/ngrnlh7vkuovku7ZcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJNZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlXCJdID0gXCJtZW50aW9uQ2xpY2tIYW5kbGVyRm9yTW9iaWxlXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo6Kej5p6QIFVSTO+8jOW5tui/lOWbniBGaWxlSW5mb1xuICAgICAqL1xuICAgIENvbnRhaW5lck1ldGhvZFtcIkdldEZpbGVJbmZvRnJvbVVybFwiXSA9IFwiZ2V0RmlsZUluZm9Gcm9tVXJsXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo5pi+56S6562+5ZCN57uE5Lu277yM5Y+X5aWX5Lu25ZKM54mI5pys6ZmQ5Yi2XG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiU2hvd1NpZ25hdHVyZUNvbXBvbmVudFwiXSA9IFwic2hvd1NpZ25hdHVyZUNvbXBvbmVudFwiO1xuICAgIC8qKlxuICAgICAqIOivt+axguWuueWZqOaYvuekunRvYXN077yM5Y+X5aWX5Lu25ZKM54mI5pys6ZmQ5Yi2XG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiU2hvd1RvYXN0XCJdID0gXCJzaG93VG9hc3RcIjtcbiAgICAvKipcbiAgICAgKiDpgJrnn6XnlKjmiLfmiafooYzoh6rlrprkuYnmk43kvZzvvIzmk43kvZznlLHnlKjmiLfoh6rlrprkuYnmjInpkq7op6blj5FcbiAgICAgKi9cbiAgICBDb250YWluZXJNZXRob2RbXCJIYW5kbGVDdXN0b21UYXNrXCJdID0gXCJoYW5kbGVDdXN0b21UYXNrXCI7XG4gICAgLyoqXG4gICAgICog6K+35rGC5a655Zmo6I635Y+W6Ym05p2D5L+h5oGvXG4gICAgICovXG4gICAgQ29udGFpbmVyTWV0aG9kW1wiR2V0Q3JlZGVudGlhbHNcIl0gPSBcImdldENyZWRlbnRpYWxzXCI7XG59KShDb250YWluZXJNZXRob2QgPSBleHBvcnRzLkNvbnRhaW5lck1ldGhvZCB8fCAoZXhwb3J0cy5Db250YWluZXJNZXRob2QgPSB7fSkpO1xudmFyIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb207XG4oZnVuY3Rpb24gKFNwcmVhZHNoZWV0U2hhcmluZ0Zyb20pIHtcbiAgICAvKipcbiAgICAgKiDojrflj5bpgInljLrpk77mjqVcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wiY29weVJhbmdlTGlua1wiXSA9IFwiY29weVJhbmdlTGlua1wiO1xuICAgIC8qKlxuICAgICAqIOWkjeWItueLrOeri+inhuWbvumTvuaOpVxuICAgICAqL1xuICAgIFNwcmVhZHNoZWV0U2hhcmluZ0Zyb21bXCJjb3B5Vmlld3BvcnRMaW5rXCJdID0gXCJjb3B5Vmlld3BvcnRMaW5rXCI7XG4gICAgLyoqXG4gICAgICog5aSN5Yi26ZO+5o6l5Yiw5bel5L2c6KGo55qE5YaF6ZO+5o6lXG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcImNvcHlTaGVldExpbmtcIl0gPSBcImNvcHlTaGVldExpbmtcIjtcbiAgICAvKipcbiAgICAgKiDot6jooajmoLzlvJXnlKhcbiAgICAgKi9cbiAgICBTcHJlYWRzaGVldFNoYXJpbmdGcm9tW1wiaW1wb3J0UmFuZ2VcIl0gPSBcImltcG9ydFJhbmdlXCI7XG4gICAgLyoqXG4gICAgICog6aKE6KeI6KKr6Leo6KGo5byV55So5oiW5ZCI5bm25bel5L2c6KGo5byV55So55qE6KGo5qC8XG4gICAgICovXG4gICAgU3ByZWFkc2hlZXRTaGFyaW5nRnJvbVtcInByZXZpZXdcIl0gPSBcInByZXZpZXdcIjtcbn0pKFNwcmVhZHNoZWV0U2hhcmluZ0Zyb20gPSBleHBvcnRzLlNwcmVhZHNoZWV0U2hhcmluZ0Zyb20gfHwgKGV4cG9ydHMuU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSA9IHt9KSk7XG4vKipcbiAqIOWIhuS6q+mTvuaOpeeahOexu+Wei++8jOeUqOS6juWcqCBnZW5lcmF0ZVVybCDkuK3ov5Tlm57kuI3lkIznmoQgVVJM44CCXG4gKiDmr5TlpoIgcmV0dXJuIHNoYXJpbmdUeXBlID09PSBVcmxTaGFyaW5nVHlwZS5Gb3JtRmlsbCA/ICcvZm9ybS8xL2ZpbGwnIDogJy9mb3JtLzEn44CCXG4gKiAnL2Zvcm0vMS9maWxsJyDkuLrlr7nlpJbljL/lkI3lj6/orr/pl67loavlhpnooajljZXnmoTpk77mjqXvvIwnL2Zvcm0vMScg5Li65a+55YaF57yW6L6R6KGo5Y2V5YWD57Sg44CB6ZyA6Ym05p2D55qE6ZO+5o6l44CCXG4gKi9cbnZhciBVcmxTaGFyaW5nVHlwZTtcbihmdW5jdGlvbiAoVXJsU2hhcmluZ1R5cGUpIHtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ovbvmlofmoaPpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkRvY1wiXSA9IFwiZG9jXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv5Lyg57uf5paH5qGj6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJEb2N4XCJdID0gXCJkb2N4XCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv6KGo5qC86ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJTcHJlYWRzaGVldFwiXSA9IFwic2hlZXRcIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ooajljZXnvJbovpHlmajpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkZvcm1cIl0gPSBcImZvcm1cIjtcbiAgICAvKipcbiAgICAgKiDku6PooajliIbkuqvnmoTmmK/ooajljZXpooTop4jpk77mjqVcbiAgICAgKi9cbiAgICBVcmxTaGFyaW5nVHlwZVtcIkZvcm1QcmV2aWV3XCJdID0gXCJmb3JtUHJldmlld1wiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+ihqOWNleWhq+WGmemTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiRm9ybUZpbGxcIl0gPSBcImZvcm1GaWxsXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv5bm754Gv54mH6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJQcmVzZW50YXRpb25cIl0gPSBcInByZXNlbnRhdGlvblwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+W6lOeUqOihqOagvOmTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiVGFibGVcIl0gPSBcInRhYmxlXCI7XG4gICAgLyoqXG4gICAgICog5Luj6KGo5YiG5Lqr55qE5piv5rWB56iL5Zu+6ZO+5o6lXG4gICAgICovXG4gICAgVXJsU2hhcmluZ1R5cGVbXCJGbG93Y2hhcnRcIl0gPSBcImZsb3djaGFydFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+aAnee7tOWvvOWbvumTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiTWluZG1hcFwiXSA9IFwibWluZG1hcFwiO1xuICAgIC8qKlxuICAgICAqIOS7o+ihqOWIhuS6q+eahOaYr+eZveadv+mTvuaOpVxuICAgICAqL1xuICAgIFVybFNoYXJpbmdUeXBlW1wiQm9hcmRcIl0gPSBcImJvYXJkXCI7XG59KShVcmxTaGFyaW5nVHlwZSA9IGV4cG9ydHMuVXJsU2hhcmluZ1R5cGUgfHwgKGV4cG9ydHMuVXJsU2hhcmluZ1R5cGUgPSB7fSkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19pbXBvcnREZWZhdWx0ID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydERlZmF1bHQpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IFwiZGVmYXVsdFwiOiBtb2QgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlN0YXJ0UGFyYW1zID0gdm9pZCAwO1xudmFyIGlzX3BsYWluX29ial8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJpcy1wbGFpbi1vYmpcIikpO1xudmFyIGJhc2U2MnN0cl8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJiYXNlNjJzdHJcIikpO1xudmFyIGJhc2U2MiA9IGJhc2U2MnN0cl8xLmRlZmF1bHQuY3JlYXRlSW5zdGFuY2UoKTtcbnZhciBTdGFydFBhcmFtcyA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHtcbiAgICAvKipcbiAgICAgKiDliJvlu7rkuIDkuKogU3RhcnRQYXJhbXMg5a+56LGh44CCXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsOWvueixoe+8jOWPr+S7peaYr+Wtl+espuS4suOAgee6r+WvueixoeaIliBTdGFydFBhcmFtcyDlrp7kvovjgILmjqXlj5fmlbDnu4TlvaLlvI/vvIzkvKDlhaXmlbDnu4TkvJrlkIjlubbmiYDmnInpobnnm67jgIJcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBTdGFydFBhcmFtcyhwYXJhbXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gU3RhcnRQYXJhbXMucGFyc2UocGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKDAsIGlzX3BsYWluX29ial8xLmRlZmF1bHQpKHBhcmFtcykpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgcGFyYW1zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwYXJhbXMgaW5zdGFuY2VvZiBTdGFydFBhcmFtcykge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBhcmFtcykpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBhcmFtcykpIHtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMCwgcGFyYW1zXzEgPSBwYXJhbXM7IF9pIDwgcGFyYW1zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gcGFyYW1zXzFbX2ldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgU3RhcnRQYXJhbXMucGFyc2UocGFyYW0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocGFyYW0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocGFyYW0pKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIOWkjeWItuaXp+WAvFxuICAgICAgICBpZiAodGhpcy5maWxlR3VpZCA9PSBudWxsICYmIHRoaXMuZ3VpZCAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVHdWlkID0gdGhpcy5ndWlkO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWmguaenOWAvOS4jeS4gOiHtO+8jOWImeeUqCBmaWxlR3VpZCDopobnm5YgZ3VpZO+8jOmBv+WFjeWHuumXrumimFxuICAgICAgICBpZiAodGhpcy5ndWlkICE9IG51bGwgJiYgdGhpcy5maWxlR3VpZCAhPT0gdGhpcy5ndWlkKSB7XG4gICAgICAgICAgICB0aGlzLmd1aWQgPSB0aGlzLmZpbGVHdWlkO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIOWwhuWtl+espuS4suino+aekOS4uiBTdGFydFBhcmFtcyDlr7nosaHjgIJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbVN0ciDlvoXop6PmnpDnmoTlrZfnrKbkuLLjgIJcbiAgICAgKi9cbiAgICBTdGFydFBhcmFtcy5wYXJzZSA9IGZ1bmN0aW9uIChwYXJhbVN0cikge1xuICAgICAgICByZXR1cm4gbmV3IFN0YXJ0UGFyYW1zKEpTT04ucGFyc2UoYmFzZTYyLmRlY29kZVN0cihwYXJhbVN0cikpKTtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIOWwhiBTdGFydFBhcmFtcyDlr7nosaHovazmjaLkuLrlrZfnrKbkuLLjgIJcbiAgICAgKi9cbiAgICBTdGFydFBhcmFtcy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBiYXNlNjIuZW5jb2RlU3RyKEpTT04uc3RyaW5naWZ5KHRoaXMpKTtcbiAgICB9O1xuICAgIHJldHVybiBTdGFydFBhcmFtcztcbn0oKSk7XG5leHBvcnRzLlN0YXJ0UGFyYW1zID0gU3RhcnRQYXJhbXM7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL1N0YXJ0UGFyYW1zXCIpLCBleHBvcnRzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB2YWx1ZSA9PiB7XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG5cdHJldHVybiBwcm90b3R5cGUgPT09IG51bGwgfHwgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvYXJyYXkvaW5jbHVkZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL29iamVjdC9hc3NpZ24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vc3RhYmxlL3Byb21pc2UnKTtcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5wcm9taXNlLnRyeScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lc25leHQucHJvbWlzZS53aXRoLXJlc29sdmVycycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvdXJsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcycpO1xudmFyIGVudHJ5VW5iaW5kID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL2VudHJ5LXVuYmluZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VW5iaW5kKCdBcnJheScsICdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QuYXNzaWduJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5PYmplY3QuYXNzaWduO1xuIiwiJ3VzZSBzdHJpY3QnO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5hZ2dyZWdhdGUtZXJyb3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuYWxsLXNldHRsZWQnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS5hbnknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS50cnknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZS53aXRoLXJlc29sdmVycycpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmZpbmFsbHknKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5Qcm9taXNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL2FycmF5L2luY2x1ZGVzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL2Z1bGwvb2JqZWN0L2Fzc2lnbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9mdWxsL3Byb21pc2UnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vZnVsbC91cmwnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9hY3R1YWwvYXJyYXkvaW5jbHVkZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL29iamVjdC9hc3NpZ24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vYWN0dWFsL3Byb21pc2UnKTtcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzbmV4dC5hZ2dyZWdhdGUtZXJyb3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnByb21pc2UuYWxsLXNldHRsZWQnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXNuZXh0LnByb21pc2UuYW55Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2FjdHVhbC91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkgaXMgdHJ1ZWBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbnZhciAkU3RyaW5nID0gU3RyaW5nO1xudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChpc1Bvc3NpYmxlUHJvdG90eXBlKGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArICRTdHJpbmcoYXJndW1lbnQpICsgJyBhcyBhIHByb3RvdHlwZScpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG52YXIgVU5TQ09QQUJMRVMgPSB3ZWxsS25vd25TeW1ib2woJ3Vuc2NvcGFibGVzJyk7XG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbi8vIEFycmF5LnByb3RvdHlwZVtAQHVuc2NvcGFibGVzXVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PT0gdW5kZWZpbmVkKSB7XG4gIGRlZmluZVByb3BlcnR5KEFycmF5UHJvdG90eXBlLCBVTlNDT1BBQkxFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogY3JlYXRlKG51bGwpXG4gIH0pO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc1Byb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBQcm90b3R5cGUpIHtcbiAgaWYgKGlzUHJvdG90eXBlT2YoUHJvdG90eXBlLCBpdCkpIHJldHVybiBpdDtcbiAgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFN0cmluZyA9IFN0cmluZztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBUeXBlKGFyZ3VtZW50KSBpcyBPYmplY3RgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNPYmplY3QoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IG5ldyAkVHlwZUVycm9yKCRTdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZycpO1xudmFyIGlzQXJyYXlJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QnKTtcbnZhciBpc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNvbnN0cnVjdG9yJyk7XG52YXIgbGVuZ3RoT2ZBcnJheUxpa2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbGVuZ3RoLW9mLWFycmF5LWxpa2UnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG5cbnZhciAkQXJyYXkgPSBBcnJheTtcblxuLy8gYEFycmF5LmZyb21gIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgSVNfQ09OU1RSVUNUT1IgPSBpc0NvbnN0cnVjdG9yKHRoaXMpO1xuICB2YXIgYXJndW1lbnRzTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIG1hcGZuID0gYXJndW1lbnRzTGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZDtcbiAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkO1xuICBpZiAobWFwcGluZykgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkKTtcbiAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gZ2V0SXRlcmF0b3JNZXRob2QoTyk7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBsZW5ndGgsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3IsIG5leHQsIHZhbHVlO1xuICAvLyBpZiB0aGUgdGFyZ2V0IGlzIG5vdCBpdGVyYWJsZSBvciBpdCdzIGFuIGFycmF5IHdpdGggdGhlIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2UgYSBzaW1wbGUgY2FzZVxuICBpZiAoaXRlcmF0b3JNZXRob2QgJiYgISh0aGlzID09PSAkQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICByZXN1bHQgPSBJU19DT05TVFJVQ1RPUiA/IG5ldyB0aGlzKCkgOiBbXTtcbiAgICBpdGVyYXRvciA9IGdldEl0ZXJhdG9yKE8sIGl0ZXJhdG9yTWV0aG9kKTtcbiAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICBmb3IgKDshKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZTsgaW5kZXgrKykge1xuICAgICAgdmFsdWUgPSBtYXBwaW5nID8gY2FsbFdpdGhTYWZlSXRlcmF0aW9uQ2xvc2luZyhpdGVyYXRvciwgbWFwZm4sIFtzdGVwLnZhbHVlLCBpbmRleF0sIHRydWUpIDogc3RlcC52YWx1ZTtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIHZhbHVlKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gbGVuZ3RoT2ZBcnJheUxpa2UoTyk7XG4gICAgcmVzdWx0ID0gSVNfQ09OU1RSVUNUT1IgPyBuZXcgdGhpcyhsZW5ndGgpIDogJEFycmF5KGxlbmd0aCk7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIHZhbHVlID0gbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XTtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmVzdWx0Lmxlbmd0aCA9IGluZGV4O1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyhbXS5zbGljZSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG52YXIgc29ydCA9IGZ1bmN0aW9uIChhcnJheSwgY29tcGFyZWZuKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA8IDgpIHtcbiAgICAvLyBpbnNlcnRpb24gc29ydFxuICAgIHZhciBpID0gMTtcbiAgICB2YXIgZWxlbWVudCwgajtcblxuICAgIHdoaWxlIChpIDwgbGVuZ3RoKSB7XG4gICAgICBqID0gaTtcbiAgICAgIGVsZW1lbnQgPSBhcnJheVtpXTtcbiAgICAgIHdoaWxlIChqICYmIGNvbXBhcmVmbihhcnJheVtqIC0gMV0sIGVsZW1lbnQpID4gMCkge1xuICAgICAgICBhcnJheVtqXSA9IGFycmF5Wy0tal07XG4gICAgICB9XG4gICAgICBpZiAoaiAhPT0gaSsrKSBhcnJheVtqXSA9IGVsZW1lbnQ7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIG1lcmdlIHNvcnRcbiAgICB2YXIgbWlkZGxlID0gZmxvb3IobGVuZ3RoIC8gMik7XG4gICAgdmFyIGxlZnQgPSBzb3J0KGFycmF5U2xpY2UoYXJyYXksIDAsIG1pZGRsZSksIGNvbXBhcmVmbik7XG4gICAgdmFyIHJpZ2h0ID0gc29ydChhcnJheVNsaWNlKGFycmF5LCBtaWRkbGUpLCBjb21wYXJlZm4pO1xuICAgIHZhciBsbGVuZ3RoID0gbGVmdC5sZW5ndGg7XG4gICAgdmFyIHJsZW5ndGggPSByaWdodC5sZW5ndGg7XG4gICAgdmFyIGxpbmRleCA9IDA7XG4gICAgdmFyIHJpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAobGluZGV4IDwgbGxlbmd0aCB8fCByaW5kZXggPCBybGVuZ3RoKSB7XG4gICAgICBhcnJheVtsaW5kZXggKyByaW5kZXhdID0gKGxpbmRleCA8IGxsZW5ndGggJiYgcmluZGV4IDwgcmxlbmd0aClcbiAgICAgICAgPyBjb21wYXJlZm4obGVmdFtsaW5kZXhdLCByaWdodFtyaW5kZXhdKSA8PSAwID8gbGVmdFtsaW5kZXgrK10gOiByaWdodFtyaW5kZXgrK11cbiAgICAgICAgOiBsaW5kZXggPCBsbGVuZ3RoID8gbGVmdFtsaW5kZXgrK10gOiByaWdodFtyaW5kZXgrK107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBzb3J0O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxuLy8gY2FsbCBzb21ldGhpbmcgb24gaXRlcmF0b3Igc3RlcCB3aXRoIHNhZmUgY2xvc2luZyBvbiBlcnJvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGZuLCB2YWx1ZSwgRU5UUklFUykge1xuICB0cnkge1xuICAgIHJldHVybiBFTlRSSUVTID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LWZyb20sIG5vLXRocm93LWxpdGVyYWwgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICB0cnkge1xuICAgIGlmICghU0tJUF9DTE9TSU5HICYmICFTQUZFX0NMT1NJTkcpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgcmV0dXJuIGZhbHNlOyB9IC8vIHdvcmthcm91bmQgb2Ygb2xkIFdlYktpdCArIGBldmFsYCBidWdcbiAgdmFyIElURVJBVElPTl9TVVBQT1JUID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIG9iamVjdCA9IHt9O1xuICAgIG9iamVjdFtJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogSVRFUkFUSU9OX1NVUFBPUlQgPSB0cnVlIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgICBleGVjKG9iamVjdCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIElURVJBVElPTl9TVVBQT1JUO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoe30udG9TdHJpbmcpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gc3RyaW5nU2xpY2UodG9TdHJpbmcoaXQpLCA4LCAtMSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGl0W2tleV07XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbn07XG5cbi8vIGdldHRpbmcgdGFnIGZyb20gRVM2KyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2Bcbm1vZHVsZS5leHBvcnRzID0gVE9fU1RSSU5HX1RBR19TVVBQT1JUID8gY2xhc3NvZlJhdyA6IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgTywgdGFnLCByZXN1bHQ7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mICh0YWcgPSB0cnlHZXQoTyA9ICRPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRigpIHsgLyogZW1wdHkgKi8gfVxuICBGLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IG51bGw7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0cHJvdG90eXBlb2YgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRigpKSAhPT0gRi5wcm90b3R5cGU7XG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGBDcmVhdGVJdGVyUmVzdWx0T2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlaXRlcnJlc3VsdG9iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIGRvbmUpIHtcbiAgcmV0dXJuIHsgdmFsdWU6IHZhbHVlLCBkb25lOiBkb25lIH07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoREVTQ1JJUFRPUlMpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtrZXldID0gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG1ha2VCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21ha2UtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICBpZiAoZGVzY3JpcHRvci5nZXQpIG1ha2VCdWlsdEluKGRlc2NyaXB0b3IuZ2V0LCBuYW1lLCB7IGdldHRlcjogdHJ1ZSB9KTtcbiAgaWYgKGRlc2NyaXB0b3Iuc2V0KSBtYWtlQnVpbHRJbihkZXNjcmlwdG9yLnNldCwgbmFtZSwgeyBzZXR0ZXI6IHRydWUgfSk7XG4gIHJldHVybiBkZWZpbmVQcm9wZXJ0eS5mKHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgbWFrZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWFrZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUdsb2JhbFByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1nbG9iYWwtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMuZW51bWVyYWJsZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zLm5hbWUgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMubmFtZSA6IGtleTtcbiAgaWYgKGlzQ2FsbGFibGUodmFsdWUpKSBtYWtlQnVpbHRJbih2YWx1ZSwgbmFtZSwgb3B0aW9ucyk7XG4gIGlmIChvcHRpb25zLmdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lR2xvYmFsUHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghb3B0aW9ucy51bnNhZmUpIGRlbGV0ZSBPW2tleV07XG4gICAgICBlbHNlIGlmIChPW2tleV0pIHNpbXBsZSA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2UgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihPLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiAhb3B0aW9ucy5ub25Db25maWd1cmFibGUsXG4gICAgICB3cml0YWJsZTogIW9wdGlvbnMubm9uV3JpdGFibGVcbiAgICB9KTtcbiAgfSByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc3JjW2tleV0sIG9wdGlvbnMpO1xuICByZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgZGVmaW5lUHJvcGVydHkoZ2xvYmFsVGhpcywga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxUaGlzW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgMSwgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSlbMV0gIT09IDc7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaW4gb2xkIFdlYktpdCB2ZXJzaW9ucywgYGVsZW1lbnQuY2xhc3NMaXN0YCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgZ2xvYmFsIGBET01Ub2tlbkxpc3RgXG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbnZhciBjbGFzc0xpc3QgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ3NwYW4nKS5jbGFzc0xpc3Q7XG52YXIgRE9NVG9rZW5MaXN0UHJvdG90eXBlID0gY2xhc3NMaXN0ICYmIGNsYXNzTGlzdC5jb25zdHJ1Y3RvciAmJiBjbGFzc0xpc3QuY29uc3RydWN0b3IucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVRva2VuTGlzdFByb3RvdHlwZSA9PT0gT2JqZWN0LnByb3RvdHlwZSA/IHVuZGVmaW5lZCA6IERPTVRva2VuTGlzdFByb3RvdHlwZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SLCBNRVRIT0QpIHtcbiAgcmV0dXJuIHVuY3VycnlUaGlzKGdsb2JhbFRoaXNbQ09OU1RSVUNUT1JdLnByb3RvdHlwZVtNRVRIT0RdKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC9pcGFkfGlwaG9uZXxpcG9kL2kudGVzdCh1c2VyQWdlbnQpICYmIHR5cGVvZiBQZWJibGUgIT0gJ3VuZGVmaW5lZCc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZG9zL25vLXZ1bG5lcmFibGUgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSAvKD86aXBhZHxpcGhvbmV8aXBvZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIEVOVklST05NRU5UID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRU5WSVJPTk1FTlQgPT09ICdOT0RFJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC93ZWIwcyg/IS4qY2hyb21lKS9pLnRlc3QodXNlckFnZW50KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbnZhciBuYXZpZ2F0b3IgPSBnbG9iYWxUaGlzLm5hdmlnYXRvcjtcbnZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudDtcblxubW9kdWxlLmV4cG9ydHMgPSB1c2VyQWdlbnQgPyBTdHJpbmcodXNlckFnZW50KSA6ICcnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsVGhpcy5EZW5vO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zIHx8IERlbm8gJiYgRGVuby52ZXJzaW9uO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIC8vIGluIG9sZCBDaHJvbWUsIHZlcnNpb25zIG9mIFY4IGlzbid0IFY4ID0gQ2hyb21lIC8gMTBcbiAgLy8gYnV0IHRoZWlyIGNvcnJlY3QgdmVyc2lvbnMgYXJlIG5vdCBpbnRlcmVzdGluZyBmb3IgdXNcbiAgdmVyc2lvbiA9IG1hdGNoWzBdID4gMCAmJiBtYXRjaFswXSA8IDQgPyAxIDogKyhtYXRjaFswXSArIG1hdGNoWzFdKTtcbn1cblxuLy8gQnJvd3NlckZTIE5vZGVKUyBgcHJvY2Vzc2AgcG9seWZpbGwgaW5jb3JyZWN0bHkgc2V0IGAudjhgIHRvIGAwLjBgXG4vLyBzbyBjaGVjayBgdXNlckFnZW50YCBldmVuIGlmIGAudjhgIGV4aXN0cywgYnV0IDBcbmlmICghdmVyc2lvbiAmJiB1c2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSArbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZ2xvYmFsIEJ1biwgRGVubyAtLSBkZXRlY3Rpb24gKi9cbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXVzZXItYWdlbnQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciB1c2VyQWdlbnRTdGFydHNXaXRoID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gdXNlckFnZW50LnNsaWNlKDAsIHN0cmluZy5sZW5ndGgpID09PSBzdHJpbmc7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbiAoKSB7XG4gIGlmICh1c2VyQWdlbnRTdGFydHNXaXRoKCdCdW4vJykpIHJldHVybiAnQlVOJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ0Nsb3VkZmxhcmUtV29ya2VycycpKSByZXR1cm4gJ0NMT1VERkxBUkUnO1xuICBpZiAodXNlckFnZW50U3RhcnRzV2l0aCgnRGVuby8nKSkgcmV0dXJuICdERU5PJztcbiAgaWYgKHVzZXJBZ2VudFN0YXJ0c1dpdGgoJ05vZGUuanMvJykpIHJldHVybiAnTk9ERSc7XG4gIGlmIChnbG9iYWxUaGlzLkJ1biAmJiB0eXBlb2YgQnVuLnZlcnNpb24gPT0gJ3N0cmluZycpIHJldHVybiAnQlVOJztcbiAgaWYgKGdsb2JhbFRoaXMuRGVubyAmJiB0eXBlb2YgRGVuby52ZXJzaW9uID09ICdvYmplY3QnKSByZXR1cm4gJ0RFTk8nO1xuICBpZiAoY2xhc3NvZihnbG9iYWxUaGlzLnByb2Nlc3MpID09PSAncHJvY2VzcycpIHJldHVybiAnTk9ERSc7XG4gIGlmIChnbG9iYWxUaGlzLndpbmRvdyAmJiBnbG9iYWxUaGlzLmRvY3VtZW50KSByZXR1cm4gJ0JST1dTRVInO1xuICByZXR1cm4gJ1JFU1QnO1xufSkoKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyICRFcnJvciA9IEVycm9yO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcblxudmFyIFRFU1QgPSAoZnVuY3Rpb24gKGFyZykgeyByZXR1cm4gU3RyaW5nKG5ldyAkRXJyb3IoYXJnKS5zdGFjayk7IH0pKCd6eGNhc2QnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWRvcy9uby12dWxuZXJhYmxlLCBzb25hcmpzL3Nsb3ctcmVnZXggLS0gc2FmZVxudmFyIFY4X09SX0NIQUtSQV9TVEFDS19FTlRSWSA9IC9cXG5cXHMqYXQgW146XSo6W15cXG5dKi87XG52YXIgSVNfVjhfT1JfQ0hBS1JBX1NUQUNLID0gVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZLnRlc3QoVEVTVCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0YWNrLCBkcm9wRW50cmllcykge1xuICBpZiAoSVNfVjhfT1JfQ0hBS1JBX1NUQUNLICYmIHR5cGVvZiBzdGFjayA9PSAnc3RyaW5nJyAmJiAhJEVycm9yLnByZXBhcmVTdGFja1RyYWNlKSB7XG4gICAgd2hpbGUgKGRyb3BFbnRyaWVzLS0pIHN0YWNrID0gcmVwbGFjZShzdGFjaywgVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZLCAnJyk7XG4gIH0gcmV0dXJuIHN0YWNrO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgY2xlYXJFcnJvclN0YWNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWNsZWFyJyk7XG52YXIgRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXJyb3Itc3RhY2staW5zdGFsbGFibGUnKTtcblxuLy8gbm9uLXN0YW5kYXJkIFY4XG52YXIgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXJyb3IsIEMsIHN0YWNrLCBkcm9wRW50cmllcykge1xuICBpZiAoRVJST1JfU1RBQ0tfSU5TVEFMTEFCTEUpIHtcbiAgICBpZiAoY2FwdHVyZVN0YWNrVHJhY2UpIGNhcHR1cmVTdGFja1RyYWNlKGVycm9yLCBDKTtcbiAgICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywgY2xlYXJFcnJvclN0YWNrKHN0YWNrLCBkcm9wRW50cmllcykpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdhJyk7XG4gIGlmICghKCdzdGFjaycgaW4gZXJyb3IpKSByZXR1cm4gdHJ1ZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSBzYWZlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnJvciwgJ3N0YWNrJywgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIDcpKTtcbiAgcmV0dXJuIGVycm9yLnN0YWNrICE9PSA3O1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgICAgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5kb250Q2FsbEdldFNldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXM7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsVGhpc1tUQVJHRVRdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IGdsb2JhbFRoaXNbVEFSR0VUXSAmJiBnbG9iYWxUaGlzW1RBUkdFVF0ucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMuZG9udENhbGxHZXRTZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgZGVmaW5lQnVpbHRJbih0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBOQVRJVkVfQklORCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLW5hdGl2ZScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYXBwbHkgPSBGdW5jdGlvblByb3RvdHlwZS5hcHBseTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCA9PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmFwcGx5IHx8IChOQVRJVkVfQklORCA/IGNhbGwuYmluZChhcHBseSkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGFwcGx5LCBhcmd1bWVudHMpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWNsYXVzZScpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGJpbmQgPSB1bmN1cnJ5VGhpcyh1bmN1cnJ5VGhpcy5iaW5kKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCkge1xuICBhQ2FsbGFibGUoZm4pO1xuICByZXR1cm4gdGhhdCA9PT0gdW5kZWZpbmVkID8gZm4gOiBOQVRJVkVfQklORCA/IGJpbmQoZm4sIHRoYXQpIDogZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZnVuY3Rpb24tcHJvdG90eXBlLWJpbmQgLS0gc2FmZVxuICB2YXIgdGVzdCA9IChmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pLmJpbmQoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiB0eXBlb2YgdGVzdCAhPSAnZnVuY3Rpb24nIHx8IHRlc3QuaGFzT3duUHJvcGVydHkoJ3Byb3RvdHlwZScpO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/IGNhbGwuYmluZChjYWxsKSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoY2FsbCwgYXJndW1lbnRzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0RGVzY3JpcHRvciA9IERFU0NSSVBUT1JTICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbnZhciBFWElTVFMgPSBoYXNPd24oRnVuY3Rpb25Qcm90b3R5cGUsICduYW1lJyk7XG4vLyBhZGRpdGlvbmFsIHByb3RlY3Rpb24gZnJvbSBtaW5pZmllZCAvIG1hbmdsZWQgLyBkcm9wcGVkIGZ1bmN0aW9uIG5hbWVzXG52YXIgUFJPUEVSID0gRVhJU1RTICYmIChmdW5jdGlvbiBzb21ldGhpbmcoKSB7IC8qIGVtcHR5ICovIH0pLm5hbWUgPT09ICdzb21ldGhpbmcnO1xudmFyIENPTkZJR1VSQUJMRSA9IEVYSVNUUyAmJiAoIURFU0NSSVBUT1JTIHx8IChERVNDUklQVE9SUyAmJiBnZXREZXNjcmlwdG9yKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpLmNvbmZpZ3VyYWJsZSkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgRVhJU1RTOiBFWElTVFMsXG4gIFBST1BFUjogUFJPUEVSLFxuICBDT05GSUdVUkFCTEU6IENPTkZJR1VSQUJMRVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgbWV0aG9kKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICAgIHJldHVybiB1bmN1cnJ5VGhpcyhhQ2FsbGFibGUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIGtleSlbbWV0aG9kXSkpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2ZSYXcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgLy8gTmFzaG9ybiBidWc6XG4gIC8vICAgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzExMjhcbiAgLy8gICBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMTEzMFxuICBpZiAoY2xhc3NvZlJhdyhmbikgPT09ICdGdW5jdGlvbicpIHJldHVybiB1bmN1cnJ5VGhpcyhmbik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIE5BVElWRV9CSU5EID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtbmF0aXZlJyk7XG5cbnZhciBGdW5jdGlvblByb3RvdHlwZSA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcbnZhciB1bmN1cnJ5VGhpc1dpdGhCaW5kID0gTkFUSVZFX0JJTkQgJiYgRnVuY3Rpb25Qcm90b3R5cGUuYmluZC5iaW5kKGNhbGwsIGNhbGwpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9CSU5EID8gdW5jdXJyeVRoaXNXaXRoQmluZCA6IGZ1bmN0aW9uIChmbikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBjYWxsLmFwcGx5KGZuLCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc0NhbGxhYmxlKGFyZ3VtZW50KSA/IGFyZ3VtZW50IDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKGdsb2JhbFRoaXNbbmFtZXNwYWNlXSkgOiBnbG9iYWxUaGlzW25hbWVzcGFjZV0gJiYgZ2xvYmFsVGhpc1tuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgaXNOdWxsT3JVbmRlZmluZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtbnVsbC1vci11bmRlZmluZWQnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc051bGxPclVuZGVmaW5lZChpdCkpIHJldHVybiBnZXRNZXRob2QoaXQsIElURVJBVE9SKVxuICAgIHx8IGdldE1ldGhvZChpdCwgJ0BAaXRlcmF0b3InKVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50LCB1c2luZ0l0ZXJhdG9yKSB7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZ2V0SXRlcmF0b3JNZXRob2QoYXJndW1lbnQpIDogdXNpbmdJdGVyYXRvcjtcbiAgaWYgKGFDYWxsYWJsZShpdGVyYXRvck1ldGhvZCkpIHJldHVybiBhbk9iamVjdChjYWxsKGl0ZXJhdG9yTWV0aG9kLCBhcmd1bWVudCkpO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBpdGVyYWJsZScpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIGlzTnVsbE9yVW5kZWZpbmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW51bGwtb3ItdW5kZWZpbmVkJyk7XG5cbi8vIGBHZXRNZXRob2RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXRtZXRob2Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFYsIFApIHtcbiAgdmFyIGZ1bmMgPSBWW1BdO1xuICByZXR1cm4gaXNOdWxsT3JVbmRlZmluZWQoZnVuYykgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgY2hlY2sodHlwZW9mIHRoaXMgPT0gJ29iamVjdCcgJiYgdGhpcykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHVuY3VycnlUaGlzKHt9Lmhhc093blByb3BlcnR5KTtcblxuLy8gYEhhc093blByb3BlcnR5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaGFzb3ducHJvcGVydHlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtaGFzb3duIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0Lmhhc093biB8fCBmdW5jdGlvbiBoYXNPd24oaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0ge307XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhLCBiKSB7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUgLS0gc2FmZVxuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBjb25zb2xlLmVycm9yKGEpIDogY29uc29sZS5lcnJvcihhLCBiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rcyB0byBJRTggZm9yIGl0cyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPT0gNztcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgJE9iamVjdCA9IE9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gISRPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PT0gJ1N0cmluZycgPyBzcGxpdChpdCwgJycpIDogJE9iamVjdChpdCk7XG59IDogJE9iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gdW5jdXJyeVRoaXMoRnVuY3Rpb24udG9TdHJpbmcpO1xuXG4vLyB0aGlzIGhlbHBlciBicm9rZW4gaW4gYGNvcmUtanNAMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAoIWlzQ2FsbGFibGUoc3RvcmUuaW5zcGVjdFNvdXJjZSkpIHtcbiAgc3RvcmUuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBmdW5jdGlvblRvU3RyaW5nKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxuLy8gYEluc3RhbGxFcnJvckNhdXNlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1lcnJvci1jYXVzZS8jc2VjLWVycm9yb2JqZWN0cy1pbnN0YWxsLWVycm9yLWNhdXNlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBvcHRpb25zKSB7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSAmJiAnY2F1c2UnIGluIG9wdGlvbnMpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoTywgJ2NhdXNlJywgb3B0aW9ucy5jYXVzZSk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlYWstbWFwLWJhc2ljLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgV2Vha01hcCA9IGdsb2JhbFRoaXMuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICAvKiBlc2xpbnQtZGlzYWJsZSBuby1zZWxmLWFzc2lnbiAtLSBwcm90b3R5cGUgbWV0aG9kcyBwcm90ZWN0aW9uICovXG4gIHN0b3JlLmdldCA9IHN0b3JlLmdldDtcbiAgc3RvcmUuaGFzID0gc3RvcmUuaGFzO1xuICBzdG9yZS5zZXQgPSBzdG9yZS5zZXQ7XG4gIC8qIGVzbGludC1lbmFibGUgbm8tc2VsZi1hc3NpZ24gLS0gcHJvdG90eXBlIG1ldGhvZHMgcHJvdGVjdGlvbiAqL1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHN0b3JlLmhhcyhpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHN0b3JlLnNldChpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHN0b3JlLmdldChpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBzdG9yZS5oYXMoaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdFxudmFyIGRvY3VtZW50QWxsID0gdHlwZW9mIGRvY3VtZW50ID09ICdvYmplY3QnICYmIGRvY3VtZW50LmFsbDtcblxuLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby10eXBlb2YtdW5kZWZpbmVkIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBkb2N1bWVudEFsbCA9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudEFsbCAhPT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJyB8fCBhcmd1bWVudCA9PT0gZG9jdW1lbnRBbGw7XG59IDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT0gJ2Z1bmN0aW9uJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBub29wID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xudmFyIGNvbnN0cnVjdCA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnY29uc3RydWN0Jyk7XG52YXIgY29uc3RydWN0b3JSZWdFeHAgPSAvXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcyhjb25zdHJ1Y3RvclJlZ0V4cC5leGVjKTtcbnZhciBJTkNPUlJFQ1RfVE9fU1RSSU5HID0gIWNvbnN0cnVjdG9yUmVnRXhwLnRlc3Qobm9vcCk7XG5cbnZhciBpc0NvbnN0cnVjdG9yTW9kZXJuID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3RydWN0KG5vb3AsIFtdLCBhcmd1bWVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgaXNDb25zdHJ1Y3RvckxlZ2FjeSA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKGNsYXNzb2YoYXJndW1lbnQpKSB7XG4gICAgY2FzZSAnQXN5bmNGdW5jdGlvbic6XG4gICAgY2FzZSAnR2VuZXJhdG9yRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nOiByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyB3ZSBjYW4ndCBjaGVjayAucHJvdG90eXBlIHNpbmNlIGNvbnN0cnVjdG9ycyBwcm9kdWNlZCBieSAuYmluZCBoYXZlbid0IGl0XG4gICAgLy8gYEZ1bmN0aW9uI3RvU3RyaW5nYCB0aHJvd3Mgb24gc29tZSBidWlsdC1pdCBmdW5jdGlvbiBpbiBzb21lIGxlZ2FjeSBlbmdpbmVzXG4gICAgLy8gKGZvciBleGFtcGxlLCBgRE9NUXVhZGAgYW5kIHNpbWlsYXIgaW4gRkY0MS0pXG4gICAgcmV0dXJuIElOQ09SUkVDVF9UT19TVFJJTkcgfHwgISFleGVjKGNvbnN0cnVjdG9yUmVnRXhwLCBpbnNwZWN0U291cmNlKGFyZ3VtZW50KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbmlzQ29uc3RydWN0b3JMZWdhY3kuc2hhbSA9IHRydWU7XG5cbi8vIGBJc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSAhY29uc3RydWN0IHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxlZDtcbiAgcmV0dXJuIGlzQ29uc3RydWN0b3JNb2Rlcm4oaXNDb25zdHJ1Y3Rvck1vZGVybi5jYWxsKVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKE9iamVjdClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihmdW5jdGlvbiAoKSB7IGNhbGxlZCA9IHRydWU7IH0pXG4gICAgfHwgY2FsbGVkO1xufSkgPyBpc0NvbnN0cnVjdG9yTGVnYWN5IDogaXNDb25zdHJ1Y3Rvck1vZGVybjtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IGlzQ2FsbGFibGUoZGV0ZWN0aW9uKSA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gd2UgY2FuJ3QgdXNlIGp1c3QgYGl0ID09IG51bGxgIHNpbmNlIG9mIGBkb2N1bWVudC5hbGxgIHNwZWNpYWwgY2FzZVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1Jc0hUTUxEREEtaW50ZXJuYWwtc2xvdC1hZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gbnVsbCB8fCBpdCA9PT0gdW5kZWZpbmVkO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGFyZ3VtZW50KSB8fCBhcmd1bWVudCA9PT0gbnVsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsICRPYmplY3QoaXQpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxudmFyICRUeXBlRXJyb3IgPSBUeXBlRXJyb3I7XG5cbnZhciBSZXN1bHQgPSBmdW5jdGlvbiAoc3RvcHBlZCwgcmVzdWx0KSB7XG4gIHRoaXMuc3RvcHBlZCA9IHN0b3BwZWQ7XG4gIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xufTtcblxudmFyIFJlc3VsdFByb3RvdHlwZSA9IFJlc3VsdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCB1bmJvdW5kRnVuY3Rpb24sIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgdmFyIEFTX0VOVFJJRVMgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuQVNfRU5UUklFUyk7XG4gIHZhciBJU19SRUNPUkQgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuSVNfUkVDT1JEKTtcbiAgdmFyIElTX0lURVJBVE9SID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklTX0lURVJBVE9SKTtcbiAgdmFyIElOVEVSUlVQVEVEID0gISEob3B0aW9ucyAmJiBvcHRpb25zLklOVEVSUlVQVEVEKTtcbiAgdmFyIGZuID0gYmluZCh1bmJvdW5kRnVuY3Rpb24sIHRoYXQpO1xuICB2YXIgaXRlcmF0b3IsIGl0ZXJGbiwgaW5kZXgsIGxlbmd0aCwgcmVzdWx0LCBuZXh0LCBzdGVwO1xuXG4gIHZhciBzdG9wID0gZnVuY3Rpb24gKGNvbmRpdGlvbikge1xuICAgIGlmIChpdGVyYXRvcikgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ25vcm1hbCcsIGNvbmRpdGlvbik7XG4gICAgcmV0dXJuIG5ldyBSZXN1bHQodHJ1ZSwgY29uZGl0aW9uKTtcbiAgfTtcblxuICB2YXIgY2FsbEZuID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKEFTX0VOVFJJRVMpIHtcbiAgICAgIGFuT2JqZWN0KHZhbHVlKTtcbiAgICAgIHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlWzBdLCB2YWx1ZVsxXSwgc3RvcCkgOiBmbih2YWx1ZVswXSwgdmFsdWVbMV0pO1xuICAgIH0gcmV0dXJuIElOVEVSUlVQVEVEID8gZm4odmFsdWUsIHN0b3ApIDogZm4odmFsdWUpO1xuICB9O1xuXG4gIGlmIChJU19SRUNPUkQpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlLml0ZXJhdG9yO1xuICB9IGVsc2UgaWYgKElTX0lURVJBVE9SKSB7XG4gICAgaXRlcmF0b3IgPSBpdGVyYWJsZTtcbiAgfSBlbHNlIHtcbiAgICBpdGVyRm4gPSBnZXRJdGVyYXRvck1ldGhvZChpdGVyYWJsZSk7XG4gICAgaWYgKCFpdGVyRm4pIHRocm93IG5ldyAkVHlwZUVycm9yKHRyeVRvU3RyaW5nKGl0ZXJhYmxlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG4gICAgLy8gb3B0aW1pc2F0aW9uIGZvciBhcnJheSBpdGVyYXRvcnNcbiAgICBpZiAoaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShpdGVyYWJsZSk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIGlzUHJvdG90eXBlT2YoUmVzdWx0UHJvdG90eXBlLCByZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG4gICAgfVxuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUsIGl0ZXJGbik7XG4gIH1cblxuICBuZXh0ID0gSVNfUkVDT1JEID8gaXRlcmFibGUubmV4dCA6IGl0ZXJhdG9yLm5leHQ7XG4gIHdoaWxlICghKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBjYWxsRm4oc3RlcC52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICd0aHJvdycsIGVycm9yKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT0gJ29iamVjdCcgJiYgcmVzdWx0ICYmIGlzUHJvdG90eXBlT2YoUmVzdWx0UHJvdG90eXBlLCByZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICB9IHJldHVybiBuZXcgUmVzdWx0KGZhbHNlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IsIGtpbmQsIHZhbHVlKSB7XG4gIHZhciBpbm5lclJlc3VsdCwgaW5uZXJFcnJvcjtcbiAgYW5PYmplY3QoaXRlcmF0b3IpO1xuICB0cnkge1xuICAgIGlubmVyUmVzdWx0ID0gZ2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG4gICAgaWYgKCFpbm5lclJlc3VsdCkge1xuICAgICAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBpbm5lclJlc3VsdCA9IGNhbGwoaW5uZXJSZXN1bHQsIGl0ZXJhdG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpbm5lckVycm9yID0gdHJ1ZTtcbiAgICBpbm5lclJlc3VsdCA9IGVycm9yO1xuICB9XG4gIGlmIChraW5kID09PSAndGhyb3cnKSB0aHJvdyB2YWx1ZTtcbiAgaWYgKGlubmVyRXJyb3IpIHRocm93IGlubmVyUmVzdWx0O1xuICBhbk9iamVjdChpbm5lclJlc3VsdCk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQsIEVOVU1FUkFCTEVfTkVYVCkge1xuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCshRU5VTUVSQUJMRV9ORVhULCBuZXh0KSB9KTtcbiAgc2V0VG9TdHJpbmdUYWcoSXRlcmF0b3JDb25zdHJ1Y3RvciwgVE9fU1RSSU5HX1RBRywgZmFsc2UsIHRydWUpO1xuICBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICByZXR1cm4gSXRlcmF0b3JDb25zdHJ1Y3Rvcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBGdW5jdGlvbk5hbWUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZycpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJdGVyYXRvcnNDb3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlJyk7XG5cbnZhciBQUk9QRVJfRlVOQ1RJT05fTkFNRSA9IEZ1bmN0aW9uTmFtZS5QUk9QRVI7XG52YXIgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgPSBGdW5jdGlvbk5hbWUuQ09ORklHVVJBQkxFO1xudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gSXRlcmF0b3JzQ29yZS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gSXRlcmF0b3JzQ29yZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG52YXIgRU5UUklFUyA9ICdlbnRyaWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYWJsZSwgTkFNRSwgSXRlcmF0b3JDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblxuICB2YXIgZ2V0SXRlcmF0aW9uTWV0aG9kID0gZnVuY3Rpb24gKEtJTkQpIHtcbiAgICBpZiAoS0lORCA9PT0gREVGQVVMVCAmJiBkZWZhdWx0SXRlcmF0b3IpIHJldHVybiBkZWZhdWx0SXRlcmF0b3I7XG4gICAgaWYgKCFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIEtJTkQgJiYgS0lORCBpbiBJdGVyYWJsZVByb3RvdHlwZSkgcmV0dXJuIEl0ZXJhYmxlUHJvdG90eXBlW0tJTkRdO1xuXG4gICAgc3dpdGNoIChLSU5EKSB7XG4gICAgICBjYXNlIEtFWVM6IHJldHVybiBmdW5jdGlvbiBrZXlzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIFZBTFVFUzogcmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBFTlRSSUVTOiByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzKTsgfTtcbiAgfTtcblxuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IGZhbHNlO1xuICB2YXIgSXRlcmFibGVQcm90b3R5cGUgPSBJdGVyYWJsZS5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVJdGVyYXRvciA9IEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXVxuICAgIHx8IEl0ZXJhYmxlUHJvdG90eXBlWydAQGl0ZXJhdG9yJ11cbiAgICB8fCBERUZBVUxUICYmIEl0ZXJhYmxlUHJvdG90eXBlW0RFRkFVTFRdO1xuICB2YXIgZGVmYXVsdEl0ZXJhdG9yID0gIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgbmF0aXZlSXRlcmF0b3IgfHwgZ2V0SXRlcmF0aW9uTWV0aG9kKERFRkFVTFQpO1xuICB2YXIgYW55TmF0aXZlSXRlcmF0b3IgPSBOQU1FID09PSAnQXJyYXknID8gSXRlcmFibGVQcm90b3R5cGUuZW50cmllcyB8fCBuYXRpdmVJdGVyYXRvciA6IG5hdGl2ZUl0ZXJhdG9yO1xuICB2YXIgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBtZXRob2RzLCBLRVk7XG5cbiAgLy8gZml4IG5hdGl2ZVxuICBpZiAoYW55TmF0aXZlSXRlcmF0b3IpIHtcbiAgICBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihhbnlOYXRpdmVJdGVyYXRvci5jYWxsKG5ldyBJdGVyYWJsZSgpKSk7XG4gICAgaWYgKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSAmJiBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUubmV4dCkge1xuICAgICAgaWYgKCFJU19QVVJFICYmIGdldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSkgIT09IEl0ZXJhdG9yUHJvdG90eXBlKSB7XG4gICAgICAgIGlmIChzZXRQcm90b3R5cGVPZikge1xuICAgICAgICAgIHNldFByb3RvdHlwZU9mKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSXRlcmF0b3JQcm90b3R5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0NhbGxhYmxlKEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0pKSB7XG4gICAgICAgICAgZGVmaW5lQnVpbHRJbihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheS5wcm90b3R5cGUueyB2YWx1ZXMsIEBAaXRlcmF0b3IgfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKFBST1BFUl9GVU5DVElPTl9OQU1FICYmIERFRkFVTFQgPT09IFZBTFVFUyAmJiBuYXRpdmVJdGVyYXRvciAmJiBuYXRpdmVJdGVyYXRvci5uYW1lICE9PSBWQUxVRVMpIHtcbiAgICBpZiAoIUlTX1BVUkUgJiYgQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYWJsZVByb3RvdHlwZSwgJ25hbWUnLCBWQUxVRVMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSB0cnVlO1xuICAgICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gY2FsbChuYXRpdmVJdGVyYXRvciwgdGhpcyk7IH07XG4gICAgfVxuICB9XG5cbiAgLy8gZXhwb3J0IGFkZGl0aW9uYWwgbWV0aG9kc1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gZGVmYXVsdEl0ZXJhdG9yIDogZ2V0SXRlcmF0aW9uTWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogZ2V0SXRlcmF0aW9uTWV0aG9kKEVOVFJJRVMpXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKEtFWSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfHwgIShLRVkgaW4gSXRlcmFibGVQcm90b3R5cGUpKSB7XG4gICAgICAgIGRlZmluZUJ1aWx0SW4oSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICAvLyBkZWZpbmUgaXRlcmF0b3JcbiAgaWYgKCghSVNfUFVSRSB8fCBGT1JDRUQpICYmIEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXSAhPT0gZGVmYXVsdEl0ZXJhdG9yKSB7XG4gICAgZGVmaW5lQnVpbHRJbihJdGVyYWJsZVByb3RvdHlwZSwgSVRFUkFUT1IsIGRlZmF1bHRJdGVyYXRvciwgeyBuYW1lOiBERUZBVUxUIH0pO1xuICB9XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IGRlZmF1bHRJdGVyYXRvcjtcblxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gZmFsc2U7XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1vYmplY3RcbnZhciBJdGVyYXRvclByb3RvdHlwZSwgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1hcnJheS1wcm90b3R5cGUta2V5cyAtLSBzYWZlICovXG5pZiAoW10ua2V5cykge1xuICBhcnJheUl0ZXJhdG9yID0gW10ua2V5cygpO1xuICAvLyBTYWZhcmkgOCBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgaWYgKCEoJ25leHQnIGluIGFycmF5SXRlcmF0b3IpKSBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gdHJ1ZTtcbiAgZWxzZSB7XG4gICAgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoYXJyYXlJdGVyYXRvcikpO1xuICAgIGlmIChQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIEl0ZXJhdG9yUHJvdG90eXBlID0gUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG59XG5cbnZhciBORVdfSVRFUkFUT1JfUFJPVE9UWVBFID0gIWlzT2JqZWN0KEl0ZXJhdG9yUHJvdG90eXBlKSB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXN0ID0ge307XG4gIC8vIEZGNDQtIGxlZ2FjeSBpdGVyYXRvcnMgY2FzZVxuICByZXR1cm4gSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdLmNhbGwodGVzdCkgIT09IHRlc3Q7XG59KTtcblxuaWYgKE5FV19JVEVSQVRPUl9QUk9UT1RZUEUpIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5lbHNlIGlmIChJU19QVVJFKSBJdGVyYXRvclByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKClgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0laXRlcmF0b3Jwcm90b3R5cGUlLUBAaXRlcmF0b3JcbmlmICghaXNDYWxsYWJsZShJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0pKSB7XG4gIGRlZmluZUJ1aWx0SW4oSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSXRlcmF0b3JQcm90b3R5cGU6IEl0ZXJhdG9yUHJvdG90eXBlLFxuICBCVUdHWV9TQUZBUklfSVRFUkFUT1JTOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYExlbmd0aE9mQXJyYXlMaWtlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtbGVuZ3Rob2ZhcnJheWxpa2Vcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gdG9MZW5ndGgob2JqLmxlbmd0aCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1uYW1lJykuQ09ORklHVVJBQkxFO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgJFN0cmluZyA9IFN0cmluZztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG5cbnZhciBDT05GSUdVUkFCTEVfTEVOR1RIID0gREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ2xlbmd0aCcsIHsgdmFsdWU6IDggfSkubGVuZ3RoICE9PSA4O1xufSk7XG5cbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxudmFyIG1ha2VCdWlsdEluID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIG5hbWUsIG9wdGlvbnMpIHtcbiAgaWYgKHN0cmluZ1NsaWNlKCRTdHJpbmcobmFtZSksIDAsIDcpID09PSAnU3ltYm9sKCcpIHtcbiAgICBuYW1lID0gJ1snICsgcmVwbGFjZSgkU3RyaW5nKG5hbWUpLCAvXlN5bWJvbFxcKChbXildKilcXCkuKiQvLCAnJDEnKSArICddJztcbiAgfVxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmdldHRlcikgbmFtZSA9ICdnZXQgJyArIG5hbWU7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2V0dGVyKSBuYW1lID0gJ3NldCAnICsgbmFtZTtcbiAgaWYgKCFoYXNPd24odmFsdWUsICduYW1lJykgfHwgKENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FICYmIHZhbHVlLm5hbWUgIT09IG5hbWUpKSB7XG4gICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgZWxzZSB2YWx1ZS5uYW1lID0gbmFtZTtcbiAgfVxuICBpZiAoQ09ORklHVVJBQkxFX0xFTkdUSCAmJiBvcHRpb25zICYmIGhhc093bihvcHRpb25zLCAnYXJpdHknKSAmJiB2YWx1ZS5sZW5ndGggIT09IG9wdGlvbnMuYXJpdHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ2xlbmd0aCcsIHsgdmFsdWU6IG9wdGlvbnMuYXJpdHkgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBpZiAob3B0aW9ucyAmJiBoYXNPd24ob3B0aW9ucywgJ2NvbnN0cnVjdG9yJykgJiYgb3B0aW9ucy5jb25zdHJ1Y3Rvcikge1xuICAgICAgaWYgKERFU0NSSVBUT1JTKSBkZWZpbmVQcm9wZXJ0eSh2YWx1ZSwgJ3Byb3RvdHlwZScsIHsgd3JpdGFibGU6IGZhbHNlIH0pO1xuICAgIC8vIGluIFY4IH4gQ2hyb21lIDUzLCBwcm90b3R5cGVzIG9mIHNvbWUgbWV0aG9kcywgbGlrZSBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AsIGFyZSBub24td3JpdGFibGVcbiAgICB9IGVsc2UgaWYgKHZhbHVlLnByb3RvdHlwZSkgdmFsdWUucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHZhciBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgaWYgKCFoYXNPd24oc3RhdGUsICdzb3VyY2UnKSkge1xuICAgIHN0YXRlLnNvdXJjZSA9IGpvaW4oVEVNUExBVEUsIHR5cGVvZiBuYW1lID09ICdzdHJpbmcnID8gbmFtZSA6ICcnKTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1leHRlbmQtbmF0aXZlIC0tIHJlcXVpcmVkXG5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBtYWtlQnVpbHRJbihmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0sICd0b1N0cmluZycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgTWF0aC50cnVuY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW1hdGgudHJ1bmNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1tYXRoLXRydW5jIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gTWF0aC50cnVuYyB8fCBmdW5jdGlvbiB0cnVuYyh4KSB7XG4gIHZhciBuID0gK3g7XG4gIHJldHVybiAobiA+IDAgPyBmbG9vciA6IGNlaWwpKG4pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgc2FmZUdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2FmZS1nZXQtYnVpbHQtaW4nKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIG1hY3JvdGFzayA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90YXNrJykuc2V0O1xudmFyIFF1ZXVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3F1ZXVlJyk7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLWlvcycpO1xudmFyIElTX0lPU19QRUJCTEUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtaW9zLXBlYmJsZScpO1xudmFyIElTX1dFQk9TX1dFQktJVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy13ZWJvcy13ZWJraXQnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLW5vZGUnKTtcblxudmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSBnbG9iYWxUaGlzLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsVGhpcy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWxUaGlzLlByb21pc2U7XG52YXIgbWljcm90YXNrID0gc2FmZUdldEJ1aWx0SW4oJ3F1ZXVlTWljcm90YXNrJyk7XG52YXIgbm90aWZ5LCB0b2dnbGUsIG5vZGUsIHByb21pc2UsIHRoZW47XG5cbi8vIG1vZGVybiBlbmdpbmVzIGhhdmUgcXVldWVNaWNyb3Rhc2sgbWV0aG9kXG5pZiAoIW1pY3JvdGFzaykge1xuICB2YXIgcXVldWUgPSBuZXcgUXVldWUoKTtcblxuICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKElTX05PREUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoZm4gPSBxdWV1ZS5nZXQoKSkgdHJ5IHtcbiAgICAgIGZuKCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChxdWV1ZS5oZWFkKSBub3RpZnkoKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIC8vIGFsc28gZXhjZXB0IFdlYk9TIFdlYmtpdCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODk4XG4gIGlmICghSVNfSU9TICYmICFJU19OT0RFICYmICFJU19XRUJPU19XRUJLSVQgJiYgTXV0YXRpb25PYnNlcnZlciAmJiBkb2N1bWVudCkge1xuICAgIHRvZ2dsZSA9IHRydWU7XG4gICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKCFJU19JT1NfUEVCQkxFICYmIFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgLy8gd29ya2Fyb3VuZCBvZiBXZWJLaXQgfiBpT1MgU2FmYXJpIDEwLjEgYnVnXG4gICAgcHJvbWlzZS5jb25zdHJ1Y3RvciA9IFByb21pc2U7XG4gICAgdGhlbiA9IGJpbmQocHJvbWlzZS50aGVuLCBwcm9taXNlKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBOb2RlLmpzIHdpdGhvdXQgcHJvbWlzZXNcbiAgfSBlbHNlIGlmIChJU19OT0RFKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnZVxuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICAvLyBgd2VicGFja2AgZGV2IHNlcnZlciBidWcgb24gSUUgZ2xvYmFsIG1ldGhvZHMgLSB1c2UgYmluZChmbiwgZ2xvYmFsKVxuICAgIG1hY3JvdGFzayA9IGJpbmQobWFjcm90YXNrLCBnbG9iYWxUaGlzKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBtYWNyb3Rhc2soZmx1c2gpO1xuICAgIH07XG4gIH1cblxuICBtaWNyb3Rhc2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICBpZiAoIXF1ZXVlLmhlYWQpIG5vdGlmeSgpO1xuICAgIHF1ZXVlLmFkZChmbik7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWljcm90YXNrO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG52YXIgUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICB2YXIgcmVzb2x2ZSwgcmVqZWN0O1xuICB0aGlzLnByb21pc2UgPSBuZXcgQyhmdW5jdGlvbiAoJCRyZXNvbHZlLCAkJHJlamVjdCkge1xuICAgIGlmIChyZXNvbHZlICE9PSB1bmRlZmluZWQgfHwgcmVqZWN0ICE9PSB1bmRlZmluZWQpIHRocm93IG5ldyAkVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhQ2FsbGFibGUocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUNhbGxhYmxlKHJlamVjdCk7XG59O1xuXG4vLyBgTmV3UHJvbWlzZUNhcGFiaWxpdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1uZXdwcm9taXNlY2FwYWJpbGl0eVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCwgJGRlZmF1bHQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID09PSB1bmRlZmluZWQgPyBhcmd1bWVudHMubGVuZ3RoIDwgMiA/ICcnIDogJGRlZmF1bHQgOiB0b1N0cmluZyhhcmd1bWVudCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1hc3NpZ24gLS0gc2FmZVxudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGBPYmplY3QuYXNzaWduYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmFzc2lnblxubW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHNob3VsZCBoYXZlIGNvcnJlY3Qgb3JkZXIgb2Ygb3BlcmF0aW9ucyAoRWRnZSBidWcpXG4gIGlmIChERVNDUklQVE9SUyAmJiAkYXNzaWduKHsgYjogMSB9LCAkYXNzaWduKGRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgZGVmaW5lUHJvcGVydHkodGhpcywgJ2InLCB7XG4gICAgICAgIHZhbHVlOiAzLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9KSwgeyBiOiAyIH0pKS5iICE9PSAxKSByZXR1cm4gdHJ1ZTtcbiAgLy8gc2hvdWxkIHdvcmsgd2l0aCBzeW1ib2xzIGFuZCBzaG91bGQgaGF2ZSBkZXRlcm1pbmlzdGljIHByb3BlcnR5IG9yZGVyIChWOCBidWcpXG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zeW1ib2wgLS0gc2FmZVxuICB2YXIgc3ltYm9sID0gU3ltYm9sKCdhc3NpZ24gZGV0ZWN0aW9uJyk7XG4gIHZhciBhbHBoYWJldCA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbc3ltYm9sXSA9IDc7XG4gIGFscGhhYmV0LnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChjaHIpIHsgQltjaHJdID0gY2hyOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW3N5bWJvbF0gIT09IDcgfHwgb2JqZWN0S2V5cygkYXNzaWduKHt9LCBCKSkuam9pbignJykgIT09IGFscGhhYmV0O1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFyZ3VtZW50c0xlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDE7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgdmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZjtcbiAgd2hpbGUgKGFyZ3VtZW50c0xlbmd0aCA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJbmRleGVkT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQob2JqZWN0S2V5cyhTKSwgZ2V0T3duUHJvcGVydHlTeW1ib2xzKFMpKSA6IG9iamVjdEtleXMoUyk7XG4gICAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIHZhciBqID0gMDtcbiAgICB2YXIga2V5O1xuICAgIHdoaWxlIChsZW5ndGggPiBqKSB7XG4gICAgICBrZXkgPSBrZXlzW2orK107XG4gICAgICBpZiAoIURFU0NSSVBUT1JTIHx8IGNhbGwocHJvcGVydHlJc0VudW1lcmFibGUsIFMsIGtleSkpIFRba2V5XSA9IFNba2V5XTtcbiAgICB9XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjtcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGdsb2JhbCBBY3RpdmVYT2JqZWN0IC0tIG9sZCBJRSwgV1NIICovXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlbGVzcy1hc3NpZ25tZW50IC0tIGF2b2lkIG1lbW9yeSBsZWFrXG4gIGFjdGl2ZVhEb2N1bWVudCA9IG51bGw7XG4gIHJldHVybiB0ZW1wO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIE51bGxQcm90b09iamVjdFZpYUlGcmFtZSA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBKUyA9ICdqYXZhJyArIFNDUklQVCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNDc1XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoSlMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnZG9jdW1lbnQuRj1PYmplY3QnKSk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIHJldHVybiBpZnJhbWVEb2N1bWVudC5GO1xufTtcblxuLy8gQ2hlY2sgZm9yIGRvY3VtZW50LmRvbWFpbiBhbmQgYWN0aXZlIHggc3VwcG9ydFxuLy8gTm8gbmVlZCB0byB1c2UgYWN0aXZlIHggYXBwcm9hY2ggd2hlbiBkb2N1bWVudC5kb21haW4gaXMgbm90IHNldFxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9pc3N1ZXMvMTUwXG4vLyB2YXJpYXRpb24gb2YgaHR0cHM6Ly9naXRodWIuY29tL2tpdGNhbWJyaWRnZS9lczUtc2hpbS9jb21taXQvNGY3MzhhYzA2NjM0NlxuLy8gYXZvaWQgSUUgR0MgYnVnXG52YXIgYWN0aXZlWERvY3VtZW50O1xudmFyIE51bGxQcm90b09iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBhY3RpdmVYRG9jdW1lbnQgPSBuZXcgQWN0aXZlWE9iamVjdCgnaHRtbGZpbGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogaWdub3JlICovIH1cbiAgTnVsbFByb3RvT2JqZWN0ID0gdHlwZW9mIGRvY3VtZW50ICE9ICd1bmRlZmluZWQnXG4gICAgPyBkb2N1bWVudC5kb21haW4gJiYgYWN0aXZlWERvY3VtZW50XG4gICAgICA/IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KSAvLyBvbGQgSUVcbiAgICAgIDogTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lKClcbiAgICA6IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KTsgLy8gV1NIXG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIE51bGxQcm90b09iamVjdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gTnVsbFByb3RvT2JqZWN0KCk7XG59O1xuXG5oaWRkZW5LZXlzW0lFX1BST1RPXSA9IHRydWU7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1jcmVhdGUgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5Q29uc3RydWN0b3IoKTtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IE51bGxQcm90b09iamVjdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllc01vZHVsZS5mKHJlc3VsdCwgUHJvcGVydGllcyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgb2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cycpO1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0aWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTICYmICFWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIgcHJvcHMgPSB0b0luZGV4ZWRPYmplY3QoUHJvcGVydGllcyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgcHJvcHNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgVjhfUFJPVE9UWVBFX0RFRklORV9CVUcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdjgtcHJvdG90eXBlLWRlZmluZS1idWcnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcbnZhciBFTlVNRVJBQkxFID0gJ2VudW1lcmFibGUnO1xudmFyIENPTkZJR1VSQUJMRSA9ICdjb25maWd1cmFibGUnO1xudmFyIFdSSVRBQkxFID0gJ3dyaXRhYmxlJztcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBWOF9QUk9UT1RZUEVfREVGSU5FX0JVRyA/IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKHR5cGVvZiBPID09PSAnZnVuY3Rpb24nICYmIFAgPT09ICdwcm90b3R5cGUnICYmICd2YWx1ZScgaW4gQXR0cmlidXRlcyAmJiBXUklUQUJMRSBpbiBBdHRyaWJ1dGVzICYmICFBdHRyaWJ1dGVzW1dSSVRBQkxFXSkge1xuICAgIHZhciBjdXJyZW50ID0gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50W1dSSVRBQkxFXSkge1xuICAgICAgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gICAgICBBdHRyaWJ1dGVzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IENPTkZJR1VSQUJMRSBpbiBBdHRyaWJ1dGVzID8gQXR0cmlidXRlc1tDT05GSUdVUkFCTEVdIDogY3VycmVudFtDT05GSUdVUkFCTEVdLFxuICAgICAgICBlbnVtZXJhYmxlOiBFTlVNRVJBQkxFIGluIEF0dHJpYnV0ZXMgPyBBdHRyaWJ1dGVzW0VOVU1FUkFCTEVdIDogY3VycmVudFtFTlVNRVJBQkxFXSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfSByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xufSA6ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1Byb3BlcnR5S2V5KFApO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJvcGVydHlLZXkoUCk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzT3duKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFjYWxsKHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYsIE8sIFApLCBPW1BdKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xudmFyIE9iamVjdFByb3RvdHlwZSA9ICRPYmplY3QucHJvdG90eXBlO1xuXG4vLyBgT2JqZWN0LmdldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldHByb3RvdHlwZW9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gJE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIChPKSB7XG4gIHZhciBvYmplY3QgPSB0b09iamVjdChPKTtcbiAgaWYgKGhhc093bihvYmplY3QsIElFX1BST1RPKSkgcmV0dXJuIG9iamVjdFtJRV9QUk9UT107XG4gIHZhciBjb25zdHJ1Y3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgaWYgKGlzQ2FsbGFibGUoY29uc3RydWN0b3IpICYmIG9iamVjdCBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgJE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKHt9LmlzUHJvdG90eXBlT2YpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzT3duKGhpZGRlbktleXMsIGtleSkgJiYgaGFzT3duKE8sIGtleSkgJiYgcHVzaChyZXN1bHQsIGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXNPd24oTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+aW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcHVzaChyZXN1bHQsIGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1rZXlzIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24ga2V5cyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gLS0gc2FmZSAqL1xudmFyIHVuY3VycnlUaGlzQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLWFjY2Vzc29yJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBhUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5zZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5cGVvZlxuLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LXNldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENPUlJFQ1RfU0VUVEVSID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gdW5jdXJyeVRoaXNBY2Nlc3NvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJywgJ3NldCcpO1xuICAgIHNldHRlcih0ZXN0LCBbXSk7XG4gICAgQ09SUkVDVF9TRVRURVIgPSB0ZXN0IGluc3RhbmNlb2YgQXJyYXk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgcmVxdWlyZU9iamVjdENvZXJjaWJsZShPKTtcbiAgICBhUG9zc2libGVQcm90b3R5cGUocHJvdG8pO1xuICAgIGlmICghaXNPYmplY3QoTykpIHJldHVybiBPO1xuICAgIGlmIChDT1JSRUNUX1NFVFRFUikgc2V0dGVyKE8sIHByb3RvKTtcbiAgICBlbHNlIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgcmV0dXJuIE87XG4gIH07XG59KCkgOiB1bmRlZmluZWQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IHt9LnRvU3RyaW5nIDogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG5cbi8vIGFsbCBvYmplY3Qga2V5cywgaW5jbHVkZXMgbm9uLWVudW1lcmFibGUgYW5kIHN5bWJvbHNcbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignUmVmbGVjdCcsICdvd25LZXlzJykgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCkge1xuICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUuZihhbk9iamVjdChpdCkpO1xuICB2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlLmY7XG4gIHJldHVybiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBjb25jYXQoa2V5cywgZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpcztcbiIsIid1c2Ugc3RyaWN0Jztcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyBlcnJvcjogZmFsc2UsIHZhbHVlOiBleGVjKCkgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBlcnJvcjogdHJ1ZSwgdmFsdWU6IGVycm9yIH07XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgRU5WSVJPTk1FTlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXY4LXZlcnNpb24nKTtcblxudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgU1VCQ0xBU1NJTkcgPSBmYWxzZTtcbnZhciBOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQgPSBpc0NhbGxhYmxlKGdsb2JhbFRoaXMuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcblxudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gaXNGb3JjZWQoJ1Byb21pc2UnLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSA9IGluc3BlY3RTb3VyY2UoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgdmFyIEdMT0JBTF9DT1JFX0pTX1BST01JU0UgPSBQUk9NSVNFX0NPTlNUUlVDVE9SX1NPVVJDRSAhPT0gU3RyaW5nKE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvcik7XG4gIC8vIFY4IDYuNiAoTm9kZSAxMCBhbmQgQ2hyb21lIDY2KSBoYXZlIGEgYnVnIHdpdGggcmVzb2x2aW5nIGN1c3RvbSB0aGVuYWJsZXNcbiAgLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9ODMwNTY1XG4gIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gIGlmICghR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBWOF9WRVJTSU9OID09PSA2NikgcmV0dXJuIHRydWU7XG4gIC8vIFdlIG5lZWQgUHJvbWlzZSN7IGNhdGNoLCBmaW5hbGx5IH0gaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICEoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAmJiBOYXRpdmVQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10pKSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgY2FuJ3QgdXNlIEBAc3BlY2llcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NzlcbiAgaWYgKCFWOF9WRVJTSU9OIHx8IFY4X1ZFUlNJT04gPCA1MSB8fCAhL25hdGl2ZSBjb2RlLy50ZXN0KFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFKSkge1xuICAgIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgPSBuZXcgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUoMSk7IH0pO1xuICAgIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgICB9O1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICAgIFNVQkNMQVNTSU5HID0gcHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZTtcbiAgICBpZiAoIVNVQkNMQVNTSU5HKSByZXR1cm4gdHJ1ZTtcbiAgLy8gVW5oYW5kbGVkIHJlamVjdGlvbnMgdHJhY2tpbmcgc3VwcG9ydCwgTm9kZUpTIFByb21pc2Ugd2l0aG91dCBpdCBmYWlscyBAQHNwZWNpZXMgdGVzdFxuICB9IHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiAoRU5WSVJPTk1FTlQgPT09ICdCUk9XU0VSJyB8fCBFTlZJUk9OTUVOVCA9PT0gJ0RFTk8nKSAmJiAhTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDT05TVFJVQ1RPUjogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IsXG4gIFJFSkVDVElPTl9FVkVOVDogTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5ULFxuICBTVUJDTEFTU0lORzogU1VCQ0xBU1NJTkdcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuUHJvbWlzZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEMsIHgpIHtcbiAgYW5PYmplY3QoQyk7XG4gIGlmIChpc09iamVjdCh4KSAmJiB4LmNvbnN0cnVjdG9yID09PSBDKSByZXR1cm4geDtcbiAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkuZihDKTtcbiAgdmFyIHJlc29sdmUgPSBwcm9taXNlQ2FwYWJpbGl0eS5yZXNvbHZlO1xuICByZXNvbHZlKHgpO1xuICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbicpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG5cbm1vZHVsZS5leHBvcnRzID0gRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfHwgIWNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbihmdW5jdGlvbiAoaXRlcmFibGUpIHtcbiAgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLmFsbChpdGVyYWJsZSkudGhlbih1bmRlZmluZWQsIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oZWFkID0gbnVsbDtcbiAgdGhpcy50YWlsID0gbnVsbDtcbn07XG5cblF1ZXVlLnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBlbnRyeSA9IHsgaXRlbTogaXRlbSwgbmV4dDogbnVsbCB9O1xuICAgIHZhciB0YWlsID0gdGhpcy50YWlsO1xuICAgIGlmICh0YWlsKSB0YWlsLm5leHQgPSBlbnRyeTtcbiAgICBlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgIHRoaXMudGFpbCA9IGVudHJ5O1xuICB9LFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgZW50cnkgPSB0aGlzLmhlYWQ7XG4gICAgaWYgKGVudHJ5KSB7XG4gICAgICB2YXIgbmV4dCA9IHRoaXMuaGVhZCA9IGVudHJ5Lm5leHQ7XG4gICAgICBpZiAobmV4dCA9PT0gbnVsbCkgdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHJldHVybiBlbnRyeS5pdGVtO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBRdWV1ZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xuXG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNOdWxsT3JVbmRlZmluZWQoaXQpKSB0aHJvdyBuZXcgJFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gQXZvaWQgTm9kZUpTIGV4cGVyaW1lbnRhbCB3YXJuaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghREVTQ1JJUFRPUlMpIHJldHVybiBnbG9iYWxUaGlzW25hbWVdO1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWxUaGlzLCBuYW1lKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVCdWlsdEluQWNjZXNzb3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluLWFjY2Vzc29yJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoQ29uc3RydWN0b3IsIFNQRUNJRVMsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICAgIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIFRBRywgU1RBVElDKSB7XG4gIGlmICh0YXJnZXQgJiYgIVNUQVRJQykgdGFyZ2V0ID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgaWYgKHRhcmdldCAmJiAhaGFzT3duKHRhcmdldCwgVE9fU1RSSU5HX1RBRykpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBkZWZpbmVHbG9iYWxQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtZ2xvYmFsLXByb3BlcnR5Jyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpc1tTSEFSRURdIHx8IGRlZmluZUdsb2JhbFByb3BlcnR5KFNIQVJFRCwge30pO1xuXG4oc3RvcmUudmVyc2lvbnMgfHwgKHN0b3JlLnZlcnNpb25zID0gW10pKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMzkuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJyxcbiAgbGljZW5zZTogJ2h0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzkuMC9MSUNFTlNFJyxcbiAgc291cmNlOiAnaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMnXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlIHx8IHt9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY29uc3RydWN0b3InKTtcbnZhciBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1udWxsLW9yLXVuZGVmaW5lZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgU3BlY2llc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3BlY2llc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBkZWZhdWx0Q29uc3RydWN0b3IpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgaXNOdWxsT3JVbmRlZmluZWQoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA/IGRlZmF1bHRDb25zdHJ1Y3RvciA6IGFDb25zdHJ1Y3RvcihTKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgY2hhckNvZGVBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJDb2RlQXQpO1xudmFyIHN0cmluZ1NsaWNlID0gdW5jdXJyeVRoaXMoJycuc2xpY2UpO1xuXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gdG9TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlck9ySW5maW5pdHkocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBjaGFyQ29kZUF0KFMsIHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gY2hhckNvZGVBdChTLCBwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gY2hhckF0KFMsIHBvc2l0aW9uKVxuICAgICAgICAgIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklOR1xuICAgICAgICAgID8gc3RyaW5nU2xpY2UoUywgcG9zaXRpb24sIHBvc2l0aW9uICsgMilcbiAgICAgICAgICA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vYmVzdGllanMvcHVueWNvZGUuanMvYmxvYi9tYXN0ZXIvcHVueWNvZGUuanNcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIG1heEludCA9IDIxNDc0ODM2NDc7IC8vIGFrYS4gMHg3RkZGRkZGRiBvciAyXjMxLTFcbnZhciBiYXNlID0gMzY7XG52YXIgdE1pbiA9IDE7XG52YXIgdE1heCA9IDI2O1xudmFyIHNrZXcgPSAzODtcbnZhciBkYW1wID0gNzAwO1xudmFyIGluaXRpYWxCaWFzID0gNzI7XG52YXIgaW5pdGlhbE4gPSAxMjg7IC8vIDB4ODBcbnZhciBkZWxpbWl0ZXIgPSAnLSc7IC8vICdcXHgyRCdcbnZhciByZWdleE5vbkFTQ0lJID0gL1teXFwwLVxcdTAwN0VdLzsgLy8gbm9uLUFTQ0lJIGNoYXJzXG52YXIgcmVnZXhTZXBhcmF0b3JzID0gL1suXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG52YXIgT1ZFUkZMT1dfRVJST1IgPSAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnO1xudmFyIGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbjtcblxudmFyICRSYW5nZUVycm9yID0gUmFuZ2VFcnJvcjtcbnZhciBleGVjID0gdW5jdXJyeVRoaXMocmVnZXhTZXBhcmF0b3JzLmV4ZWMpO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBmcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xudmFyIGNoYXJDb2RlQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQ29kZUF0KTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcbnZhciB0b0xvd2VyQ2FzZSA9IHVuY3VycnlUaGlzKCcnLnRvTG93ZXJDYXNlKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKi9cbnZhciB1Y3MyZGVjb2RlID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIHZhciBjb3VudGVyID0gMDtcbiAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG4gIHdoaWxlIChjb3VudGVyIDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gY2hhckNvZGVBdChzdHJpbmcsIGNvdW50ZXIrKyk7XG4gICAgaWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuICAgICAgLy8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cbiAgICAgIHZhciBleHRyYSA9IGNoYXJDb2RlQXQoc3RyaW5nLCBjb3VudGVyKyspO1xuICAgICAgaWYgKChleHRyYSAmIDB4RkMwMCkgPT09IDB4REMwMCkgeyAvLyBMb3cgc3Vycm9nYXRlLlxuICAgICAgICBwdXNoKG91dHB1dCwgKCh2YWx1ZSAmIDB4M0ZGKSA8PCAxMCkgKyAoZXh0cmEgJiAweDNGRikgKyAweDEwMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl0J3MgYW4gdW5tYXRjaGVkIHN1cnJvZ2F0ZTsgb25seSBhcHBlbmQgdGhpcyBjb2RlIHVuaXQsIGluIGNhc2UgdGhlXG4gICAgICAgIC8vIG5leHQgY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyLlxuICAgICAgICBwdXNoKG91dHB1dCwgdmFsdWUpO1xuICAgICAgICBjb3VudGVyLS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHB1c2gob3V0cHV0LCB2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgZGlnaXQvaW50ZWdlciBpbnRvIGEgYmFzaWMgY29kZSBwb2ludC5cbiAqL1xudmFyIGRpZ2l0VG9CYXNpYyA9IGZ1bmN0aW9uIChkaWdpdCkge1xuICAvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuICAvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcbiAgcmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKi9cbnZhciBhZGFwdCA9IGZ1bmN0aW9uIChkZWx0YSwgbnVtUG9pbnRzLCBmaXJzdFRpbWUpIHtcbiAgdmFyIGsgPSAwO1xuICBkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuICBkZWx0YSArPSBmbG9vcihkZWx0YSAvIG51bVBvaW50cyk7XG4gIHdoaWxlIChkZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDEpIHtcbiAgICBkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG4gICAgayArPSBiYXNlO1xuICB9XG4gIHJldHVybiBmbG9vcihrICsgKGJhc2VNaW51c1RNaW4gKyAxKSAqIGRlbHRhIC8gKGRlbHRhICsgc2tldykpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqL1xudmFyIGVuY29kZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgb3V0cHV0ID0gW107XG5cbiAgLy8gQ29udmVydCB0aGUgaW5wdXQgaW4gVUNTLTIgdG8gYW4gYXJyYXkgb2YgVW5pY29kZSBjb2RlIHBvaW50cy5cbiAgaW5wdXQgPSB1Y3MyZGVjb2RlKGlucHV0KTtcblxuICAvLyBDYWNoZSB0aGUgbGVuZ3RoLlxuICB2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cbiAgLy8gSW5pdGlhbGl6ZSB0aGUgc3RhdGUuXG4gIHZhciBuID0gaW5pdGlhbE47XG4gIHZhciBkZWx0YSA9IDA7XG4gIHZhciBiaWFzID0gaW5pdGlhbEJpYXM7XG4gIHZhciBpLCBjdXJyZW50VmFsdWU7XG5cbiAgLy8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50cy5cbiAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcbiAgICAgIHB1c2gob3V0cHV0LCBmcm9tQ2hhckNvZGUoY3VycmVudFZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDsgLy8gbnVtYmVyIG9mIGJhc2ljIGNvZGUgcG9pbnRzLlxuICB2YXIgaGFuZGxlZENQQ291bnQgPSBiYXNpY0xlbmd0aDsgLy8gbnVtYmVyIG9mIGNvZGUgcG9pbnRzIHRoYXQgaGF2ZSBiZWVuIGhhbmRsZWQ7XG5cbiAgLy8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cbiAgaWYgKGJhc2ljTGVuZ3RoKSB7XG4gICAgcHVzaChvdXRwdXQsIGRlbGltaXRlcik7XG4gIH1cblxuICAvLyBNYWluIGVuY29kaW5nIGxvb3A6XG4gIHdoaWxlIChoYW5kbGVkQ1BDb3VudCA8IGlucHV0TGVuZ3RoKSB7XG4gICAgLy8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dCBsYXJnZXIgb25lOlxuICAgIHZhciBtID0gbWF4SW50O1xuICAgIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgY3VycmVudFZhbHVlID0gaW5wdXRbaV07XG4gICAgICBpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuICAgICAgICBtID0gY3VycmVudFZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPiwgYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3cuXG4gICAgdmFyIGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcbiAgICBpZiAobSAtIG4gPiBmbG9vcigobWF4SW50IC0gZGVsdGEpIC8gaGFuZGxlZENQQ291bnRQbHVzT25lKSkge1xuICAgICAgdGhyb3cgbmV3ICRSYW5nZUVycm9yKE9WRVJGTE9XX0VSUk9SKTtcbiAgICB9XG5cbiAgICBkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuICAgIG4gPSBtO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjdXJyZW50VmFsdWUgPSBpbnB1dFtpXTtcbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcbiAgICAgICAgdGhyb3cgbmV3ICRSYW5nZUVycm9yKE9WRVJGTE9XX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50VmFsdWUgPT09IG4pIHtcbiAgICAgICAgLy8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgIHZhciBxID0gZGVsdGE7XG4gICAgICAgIHZhciBrID0gYmFzZTtcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICB2YXIgdCA9IGsgPD0gYmlhcyA/IHRNaW4gOiBrID49IGJpYXMgKyB0TWF4ID8gdE1heCA6IGsgLSBiaWFzO1xuICAgICAgICAgIGlmIChxIDwgdCkgYnJlYWs7XG4gICAgICAgICAgdmFyIHFNaW51c1QgPSBxIC0gdDtcbiAgICAgICAgICB2YXIgYmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuICAgICAgICAgIHB1c2gob3V0cHV0LCBmcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCkpKTtcbiAgICAgICAgICBxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuICAgICAgICAgIGsgKz0gYmFzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1c2gob3V0cHV0LCBmcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHEpKSk7XG4gICAgICAgIGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PT0gYmFzaWNMZW5ndGgpO1xuICAgICAgICBkZWx0YSA9IDA7XG4gICAgICAgIGhhbmRsZWRDUENvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGVsdGErKztcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIGpvaW4ob3V0cHV0LCAnJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgZW5jb2RlZCA9IFtdO1xuICB2YXIgbGFiZWxzID0gc3BsaXQocmVwbGFjZSh0b0xvd2VyQ2FzZShpbnB1dCksIHJlZ2V4U2VwYXJhdG9ycywgJ1xcdTAwMkUnKSwgJy4nKTtcbiAgdmFyIGksIGxhYmVsO1xuICBmb3IgKGkgPSAwOyBpIDwgbGFiZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGFiZWwgPSBsYWJlbHNbaV07XG4gICAgcHVzaChlbmNvZGVkLCBleGVjKHJlZ2V4Tm9uQVNDSUksIGxhYmVsKSA/ICd4bi0tJyArIGVuY29kZShsYWJlbCkgOiBsYWJlbCk7XG4gIH1cbiAgcmV0dXJuIGpvaW4oZW5jb2RlZCwgJy4nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LXY4LXZlcnNpb24nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcblxudmFyICRTdHJpbmcgPSBnbG9iYWxUaGlzLlN0cmluZztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciBzeW1ib2wgPSBTeW1ib2woJ3N5bWJvbCBkZXRlY3Rpb24nKTtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gYGdldC1vd24tcHJvcGVydHktc3ltYm9sc2AgcG9seWZpbGwgc3ltYm9scyBjb252ZXJ0ZWQgdG8gb2JqZWN0IGFyZSBub3QgU3ltYm9sIGluc3RhbmNlc1xuICAvLyBuYjogRG8gbm90IGNhbGwgYFN0cmluZ2AgZGlyZWN0bHkgdG8gYXZvaWQgdGhpcyBiZWluZyBvcHRpbWl6ZWQgb3V0IHRvIGBzeW1ib2wrJydgIHdoaWNoIHdpbGwsXG4gIC8vIG9mIGNvdXJzZSwgZmFpbC5cbiAgcmV0dXJuICEkU3RyaW5nKHN5bWJvbCkgfHwgIShPYmplY3Qoc3ltYm9sKSBpbnN0YW5jZW9mIFN5bWJvbCkgfHxcbiAgICAvLyBDaHJvbWUgMzgtNDAgc3ltYm9scyBhcmUgbm90IGluaGVyaXRlZCBmcm9tIERPTSBjb2xsZWN0aW9ucyBwcm90b3R5cGVzIHRvIGluc3RhbmNlc1xuICAgICFTeW1ib2wuc2hhbSAmJiBWOF9WRVJTSU9OICYmIFY4X1ZFUlNJT04gPCA0MTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBhcHBseSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1hcHBseScpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBhcnJheVNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW52aXJvbm1lbnQtaXMtaW9zJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnZpcm9ubWVudC1pcy1ub2RlJyk7XG5cbnZhciBzZXQgPSBnbG9iYWxUaGlzLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhciA9IGdsb2JhbFRoaXMuY2xlYXJJbW1lZGlhdGU7XG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBEaXNwYXRjaCA9IGdsb2JhbFRoaXMuRGlzcGF0Y2g7XG52YXIgRnVuY3Rpb24gPSBnbG9iYWxUaGlzLkZ1bmN0aW9uO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsVGhpcy5NZXNzYWdlQ2hhbm5lbDtcbnZhciBTdHJpbmcgPSBnbG9iYWxUaGlzLlN0cmluZztcbnZhciBjb3VudGVyID0gMDtcbnZhciBxdWV1ZSA9IHt9O1xudmFyIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnO1xudmFyICRsb2NhdGlvbiwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG5cbmZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gRGVubyB0aHJvd3MgYSBSZWZlcmVuY2VFcnJvciBvbiBgbG9jYXRpb25gIGFjY2VzcyB3aXRob3V0IGAtLWxvY2F0aW9uYCBmbGFnXG4gICRsb2NhdGlvbiA9IGdsb2JhbFRoaXMubG9jYXRpb247XG59KTtcblxudmFyIHJ1biA9IGZ1bmN0aW9uIChpZCkge1xuICBpZiAoaGFzT3duKHF1ZXVlLCBpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBldmVudExpc3RlbmVyID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gIHJ1bihldmVudC5kYXRhKTtcbn07XG5cbnZhciBnbG9iYWxQb3N0TWVzc2FnZURlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIC8vIG9sZCBlbmdpbmVzIGhhdmUgbm90IGxvY2F0aW9uLm9yaWdpblxuICBnbG9iYWxUaGlzLnBvc3RNZXNzYWdlKFN0cmluZyhpZCksICRsb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyAkbG9jYXRpb24uaG9zdCk7XG59O1xuXG4vLyBOb2RlLmpzIDAuOSsgJiBJRTEwKyBoYXMgc2V0SW1tZWRpYXRlLCBvdGhlcndpc2U6XG5pZiAoIXNldCB8fCAhY2xlYXIpIHtcbiAgc2V0ID0gZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGhhbmRsZXIpIHtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIgZm4gPSBpc0NhbGxhYmxlKGhhbmRsZXIpID8gaGFuZGxlciA6IEZ1bmN0aW9uKGhhbmRsZXIpO1xuICAgIHZhciBhcmdzID0gYXJyYXlTbGljZShhcmd1bWVudHMsIDEpO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBhcHBseShmbiwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhciA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChJU19OT0RFKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2socnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIC8vIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjI0XG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwgJiYgIUlTX0lPUykge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGV2ZW50TGlzdGVuZXI7XG4gICAgZGVmZXIgPSBiaW5kKHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIgJiZcbiAgICBpc0NhbGxhYmxlKGdsb2JhbFRoaXMucG9zdE1lc3NhZ2UpICYmXG4gICAgIWdsb2JhbFRoaXMuaW1wb3J0U2NyaXB0cyAmJlxuICAgICRsb2NhdGlvbiAmJiAkbG9jYXRpb24ucHJvdG9jb2wgIT09ICdmaWxlOicgJiZcbiAgICAhZmFpbHMoZ2xvYmFsUG9zdE1lc3NhZ2VEZWZlcilcbiAgKSB7XG4gICAgZGVmZXIgPSBnbG9iYWxQb3N0TWVzc2FnZURlZmVyO1xuICAgIGdsb2JhbFRoaXMuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbiAgLy8gSUU4LVxuICB9IGVsc2UgaWYgKE9OUkVBRFlTVEFURUNIQU5HRSBpbiBjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSkge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpKVtPTlJFQURZU1RBVEVDSEFOR0VdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4oaWQpO1xuICAgICAgfTtcbiAgICB9O1xuICAvLyBSZXN0IG9sZCBicm93c2Vyc1xuICB9IGVsc2Uge1xuICAgIGRlZmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgICBzZXRUaW1lb3V0KHJ1bm5lcihpZCksIDApO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBjbGVhcjogY2xlYXJcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlck9ySW5maW5pdHkoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRydW5jID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21hdGgtdHJ1bmMnKTtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIE5hTiBjaGVja1xuICByZXR1cm4gbnVtYmVyICE9PSBudW1iZXIgfHwgbnVtYmVyID09PSAwID8gMCA6IHRydW5jKG51bWJlcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbGVuID0gdG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCk7XG4gIHJldHVybiBsZW4gPiAwID8gbWluKGxlbiwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciAkT2JqZWN0ID0gT2JqZWN0O1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuICRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xudmFyIFRPX1BSSU1JVElWRSA9IHdlbGxLbm93blN5bWJvbCgndG9QcmltaXRpdmUnKTtcblxuLy8gYFRvUHJpbWl0aXZlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBwcmVmKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpIHx8IGlzU3ltYm9sKGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZXhvdGljVG9QcmltID0gZ2V0TWV0aG9kKGlucHV0LCBUT19QUklNSVRJVkUpO1xuICB2YXIgcmVzdWx0O1xuICBpZiAoZXhvdGljVG9QcmltKSB7XG4gICAgaWYgKHByZWYgPT09IHVuZGVmaW5lZCkgcHJlZiA9ICdkZWZhdWx0JztcbiAgICByZXN1bHQgPSBjYWxsKGV4b3RpY1RvUHJpbSwgaW5wdXQsIHByZWYpO1xuICAgIGlmICghaXNPYmplY3QocmVzdWx0KSB8fCBpc1N5bWJvbChyZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgIHRocm93IG5ldyAkVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxudmFyICRTdHJpbmcgPSBTdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmIChjbGFzc29mKGFyZ3VtZW50KSA9PT0gJ1N5bWJvbCcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nJyk7XG4gIHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJFN0cmluZyA9IFN0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gJFN0cmluZyhhcmd1bWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICdPYmplY3QnO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xudmFyIHRvU3RyaW5nID0gdW5jdXJyeVRoaXMoMS4wLnRvU3RyaW5nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyAoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgdG9TdHJpbmcoKytpZCArIHBvc3RmaXgsIDM2KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vcmVsYXRpdmUtdXJsLXN0eWxlIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHZhciB1cmwgPSBuZXcgVVJMKCdiP2E9MSZiPTImYz0zJywgJ2h0dHBzOi8vYScpO1xuICB2YXIgcGFyYW1zID0gdXJsLnNlYXJjaFBhcmFtcztcbiAgdmFyIHBhcmFtczIgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCdhPTEmYT0yJmI9MycpO1xuICB2YXIgcmVzdWx0ID0gJyc7XG4gIHVybC5wYXRobmFtZSA9ICdjJTIwZCc7XG4gIHBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgcGFyYW1zWydkZWxldGUnXSgnYicpO1xuICAgIHJlc3VsdCArPSBrZXkgKyB2YWx1ZTtcbiAgfSk7XG4gIHBhcmFtczJbJ2RlbGV0ZSddKCdhJywgMik7XG4gIC8vIGB1bmRlZmluZWRgIGNhc2UgaXMgYSBDaHJvbWl1bSAxMTcgYnVnXG4gIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG4gIHBhcmFtczJbJ2RlbGV0ZSddKCdiJywgdW5kZWZpbmVkKTtcbiAgcmV0dXJuIChJU19QVVJFICYmICghdXJsLnRvSlNPTiB8fCAhcGFyYW1zMi5oYXMoJ2EnLCAxKSB8fCBwYXJhbXMyLmhhcygnYScsIDIpIHx8ICFwYXJhbXMyLmhhcygnYScsIHVuZGVmaW5lZCkgfHwgcGFyYW1zMi5oYXMoJ2InKSkpXG4gICAgfHwgKCFwYXJhbXMuc2l6ZSAmJiAoSVNfUFVSRSB8fCAhREVTQ1JJUFRPUlMpKVxuICAgIHx8ICFwYXJhbXMuc29ydFxuICAgIHx8IHVybC5ocmVmICE9PSAnaHR0cHM6Ly9hL2MlMjBkP2E9MSZjPTMnXG4gICAgfHwgcGFyYW1zLmdldCgnYycpICE9PSAnMydcbiAgICB8fCBTdHJpbmcobmV3IFVSTFNlYXJjaFBhcmFtcygnP2E9MScpKSAhPT0gJ2E9MSdcbiAgICB8fCAhcGFyYW1zW0lURVJBVE9SXVxuICAgIC8vIHRocm93cyBpbiBFZGdlXG4gICAgfHwgbmV3IFVSTCgnaHR0cHM6Ly9hQGInKS51c2VybmFtZSAhPT0gJ2EnXG4gICAgfHwgbmV3IFVSTFNlYXJjaFBhcmFtcyhuZXcgVVJMU2VhcmNoUGFyYW1zKCdhPWInKSkuZ2V0KCdhJykgIT09ICdiJ1xuICAgIC8vIG5vdCBwdW55Y29kZWQgaW4gRWRnZVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8v0YLQtdGB0YInKS5ob3N0ICE9PSAneG4tLWUxYXliYydcbiAgICAvLyBub3QgZXNjYXBlZCBpbiBDaHJvbWUgNjItXG4gICAgfHwgbmV3IFVSTCgnaHR0cHM6Ly9hI9CxJykuaGFzaCAhPT0gJyMlRDAlQjEnXG4gICAgLy8gZmFpbHMgaW4gQ2hyb21lIDY2LVxuICAgIHx8IHJlc3VsdCAhPT0gJ2ExYzMnXG4gICAgLy8gdGhyb3dzIGluIFNhZmFyaVxuICAgIHx8IG5ldyBVUkwoJ2h0dHBzOi8veCcsIHVuZGVmaW5lZCkuaG9zdCAhPT0gJ3gnO1xufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfU1lNQk9MICYmXG4gICFTeW1ib2wuc2hhbSAmJlxuICB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVjggfiBDaHJvbWUgMzYtXG4vLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMzM0XG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTICYmIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgJ3Byb3RvdHlwZScsIHtcbiAgICB2YWx1ZTogNDIsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pLnByb3RvdHlwZSAhPT0gNDI7XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXNzZWQsIHJlcXVpcmVkKSB7XG4gIGlmIChwYXNzZWQgPCByZXF1aXJlZCkgdGhyb3cgbmV3ICRUeXBlRXJyb3IoJ05vdCBlbm91Z2ggYXJndW1lbnRzJyk7XG4gIHJldHVybiBwYXNzZWQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsVGhpcy5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQ2FsbGFibGUoV2Vha01hcCkgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N5bWJvbC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsVGhpcy5TeW1ib2w7XG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBjcmVhdGVXZWxsS25vd25TeW1ib2wgPSBVU0VfU1lNQk9MX0FTX1VJRCA/IFN5bWJvbFsnZm9yJ10gfHwgU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhc093bihXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpKSB7XG4gICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKVxuICAgICAgPyBTeW1ib2xbbmFtZV1cbiAgICAgIDogY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgaW5zdGFsbEVycm9yQ2F1c2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zdGFsbC1lcnJvci1jYXVzZScpO1xudmFyIGluc3RhbGxFcnJvclN0YWNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vycm9yLXN0YWNrLWluc3RhbGwnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBub3JtYWxpemVTdHJpbmdBcmd1bWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3JtYWxpemUtc3RyaW5nLWFyZ3VtZW50Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyICRFcnJvciA9IEVycm9yO1xudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG52YXIgJEFnZ3JlZ2F0ZUVycm9yID0gZnVuY3Rpb24gQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBtZXNzYWdlIC8qICwgb3B0aW9ucyAqLykge1xuICB2YXIgaXNJbnN0YW5jZSA9IGlzUHJvdG90eXBlT2YoQWdncmVnYXRlRXJyb3JQcm90b3R5cGUsIHRoaXMpO1xuICB2YXIgdGhhdDtcbiAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgdGhhdCA9IHNldFByb3RvdHlwZU9mKG5ldyAkRXJyb3IoKSwgaXNJbnN0YW5jZSA/IGdldFByb3RvdHlwZU9mKHRoaXMpIDogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUpO1xuICB9IGVsc2Uge1xuICAgIHRoYXQgPSBpc0luc3RhbmNlID8gdGhpcyA6IGNyZWF0ZShBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSk7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsIFRPX1NUUklOR19UQUcsICdFcnJvcicpO1xuICB9XG4gIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCAnbWVzc2FnZScsIG5vcm1hbGl6ZVN0cmluZ0FyZ3VtZW50KG1lc3NhZ2UpKTtcbiAgaW5zdGFsbEVycm9yU3RhY2sodGhhdCwgJEFnZ3JlZ2F0ZUVycm9yLCB0aGF0LnN0YWNrLCAxKTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSBpbnN0YWxsRXJyb3JDYXVzZSh0aGF0LCBhcmd1bWVudHNbMl0pO1xuICB2YXIgZXJyb3JzQXJyYXkgPSBbXTtcbiAgaXRlcmF0ZShlcnJvcnMsIHB1c2gsIHsgdGhhdDogZXJyb3JzQXJyYXkgfSk7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0aGF0LCAnZXJyb3JzJywgZXJyb3JzQXJyYXkpO1xuICByZXR1cm4gdGhhdDtcbn07XG5cbmlmIChzZXRQcm90b3R5cGVPZikgc2V0UHJvdG90eXBlT2YoJEFnZ3JlZ2F0ZUVycm9yLCAkRXJyb3IpO1xuZWxzZSBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKCRBZ2dyZWdhdGVFcnJvciwgJEVycm9yLCB7IG5hbWU6IHRydWUgfSk7XG5cbnZhciBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZSA9ICRBZ2dyZWdhdGVFcnJvci5wcm90b3R5cGUgPSBjcmVhdGUoJEVycm9yLnByb3RvdHlwZSwge1xuICBjb25zdHJ1Y3RvcjogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsICRBZ2dyZWdhdGVFcnJvciksXG4gIG1lc3NhZ2U6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAnJyksXG4gIG5hbWU6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCAnQWdncmVnYXRlRXJyb3InKVxufSk7XG5cbi8vIGBBZ2dyZWdhdGVFcnJvcmAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWdncmVnYXRlLWVycm9yLWNvbnN0cnVjdG9yXG4kKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgYXJpdHk6IDIgfSwge1xuICBBZ2dyZWdhdGVFcnJvcjogJEFnZ3JlZ2F0ZUVycm9yXG59KTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSB0aGlzIG1vZHVsZSBmcm9tIGBjb3JlLWpzQDRgIHNpbmNlIGl0J3MgcmVwbGFjZWQgdG8gbW9kdWxlIGJlbG93XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFnZ3JlZ2F0ZS1lcnJvci5jb25zdHJ1Y3RvcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5jbHVkZXM7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xuXG4vLyBGRjk5KyBidWdcbnZhciBCUk9LRU5fT05fU1BBUlNFID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWluY2x1ZGVzIC0tIGRldGVjdGlvblxuICByZXR1cm4gIUFycmF5KDEpLmluY2x1ZGVzKCk7XG59KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogQlJPS0VOX09OX1NQQVJTRSB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcbnZhciBkZWZpbmVJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUnKTtcbnZhciBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xuXG52YXIgQVJSQVlfSVRFUkFUT1IgPSAnQXJyYXkgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoQVJSQVlfSVRFUkFUT1IpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmVudHJpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZW50cmllc1xuLy8gYEFycmF5LnByb3RvdHlwZS5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmtleXNcbi8vIGBBcnJheS5wcm90b3R5cGUudmFsdWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnZhbHVlc1xuLy8gYEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQGl0ZXJhdG9yXG4vLyBgQ3JlYXRlQXJyYXlJdGVyYXRvcmAgaW50ZXJuYWwgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWFycmF5aXRlcmF0b3Jcbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lSXRlcmF0b3IoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBBUlJBWV9JVEVSQVRPUixcbiAgICB0YXJnZXQ6IHRvSW5kZXhlZE9iamVjdChpdGVyYXRlZCksIC8vIHRhcmdldFxuICAgIGluZGV4OiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleFxuICAgIGtpbmQ6IGtpbmQgICAgICAgICAgICAgICAgICAgICAgICAgLy8ga2luZFxuICB9KTtcbi8vIGAlQXJyYXlJdGVyYXRvclByb3RvdHlwZSUubmV4dGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVhcnJheWl0ZXJhdG9ycHJvdG90eXBlJS5uZXh0XG59LCBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsU3RhdGUodGhpcyk7XG4gIHZhciB0YXJnZXQgPSBzdGF0ZS50YXJnZXQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSBudWxsO1xuICAgIHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KHVuZGVmaW5lZCwgdHJ1ZSk7XG4gIH1cbiAgc3dpdGNoIChzdGF0ZS5raW5kKSB7XG4gICAgY2FzZSAna2V5cyc6IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGluZGV4LCBmYWxzZSk7XG4gICAgY2FzZSAndmFsdWVzJzogcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodGFyZ2V0W2luZGV4XSwgZmFsc2UpO1xuICB9IHJldHVybiBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KFtpbmRleCwgdGFyZ2V0W2luZGV4XV0sIGZhbHNlKTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZXVubWFwcGVkYXJndW1lbnRzb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxudmFyIHZhbHVlcyA9IEl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoJ2tleXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpO1xuYWRkVG9VbnNjb3BhYmxlcygnZW50cmllcycpO1xuXG4vLyBWOCB+IENocm9tZSA0NS0gYnVnXG5pZiAoIUlTX1BVUkUgJiYgREVTQ1JJUFRPUlMgJiYgdmFsdWVzLm5hbWUgIT09ICd2YWx1ZXMnKSB0cnkge1xuICBkZWZpbmVQcm9wZXJ0eSh2YWx1ZXMsICduYW1lJywgeyB2YWx1ZTogJ3ZhbHVlcycgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhc3NpZ24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWFzc2lnbicpO1xuXG4vLyBgT2JqZWN0LmFzc2lnbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5hc3NpZ25cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtYXNzaWduIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgYXJpdHk6IDIsIGZvcmNlZDogT2JqZWN0LmFzc2lnbiAhPT0gYXNzaWduIH0sIHtcbiAgYXNzaWduOiBhc3NpZ25cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC10by1zdHJpbmcnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5pZiAoIVRPX1NUUklOR19UQUdfU1VQUE9SVCkge1xuICBkZWZpbmVCdWlsdEluKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIHRvU3RyaW5nLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2Utc3RhdGljcy1pbmNvcnJlY3QtaXRlcmF0aW9uJyk7XG5cbi8vIGBQcm9taXNlLmFsbFNldHRsZWRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbHNldHRsZWRcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIGFsbFNldHRsZWQ6IGZ1bmN0aW9uIGFsbFNldHRsZWQoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIHZhciB2YWx1ZXMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICByZW1haW5pbmcrKztcbiAgICAgICAgY2FsbChwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB7IHN0YXR1czogJ2Z1bGZpbGxlZCcsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdyZWplY3RlZCcsIHJlYXNvbjogZXJyb3IgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG4vLyBgUHJvbWlzZS5hbGxgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFsbFxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXN0YXRpY3MtaW5jb3JyZWN0LWl0ZXJhdGlvbicpO1xuXG52YXIgUFJPTUlTRV9BTllfRVJST1IgPSAnTm8gb25lIHByb21pc2UgcmVzb2x2ZWQnO1xuXG4vLyBgUHJvbWlzZS5hbnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFueVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgYW55OiBmdW5jdGlvbiBhbnkoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIEFnZ3JlZ2F0ZUVycm9yID0gZ2V0QnVpbHRJbignQWdncmVnYXRlRXJyb3InKTtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlc29sdmUgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIGVycm9ycyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICB2YXIgYWxyZWFkeVJlc29sdmVkID0gZmFsc2U7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5UmVqZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIGNhbGwocHJvbWlzZVJlc29sdmUsIEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeVJlamVjdGVkIHx8IGFscmVhZHlSZXNvbHZlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlSZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgZXJyb3JzW2luZGV4XSA9IGVycm9yO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgQWdncmVnYXRlRXJyb3IoZXJyb3JzLCBQUk9NSVNFX0FOWV9FUlJPUikpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVqZWN0KG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIFBST01JU0VfQU5ZX0VSUk9SKSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpLkNPTlNUUlVDVE9SO1xudmFyIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLW5hdGl2ZS1jb25zdHJ1Y3RvcicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG5cbnZhciBOYXRpdmVQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yICYmIE5hdGl2ZVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5jYXRjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucHJvdG90eXBlLmNhdGNoXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SLCByZWFsOiB0cnVlIH0sIHtcbiAgJ2NhdGNoJzogZnVuY3Rpb24gKG9uUmVqZWN0ZWQpIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gIH1cbn0pO1xuXG4vLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNjYXRjaGAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG5pZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpKSB7XG4gIHZhciBtZXRob2QgPSBnZXRCdWlsdEluKCdQcm9taXNlJykucHJvdG90eXBlWydjYXRjaCddO1xuICBpZiAoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnY2F0Y2gnXSAhPT0gbWV0aG9kKSB7XG4gICAgZGVmaW5lQnVpbHRJbihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnY2F0Y2gnLCBtZXRob2QsIHsgdW5zYWZlOiB0cnVlIH0pO1xuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Vudmlyb25tZW50LWlzLW5vZGUnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgc2V0U3BlY2llcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtc3BlY2llcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWljcm90YXNrJyk7XG52YXIgaG9zdFJlcG9ydEVycm9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMnKTtcbnZhciBwZXJmb3JtID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BlcmZvcm0nKTtcbnZhciBRdWV1ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9xdWV1ZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbnZhciBQUk9NSVNFID0gJ1Byb21pc2UnO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gUHJvbWlzZUNvbnN0cnVjdG9yRGV0ZWN0aW9uLkNPTlNUUlVDVE9SO1xudmFyIE5BVElWRV9QUk9NSVNFX1JFSkVDVElPTl9FVkVOVCA9IFByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbi5SRUpFQ1RJT05fRVZFTlQ7XG52YXIgTkFUSVZFX1BST01JU0VfU1VCQ0xBU1NJTkcgPSBQcm9taXNlQ29uc3RydWN0b3JEZXRlY3Rpb24uU1VCQ0xBU1NJTkc7XG52YXIgZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihQUk9NSVNFKTtcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xudmFyIFByb21pc2VDb25zdHJ1Y3RvciA9IE5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvcjtcbnZhciBQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbFRoaXMucHJvY2VzcztcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG52YXIgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHk7XG5cbnZhciBESVNQQVRDSF9FVkVOVCA9ICEhKGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICYmIGdsb2JhbFRoaXMuZGlzcGF0Y2hFdmVudCk7XG52YXIgVU5IQU5ETEVEX1JFSkVDVElPTiA9ICd1bmhhbmRsZWRyZWplY3Rpb24nO1xudmFyIFJFSkVDVElPTl9IQU5ETEVEID0gJ3JlamVjdGlvbmhhbmRsZWQnO1xudmFyIFBFTkRJTkcgPSAwO1xudmFyIEZVTEZJTExFRCA9IDE7XG52YXIgUkVKRUNURUQgPSAyO1xudmFyIEhBTkRMRUQgPSAxO1xudmFyIFVOSEFORExFRCA9IDI7XG5cbnZhciBJbnRlcm5hbCwgT3duUHJvbWlzZUNhcGFiaWxpdHksIFByb21pc2VXcmFwcGVyLCBuYXRpdmVUaGVuO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiBpc0NhbGxhYmxlKHRoZW4gPSBpdC50aGVuKSA/IHRoZW4gOiBmYWxzZTtcbn07XG5cbnZhciBjYWxsUmVhY3Rpb24gPSBmdW5jdGlvbiAocmVhY3Rpb24sIHN0YXRlKSB7XG4gIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICB2YXIgb2sgPSBzdGF0ZS5zdGF0ZSA9PT0gRlVMRklMTEVEO1xuICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgdHJ5IHtcbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaWYgKCFvaykge1xuICAgICAgICBpZiAoc3RhdGUucmVqZWN0aW9uID09PSBVTkhBTkRMRUQpIG9uSGFuZGxlVW5oYW5kbGVkKHN0YXRlKTtcbiAgICAgICAgc3RhdGUucmVqZWN0aW9uID0gSEFORExFRDtcbiAgICAgIH1cbiAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIGNhbiB0aHJvd1xuICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgfSBlbHNlIGlmICh0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgIGNhbGwodGhlbiwgcmVzdWx0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICB9IGVsc2UgcmVqZWN0KHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufTtcblxudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChzdGF0ZSwgaXNSZWplY3QpIHtcbiAgaWYgKHN0YXRlLm5vdGlmaWVkKSByZXR1cm47XG4gIHN0YXRlLm5vdGlmaWVkID0gdHJ1ZTtcbiAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVhY3Rpb25zID0gc3RhdGUucmVhY3Rpb25zO1xuICAgIHZhciByZWFjdGlvbjtcbiAgICB3aGlsZSAocmVhY3Rpb24gPSByZWFjdGlvbnMuZ2V0KCkpIHtcbiAgICAgIGNhbGxSZWFjdGlvbihyZWFjdGlvbiwgc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5ub3RpZmllZCA9IGZhbHNlO1xuICAgIGlmIChpc1JlamVjdCAmJiAhc3RhdGUucmVqZWN0aW9uKSBvblVuaGFuZGxlZChzdGF0ZSk7XG4gIH0pO1xufTtcblxudmFyIGRpc3BhdGNoRXZlbnQgPSBmdW5jdGlvbiAobmFtZSwgcHJvbWlzZSwgcmVhc29uKSB7XG4gIHZhciBldmVudCwgaGFuZGxlcjtcbiAgaWYgKERJU1BBVENIX0VWRU5UKSB7XG4gICAgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICBldmVudC5wcm9taXNlID0gcHJvbWlzZTtcbiAgICBldmVudC5yZWFzb24gPSByZWFzb247XG4gICAgZXZlbnQuaW5pdEV2ZW50KG5hbWUsIGZhbHNlLCB0cnVlKTtcbiAgICBnbG9iYWxUaGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICB9IGVsc2UgZXZlbnQgPSB7IHByb21pc2U6IHByb21pc2UsIHJlYXNvbjogcmVhc29uIH07XG4gIGlmICghTkFUSVZFX1BST01JU0VfUkVKRUNUSU9OX0VWRU5UICYmIChoYW5kbGVyID0gZ2xvYmFsVGhpc1snb24nICsgbmFtZV0pKSBoYW5kbGVyKGV2ZW50KTtcbiAgZWxzZSBpZiAobmFtZSA9PT0gVU5IQU5ETEVEX1JFSkVDVElPTikgaG9zdFJlcG9ydEVycm9ycygnVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uJywgcmVhc29uKTtcbn07XG5cbnZhciBvblVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjYWxsKHRhc2ssIGdsb2JhbFRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgSVNfVU5IQU5ETEVEID0gaXNVbmhhbmRsZWQoc3RhdGUpO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKElTX1VOSEFORExFRCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChJU19OT0RFKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFVOSEFORExFRF9SRUpFQ1RJT04sIHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHN0YXRlLnJlamVjdGlvbiA9IElTX05PREUgfHwgaXNVbmhhbmRsZWQoc3RhdGUpID8gVU5IQU5ETEVEIDogSEFORExFRDtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gIH0pO1xufTtcblxudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5yZWplY3Rpb24gIT09IEhBTkRMRUQgJiYgIXN0YXRlLnBhcmVudDtcbn07XG5cbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjYWxsKHRhc2ssIGdsb2JhbFRoaXMsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoUkVKRUNUSU9OX0hBTkRMRUQsIHByb21pc2UsIHN0YXRlLnZhbHVlKTtcbiAgfSk7XG59O1xuXG52YXIgYmluZCA9IGZ1bmN0aW9uIChmbiwgc3RhdGUsIHVud3JhcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm4oc3RhdGUsIHZhbHVlLCB1bndyYXApO1xuICB9O1xufTtcblxudmFyIGludGVybmFsUmVqZWN0ID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgc3RhdGUuc3RhdGUgPSBSRUpFQ1RFRDtcbiAgbm90aWZ5KHN0YXRlLCB0cnVlKTtcbn07XG5cbnZhciBpbnRlcm5hbFJlc29sdmUgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICB0cnkge1xuICAgIGlmIChzdGF0ZS5mYWNhZGUgPT09IHZhbHVlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7XG4gICAgdmFyIHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKTtcbiAgICBpZiAodGhlbikge1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7IGRvbmU6IGZhbHNlIH07XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY2FsbCh0aGVuLCB2YWx1ZSxcbiAgICAgICAgICAgIGJpbmQoaW50ZXJuYWxSZXNvbHZlLCB3cmFwcGVyLCBzdGF0ZSksXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVqZWN0LCB3cmFwcGVyLCBzdGF0ZSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGludGVybmFsUmVqZWN0KHdyYXBwZXIsIGVycm9yLCBzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgc3RhdGUuc3RhdGUgPSBGVUxGSUxMRUQ7XG4gICAgICBub3RpZnkoc3RhdGUsIGZhbHNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaW50ZXJuYWxSZWplY3QoeyBkb25lOiBmYWxzZSB9LCBlcnJvciwgc3RhdGUpO1xuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYgKEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SKSB7XG4gIC8vIDI1LjQuMy4xIFByb21pc2UoZXhlY3V0b3IpXG4gIFByb21pc2VDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBhbkluc3RhbmNlKHRoaXMsIFByb21pc2VQcm90b3R5cGUpO1xuICAgIGFDYWxsYWJsZShleGVjdXRvcik7XG4gICAgY2FsbChJbnRlcm5hbCwgdGhpcyk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgdHJ5IHtcbiAgICAgIGV4ZWN1dG9yKGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSksIGJpbmQoaW50ZXJuYWxSZWplY3QsIHN0YXRlKSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGludGVybmFsUmVqZWN0KHN0YXRlLCBlcnJvcik7XG4gICAgfVxuICB9O1xuXG4gIFByb21pc2VQcm90b3R5cGUgPSBQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgICAgdHlwZTogUFJPTUlTRSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgbm90aWZpZWQ6IGZhbHNlLFxuICAgICAgcGFyZW50OiBmYWxzZSxcbiAgICAgIHJlYWN0aW9uczogbmV3IFF1ZXVlKCksXG4gICAgICByZWplY3Rpb246IGZhbHNlLFxuICAgICAgc3RhdGU6IFBFTkRJTkcsXG4gICAgICB2YWx1ZTogbnVsbFxuICAgIH0pO1xuICB9O1xuXG4gIC8vIGBQcm9taXNlLnByb3RvdHlwZS50aGVuYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS50aGVuXG4gIEludGVybmFsLnByb3RvdHlwZSA9IGRlZmluZUJ1aWx0SW4oUHJvbWlzZVByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIFByb21pc2VDb25zdHJ1Y3RvcikpO1xuICAgIHN0YXRlLnBhcmVudCA9IHRydWU7XG4gICAgcmVhY3Rpb24ub2sgPSBpc0NhbGxhYmxlKG9uRnVsZmlsbGVkKSA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICByZWFjdGlvbi5mYWlsID0gaXNDYWxsYWJsZShvblJlamVjdGVkKSAmJiBvblJlamVjdGVkO1xuICAgIHJlYWN0aW9uLmRvbWFpbiA9IElTX05PREUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICBpZiAoc3RhdGUuc3RhdGUgPT09IFBFTkRJTkcpIHN0YXRlLnJlYWN0aW9ucy5hZGQocmVhY3Rpb24pO1xuICAgIGVsc2UgbWljcm90YXNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxSZWFjdGlvbihyZWFjdGlvbiwgc3RhdGUpO1xuICAgIH0pO1xuICAgIHJldHVybiByZWFjdGlvbi5wcm9taXNlO1xuICB9KTtcblxuICBPd25Qcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IG5ldyBJbnRlcm5hbCgpO1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHByb21pc2UpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKTtcbiAgICB0aGlzLnJlamVjdCA9IGJpbmQoaW50ZXJuYWxSZWplY3QsIHN0YXRlKTtcbiAgfTtcblxuICBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoQykge1xuICAgIHJldHVybiBDID09PSBQcm9taXNlQ29uc3RydWN0b3IgfHwgQyA9PT0gUHJvbWlzZVdyYXBwZXJcbiAgICAgID8gbmV3IE93blByb21pc2VDYXBhYmlsaXR5KEMpXG4gICAgICA6IG5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgfTtcblxuICBpZiAoIUlTX1BVUkUgJiYgaXNDYWxsYWJsZShOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IpICYmIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIHtcbiAgICBuYXRpdmVUaGVuID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZS50aGVuO1xuXG4gICAgaWYgKCFOQVRJVkVfUFJPTUlTRV9TVUJDTEFTU0lORykge1xuICAgICAgLy8gbWFrZSBgUHJvbWlzZSN0aGVuYCByZXR1cm4gYSBwb2x5ZmlsbGVkIGBQcm9taXNlYCBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgICAgZGVmaW5lQnVpbHRJbihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAndGhlbicsIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgY2FsbChuYXRpdmVUaGVuLCB0aGF0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NDBcbiAgICAgIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8vIG1ha2UgYC5jb25zdHJ1Y3RvciA9PT0gUHJvbWlzZWAgd29yayBmb3IgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJc1xuICAgIHRyeSB7XG4gICAgICBkZWxldGUgTmF0aXZlUHJvbWlzZVByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcbiAgICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbiAgICAvLyBtYWtlIGBpbnN0YW5jZW9mIFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIHNldFByb3RvdHlwZU9mKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsIFByb21pc2VQcm90b3R5cGUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBgUHJvbWlzZWAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS1leGVjdXRvclxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIHdyYXA6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICBQcm9taXNlOiBQcm9taXNlQ29uc3RydWN0b3Jcbn0pO1xuXG5zZXRUb1N0cmluZ1RhZyhQcm9taXNlQ29uc3RydWN0b3IsIFBST01JU0UsIGZhbHNlLCB0cnVlKTtcbnNldFNwZWNpZXMoUFJPTUlTRSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1uYXRpdmUtY29uc3RydWN0b3InKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcblxudmFyIE5hdGl2ZVByb21pc2VQcm90b3R5cGUgPSBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgJiYgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuLy8gU2FmYXJpIGJ1ZyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwODI5XG52YXIgTk9OX0dFTkVSSUMgPSAhIU5hdGl2ZVByb21pc2VDb25zdHJ1Y3RvciAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXRoZW5hYmxlIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIE5hdGl2ZVByb21pc2VQcm90b3R5cGVbJ2ZpbmFsbHknXS5jYWxsKHsgdGhlbjogZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9IH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gYFByb21pc2UucHJvdG90eXBlLmZpbmFsbHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5maW5hbGx5XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHByb3RvOiB0cnVlLCByZWFsOiB0cnVlLCBmb3JjZWQ6IE5PTl9HRU5FUklDIH0sIHtcbiAgJ2ZpbmFsbHknOiBmdW5jdGlvbiAob25GaW5hbGx5KSB7XG4gICAgdmFyIEMgPSBzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgZ2V0QnVpbHRJbignUHJvbWlzZScpKTtcbiAgICB2YXIgaXNGdW5jdGlvbiA9IGlzQ2FsbGFibGUob25GaW5hbGx5KTtcbiAgICByZXR1cm4gdGhpcy50aGVuKFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHJldHVybiB4OyB9KTtcbiAgICAgIH0gOiBvbkZpbmFsbHksXG4gICAgICBpc0Z1bmN0aW9uID8gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKEMsIG9uRmluYWxseSgpKS50aGVuKGZ1bmN0aW9uICgpIHsgdGhyb3cgZTsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5XG4gICAgKTtcbiAgfVxufSk7XG5cbi8vIG1ha2VzIHN1cmUgdGhhdCBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzIGBQcm9taXNlI2ZpbmFsbHlgIHByb3Blcmx5IHdvcmtzIHdpdGggcGF0Y2hlZCBgUHJvbWlzZSN0aGVuYFxuaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yKSkge1xuICB2YXIgbWV0aG9kID0gZ2V0QnVpbHRJbignUHJvbWlzZScpLnByb3RvdHlwZVsnZmluYWxseSddO1xuICBpZiAoTmF0aXZlUHJvbWlzZVByb3RvdHlwZVsnZmluYWxseSddICE9PSBtZXRob2QpIHtcbiAgICBkZWZpbmVCdWlsdEluKE5hdGl2ZVByb21pc2VQcm90b3R5cGUsICdmaW5hbGx5JywgbWV0aG9kLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgfVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIHRoaXMgbW9kdWxlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBzcGxpdCB0byBtb2R1bGVzIGxpc3RlZCBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuYWxsJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UuY2F0Y2gnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS5yYWNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVqZWN0Jyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2UucmVzb2x2ZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgaXRlcmF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRlJyk7XG52YXIgUFJPTUlTRV9TVEFUSUNTX0lOQ09SUkVDVF9JVEVSQVRJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1zdGF0aWNzLWluY29ycmVjdC1pdGVyYXRpb24nKTtcblxuLy8gYFByb21pc2UucmFjZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmFjZVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IFBST01JU0VfU1RBVElDU19JTkNPUlJFQ1RfSVRFUkFUSU9OIH0sIHtcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhQ2FsbGFibGUoQy5yZXNvbHZlKTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIGNhbGwoJHByb21pc2VSZXNvbHZlLCBDLCBwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIEZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtY29uc3RydWN0b3ItZGV0ZWN0aW9uJykuQ09OU1RSVUNUT1I7XG5cbi8vIGBQcm9taXNlLnJlamVjdGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVqZWN0XG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgfSwge1xuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKHRoaXMpO1xuICAgIHZhciBjYXBhYmlsaXR5UmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgY2FwYWJpbGl0eVJlamVjdChyKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtbmF0aXZlLWNvbnN0cnVjdG9yJyk7XG52YXIgRk9SQ0VEX1BST01JU0VfQ09OU1RSVUNUT1IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKS5DT05TVFJVQ1RPUjtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcblxudmFyIFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPSBnZXRCdWlsdEluKCdQcm9taXNlJyk7XG52YXIgQ0hFQ0tfV1JBUFBFUiA9IElTX1BVUkUgJiYgIUZPUkNFRF9QUk9NSVNFX0NPTlNUUlVDVE9SO1xuXG4vLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5yZXNvbHZlXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiB9LCB7XG4gIHJlc29sdmU6IGZ1bmN0aW9uIHJlc29sdmUoeCkge1xuICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDSEVDS19XUkFQUEVSICYmIHRoaXMgPT09IFByb21pc2VDb25zdHJ1Y3RvcldyYXBwZXIgPyBOYXRpdmVQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciBzbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xuXG52YXIgUHJvbWlzZSA9IGdsb2JhbFRoaXMuUHJvbWlzZTtcblxudmFyIEFDQ0VQVF9BUkdVTUVOVFMgPSBmYWxzZTtcbi8vIEF2b2lkaW5nIHRoZSB1c2Ugb2YgcG9seWZpbGxzIG9mIHRoZSBwcmV2aW91cyBpdGVyYXRpb24gb2YgdGhpcyBwcm9wb3NhbFxuLy8gdGhhdCBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzIG9mIHRoZSBjYWxsYmFja1xudmFyIEZPUkNFRCA9ICFQcm9taXNlIHx8ICFQcm9taXNlWyd0cnknXSB8fCBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgUHJvbWlzZVsndHJ5J10oZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gICAgQUNDRVBUX0FSR1VNRU5UUyA9IGFyZ3VtZW50ID09PSA4O1xuICB9LCA4KTtcbn0pLmVycm9yIHx8ICFBQ0NFUFRfQVJHVU1FTlRTO1xuXG4vLyBgUHJvbWlzZS50cnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnRyeVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gICd0cnknOiBmdW5jdGlvbiAoY2FsbGJhY2tmbiAvKiAsIC4uLmFyZ3MgKi8pIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxID8gc2xpY2UoYXJndW1lbnRzLCAxKSA6IFtdO1xuICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYodGhpcyk7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGFwcGx5KGFDYWxsYWJsZShjYWxsYmFja2ZuKSwgdW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9KTtcbiAgICAocmVzdWx0LmVycm9yID8gcHJvbWlzZUNhcGFiaWxpdHkucmVqZWN0IDogcHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSkocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG5cbi8vIGBQcm9taXNlLndpdGhSZXNvbHZlcnNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLndpdGhSZXNvbHZlcnNcbiQoeyB0YXJnZXQ6ICdQcm9taXNlJywgc3RhdDogdHJ1ZSB9LCB7XG4gIHdpdGhSZXNvbHZlcnM6IGZ1bmN0aW9uIHdpdGhSZXNvbHZlcnMoKSB7XG4gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZih0aGlzKTtcbiAgICByZXR1cm4ge1xuICAgICAgcHJvbWlzZTogcHJvbWlzZUNhcGFiaWxpdHkucHJvbWlzZSxcbiAgICAgIHJlc29sdmU6IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmUsXG4gICAgICByZWplY3Q6IHByb21pc2VDYXBhYmlsaXR5LnJlamVjdFxuICAgIH07XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbnZhciAkUmFuZ2VFcnJvciA9IFJhbmdlRXJyb3I7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1zdHJpbmctZnJvbWNvZGVwb2ludCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyICRmcm9tQ29kZVBvaW50ID0gU3RyaW5nLmZyb21Db2RlUG9pbnQ7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xuXG4vLyBsZW5ndGggc2hvdWxkIGJlIDEsIG9sZCBGRiBwcm9ibGVtXG52YXIgSU5DT1JSRUNUX0xFTkdUSCA9ICEhJGZyb21Db2RlUG9pbnQgJiYgJGZyb21Db2RlUG9pbnQubGVuZ3RoICE9PSAxO1xuXG4vLyBgU3RyaW5nLmZyb21Db2RlUG9pbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcuZnJvbWNvZGVwb2ludFxuJCh7IHRhcmdldDogJ1N0cmluZycsIHN0YXQ6IHRydWUsIGFyaXR5OiAxLCBmb3JjZWQ6IElOQ09SUkVDVF9MRU5HVEggfSwge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMgLS0gcmVxdWlyZWQgZm9yIGAubGVuZ3RoYFxuICBmcm9tQ29kZVBvaW50OiBmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHgpIHtcbiAgICB2YXIgZWxlbWVudHMgPSBbXTtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGNvZGU7XG4gICAgd2hpbGUgKGxlbmd0aCA+IGkpIHtcbiAgICAgIGNvZGUgPSArYXJndW1lbnRzW2krK107XG4gICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBGRkZGKSAhPT0gY29kZSkgdGhyb3cgbmV3ICRSYW5nZUVycm9yKGNvZGUgKyAnIGlzIG5vdCBhIHZhbGlkIGNvZGUgcG9pbnQnKTtcbiAgICAgIGVsZW1lbnRzW2ldID0gY29kZSA8IDB4MTAwMDBcbiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSlcbiAgICAgICAgOiBmcm9tQ2hhckNvZGUoKChjb2RlIC09IDB4MTAwMDApID4+IDEwKSArIDB4RDgwMCwgY29kZSAlIDB4NDAwICsgMHhEQzAwKTtcbiAgICB9IHJldHVybiBqb2luKGVsZW1lbnRzLCAnJyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGNoYXJBdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlJykuY2hhckF0O1xudmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1kZWZpbmUnKTtcbnZhciBjcmVhdGVJdGVyUmVzdWx0T2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1pdGVyLXJlc3VsdC1vYmplY3QnKTtcblxudmFyIFNUUklOR19JVEVSQVRPUiA9ICdTdHJpbmcgSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoU1RSSU5HX0lURVJBVE9SKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLUBAaXRlcmF0b3JcbmRlZmluZUl0ZXJhdG9yKFN0cmluZywgJ1N0cmluZycsIGZ1bmN0aW9uIChpdGVyYXRlZCkge1xuICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICB0eXBlOiBTVFJJTkdfSVRFUkFUT1IsXG4gICAgc3RyaW5nOiB0b1N0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXN0cmluZ2l0ZXJhdG9ycHJvdG90eXBlJS5uZXh0XG59LCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgc3RyaW5nID0gc3RhdGUuc3RyaW5nO1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleDtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodW5kZWZpbmVkLCB0cnVlKTtcbiAgcG9pbnQgPSBjaGFyQXQoc3RyaW5nLCBpbmRleCk7XG4gIHN0YXRlLmluZGV4ICs9IHBvaW50Lmxlbmd0aDtcbiAgcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QocG9pbnQsIGZhbHNlKTtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkLmpzJyk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgZnJvbSBgY29yZS1qc0A0YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFueScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucHJvbWlzZS50cnkuanMnKTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG5yZXF1aXJlKCcuLi9tb2R1bGVzL2VzLnByb21pc2Uud2l0aC1yZXNvbHZlcnMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWxUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbC10aGlzJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBET01Ub2tlbkxpc3RQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLXRva2VuLWxpc3QtcHJvdG90eXBlJyk7XG52YXIgQXJyYXlJdGVyYXRvck1ldGhvZHMgPSByZXF1aXJlKCcuLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBBcnJheVZhbHVlcyA9IEFycmF5SXRlcmF0b3JNZXRob2RzLnZhbHVlcztcblxudmFyIGhhbmRsZVByb3RvdHlwZSA9IGZ1bmN0aW9uIChDb2xsZWN0aW9uUHJvdG90eXBlLCBDT0xMRUNUSU9OX05BTUUpIHtcbiAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGUpIHtcbiAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZVtJVEVSQVRPUl0gIT09IEFycmF5VmFsdWVzKSB0cnkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdID0gQXJyYXlWYWx1ZXM7XG4gICAgfVxuICAgIHNldFRvU3RyaW5nVGFnKENvbGxlY3Rpb25Qcm90b3R5cGUsIENPTExFQ1RJT05fTkFNRSwgdHJ1ZSk7XG4gICAgaWYgKERPTUl0ZXJhYmxlc1tDT0xMRUNUSU9OX05BTUVdKSBmb3IgKHZhciBNRVRIT0RfTkFNRSBpbiBBcnJheUl0ZXJhdG9yTWV0aG9kcykge1xuICAgICAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gICAgICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZVtNRVRIT0RfTkFNRV0gIT09IEFycmF5SXRlcmF0b3JNZXRob2RzW01FVEhPRF9OQU1FXSkgdHJ5IHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIE1FVEhPRF9OQU1FLCBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV0pO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgQ29sbGVjdGlvblByb3RvdHlwZVtNRVRIT0RfTkFNRV0gPSBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV07XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5mb3IgKHZhciBDT0xMRUNUSU9OX05BTUUgaW4gRE9NSXRlcmFibGVzKSB7XG4gIGhhbmRsZVByb3RvdHlwZShnbG9iYWxUaGlzW0NPTExFQ1RJT05fTkFNRV0gJiYgZ2xvYmFsVGhpc1tDT0xMRUNUSU9OX05BTUVdLnByb3RvdHlwZSwgQ09MTEVDVElPTl9OQU1FKTtcbn1cblxuaGFuZGxlUHJvdG90eXBlKERPTVRva2VuTGlzdFByb3RvdHlwZSwgJ0RPTVRva2VuTGlzdCcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogaW4gY29yZS1qc0A0LCBtb3ZlIC9tb2R1bGVzLyBkZXBlbmRlbmNpZXMgdG8gcHVibGljIGVudHJpZXMgZm9yIGJldHRlciBvcHRpbWl6YXRpb24gYnkgdG9vbHMgbGlrZSBgcHJlc2V0LWVudmBcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMuc3RyaW5nLmZyb20tY29kZS1wb2ludCcpO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2xvYmFsVGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwtdGhpcycpO1xudmFyIHNhZmVHZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhZmUtZ2V0LWJ1aWx0LWluJyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIFVTRV9OQVRJVkVfVVJMID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VybC1jb25zdHJ1Y3Rvci1kZXRlY3Rpb24nKTtcbnZhciBkZWZpbmVCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbicpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcbnZhciBkZWZpbmVCdWlsdElucyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW5zJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9yLWNyZWF0ZS1jb25zdHJ1Y3RvcicpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciAkdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBnZXRJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3InKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgY3JlYXRlSXRlclJlc3VsdE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlci1yZXN1bHQtb2JqZWN0Jyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGFycmF5U29ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zb3J0Jyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBVUkxfU0VBUkNIX1BBUkFNUyA9ICdVUkxTZWFyY2hQYXJhbXMnO1xudmFyIFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SID0gVVJMX1NFQVJDSF9QQVJBTVMgKyAnSXRlcmF0b3InO1xudmFyIHNldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLnNldDtcbnZhciBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoVVJMX1NFQVJDSF9QQVJBTVMpO1xudmFyIGdldEludGVybmFsSXRlcmF0b3JTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFVSTF9TRUFSQ0hfUEFSQU1TX0lURVJBVE9SKTtcblxudmFyIG5hdGl2ZUZldGNoID0gc2FmZUdldEJ1aWx0SW4oJ2ZldGNoJyk7XG52YXIgTmF0aXZlUmVxdWVzdCA9IHNhZmVHZXRCdWlsdEluKCdSZXF1ZXN0Jyk7XG52YXIgSGVhZGVycyA9IHNhZmVHZXRCdWlsdEluKCdIZWFkZXJzJyk7XG52YXIgUmVxdWVzdFByb3RvdHlwZSA9IE5hdGl2ZVJlcXVlc3QgJiYgTmF0aXZlUmVxdWVzdC5wcm90b3R5cGU7XG52YXIgSGVhZGVyc1Byb3RvdHlwZSA9IEhlYWRlcnMgJiYgSGVhZGVycy5wcm90b3R5cGU7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsVGhpcy5UeXBlRXJyb3I7XG52YXIgZW5jb2RlVVJJQ29tcG9uZW50ID0gZ2xvYmFsVGhpcy5lbmNvZGVVUklDb21wb25lbnQ7XG52YXIgZnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcbnZhciBmcm9tQ29kZVBvaW50ID0gZ2V0QnVpbHRJbignU3RyaW5nJywgJ2Zyb21Db2RlUG9pbnQnKTtcbnZhciAkcGFyc2VJbnQgPSBwYXJzZUludDtcbnZhciBjaGFyQXQgPSB1bmN1cnJ5VGhpcygnJy5jaGFyQXQpO1xudmFyIGpvaW4gPSB1bmN1cnJ5VGhpcyhbXS5qb2luKTtcbnZhciBwdXNoID0gdW5jdXJyeVRoaXMoW10ucHVzaCk7XG52YXIgcmVwbGFjZSA9IHVuY3VycnlUaGlzKCcnLnJlcGxhY2UpO1xudmFyIHNoaWZ0ID0gdW5jdXJyeVRoaXMoW10uc2hpZnQpO1xudmFyIHNwbGljZSA9IHVuY3VycnlUaGlzKFtdLnNwbGljZSk7XG52YXIgc3BsaXQgPSB1bmN1cnJ5VGhpcygnJy5zcGxpdCk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKC8uLy5leGVjKTtcblxudmFyIHBsdXMgPSAvXFwrL2c7XG52YXIgRkFMTEJBQ0tfUkVQTEFDRVIgPSAnXFx1RkZGRCc7XG52YXIgVkFMSURfSEVYID0gL15bMC05YS1mXSskL2k7XG5cbnZhciBwYXJzZUhleE9jdGV0ID0gZnVuY3Rpb24gKHN0cmluZywgc3RhcnQpIHtcbiAgdmFyIHN1YnN0ciA9IHN0cmluZ1NsaWNlKHN0cmluZywgc3RhcnQsIHN0YXJ0ICsgMik7XG4gIGlmICghZXhlYyhWQUxJRF9IRVgsIHN1YnN0cikpIHJldHVybiBOYU47XG5cbiAgcmV0dXJuICRwYXJzZUludChzdWJzdHIsIDE2KTtcbn07XG5cbnZhciBnZXRMZWFkaW5nT25lcyA9IGZ1bmN0aW9uIChvY3RldCkge1xuICB2YXIgY291bnQgPSAwO1xuICBmb3IgKHZhciBtYXNrID0gMHg4MDsgbWFzayA+IDAgJiYgKG9jdGV0ICYgbWFzaykgIT09IDA7IG1hc2sgPj49IDEpIHtcbiAgICBjb3VudCsrO1xuICB9XG4gIHJldHVybiBjb3VudDtcbn07XG5cbnZhciB1dGY4RGVjb2RlID0gZnVuY3Rpb24gKG9jdGV0cykge1xuICB2YXIgY29kZVBvaW50ID0gbnVsbDtcblxuICBzd2l0Y2ggKG9jdGV0cy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6XG4gICAgICBjb2RlUG9pbnQgPSBvY3RldHNbMF07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICBjb2RlUG9pbnQgPSAob2N0ZXRzWzBdICYgMHgxRikgPDwgNiB8IChvY3RldHNbMV0gJiAweDNGKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIGNvZGVQb2ludCA9IChvY3RldHNbMF0gJiAweDBGKSA8PCAxMiB8IChvY3RldHNbMV0gJiAweDNGKSA8PCA2IHwgKG9jdGV0c1syXSAmIDB4M0YpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgY29kZVBvaW50ID0gKG9jdGV0c1swXSAmIDB4MDcpIDw8IDE4IHwgKG9jdGV0c1sxXSAmIDB4M0YpIDw8IDEyIHwgKG9jdGV0c1syXSAmIDB4M0YpIDw8IDYgfCAob2N0ZXRzWzNdICYgMHgzRik7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBjb2RlUG9pbnQgPiAweDEwRkZGRiA/IG51bGwgOiBjb2RlUG9pbnQ7XG59O1xuXG52YXIgZGVjb2RlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIGlucHV0ID0gcmVwbGFjZShpbnB1dCwgcGx1cywgJyAnKTtcbiAgdmFyIGxlbmd0aCA9IGlucHV0Lmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICB2YXIgaSA9IDA7XG5cbiAgd2hpbGUgKGkgPCBsZW5ndGgpIHtcbiAgICB2YXIgZGVjb2RlZENoYXIgPSBjaGFyQXQoaW5wdXQsIGkpO1xuXG4gICAgaWYgKGRlY29kZWRDaGFyID09PSAnJScpIHtcbiAgICAgIGlmIChjaGFyQXQoaW5wdXQsIGkgKyAxKSA9PT0gJyUnIHx8IGkgKyAzID4gbGVuZ3RoKSB7XG4gICAgICAgIHJlc3VsdCArPSAnJSc7XG4gICAgICAgIGkrKztcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBvY3RldCA9IHBhcnNlSGV4T2N0ZXQoaW5wdXQsIGkgKyAxKTtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmIChvY3RldCAhPT0gb2N0ZXQpIHtcbiAgICAgICAgcmVzdWx0ICs9IGRlY29kZWRDaGFyO1xuICAgICAgICBpKys7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpICs9IDI7XG4gICAgICB2YXIgYnl0ZVNlcXVlbmNlTGVuZ3RoID0gZ2V0TGVhZGluZ09uZXMob2N0ZXQpO1xuXG4gICAgICBpZiAoYnl0ZVNlcXVlbmNlTGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGRlY29kZWRDaGFyID0gZnJvbUNoYXJDb2RlKG9jdGV0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChieXRlU2VxdWVuY2VMZW5ndGggPT09IDEgfHwgYnl0ZVNlcXVlbmNlTGVuZ3RoID4gNCkge1xuICAgICAgICAgIHJlc3VsdCArPSBGQUxMQkFDS19SRVBMQUNFUjtcbiAgICAgICAgICBpKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgb2N0ZXRzID0gW29jdGV0XTtcbiAgICAgICAgdmFyIHNlcXVlbmNlSW5kZXggPSAxO1xuXG4gICAgICAgIHdoaWxlIChzZXF1ZW5jZUluZGV4IDwgYnl0ZVNlcXVlbmNlTGVuZ3RoKSB7XG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGlmIChpICsgMyA+IGxlbmd0aCB8fCBjaGFyQXQoaW5wdXQsIGkpICE9PSAnJScpIGJyZWFrO1xuXG4gICAgICAgICAgdmFyIG5leHRCeXRlID0gcGFyc2VIZXhPY3RldChpbnB1dCwgaSArIDEpO1xuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgICAgICBpZiAobmV4dEJ5dGUgIT09IG5leHRCeXRlKSB7XG4gICAgICAgICAgICBpICs9IDM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5leHRCeXRlID4gMTkxIHx8IG5leHRCeXRlIDwgMTI4KSBicmVhaztcblxuICAgICAgICAgIHB1c2gob2N0ZXRzLCBuZXh0Qnl0ZSk7XG4gICAgICAgICAgaSArPSAyO1xuICAgICAgICAgIHNlcXVlbmNlSW5kZXgrKztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvY3RldHMubGVuZ3RoICE9PSBieXRlU2VxdWVuY2VMZW5ndGgpIHtcbiAgICAgICAgICByZXN1bHQgKz0gRkFMTEJBQ0tfUkVQTEFDRVI7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgY29kZVBvaW50ID0gdXRmOERlY29kZShvY3RldHMpO1xuICAgICAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IEZBTExCQUNLX1JFUExBQ0VSO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlY29kZWRDaGFyID0gZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVzdWx0ICs9IGRlY29kZWRDaGFyO1xuICAgIGkrKztcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG52YXIgZmluZCA9IC9bIScoKX5dfCUyMC9nO1xuXG52YXIgcmVwbGFjZW1lbnRzID0ge1xuICAnISc6ICclMjEnLFxuICBcIidcIjogJyUyNycsXG4gICcoJzogJyUyOCcsXG4gICcpJzogJyUyOScsXG4gICd+JzogJyU3RScsXG4gICclMjAnOiAnKydcbn07XG5cbnZhciByZXBsYWNlciA9IGZ1bmN0aW9uIChtYXRjaCkge1xuICByZXR1cm4gcmVwbGFjZW1lbnRzW21hdGNoXTtcbn07XG5cbnZhciBzZXJpYWxpemUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHJlcGxhY2UoZW5jb2RlVVJJQ29tcG9uZW50KGl0KSwgZmluZCwgcmVwbGFjZXIpO1xufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yID0gY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihmdW5jdGlvbiBJdGVyYXRvcihwYXJhbXMsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHBhcmFtcykuZW50cmllcyxcbiAgICBpbmRleDogMCxcbiAgICBraW5kOiBraW5kXG4gIH0pO1xufSwgVVJMX1NFQVJDSF9QQVJBTVMsIGZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciBzdGF0ZSA9IGdldEludGVybmFsSXRlcmF0b3JTdGF0ZSh0aGlzKTtcbiAgdmFyIHRhcmdldCA9IHN0YXRlLnRhcmdldDtcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXgrKztcbiAgaWYgKCF0YXJnZXQgfHwgaW5kZXggPj0gdGFyZ2V0Lmxlbmd0aCkge1xuICAgIHN0YXRlLnRhcmdldCA9IG51bGw7XG4gICAgcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodW5kZWZpbmVkLCB0cnVlKTtcbiAgfVxuICB2YXIgZW50cnkgPSB0YXJnZXRbaW5kZXhdO1xuICBzd2l0Y2ggKHN0YXRlLmtpbmQpIHtcbiAgICBjYXNlICdrZXlzJzogcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoZW50cnkua2V5LCBmYWxzZSk7XG4gICAgY2FzZSAndmFsdWVzJzogcmV0dXJuIGNyZWF0ZUl0ZXJSZXN1bHRPYmplY3QoZW50cnkudmFsdWUsIGZhbHNlKTtcbiAgfSByZXR1cm4gY3JlYXRlSXRlclJlc3VsdE9iamVjdChbZW50cnkua2V5LCBlbnRyeS52YWx1ZV0sIGZhbHNlKTtcbn0sIHRydWUpO1xuXG52YXIgVVJMU2VhcmNoUGFyYW1zU3RhdGUgPSBmdW5jdGlvbiAoaW5pdCkge1xuICB0aGlzLmVudHJpZXMgPSBbXTtcbiAgdGhpcy51cmwgPSBudWxsO1xuXG4gIGlmIChpbml0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoaXNPYmplY3QoaW5pdCkpIHRoaXMucGFyc2VPYmplY3QoaW5pdCk7XG4gICAgZWxzZSB0aGlzLnBhcnNlUXVlcnkodHlwZW9mIGluaXQgPT0gJ3N0cmluZycgPyBjaGFyQXQoaW5pdCwgMCkgPT09ICc/JyA/IHN0cmluZ1NsaWNlKGluaXQsIDEpIDogaW5pdCA6ICR0b1N0cmluZyhpbml0KSk7XG4gIH1cbn07XG5cblVSTFNlYXJjaFBhcmFtc1N0YXRlLnByb3RvdHlwZSA9IHtcbiAgdHlwZTogVVJMX1NFQVJDSF9QQVJBTVMsXG4gIGJpbmRVUkw6IGZ1bmN0aW9uICh1cmwpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLnVwZGF0ZSgpO1xuICB9LFxuICBwYXJzZU9iamVjdDogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHZhciBlbnRyaWVzID0gdGhpcy5lbnRyaWVzO1xuICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKG9iamVjdCk7XG4gICAgdmFyIGl0ZXJhdG9yLCBuZXh0LCBzdGVwLCBlbnRyeUl0ZXJhdG9yLCBlbnRyeU5leHQsIGZpcnN0LCBzZWNvbmQ7XG5cbiAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3Iob2JqZWN0LCBpdGVyYXRvck1ldGhvZCk7XG4gICAgICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgICAgIHdoaWxlICghKHN0ZXAgPSBjYWxsKG5leHQsIGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgICAgICBlbnRyeUl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoYW5PYmplY3Qoc3RlcC52YWx1ZSkpO1xuICAgICAgICBlbnRyeU5leHQgPSBlbnRyeUl0ZXJhdG9yLm5leHQ7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZmlyc3QgPSBjYWxsKGVudHJ5TmV4dCwgZW50cnlJdGVyYXRvcikpLmRvbmUgfHxcbiAgICAgICAgICAoc2Vjb25kID0gY2FsbChlbnRyeU5leHQsIGVudHJ5SXRlcmF0b3IpKS5kb25lIHx8XG4gICAgICAgICAgIWNhbGwoZW50cnlOZXh0LCBlbnRyeUl0ZXJhdG9yKS5kb25lXG4gICAgICAgICkgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgc2VxdWVuY2Ugd2l0aCBsZW5ndGggMicpO1xuICAgICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiAkdG9TdHJpbmcoZmlyc3QudmFsdWUpLCB2YWx1ZTogJHRvU3RyaW5nKHNlY29uZC52YWx1ZSkgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGZvciAodmFyIGtleSBpbiBvYmplY3QpIGlmIChoYXNPd24ob2JqZWN0LCBrZXkpKSB7XG4gICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiBrZXksIHZhbHVlOiAkdG9TdHJpbmcob2JqZWN0W2tleV0pIH0pO1xuICAgIH1cbiAgfSxcbiAgcGFyc2VRdWVyeTogZnVuY3Rpb24gKHF1ZXJ5KSB7XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICB2YXIgZW50cmllcyA9IHRoaXMuZW50cmllcztcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3BsaXQocXVlcnksICcmJyk7XG4gICAgICB2YXIgaW5kZXggPSAwO1xuICAgICAgdmFyIGF0dHJpYnV0ZSwgZW50cnk7XG4gICAgICB3aGlsZSAoaW5kZXggPCBhdHRyaWJ1dGVzLmxlbmd0aCkge1xuICAgICAgICBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzW2luZGV4KytdO1xuICAgICAgICBpZiAoYXR0cmlidXRlLmxlbmd0aCkge1xuICAgICAgICAgIGVudHJ5ID0gc3BsaXQoYXR0cmlidXRlLCAnPScpO1xuICAgICAgICAgIHB1c2goZW50cmllcywge1xuICAgICAgICAgICAga2V5OiBkZWNvZGUoc2hpZnQoZW50cnkpKSxcbiAgICAgICAgICAgIHZhbHVlOiBkZWNvZGUoam9pbihlbnRyeSwgJz0nKSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJpZXMgPSB0aGlzLmVudHJpZXM7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBwdXNoKHJlc3VsdCwgc2VyaWFsaXplKGVudHJ5LmtleSkgKyAnPScgKyBzZXJpYWxpemUoZW50cnkudmFsdWUpKTtcbiAgICB9IHJldHVybiBqb2luKHJlc3VsdCwgJyYnKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5lbnRyaWVzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy5wYXJzZVF1ZXJ5KHRoaXMudXJsLnF1ZXJ5KTtcbiAgfSxcbiAgdXBkYXRlVVJMOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMudXJsKSB0aGlzLnVybC51cGRhdGUoKTtcbiAgfVxufTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtc2AgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLXVybHNlYXJjaHBhcmFtc1xudmFyIFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yID0gZnVuY3Rpb24gVVJMU2VhcmNoUGFyYW1zKC8qIGluaXQgKi8pIHtcbiAgYW5JbnN0YW5jZSh0aGlzLCBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUpO1xuICB2YXIgaW5pdCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkO1xuICB2YXIgc3RhdGUgPSBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIG5ldyBVUkxTZWFyY2hQYXJhbXNTdGF0ZShpbml0KSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IHN0YXRlLmVudHJpZXMubGVuZ3RoO1xufTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9IFVSTFNlYXJjaFBhcmFtc0NvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxuZGVmaW5lQnVpbHRJbnMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCB7XG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmFwcGVuZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1hcHBlbmRcbiAgYXBwZW5kOiBmdW5jdGlvbiBhcHBlbmQobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDIpO1xuICAgIHB1c2goc3RhdGUuZW50cmllcywgeyBrZXk6ICR0b1N0cmluZyhuYW1lKSwgdmFsdWU6ICR0b1N0cmluZyh2YWx1ZSkgfSk7XG4gICAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5sZW5ndGgrKztcbiAgICBzdGF0ZS51cGRhdGVVUkwoKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZGVsZXRlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLWRlbGV0ZVxuICAnZGVsZXRlJzogZnVuY3Rpb24gKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIHZhciB2YWx1ZSA9ICR2YWx1ZSA9PT0gdW5kZWZpbmVkID8gJHZhbHVlIDogJHRvU3RyaW5nKCR2YWx1ZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB3aGlsZSAoaW5kZXggPCBlbnRyaWVzLmxlbmd0aCkge1xuICAgICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgICBpZiAoZW50cnkua2V5ID09PSBrZXkgJiYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgZW50cnkudmFsdWUgPT09IHZhbHVlKSkge1xuICAgICAgICBzcGxpY2UoZW50cmllcywgaW5kZXgsIDEpO1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICB9IGVsc2UgaW5kZXgrKztcbiAgICB9XG4gICAgaWYgKCFERVNDUklQVE9SUykgdGhpcy5zaXplID0gZW50cmllcy5sZW5ndGg7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmdldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1nZXRcbiAgZ2V0OiBmdW5jdGlvbiBnZXQobmFtZSkge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICBmb3IgKDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGVudHJpZXNbaW5kZXhdLmtleSA9PT0ga2V5KSByZXR1cm4gZW50cmllc1tpbmRleF0udmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5nZXRBbGxgIG1ldGhvZFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmxzZWFyY2hwYXJhbXMtZ2V0YWxsXG4gIGdldEFsbDogZnVuY3Rpb24gZ2V0QWxsKG5hbWUpIHtcbiAgICB2YXIgZW50cmllcyA9IGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuZW50cmllcztcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChhcmd1bWVudHMubGVuZ3RoLCAxKTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZW50cmllc1tpbmRleF0ua2V5ID09PSBrZXkpIHB1c2gocmVzdWx0LCBlbnRyaWVzW2luZGV4XS52YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmhhc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1oYXNcbiAgaGFzOiBmdW5jdGlvbiBoYXMobmFtZSAvKiAsIHZhbHVlICovKSB7XG4gICAgdmFyIGVudHJpZXMgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpLmVudHJpZXM7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSAkdG9TdHJpbmcobmFtZSk7XG4gICAgdmFyICR2YWx1ZSA9IGxlbmd0aCA8IDIgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMV07XG4gICAgdmFyIHZhbHVlID0gJHZhbHVlID09PSB1bmRlZmluZWQgPyAkdmFsdWUgOiAkdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5ICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNldGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybHNlYXJjaHBhcmFtcy1zZXRcbiAgc2V0OiBmdW5jdGlvbiBzZXQobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciBlbnRyaWVzID0gc3RhdGUuZW50cmllcztcbiAgICB2YXIgZm91bmQgPSBmYWxzZTtcbiAgICB2YXIga2V5ID0gJHRvU3RyaW5nKG5hbWUpO1xuICAgIHZhciB2YWwgPSAkdG9TdHJpbmcodmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIGZvciAoOyBpbmRleCA8IGVudHJpZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgICAgaWYgKGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGlmIChmb3VuZCkgc3BsaWNlKGVudHJpZXMsIGluZGV4LS0sIDEpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgZW50cnkudmFsdWUgPSB2YWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmb3VuZCkgcHVzaChlbnRyaWVzLCB7IGtleToga2V5LCB2YWx1ZTogdmFsIH0pO1xuICAgIGlmICghREVTQ1JJUFRPUlMpIHRoaXMuc2l6ZSA9IGVudHJpZXMubGVuZ3RoO1xuICAgIHN0YXRlLnVwZGF0ZVVSTCgpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5zb3J0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsc2VhcmNocGFyYW1zLXNvcnRcbiAgc29ydDogZnVuY3Rpb24gc29ydCgpIHtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFBhcmFtc1N0YXRlKHRoaXMpO1xuICAgIGFycmF5U29ydChzdGF0ZS5lbnRyaWVzLCBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGEua2V5ID4gYi5rZXkgPyAxIDogLTE7XG4gICAgfSk7XG4gICAgc3RhdGUudXBkYXRlVVJMKCk7XG4gIH0sXG4gIC8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHZhciBlbnRyaWVzID0gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gYmluZChjYWxsYmFjaywgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGVudHJ5O1xuICAgIHdoaWxlIChpbmRleCA8IGVudHJpZXMubGVuZ3RoKSB7XG4gICAgICBlbnRyeSA9IGVudHJpZXNbaW5kZXgrK107XG4gICAgICBib3VuZEZ1bmN0aW9uKGVudHJ5LnZhbHVlLCBlbnRyeS5rZXksIHRoaXMpO1xuICAgIH1cbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4gIGtleXM6IGZ1bmN0aW9uIGtleXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAna2V5cycpO1xuICB9LFxuICAvLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcygpIHtcbiAgICByZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtc0l0ZXJhdG9yKHRoaXMsICd2YWx1ZXMnKTtcbiAgfSxcbiAgLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoKSB7XG4gICAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXNJdGVyYXRvcih0aGlzLCAnZW50cmllcycpO1xuICB9XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2RcbmRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCBJVEVSQVRPUiwgVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmVudHJpZXMsIHsgbmFtZTogJ2VudHJpZXMnIH0pO1xuXG4vLyBgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybHNlYXJjaHBhcmFtcy1zdHJpbmdpZmljYXRpb24tYmVoYXZpb3JcbmRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGdldEludGVybmFsUGFyYW1zU3RhdGUodGhpcykuc2VyaWFsaXplKCk7XG59LCB7IGVudW1lcmFibGU6IHRydWUgfSk7XG5cbi8vIGBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLnNpemVgIGdldHRlclxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3doYXR3Zy91cmwvcHVsbC83MzRcbmlmIChERVNDUklQVE9SUykgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3NpemUnLCB7XG4gIGdldDogZnVuY3Rpb24gc2l6ZSgpIHtcbiAgICByZXR1cm4gZ2V0SW50ZXJuYWxQYXJhbXNTdGF0ZSh0aGlzKS5lbnRyaWVzLmxlbmd0aDtcbiAgfSxcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoVVJMU2VhcmNoUGFyYW1zQ29uc3RydWN0b3IsIFVSTF9TRUFSQ0hfUEFSQU1TKTtcblxuJCh7IGdsb2JhbDogdHJ1ZSwgY29uc3RydWN0b3I6IHRydWUsIGZvcmNlZDogIVVTRV9OQVRJVkVfVVJMIH0sIHtcbiAgVVJMU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvclxufSk7XG5cbi8vIFdyYXAgYGZldGNoYCBhbmQgYFJlcXVlc3RgIGZvciBjb3JyZWN0IHdvcmsgd2l0aCBwb2x5ZmlsbGVkIGBVUkxTZWFyY2hQYXJhbXNgXG5pZiAoIVVTRV9OQVRJVkVfVVJMICYmIGlzQ2FsbGFibGUoSGVhZGVycykpIHtcbiAgdmFyIGhlYWRlcnNIYXMgPSB1bmN1cnJ5VGhpcyhIZWFkZXJzUHJvdG90eXBlLmhhcyk7XG4gIHZhciBoZWFkZXJzU2V0ID0gdW5jdXJyeVRoaXMoSGVhZGVyc1Byb3RvdHlwZS5zZXQpO1xuXG4gIHZhciB3cmFwUmVxdWVzdE9wdGlvbnMgPSBmdW5jdGlvbiAoaW5pdCkge1xuICAgIGlmIChpc09iamVjdChpbml0KSkge1xuICAgICAgdmFyIGJvZHkgPSBpbml0LmJvZHk7XG4gICAgICB2YXIgaGVhZGVycztcbiAgICAgIGlmIChjbGFzc29mKGJvZHkpID09PSBVUkxfU0VBUkNIX1BBUkFNUykge1xuICAgICAgICBoZWFkZXJzID0gaW5pdC5oZWFkZXJzID8gbmV3IEhlYWRlcnMoaW5pdC5oZWFkZXJzKSA6IG5ldyBIZWFkZXJzKCk7XG4gICAgICAgIGlmICghaGVhZGVyc0hhcyhoZWFkZXJzLCAnY29udGVudC10eXBlJykpIHtcbiAgICAgICAgICBoZWFkZXJzU2V0KGhlYWRlcnMsICdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3JlYXRlKGluaXQsIHtcbiAgICAgICAgICBib2R5OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgJHRvU3RyaW5nKGJvZHkpKSxcbiAgICAgICAgICBoZWFkZXJzOiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgaGVhZGVycylcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSByZXR1cm4gaW5pdDtcbiAgfTtcblxuICBpZiAoaXNDYWxsYWJsZShuYXRpdmVGZXRjaCkpIHtcbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBkb250Q2FsbEdldFNldDogdHJ1ZSwgZm9yY2VkOiB0cnVlIH0sIHtcbiAgICAgIGZldGNoOiBmdW5jdGlvbiBmZXRjaChpbnB1dCAvKiAsIGluaXQgKi8pIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZUZldGNoKGlucHV0LCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHdyYXBSZXF1ZXN0T3B0aW9ucyhhcmd1bWVudHNbMV0pIDoge30pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGlzQ2FsbGFibGUoTmF0aXZlUmVxdWVzdCkpIHtcbiAgICB2YXIgUmVxdWVzdENvbnN0cnVjdG9yID0gZnVuY3Rpb24gUmVxdWVzdChpbnB1dCAvKiAsIGluaXQgKi8pIHtcbiAgICAgIGFuSW5zdGFuY2UodGhpcywgUmVxdWVzdFByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gbmV3IE5hdGl2ZVJlcXVlc3QoaW5wdXQsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gd3JhcFJlcXVlc3RPcHRpb25zKGFyZ3VtZW50c1sxXSkgOiB7fSk7XG4gICAgfTtcblxuICAgIFJlcXVlc3RQcm90b3R5cGUuY29uc3RydWN0b3IgPSBSZXF1ZXN0Q29uc3RydWN0b3I7XG4gICAgUmVxdWVzdENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IFJlcXVlc3RQcm90b3R5cGU7XG5cbiAgICAkKHsgZ2xvYmFsOiB0cnVlLCBjb25zdHJ1Y3RvcjogdHJ1ZSwgZG9udENhbGxHZXRTZXQ6IHRydWUsIGZvcmNlZDogdHJ1ZSB9LCB7XG4gICAgICBSZXF1ZXN0OiBSZXF1ZXN0Q29uc3RydWN0b3JcbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVVJMU2VhcmNoUGFyYW1zOiBVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvcixcbiAgZ2V0U3RhdGU6IGdldEludGVybmFsUGFyYW1zU3RhdGVcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZGVmaW5lQnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4nKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG5cbnZhciAkVVJMU2VhcmNoUGFyYW1zID0gVVJMU2VhcmNoUGFyYW1zO1xudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9ICRVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlO1xudmFyIGFwcGVuZCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5hcHBlbmQpO1xudmFyICRkZWxldGUgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGVbJ2RlbGV0ZSddKTtcbnZhciBmb3JFYWNoID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmZvckVhY2gpO1xudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcbnZhciBwYXJhbXMgPSBuZXcgJFVSTFNlYXJjaFBhcmFtcygnYT0xJmE9MiZiPTMnKTtcblxucGFyYW1zWydkZWxldGUnXSgnYScsIDEpO1xuLy8gYHVuZGVmaW5lZGAgY2FzZSBpcyBhIENocm9taXVtIDExNyBidWdcbi8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTE0MjIyXG5wYXJhbXNbJ2RlbGV0ZSddKCdiJywgdW5kZWZpbmVkKTtcblxuaWYgKHBhcmFtcyArICcnICE9PSAnYT0yJykge1xuICBkZWZpbmVCdWlsdEluKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ2RlbGV0ZScsIGZ1bmN0aW9uIChuYW1lIC8qICwgdmFsdWUgKi8pIHtcbiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgJHZhbHVlID0gbGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1sxXTtcbiAgICBpZiAobGVuZ3RoICYmICR2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJGRlbGV0ZSh0aGlzLCBuYW1lKTtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKHYsIGspIHsgLy8gYWxzbyB2YWxpZGF0ZXMgYHRoaXNgXG4gICAgICBwdXNoKGVudHJpZXMsIHsga2V5OiBrLCB2YWx1ZTogdiB9KTtcbiAgICB9KTtcbiAgICB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aChsZW5ndGgsIDEpO1xuICAgIHZhciBrZXkgPSB0b1N0cmluZyhuYW1lKTtcbiAgICB2YXIgdmFsdWUgPSB0b1N0cmluZygkdmFsdWUpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGRpbmRleCA9IDA7XG4gICAgdmFyIGZvdW5kID0gZmFsc2U7XG4gICAgdmFyIGVudHJpZXNMZW5ndGggPSBlbnRyaWVzLmxlbmd0aDtcbiAgICB2YXIgZW50cnk7XG4gICAgd2hpbGUgKGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2luZGV4KytdO1xuICAgICAgaWYgKGZvdW5kIHx8IGVudHJ5LmtleSA9PT0ga2V5KSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgJGRlbGV0ZSh0aGlzLCBlbnRyeS5rZXkpO1xuICAgICAgfSBlbHNlIGRpbmRleCsrO1xuICAgIH1cbiAgICB3aGlsZSAoZGluZGV4IDwgZW50cmllc0xlbmd0aCkge1xuICAgICAgZW50cnkgPSBlbnRyaWVzW2RpbmRleCsrXTtcbiAgICAgIGlmICghKGVudHJ5LmtleSA9PT0ga2V5ICYmIGVudHJ5LnZhbHVlID09PSB2YWx1ZSkpIGFwcGVuZCh0aGlzLCBlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTtcbiAgICB9XG4gIH0sIHsgZW51bWVyYWJsZTogdHJ1ZSwgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgdmFsaWRhdGVBcmd1bWVudHNMZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdmFsaWRhdGUtYXJndW1lbnRzLWxlbmd0aCcpO1xuXG52YXIgJFVSTFNlYXJjaFBhcmFtcyA9IFVSTFNlYXJjaFBhcmFtcztcbnZhciBVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUgPSAkVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZTtcbnZhciBnZXRBbGwgPSB1bmN1cnJ5VGhpcyhVUkxTZWFyY2hQYXJhbXNQcm90b3R5cGUuZ2V0QWxsKTtcbnZhciAkaGFzID0gdW5jdXJyeVRoaXMoVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLmhhcyk7XG52YXIgcGFyYW1zID0gbmV3ICRVUkxTZWFyY2hQYXJhbXMoJ2E9MScpO1xuXG4vLyBgdW5kZWZpbmVkYCBjYXNlIGlzIGEgQ2hyb21pdW0gMTE3IGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MTQyMjJcbmlmIChwYXJhbXMuaGFzKCdhJywgMikgfHwgIXBhcmFtcy5oYXMoJ2EnLCB1bmRlZmluZWQpKSB7XG4gIGRlZmluZUJ1aWx0SW4oVVJMU2VhcmNoUGFyYW1zUHJvdG90eXBlLCAnaGFzJywgZnVuY3Rpb24gaGFzKG5hbWUgLyogLCB2YWx1ZSAqLykge1xuICAgIHZhciBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciAkdmFsdWUgPSBsZW5ndGggPCAyID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzFdO1xuICAgIGlmIChsZW5ndGggJiYgJHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiAkaGFzKHRoaXMsIG5hbWUpO1xuICAgIHZhciB2YWx1ZXMgPSBnZXRBbGwodGhpcywgbmFtZSk7IC8vIGFsc28gdmFsaWRhdGVzIGB0aGlzYFxuICAgIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGxlbmd0aCwgMSk7XG4gICAgdmFyIHZhbHVlID0gdG9TdHJpbmcoJHZhbHVlKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHdoaWxlIChpbmRleCA8IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGlmICh2YWx1ZXNbaW5kZXgrK10gPT09IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICB9IHJldHVybiBmYWxzZTtcbiAgfSwgeyBlbnVtZXJhYmxlOiB0cnVlLCB1bnNhZmU6IHRydWUgfSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHJlcGxhY2VkIHRvIG1vZHVsZSBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3InKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGRlZmluZUJ1aWx0SW5BY2Nlc3NvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtYnVpbHQtaW4tYWNjZXNzb3InKTtcblxudmFyIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSA9IFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGU7XG52YXIgZm9yRWFjaCA9IHVuY3VycnlUaGlzKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZS5mb3JFYWNoKTtcblxuLy8gYFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuc2l6ZWAgZ2V0dGVyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vd2hhdHdnL3VybC9wdWxsLzczNFxuaWYgKERFU0NSSVBUT1JTICYmICEoJ3NpemUnIGluIFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSkpIHtcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSwgJ3NpemUnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiBzaXplKCkge1xuICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgIGZvckVhY2godGhpcywgZnVuY3Rpb24gKCkgeyBjb3VudCsrOyB9KTtcbiAgICAgIHJldHVybiBjb3VudDtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbnZhciBVUkwgPSBnZXRCdWlsdEluKCdVUkwnKTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2lzc3Vlcy80NzUwNVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Rlbm9sYW5kL2Rlbm8vaXNzdWVzLzE4ODkzXG52YXIgVEhST1dTX1dJVEhPVVRfQVJHVU1FTlRTID0gVVNFX05BVElWRV9VUkwgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICBVUkwuY2FuUGFyc2UoKTtcbn0pO1xuXG4vLyBCdW4gfiAxLjAuMzAgYnVnXG4vLyBodHRwczovL2dpdGh1Yi5jb20vb3Zlbi1zaC9idW4vaXNzdWVzLzkyNTBcbnZhciBXUk9OR19BUklUWSA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFVSTC5jYW5QYXJzZS5sZW5ndGggIT09IDE7XG59KTtcblxuLy8gYFVSTC5jYW5QYXJzZWAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtY2FucGFyc2VcbiQoeyB0YXJnZXQ6ICdVUkwnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFUSFJPV1NfV0lUSE9VVF9BUkdVTUVOVFMgfHwgV1JPTkdfQVJJVFkgfSwge1xuICBjYW5QYXJzZTogZnVuY3Rpb24gY2FuUGFyc2UodXJsKSB7XG4gICAgdmFyIGxlbmd0aCA9IHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoKGFyZ3VtZW50cy5sZW5ndGgsIDEpO1xuICAgIHZhciB1cmxTdHJpbmcgPSB0b1N0cmluZyh1cmwpO1xuICAgIHZhciBiYXNlID0gbGVuZ3RoIDwgMiB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHRvU3RyaW5nKGFyZ3VtZW50c1sxXSk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAhIW5ldyBVUkwodXJsU3RyaW5nLCBiYXNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBpbiBjb3JlLWpzQDQsIG1vdmUgL21vZHVsZXMvIGRlcGVuZGVuY2llcyB0byBwdWJsaWMgZW50cmllcyBmb3IgYmV0dGVyIG9wdGltaXphdGlvbiBieSB0b29scyBsaWtlIGBwcmVzZXQtZW52YFxucmVxdWlyZSgnLi4vbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3InKTtcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgVVNFX05BVElWRV9VUkwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdXJsLWNvbnN0cnVjdG9yLWRldGVjdGlvbicpO1xudmFyIGdsb2JhbFRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsLXRoaXMnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGRlZmluZUJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lQnVpbHRJbkFjY2Vzc29yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1idWlsdC1pbi1hY2Nlc3NvcicpO1xudmFyIGFuSW5zdGFuY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4taW5zdGFuY2UnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGFzc2lnbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtYXNzaWduJyk7XG52YXIgYXJyYXlGcm9tID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZyb20nKTtcbnZhciBhcnJheVNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG52YXIgY29kZUF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jb2RlQXQ7XG52YXIgdG9BU0NJSSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctcHVueWNvZGUtdG8tYXNjaWknKTtcbnZhciAkdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciB2YWxpZGF0ZUFyZ3VtZW50c0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy92YWxpZGF0ZS1hcmd1bWVudHMtbGVuZ3RoJyk7XG52YXIgVVJMU2VhcmNoUGFyYW1zTW9kdWxlID0gcmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuY29uc3RydWN0b3InKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxVUkxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKCdVUkwnKTtcbnZhciBVUkxTZWFyY2hQYXJhbXMgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuVVJMU2VhcmNoUGFyYW1zO1xudmFyIGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUgPSBVUkxTZWFyY2hQYXJhbXNNb2R1bGUuZ2V0U3RhdGU7XG5cbnZhciBOYXRpdmVVUkwgPSBnbG9iYWxUaGlzLlVSTDtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWxUaGlzLlR5cGVFcnJvcjtcbnZhciBwYXJzZUludCA9IGdsb2JhbFRoaXMucGFyc2VJbnQ7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHBvdyA9IE1hdGgucG93O1xudmFyIGNoYXJBdCA9IHVuY3VycnlUaGlzKCcnLmNoYXJBdCk7XG52YXIgZXhlYyA9IHVuY3VycnlUaGlzKC8uLy5leGVjKTtcbnZhciBqb2luID0gdW5jdXJyeVRoaXMoW10uam9pbik7XG52YXIgbnVtYmVyVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcygxLjAudG9TdHJpbmcpO1xudmFyIHBvcCA9IHVuY3VycnlUaGlzKFtdLnBvcCk7XG52YXIgcHVzaCA9IHVuY3VycnlUaGlzKFtdLnB1c2gpO1xudmFyIHJlcGxhY2UgPSB1bmN1cnJ5VGhpcygnJy5yZXBsYWNlKTtcbnZhciBzaGlmdCA9IHVuY3VycnlUaGlzKFtdLnNoaWZ0KTtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcbnZhciBzdHJpbmdTbGljZSA9IHVuY3VycnlUaGlzKCcnLnNsaWNlKTtcbnZhciB0b0xvd2VyQ2FzZSA9IHVuY3VycnlUaGlzKCcnLnRvTG93ZXJDYXNlKTtcbnZhciB1bnNoaWZ0ID0gdW5jdXJyeVRoaXMoW10udW5zaGlmdCk7XG5cbnZhciBJTlZBTElEX0FVVEhPUklUWSA9ICdJbnZhbGlkIGF1dGhvcml0eSc7XG52YXIgSU5WQUxJRF9TQ0hFTUUgPSAnSW52YWxpZCBzY2hlbWUnO1xudmFyIElOVkFMSURfSE9TVCA9ICdJbnZhbGlkIGhvc3QnO1xudmFyIElOVkFMSURfUE9SVCA9ICdJbnZhbGlkIHBvcnQnO1xuXG52YXIgQUxQSEEgPSAvW2Etel0vaTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tb2JzY3VyZS1yYW5nZSAtLSBzYWZlXG52YXIgQUxQSEFOVU1FUklDID0gL1tcXGQrLS5hLXpdL2k7XG52YXIgRElHSVQgPSAvXFxkLztcbnZhciBIRVhfU1RBUlQgPSAvXjB4L2k7XG52YXIgT0NUID0gL15bMC03XSskLztcbnZhciBERUMgPSAvXlxcZCskLztcbnZhciBIRVggPSAvXltcXGRhLWZdKyQvaTtcbi8qIGVzbGludC1kaXNhYmxlIHJlZ2V4cC9uby1jb250cm9sLWNoYXJhY3RlciAtLSBzYWZlICovXG52YXIgRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCA9IC9bXFwwXFx0XFxuXFxyICMlLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQgPSAvW1xcMFxcdFxcblxcciAjLzo8Pj9AW1xcXFxcXF1efF0vO1xudmFyIExFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSA9IC9eW1xcdTAwMDAtXFx1MDAyMF0rLztcbnZhciBUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFID0gLyhefFteXFx1MDAwMC1cXHUwMDIwXSlbXFx1MDAwMC1cXHUwMDIwXSskLztcbnZhciBUQUJfQU5EX05FV19MSU5FID0gL1tcXHRcXG5cXHJdL2c7XG4vKiBlc2xpbnQtZW5hYmxlIHJlZ2V4cC9uby1jb250cm9sLWNoYXJhY3RlciAtLSBzYWZlICovXG52YXIgRU9GO1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2lwdjQtbnVtYmVyLXBhcnNlclxudmFyIHBhcnNlSVB2NCA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICB2YXIgcGFydHMgPSBzcGxpdChpbnB1dCwgJy4nKTtcbiAgdmFyIHBhcnRzTGVuZ3RoLCBudW1iZXJzLCBpbmRleCwgcGFydCwgcmFkaXgsIG51bWJlciwgaXB2NDtcbiAgaWYgKHBhcnRzLmxlbmd0aCAmJiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSA9PT0gJycpIHtcbiAgICBwYXJ0cy5sZW5ndGgtLTtcbiAgfVxuICBwYXJ0c0xlbmd0aCA9IHBhcnRzLmxlbmd0aDtcbiAgaWYgKHBhcnRzTGVuZ3RoID4gNCkgcmV0dXJuIGlucHV0O1xuICBudW1iZXJzID0gW107XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHBhcnRzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgcGFydCA9IHBhcnRzW2luZGV4XTtcbiAgICBpZiAocGFydCA9PT0gJycpIHJldHVybiBpbnB1dDtcbiAgICByYWRpeCA9IDEwO1xuICAgIGlmIChwYXJ0Lmxlbmd0aCA+IDEgJiYgY2hhckF0KHBhcnQsIDApID09PSAnMCcpIHtcbiAgICAgIHJhZGl4ID0gZXhlYyhIRVhfU1RBUlQsIHBhcnQpID8gMTYgOiA4O1xuICAgICAgcGFydCA9IHN0cmluZ1NsaWNlKHBhcnQsIHJhZGl4ID09PSA4ID8gMSA6IDIpO1xuICAgIH1cbiAgICBpZiAocGFydCA9PT0gJycpIHtcbiAgICAgIG51bWJlciA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZXhlYyhyYWRpeCA9PT0gMTAgPyBERUMgOiByYWRpeCA9PT0gOCA/IE9DVCA6IEhFWCwgcGFydCkpIHJldHVybiBpbnB1dDtcbiAgICAgIG51bWJlciA9IHBhcnNlSW50KHBhcnQsIHJhZGl4KTtcbiAgICB9XG4gICAgcHVzaChudW1iZXJzLCBudW1iZXIpO1xuICB9XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IHBhcnRzTGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgbnVtYmVyID0gbnVtYmVyc1tpbmRleF07XG4gICAgaWYgKGluZGV4ID09PSBwYXJ0c0xlbmd0aCAtIDEpIHtcbiAgICAgIGlmIChudW1iZXIgPj0gcG93KDI1NiwgNSAtIHBhcnRzTGVuZ3RoKSkgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPiAyNTUpIHJldHVybiBudWxsO1xuICB9XG4gIGlwdjQgPSBwb3AobnVtYmVycyk7XG4gIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG51bWJlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgaXB2NCArPSBudW1iZXJzW2luZGV4XSAqIHBvdygyNTYsIDMgLSBpbmRleCk7XG4gIH1cbiAgcmV0dXJuIGlwdjQ7XG59O1xuXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtaXB2Ni1wYXJzZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtc3RhdGVtZW50cyAtLSBUT0RPXG52YXIgcGFyc2VJUHY2ID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIHZhciBhZGRyZXNzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICB2YXIgcGllY2VJbmRleCA9IDA7XG4gIHZhciBjb21wcmVzcyA9IG51bGw7XG4gIHZhciBwb2ludGVyID0gMDtcbiAgdmFyIHZhbHVlLCBsZW5ndGgsIG51bWJlcnNTZWVuLCBpcHY0UGllY2UsIG51bWJlciwgc3dhcHMsIHN3YXA7XG5cbiAgdmFyIGNociA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2hhckF0KGlucHV0LCBwb2ludGVyKTtcbiAgfTtcblxuICBpZiAoY2hyKCkgPT09ICc6Jykge1xuICAgIGlmIChjaGFyQXQoaW5wdXQsIDEpICE9PSAnOicpIHJldHVybjtcbiAgICBwb2ludGVyICs9IDI7XG4gICAgcGllY2VJbmRleCsrO1xuICAgIGNvbXByZXNzID0gcGllY2VJbmRleDtcbiAgfVxuICB3aGlsZSAoY2hyKCkpIHtcbiAgICBpZiAocGllY2VJbmRleCA9PT0gOCkgcmV0dXJuO1xuICAgIGlmIChjaHIoKSA9PT0gJzonKSB7XG4gICAgICBpZiAoY29tcHJlc3MgIT09IG51bGwpIHJldHVybjtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIHBpZWNlSW5kZXgrKztcbiAgICAgIGNvbXByZXNzID0gcGllY2VJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB2YWx1ZSA9IGxlbmd0aCA9IDA7XG4gICAgd2hpbGUgKGxlbmd0aCA8IDQgJiYgZXhlYyhIRVgsIGNocigpKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZSAqIDE2ICsgcGFyc2VJbnQoY2hyKCksIDE2KTtcbiAgICAgIHBvaW50ZXIrKztcbiAgICAgIGxlbmd0aCsrO1xuICAgIH1cbiAgICBpZiAoY2hyKCkgPT09ICcuJykge1xuICAgICAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgcG9pbnRlciAtPSBsZW5ndGg7XG4gICAgICBpZiAocGllY2VJbmRleCA+IDYpIHJldHVybjtcbiAgICAgIG51bWJlcnNTZWVuID0gMDtcbiAgICAgIHdoaWxlIChjaHIoKSkge1xuICAgICAgICBpcHY0UGllY2UgPSBudWxsO1xuICAgICAgICBpZiAobnVtYmVyc1NlZW4gPiAwKSB7XG4gICAgICAgICAgaWYgKGNocigpID09PSAnLicgJiYgbnVtYmVyc1NlZW4gPCA0KSBwb2ludGVyKys7XG4gICAgICAgICAgZWxzZSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFleGVjKERJR0lULCBjaHIoKSkpIHJldHVybjtcbiAgICAgICAgd2hpbGUgKGV4ZWMoRElHSVQsIGNocigpKSkge1xuICAgICAgICAgIG51bWJlciA9IHBhcnNlSW50KGNocigpLCAxMCk7XG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA9PT0gbnVsbCkgaXB2NFBpZWNlID0gbnVtYmVyO1xuICAgICAgICAgIGVsc2UgaWYgKGlwdjRQaWVjZSA9PT0gMCkgcmV0dXJuO1xuICAgICAgICAgIGVsc2UgaXB2NFBpZWNlID0gaXB2NFBpZWNlICogMTAgKyBudW1iZXI7XG4gICAgICAgICAgaWYgKGlwdjRQaWVjZSA+IDI1NSkgcmV0dXJuO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgfVxuICAgICAgICBhZGRyZXNzW3BpZWNlSW5kZXhdID0gYWRkcmVzc1twaWVjZUluZGV4XSAqIDI1NiArIGlwdjRQaWVjZTtcbiAgICAgICAgbnVtYmVyc1NlZW4rKztcbiAgICAgICAgaWYgKG51bWJlcnNTZWVuID09PSAyIHx8IG51bWJlcnNTZWVuID09PSA0KSBwaWVjZUluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAobnVtYmVyc1NlZW4gIT09IDQpIHJldHVybjtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoY2hyKCkgPT09ICc6Jykge1xuICAgICAgcG9pbnRlcisrO1xuICAgICAgaWYgKCFjaHIoKSkgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoY2hyKCkpIHJldHVybjtcbiAgICBhZGRyZXNzW3BpZWNlSW5kZXgrK10gPSB2YWx1ZTtcbiAgfVxuICBpZiAoY29tcHJlc3MgIT09IG51bGwpIHtcbiAgICBzd2FwcyA9IHBpZWNlSW5kZXggLSBjb21wcmVzcztcbiAgICBwaWVjZUluZGV4ID0gNztcbiAgICB3aGlsZSAocGllY2VJbmRleCAhPT0gMCAmJiBzd2FwcyA+IDApIHtcbiAgICAgIHN3YXAgPSBhZGRyZXNzW3BpZWNlSW5kZXhdO1xuICAgICAgYWRkcmVzc1twaWVjZUluZGV4LS1dID0gYWRkcmVzc1tjb21wcmVzcyArIHN3YXBzIC0gMV07XG4gICAgICBhZGRyZXNzW2NvbXByZXNzICsgLS1zd2Fwc10gPSBzd2FwO1xuICAgIH1cbiAgfSBlbHNlIGlmIChwaWVjZUluZGV4ICE9PSA4KSByZXR1cm47XG4gIHJldHVybiBhZGRyZXNzO1xufTtcblxudmFyIGZpbmRMb25nZXN0WmVyb1NlcXVlbmNlID0gZnVuY3Rpb24gKGlwdjYpIHtcbiAgdmFyIG1heEluZGV4ID0gbnVsbDtcbiAgdmFyIG1heExlbmd0aCA9IDE7XG4gIHZhciBjdXJyU3RhcnQgPSBudWxsO1xuICB2YXIgY3Vyckxlbmd0aCA9IDA7XG4gIHZhciBpbmRleCA9IDA7XG4gIGZvciAoOyBpbmRleCA8IDg7IGluZGV4KyspIHtcbiAgICBpZiAoaXB2NltpbmRleF0gIT09IDApIHtcbiAgICAgIGlmIChjdXJyTGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgIG1heEluZGV4ID0gY3VyclN0YXJ0O1xuICAgICAgICBtYXhMZW5ndGggPSBjdXJyTGVuZ3RoO1xuICAgICAgfVxuICAgICAgY3VyclN0YXJ0ID0gbnVsbDtcbiAgICAgIGN1cnJMZW5ndGggPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VyclN0YXJ0ID09PSBudWxsKSBjdXJyU3RhcnQgPSBpbmRleDtcbiAgICAgICsrY3Vyckxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGN1cnJMZW5ndGggPiBtYXhMZW5ndGggPyBjdXJyU3RhcnQgOiBtYXhJbmRleDtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jaG9zdC1zZXJpYWxpemluZ1xudmFyIHNlcmlhbGl6ZUhvc3QgPSBmdW5jdGlvbiAoaG9zdCkge1xuICB2YXIgcmVzdWx0LCBpbmRleCwgY29tcHJlc3MsIGlnbm9yZTA7XG5cbiAgLy8gaXB2NFxuICBpZiAodHlwZW9mIGhvc3QgPT0gJ251bWJlcicpIHtcbiAgICByZXN1bHQgPSBbXTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA0OyBpbmRleCsrKSB7XG4gICAgICB1bnNoaWZ0KHJlc3VsdCwgaG9zdCAlIDI1Nik7XG4gICAgICBob3N0ID0gZmxvb3IoaG9zdCAvIDI1Nik7XG4gICAgfVxuICAgIHJldHVybiBqb2luKHJlc3VsdCwgJy4nKTtcbiAgfVxuXG4gIC8vIGlwdjZcbiAgaWYgKHR5cGVvZiBob3N0ID09ICdvYmplY3QnKSB7XG4gICAgcmVzdWx0ID0gJyc7XG4gICAgY29tcHJlc3MgPSBmaW5kTG9uZ2VzdFplcm9TZXF1ZW5jZShob3N0KTtcbiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCA4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoaWdub3JlMCAmJiBob3N0W2luZGV4XSA9PT0gMCkgY29udGludWU7XG4gICAgICBpZiAoaWdub3JlMCkgaWdub3JlMCA9IGZhbHNlO1xuICAgICAgaWYgKGNvbXByZXNzID09PSBpbmRleCkge1xuICAgICAgICByZXN1bHQgKz0gaW5kZXggPyAnOicgOiAnOjonO1xuICAgICAgICBpZ25vcmUwID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBudW1iZXJUb1N0cmluZyhob3N0W2luZGV4XSwgMTYpO1xuICAgICAgICBpZiAoaW5kZXggPCA3KSByZXN1bHQgKz0gJzonO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gJ1snICsgcmVzdWx0ICsgJ10nO1xuICB9XG5cbiAgcmV0dXJuIGhvc3Q7XG59O1xuXG52YXIgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCA9IHt9O1xudmFyIGZyYWdtZW50UGVyY2VudEVuY29kZVNldCA9IGFzc2lnbih7fSwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCwge1xuICAnICc6IDEsICdcIic6IDEsICc8JzogMSwgJz4nOiAxLCAnYCc6IDFcbn0pO1xudmFyIHBhdGhQZXJjZW50RW5jb2RlU2V0ID0gYXNzaWduKHt9LCBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQsIHtcbiAgJyMnOiAxLCAnPyc6IDEsICd7JzogMSwgJ30nOiAxXG59KTtcbnZhciB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQgPSBhc3NpZ24oe30sIHBhdGhQZXJjZW50RW5jb2RlU2V0LCB7XG4gICcvJzogMSwgJzonOiAxLCAnOyc6IDEsICc9JzogMSwgJ0AnOiAxLCAnWyc6IDEsICdcXFxcJzogMSwgJ10nOiAxLCAnXic6IDEsICd8JzogMVxufSk7XG5cbnZhciBwZXJjZW50RW5jb2RlID0gZnVuY3Rpb24gKGNociwgc2V0KSB7XG4gIHZhciBjb2RlID0gY29kZUF0KGNociwgMCk7XG4gIHJldHVybiBjb2RlID4gMHgyMCAmJiBjb2RlIDwgMHg3RiAmJiAhaGFzT3duKHNldCwgY2hyKSA/IGNociA6IGVuY29kZVVSSUNvbXBvbmVudChjaHIpO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzcGVjaWFsLXNjaGVtZVxudmFyIHNwZWNpYWxTY2hlbWVzID0ge1xuICBmdHA6IDIxLFxuICBmaWxlOiBudWxsLFxuICBodHRwOiA4MCxcbiAgaHR0cHM6IDQ0MyxcbiAgd3M6IDgwLFxuICB3c3M6IDQ0M1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN3aW5kb3dzLWRyaXZlLWxldHRlclxudmFyIGlzV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZywgbm9ybWFsaXplZCkge1xuICB2YXIgc2Vjb25kO1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCA9PT0gMiAmJiBleGVjKEFMUEhBLCBjaGFyQXQoc3RyaW5nLCAwKSlcbiAgICAmJiAoKHNlY29uZCA9IGNoYXJBdChzdHJpbmcsIDEpKSA9PT0gJzonIHx8ICghbm9ybWFsaXplZCAmJiBzZWNvbmQgPT09ICd8JykpO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzdGFydC13aXRoLWEtd2luZG93cy1kcml2ZS1sZXR0ZXJcbnZhciBzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyID0gZnVuY3Rpb24gKHN0cmluZykge1xuICB2YXIgdGhpcmQ7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID4gMSAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihzdHJpbmdTbGljZShzdHJpbmcsIDAsIDIpKSAmJiAoXG4gICAgc3RyaW5nLmxlbmd0aCA9PT0gMiB8fFxuICAgICgodGhpcmQgPSBjaGFyQXQoc3RyaW5nLCAyKSkgPT09ICcvJyB8fCB0aGlyZCA9PT0gJ1xcXFwnIHx8IHRoaXJkID09PSAnPycgfHwgdGhpcmQgPT09ICcjJylcbiAgKTtcbn07XG5cbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jc2luZ2xlLWRvdC1wYXRoLXNlZ21lbnRcbnZhciBpc1NpbmdsZURvdCA9IGZ1bmN0aW9uIChzZWdtZW50KSB7XG4gIHJldHVybiBzZWdtZW50ID09PSAnLicgfHwgdG9Mb3dlckNhc2Uoc2VnbWVudCkgPT09ICclMmUnO1xufTtcblxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb3VibGUtZG90LXBhdGgtc2VnbWVudFxudmFyIGlzRG91YmxlRG90ID0gZnVuY3Rpb24gKHNlZ21lbnQpIHtcbiAgc2VnbWVudCA9IHRvTG93ZXJDYXNlKHNlZ21lbnQpO1xuICByZXR1cm4gc2VnbWVudCA9PT0gJy4uJyB8fCBzZWdtZW50ID09PSAnJTJlLicgfHwgc2VnbWVudCA9PT0gJy4lMmUnIHx8IHNlZ21lbnQgPT09ICclMmUlMmUnO1xufTtcblxuLy8gU3RhdGVzOlxudmFyIFNDSEVNRV9TVEFSVCA9IHt9O1xudmFyIFNDSEVNRSA9IHt9O1xudmFyIE5PX1NDSEVNRSA9IHt9O1xudmFyIFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZID0ge307XG52YXIgUEFUSF9PUl9BVVRIT1JJVFkgPSB7fTtcbnZhciBSRUxBVElWRSA9IHt9O1xudmFyIFJFTEFUSVZFX1NMQVNIID0ge307XG52YXIgU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUyA9IHt9O1xudmFyIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTID0ge307XG52YXIgQVVUSE9SSVRZID0ge307XG52YXIgSE9TVCA9IHt9O1xudmFyIEhPU1ROQU1FID0ge307XG52YXIgUE9SVCA9IHt9O1xudmFyIEZJTEUgPSB7fTtcbnZhciBGSUxFX1NMQVNIID0ge307XG52YXIgRklMRV9IT1NUID0ge307XG52YXIgUEFUSF9TVEFSVCA9IHt9O1xudmFyIFBBVEggPSB7fTtcbnZhciBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIID0ge307XG52YXIgUVVFUlkgPSB7fTtcbnZhciBGUkFHTUVOVCA9IHt9O1xuXG52YXIgVVJMU3RhdGUgPSBmdW5jdGlvbiAodXJsLCBpc0Jhc2UsIGJhc2UpIHtcbiAgdmFyIHVybFN0cmluZyA9ICR0b1N0cmluZyh1cmwpO1xuICB2YXIgYmFzZVN0YXRlLCBmYWlsdXJlLCBzZWFyY2hQYXJhbXM7XG4gIGlmIChpc0Jhc2UpIHtcbiAgICBmYWlsdXJlID0gdGhpcy5wYXJzZSh1cmxTdHJpbmcpO1xuICAgIGlmIChmYWlsdXJlKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgIHRoaXMuc2VhcmNoUGFyYW1zID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBpZiAoYmFzZSAhPT0gdW5kZWZpbmVkKSBiYXNlU3RhdGUgPSBuZXcgVVJMU3RhdGUoYmFzZSwgdHJ1ZSk7XG4gICAgZmFpbHVyZSA9IHRoaXMucGFyc2UodXJsU3RyaW5nLCBudWxsLCBiYXNlU3RhdGUpO1xuICAgIGlmIChmYWlsdXJlKSB0aHJvdyBuZXcgVHlwZUVycm9yKGZhaWx1cmUpO1xuICAgIHNlYXJjaFBhcmFtcyA9IGdldEludGVybmFsU2VhcmNoUGFyYW1zU3RhdGUobmV3IFVSTFNlYXJjaFBhcmFtcygpKTtcbiAgICBzZWFyY2hQYXJhbXMuYmluZFVSTCh0aGlzKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcyA9IHNlYXJjaFBhcmFtcztcbiAgfVxufTtcblxuVVJMU3RhdGUucHJvdG90eXBlID0ge1xuICB0eXBlOiAnVVJMJyxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyN1cmwtcGFyc2luZ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LXN0YXRlbWVudHMgLS0gVE9ET1xuICBwYXJzZTogZnVuY3Rpb24gKGlucHV0LCBzdGF0ZU92ZXJyaWRlLCBiYXNlKSB7XG4gICAgdmFyIHVybCA9IHRoaXM7XG4gICAgdmFyIHN0YXRlID0gc3RhdGVPdmVycmlkZSB8fCBTQ0hFTUVfU1RBUlQ7XG4gICAgdmFyIHBvaW50ZXIgPSAwO1xuICAgIHZhciBidWZmZXIgPSAnJztcbiAgICB2YXIgc2VlbkF0ID0gZmFsc2U7XG4gICAgdmFyIHNlZW5CcmFja2V0ID0gZmFsc2U7XG4gICAgdmFyIHNlZW5QYXNzd29yZFRva2VuID0gZmFsc2U7XG4gICAgdmFyIGNvZGVQb2ludHMsIGNociwgYnVmZmVyQ29kZVBvaW50cywgZmFpbHVyZTtcblxuICAgIGlucHV0ID0gJHRvU3RyaW5nKGlucHV0KTtcblxuICAgIGlmICghc3RhdGVPdmVycmlkZSkge1xuICAgICAgdXJsLnNjaGVtZSA9ICcnO1xuICAgICAgdXJsLnVzZXJuYW1lID0gJyc7XG4gICAgICB1cmwucGFzc3dvcmQgPSAnJztcbiAgICAgIHVybC5ob3N0ID0gbnVsbDtcbiAgICAgIHVybC5wb3J0ID0gbnVsbDtcbiAgICAgIHVybC5wYXRoID0gW107XG4gICAgICB1cmwucXVlcnkgPSBudWxsO1xuICAgICAgdXJsLmZyYWdtZW50ID0gbnVsbDtcbiAgICAgIHVybC5jYW5ub3RCZUFCYXNlVVJMID0gZmFsc2U7XG4gICAgICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIExFQURJTkdfQzBfQ09OVFJPTF9PUl9TUEFDRSwgJycpO1xuICAgICAgaW5wdXQgPSByZXBsYWNlKGlucHV0LCBUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFLCAnJDEnKTtcbiAgICB9XG5cbiAgICBpbnB1dCA9IHJlcGxhY2UoaW5wdXQsIFRBQl9BTkRfTkVXX0xJTkUsICcnKTtcblxuICAgIGNvZGVQb2ludHMgPSBhcnJheUZyb20oaW5wdXQpO1xuXG4gICAgd2hpbGUgKHBvaW50ZXIgPD0gY29kZVBvaW50cy5sZW5ndGgpIHtcbiAgICAgIGNociA9IGNvZGVQb2ludHNbcG9pbnRlcl07XG4gICAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICAgIGNhc2UgU0NIRU1FX1NUQVJUOlxuICAgICAgICAgIGlmIChjaHIgJiYgZXhlYyhBTFBIQSwgY2hyKSkge1xuICAgICAgICAgICAgYnVmZmVyICs9IHRvTG93ZXJDYXNlKGNocik7XG4gICAgICAgICAgICBzdGF0ZSA9IFNDSEVNRTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZU92ZXJyaWRlKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IE5PX1NDSEVNRTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBTQ0hFTUU6XG4gICAgICAgICAgaWYgKGNociAmJiAoZXhlYyhBTFBIQU5VTUVSSUMsIGNocikgfHwgY2hyID09PSAnKycgfHwgY2hyID09PSAnLScgfHwgY2hyID09PSAnLicpKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gdG9Mb3dlckNhc2UoY2hyKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJzonKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiAoXG4gICAgICAgICAgICAgICh1cmwuaXNTcGVjaWFsKCkgIT09IGhhc093bihzcGVjaWFsU2NoZW1lcywgYnVmZmVyKSkgfHxcbiAgICAgICAgICAgICAgKGJ1ZmZlciA9PT0gJ2ZpbGUnICYmICh1cmwuaW5jbHVkZXNDcmVkZW50aWFscygpIHx8IHVybC5wb3J0ICE9PSBudWxsKSkgfHxcbiAgICAgICAgICAgICAgKHVybC5zY2hlbWUgPT09ICdmaWxlJyAmJiAhdXJsLmhvc3QpXG4gICAgICAgICAgICApKSByZXR1cm47XG4gICAgICAgICAgICB1cmwuc2NoZW1lID0gYnVmZmVyO1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgICAgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiBzcGVjaWFsU2NoZW1lc1t1cmwuc2NoZW1lXSA9PT0gdXJsLnBvcnQpIHVybC5wb3J0ID0gbnVsbDtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gRklMRTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsLmlzU3BlY2lhbCgpICYmIGJhc2UgJiYgYmFzZS5zY2hlbWUgPT09IHVybC5zY2hlbWUpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX1JFTEFUSVZFX09SX0FVVEhPUklUWTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsLmlzU3BlY2lhbCgpKSB7XG4gICAgICAgICAgICAgIHN0YXRlID0gU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZVBvaW50c1twb2ludGVyICsgMV0gPT09ICcvJykge1xuICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEhfT1JfQVVUSE9SSVRZO1xuICAgICAgICAgICAgICBwb2ludGVyKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7XG4gICAgICAgICAgICAgIHB1c2godXJsLnBhdGgsICcnKTtcbiAgICAgICAgICAgICAgc3RhdGUgPSBDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBOT19TQ0hFTUU7XG4gICAgICAgICAgICBwb2ludGVyID0gMDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gZWxzZSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBOT19TQ0hFTUU6XG4gICAgICAgICAgaWYgKCFiYXNlIHx8IChiYXNlLmNhbm5vdEJlQUJhc2VVUkwgJiYgY2hyICE9PSAnIycpKSByZXR1cm4gSU5WQUxJRF9TQ0hFTUU7XG4gICAgICAgICAgaWYgKGJhc2UuY2Fubm90QmVBQmFzZVVSTCAmJiBjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICB1cmwuY2Fubm90QmVBQmFzZVVSTCA9IHRydWU7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXRlID0gYmFzZS5zY2hlbWUgPT09ICdmaWxlJyA/IEZJTEUgOiBSRUxBVElWRTtcbiAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICBjYXNlIFNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZOlxuICAgICAgICAgIGlmIChjaHIgPT09ICcvJyAmJiBjb2RlUG9pbnRzW3BvaW50ZXIgKyAxXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTO1xuICAgICAgICAgICAgcG9pbnRlcisrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFJFTEFUSVZFO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFBBVEhfT1JfQVVUSE9SSVRZOlxuICAgICAgICAgIGlmIChjaHIgPT09ICcvJykge1xuICAgICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgUkVMQVRJVkU6XG4gICAgICAgICAgdXJsLnNjaGVtZSA9IGJhc2Uuc2NoZW1lO1xuICAgICAgICAgIGlmIChjaHIgPT09IEVPRikge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgIH0gZWxzZSBpZiAoY2hyID09PSAnLycgfHwgKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUkVMQVRJVkVfU0xBU0g7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgdXJsLnBhdGggPSBhcnJheVNsaWNlKGJhc2UucGF0aCk7XG4gICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgdXJsLmZyYWdtZW50ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cmwudXNlcm5hbWUgPSBiYXNlLnVzZXJuYW1lO1xuICAgICAgICAgICAgdXJsLnBhc3N3b3JkID0gYmFzZS5wYXNzd29yZDtcbiAgICAgICAgICAgIHVybC5ob3N0ID0gYmFzZS5ob3N0O1xuICAgICAgICAgICAgdXJsLnBvcnQgPSBiYXNlLnBvcnQ7XG4gICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgIHVybC5wYXRoLmxlbmd0aC0tO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFJFTEFUSVZFX1NMQVNIOlxuICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkgJiYgKGNociA9PT0gJy8nIHx8IGNociA9PT0gJ1xcXFwnKSkge1xuICAgICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJy8nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IEFVVEhPUklUWTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsLnVzZXJuYW1lID0gYmFzZS51c2VybmFtZTtcbiAgICAgICAgICAgIHVybC5wYXNzd29yZCA9IGJhc2UucGFzc3dvcmQ7XG4gICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgIHVybC5wb3J0ID0gYmFzZS5wb3J0O1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX1NMQVNIRVM6XG4gICAgICAgICAgc3RhdGUgPSBTUEVDSUFMX0FVVEhPUklUWV9JR05PUkVfU0xBU0hFUztcbiAgICAgICAgICBpZiAoY2hyICE9PSAnLycgfHwgY2hhckF0KGJ1ZmZlciwgcG9pbnRlciArIDEpICE9PSAnLycpIGNvbnRpbnVlO1xuICAgICAgICAgIHBvaW50ZXIrKztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTOlxuICAgICAgICAgIGlmIChjaHIgIT09ICcvJyAmJiBjaHIgIT09ICdcXFxcJykge1xuICAgICAgICAgICAgc3RhdGUgPSBBVVRIT1JJVFk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQVVUSE9SSVRZOlxuICAgICAgICAgIGlmIChjaHIgPT09ICdAJykge1xuICAgICAgICAgICAgaWYgKHNlZW5BdCkgYnVmZmVyID0gJyU0MCcgKyBidWZmZXI7XG4gICAgICAgICAgICBzZWVuQXQgPSB0cnVlO1xuICAgICAgICAgICAgYnVmZmVyQ29kZVBvaW50cyA9IGFycmF5RnJvbShidWZmZXIpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXJDb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgIHZhciBjb2RlUG9pbnQgPSBidWZmZXJDb2RlUG9pbnRzW2ldO1xuICAgICAgICAgICAgICBpZiAoY29kZVBvaW50ID09PSAnOicgJiYgIXNlZW5QYXNzd29yZFRva2VuKSB7XG4gICAgICAgICAgICAgICAgc2VlblBhc3N3b3JkVG9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHZhciBlbmNvZGVkQ29kZVBvaW50cyA9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50LCB1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgICAgICBpZiAoc2VlblBhc3N3b3JkVG9rZW4pIHVybC5wYXNzd29yZCArPSBlbmNvZGVkQ29kZVBvaW50cztcbiAgICAgICAgICAgICAgZWxzZSB1cmwudXNlcm5hbWUgKz0gZW5jb2RlZENvZGVQb2ludHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgY2hyID09PSBFT0YgfHwgY2hyID09PSAnLycgfHwgY2hyID09PSAnPycgfHwgY2hyID09PSAnIycgfHxcbiAgICAgICAgICAgIChjaHIgPT09ICdcXFxcJyAmJiB1cmwuaXNTcGVjaWFsKCkpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoc2VlbkF0ICYmIGJ1ZmZlciA9PT0gJycpIHJldHVybiBJTlZBTElEX0FVVEhPUklUWTtcbiAgICAgICAgICAgIHBvaW50ZXIgLT0gYXJyYXlGcm9tKGJ1ZmZlcikubGVuZ3RoICsgMTtcbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBIT1NUO1xuICAgICAgICAgIH0gZWxzZSBidWZmZXIgKz0gY2hyO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgSE9TVDpcbiAgICAgICAgY2FzZSBIT1NUTkFNRTpcbiAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSAmJiB1cmwuc2NoZW1lID09PSAnZmlsZScpIHtcbiAgICAgICAgICAgIHN0YXRlID0gRklMRV9IT1NUO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgPT09ICc6JyAmJiAhc2VlbkJyYWNrZXQpIHtcbiAgICAgICAgICAgIGlmIChidWZmZXIgPT09ICcnKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgICAgICAgZmFpbHVyZSA9IHVybC5wYXJzZUhvc3QoYnVmZmVyKTtcbiAgICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICAgIGJ1ZmZlciA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBQT1JUO1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgPT09IEhPU1ROQU1FKSByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKHVybC5pc1NwZWNpYWwoKSAmJiBidWZmZXIgPT09ICcnKSByZXR1cm4gSU5WQUxJRF9IT1NUO1xuICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUgJiYgYnVmZmVyID09PSAnJyAmJiAodXJsLmluY2x1ZGVzQ3JlZGVudGlhbHMoKSB8fCB1cmwucG9ydCAhPT0gbnVsbCkpIHJldHVybjtcbiAgICAgICAgICAgIGZhaWx1cmUgPSB1cmwucGFyc2VIb3N0KGJ1ZmZlcik7XG4gICAgICAgICAgICBpZiAoZmFpbHVyZSkgcmV0dXJuIGZhaWx1cmU7XG4gICAgICAgICAgICBidWZmZXIgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNociA9PT0gJ1snKSBzZWVuQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIGlmIChjaHIgPT09ICddJykgc2VlbkJyYWNrZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIFBPUlQ6XG4gICAgICAgICAgaWYgKGV4ZWMoRElHSVQsIGNocikpIHtcbiAgICAgICAgICAgIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8IGNociA9PT0gJz8nIHx8IGNociA9PT0gJyMnIHx8XG4gICAgICAgICAgICAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSB8fFxuICAgICAgICAgICAgc3RhdGVPdmVycmlkZVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPT0gJycpIHtcbiAgICAgICAgICAgICAgdmFyIHBvcnQgPSBwYXJzZUludChidWZmZXIsIDEwKTtcbiAgICAgICAgICAgICAgaWYgKHBvcnQgPiAweEZGRkYpIHJldHVybiBJTlZBTElEX1BPUlQ7XG4gICAgICAgICAgICAgIHVybC5wb3J0ID0gKHVybC5pc1NwZWNpYWwoKSAmJiBwb3J0ID09PSBzcGVjaWFsU2NoZW1lc1t1cmwuc2NoZW1lXSkgPyBudWxsIDogcG9ydDtcbiAgICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdGVPdmVycmlkZSkgcmV0dXJuO1xuICAgICAgICAgICAgc3RhdGUgPSBQQVRIX1NUQVJUO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIHJldHVybiBJTlZBTElEX1BPUlQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGSUxFOlxuICAgICAgICAgIHVybC5zY2hlbWUgPSAnZmlsZSc7XG4gICAgICAgICAgaWYgKGNociA9PT0gJy8nIHx8IGNociA9PT0gJ1xcXFwnKSBzdGF0ZSA9IEZJTEVfU0xBU0g7XG4gICAgICAgICAgZWxzZSBpZiAoYmFzZSAmJiBiYXNlLnNjaGVtZSA9PT0gJ2ZpbGUnKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNocikge1xuICAgICAgICAgICAgICBjYXNlIEVPRjpcbiAgICAgICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICc/JzpcbiAgICAgICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB1cmwucXVlcnkgPSAnJztcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICcjJzpcbiAgICAgICAgICAgICAgICB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgICB1cmwucXVlcnkgPSBiYXNlLnF1ZXJ5O1xuICAgICAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFydHNXaXRoV2luZG93c0RyaXZlTGV0dGVyKGpvaW4oYXJyYXlTbGljZShjb2RlUG9pbnRzLCBwb2ludGVyKSwgJycpKSkge1xuICAgICAgICAgICAgICAgICAgdXJsLmhvc3QgPSBiYXNlLmhvc3Q7XG4gICAgICAgICAgICAgICAgICB1cmwucGF0aCA9IGFycmF5U2xpY2UoYmFzZS5wYXRoKTtcbiAgICAgICAgICAgICAgICAgIHVybC5zaG9ydGVuUGF0aCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBGSUxFX1NMQVNIOlxuICAgICAgICAgIGlmIChjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgc3RhdGUgPSBGSUxFX0hPU1Q7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGJhc2UgJiYgYmFzZS5zY2hlbWUgPT09ICdmaWxlJyAmJiAhc3RhcnRzV2l0aFdpbmRvd3NEcml2ZUxldHRlcihqb2luKGFycmF5U2xpY2UoY29kZVBvaW50cywgcG9pbnRlciksICcnKSkpIHtcbiAgICAgICAgICAgIGlmIChpc1dpbmRvd3NEcml2ZUxldHRlcihiYXNlLnBhdGhbMF0sIHRydWUpKSBwdXNoKHVybC5wYXRoLCBiYXNlLnBhdGhbMF0pO1xuICAgICAgICAgICAgZWxzZSB1cmwuaG9zdCA9IGJhc2UuaG9zdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgIGNvbnRpbnVlO1xuXG4gICAgICAgIGNhc2UgRklMRV9IT1NUOlxuICAgICAgICAgIGlmIChjaHIgPT09IEVPRiB8fCBjaHIgPT09ICcvJyB8fCBjaHIgPT09ICdcXFxcJyB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJykge1xuICAgICAgICAgICAgaWYgKCFzdGF0ZU92ZXJyaWRlICYmIGlzV2luZG93c0RyaXZlTGV0dGVyKGJ1ZmZlcikpIHtcbiAgICAgICAgICAgICAgc3RhdGUgPSBQQVRIO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChidWZmZXIgPT09ICcnKSB7XG4gICAgICAgICAgICAgIHVybC5ob3N0ID0gJyc7XG4gICAgICAgICAgICAgIGlmIChzdGF0ZU92ZXJyaWRlKSByZXR1cm47XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGZhaWx1cmUgPSB1cmwucGFyc2VIb3N0KGJ1ZmZlcik7XG4gICAgICAgICAgICAgIGlmIChmYWlsdXJlKSByZXR1cm4gZmFpbHVyZTtcbiAgICAgICAgICAgICAgaWYgKHVybC5ob3N0ID09PSAnbG9jYWxob3N0JykgdXJsLmhvc3QgPSAnJztcbiAgICAgICAgICAgICAgaWYgKHN0YXRlT3ZlcnJpZGUpIHJldHVybjtcbiAgICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gUEFUSF9TVEFSVDtcbiAgICAgICAgICAgIH0gY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGJ1ZmZlciArPSBjaHI7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIX1NUQVJUOlxuICAgICAgICAgIGlmICh1cmwuaXNTcGVjaWFsKCkpIHtcbiAgICAgICAgICAgIHN0YXRlID0gUEFUSDtcbiAgICAgICAgICAgIGlmIChjaHIgIT09ICcvJyAmJiBjaHIgIT09ICdcXFxcJykgY29udGludWU7XG4gICAgICAgICAgfSBlbHNlIGlmICghc3RhdGVPdmVycmlkZSAmJiBjaHIgPT09ICc/Jykge1xuICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICBzdGF0ZSA9IFFVRVJZO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociAhPT0gRU9GKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IFBBVEg7XG4gICAgICAgICAgICBpZiAoY2hyICE9PSAnLycpIGNvbnRpbnVlO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBQQVRIOlxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGNociA9PT0gRU9GIHx8IGNociA9PT0gJy8nIHx8XG4gICAgICAgICAgICAoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSB8fFxuICAgICAgICAgICAgKCFzdGF0ZU92ZXJyaWRlICYmIChjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJykpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBpZiAoaXNEb3VibGVEb3QoYnVmZmVyKSkge1xuICAgICAgICAgICAgICB1cmwuc2hvcnRlblBhdGgoKTtcbiAgICAgICAgICAgICAgaWYgKGNociAhPT0gJy8nICYmICEoY2hyID09PSAnXFxcXCcgJiYgdXJsLmlzU3BlY2lhbCgpKSkge1xuICAgICAgICAgICAgICAgIHB1c2godXJsLnBhdGgsICcnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc1NpbmdsZURvdChidWZmZXIpKSB7XG4gICAgICAgICAgICAgIGlmIChjaHIgIT09ICcvJyAmJiAhKGNociA9PT0gJ1xcXFwnICYmIHVybC5pc1NwZWNpYWwoKSkpIHtcbiAgICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGlmICh1cmwuc2NoZW1lID09PSAnZmlsZScgJiYgIXVybC5wYXRoLmxlbmd0aCAmJiBpc1dpbmRvd3NEcml2ZUxldHRlcihidWZmZXIpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybC5ob3N0KSB1cmwuaG9zdCA9ICcnO1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGNoYXJBdChidWZmZXIsIDApICsgJzonOyAvLyBub3JtYWxpemUgd2luZG93cyBkcml2ZSBsZXR0ZXJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwdXNoKHVybC5wYXRoLCBidWZmZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0gJyc7XG4gICAgICAgICAgICBpZiAodXJsLnNjaGVtZSA9PT0gJ2ZpbGUnICYmIChjaHIgPT09IEVPRiB8fCBjaHIgPT09ICc/JyB8fCBjaHIgPT09ICcjJykpIHtcbiAgICAgICAgICAgICAgd2hpbGUgKHVybC5wYXRoLmxlbmd0aCA+IDEgJiYgdXJsLnBhdGhbMF0gPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2hpZnQodXJsLnBhdGgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgICAgdXJsLnF1ZXJ5ID0gJyc7XG4gICAgICAgICAgICAgIHN0YXRlID0gUVVFUlk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgICBzdGF0ZSA9IEZSQUdNRU5UO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gcGVyY2VudEVuY29kZShjaHIsIHBhdGhQZXJjZW50RW5jb2RlU2V0KTtcbiAgICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ0FOTk9UX0JFX0FfQkFTRV9VUkxfUEFUSDpcbiAgICAgICAgICBpZiAoY2hyID09PSAnPycpIHtcbiAgICAgICAgICAgIHVybC5xdWVyeSA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBRVUVSWTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociA9PT0gJyMnKSB7XG4gICAgICAgICAgICB1cmwuZnJhZ21lbnQgPSAnJztcbiAgICAgICAgICAgIHN0YXRlID0gRlJBR01FTlQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChjaHIgIT09IEVPRikge1xuICAgICAgICAgICAgdXJsLnBhdGhbMF0gKz0gcGVyY2VudEVuY29kZShjaHIsIEMwQ29udHJvbFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIH0gYnJlYWs7XG5cbiAgICAgICAgY2FzZSBRVUVSWTpcbiAgICAgICAgICBpZiAoIXN0YXRlT3ZlcnJpZGUgJiYgY2hyID09PSAnIycpIHtcbiAgICAgICAgICAgIHVybC5mcmFnbWVudCA9ICcnO1xuICAgICAgICAgICAgc3RhdGUgPSBGUkFHTUVOVDtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNociAhPT0gRU9GKSB7XG4gICAgICAgICAgICBpZiAoY2hyID09PSBcIidcIiAmJiB1cmwuaXNTcGVjaWFsKCkpIHVybC5xdWVyeSArPSAnJTI3JztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNociA9PT0gJyMnKSB1cmwucXVlcnkgKz0gJyUyMyc7XG4gICAgICAgICAgICBlbHNlIHVybC5xdWVyeSArPSBwZXJjZW50RW5jb2RlKGNociwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlIEZSQUdNRU5UOlxuICAgICAgICAgIGlmIChjaHIgIT09IEVPRikgdXJsLmZyYWdtZW50ICs9IHBlcmNlbnRFbmNvZGUoY2hyLCBmcmFnbWVudFBlcmNlbnRFbmNvZGVTZXQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBwb2ludGVyKys7XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2hvc3QtcGFyc2luZ1xuICBwYXJzZUhvc3Q6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIHZhciByZXN1bHQsIGNvZGVQb2ludHMsIGluZGV4O1xuICAgIGlmIChjaGFyQXQoaW5wdXQsIDApID09PSAnWycpIHtcbiAgICAgIGlmIChjaGFyQXQoaW5wdXQsIGlucHV0Lmxlbmd0aCAtIDEpICE9PSAnXScpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICByZXN1bHQgPSBwYXJzZUlQdjYoc3RyaW5nU2xpY2UoaW5wdXQsIDEsIC0xKSk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgIHRoaXMuaG9zdCA9IHJlc3VsdDtcbiAgICAvLyBvcGFxdWUgaG9zdFxuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNTcGVjaWFsKCkpIHtcbiAgICAgIGlmIChleGVjKEZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQsIGlucHV0KSkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgIHJlc3VsdCA9ICcnO1xuICAgICAgY29kZVBvaW50cyA9IGFycmF5RnJvbShpbnB1dCk7XG4gICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb2RlUG9pbnRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICByZXN1bHQgKz0gcGVyY2VudEVuY29kZShjb2RlUG9pbnRzW2luZGV4XSwgQzBDb250cm9sUGVyY2VudEVuY29kZVNldCk7XG4gICAgICB9XG4gICAgICB0aGlzLmhvc3QgPSByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0ID0gdG9BU0NJSShpbnB1dCk7XG4gICAgICBpZiAoZXhlYyhGT1JCSURERU5fSE9TVF9DT0RFX1BPSU5ULCBpbnB1dCkpIHJldHVybiBJTlZBTElEX0hPU1Q7XG4gICAgICByZXN1bHQgPSBwYXJzZUlQdjQoaW5wdXQpO1xuICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgcmV0dXJuIElOVkFMSURfSE9TVDtcbiAgICAgIHRoaXMuaG9zdCA9IHJlc3VsdDtcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jY2Fubm90LWhhdmUtYS11c2VybmFtZS1wYXNzd29yZC1wb3J0XG4gIGNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAhdGhpcy5ob3N0IHx8IHRoaXMuY2Fubm90QmVBQmFzZVVSTCB8fCB0aGlzLnNjaGVtZSA9PT0gJ2ZpbGUnO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2luY2x1ZGUtY3JlZGVudGlhbHNcbiAgaW5jbHVkZXNDcmVkZW50aWFsczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJuYW1lICE9PSAnJyB8fCB0aGlzLnBhc3N3b3JkICE9PSAnJztcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpcy1zcGVjaWFsXG4gIGlzU3BlY2lhbDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBoYXNPd24oc3BlY2lhbFNjaGVtZXMsIHRoaXMuc2NoZW1lKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNzaG9ydGVuLWEtdXJscy1wYXRoXG4gIHNob3J0ZW5QYXRoOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhdGggPSB0aGlzLnBhdGg7XG4gICAgdmFyIHBhdGhTaXplID0gcGF0aC5sZW5ndGg7XG4gICAgaWYgKHBhdGhTaXplICYmICh0aGlzLnNjaGVtZSAhPT0gJ2ZpbGUnIHx8IHBhdGhTaXplICE9PSAxIHx8ICFpc1dpbmRvd3NEcml2ZUxldHRlcihwYXRoWzBdLCB0cnVlKSkpIHtcbiAgICAgIHBhdGgubGVuZ3RoLS07XG4gICAgfVxuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtdXJsLXNlcmlhbGl6ZXJcbiAgc2VyaWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHVybCA9IHRoaXM7XG4gICAgdmFyIHNjaGVtZSA9IHVybC5zY2hlbWU7XG4gICAgdmFyIHVzZXJuYW1lID0gdXJsLnVzZXJuYW1lO1xuICAgIHZhciBwYXNzd29yZCA9IHVybC5wYXNzd29yZDtcbiAgICB2YXIgaG9zdCA9IHVybC5ob3N0O1xuICAgIHZhciBwb3J0ID0gdXJsLnBvcnQ7XG4gICAgdmFyIHBhdGggPSB1cmwucGF0aDtcbiAgICB2YXIgcXVlcnkgPSB1cmwucXVlcnk7XG4gICAgdmFyIGZyYWdtZW50ID0gdXJsLmZyYWdtZW50O1xuICAgIHZhciBvdXRwdXQgPSBzY2hlbWUgKyAnOic7XG4gICAgaWYgKGhvc3QgIT09IG51bGwpIHtcbiAgICAgIG91dHB1dCArPSAnLy8nO1xuICAgICAgaWYgKHVybC5pbmNsdWRlc0NyZWRlbnRpYWxzKCkpIHtcbiAgICAgICAgb3V0cHV0ICs9IHVzZXJuYW1lICsgKHBhc3N3b3JkID8gJzonICsgcGFzc3dvcmQgOiAnJykgKyAnQCc7XG4gICAgICB9XG4gICAgICBvdXRwdXQgKz0gc2VyaWFsaXplSG9zdChob3N0KTtcbiAgICAgIGlmIChwb3J0ICE9PSBudWxsKSBvdXRwdXQgKz0gJzonICsgcG9ydDtcbiAgICB9IGVsc2UgaWYgKHNjaGVtZSA9PT0gJ2ZpbGUnKSBvdXRwdXQgKz0gJy8vJztcbiAgICBvdXRwdXQgKz0gdXJsLmNhbm5vdEJlQUJhc2VVUkwgPyBwYXRoWzBdIDogcGF0aC5sZW5ndGggPyAnLycgKyBqb2luKHBhdGgsICcvJykgOiAnJztcbiAgICBpZiAocXVlcnkgIT09IG51bGwpIG91dHB1dCArPSAnPycgKyBxdWVyeTtcbiAgICBpZiAoZnJhZ21lbnQgIT09IG51bGwpIG91dHB1dCArPSAnIycgKyBmcmFnbWVudDtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaHJlZlxuICBzZXRIcmVmOiBmdW5jdGlvbiAoaHJlZikge1xuICAgIHZhciBmYWlsdXJlID0gdGhpcy5wYXJzZShocmVmKTtcbiAgICBpZiAoZmFpbHVyZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihmYWlsdXJlKTtcbiAgICB0aGlzLnNlYXJjaFBhcmFtcy51cGRhdGUoKTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLW9yaWdpblxuICBnZXRPcmlnaW46IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2NoZW1lID0gdGhpcy5zY2hlbWU7XG4gICAgdmFyIHBvcnQgPSB0aGlzLnBvcnQ7XG4gICAgaWYgKHNjaGVtZSA9PT0gJ2Jsb2InKSB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkxDb25zdHJ1Y3RvcihzY2hlbWUucGF0aFswXSkub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gJ251bGwnO1xuICAgIH1cbiAgICBpZiAoc2NoZW1lID09PSAnZmlsZScgfHwgIXRoaXMuaXNTcGVjaWFsKCkpIHJldHVybiAnbnVsbCc7XG4gICAgcmV0dXJuIHNjaGVtZSArICc6Ly8nICsgc2VyaWFsaXplSG9zdCh0aGlzLmhvc3QpICsgKHBvcnQgIT09IG51bGwgPyAnOicgKyBwb3J0IDogJycpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcHJvdG9jb2xcbiAgZ2V0UHJvdG9jb2w6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5zY2hlbWUgKyAnOic7XG4gIH0sXG4gIHNldFByb3RvY29sOiBmdW5jdGlvbiAocHJvdG9jb2wpIHtcbiAgICB0aGlzLnBhcnNlKCR0b1N0cmluZyhwcm90b2NvbCkgKyAnOicsIFNDSEVNRV9TVEFSVCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC11c2VybmFtZVxuICBnZXRVc2VybmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVzZXJuYW1lO1xuICB9LFxuICBzZXRVc2VybmFtZTogZnVuY3Rpb24gKHVzZXJuYW1lKSB7XG4gICAgdmFyIGNvZGVQb2ludHMgPSBhcnJheUZyb20oJHRvU3RyaW5nKHVzZXJuYW1lKSk7XG4gICAgaWYgKHRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkpIHJldHVybjtcbiAgICB0aGlzLnVzZXJuYW1lID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnVzZXJuYW1lICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpXSwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wYXNzd29yZFxuICBnZXRQYXNzd29yZDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnBhc3N3b3JkO1xuICB9LFxuICBzZXRQYXNzd29yZDogZnVuY3Rpb24gKHBhc3N3b3JkKSB7XG4gICAgdmFyIGNvZGVQb2ludHMgPSBhcnJheUZyb20oJHRvU3RyaW5nKHBhc3N3b3JkKSk7XG4gICAgaWYgKHRoaXMuY2Fubm90SGF2ZVVzZXJuYW1lUGFzc3dvcmRQb3J0KCkpIHJldHVybjtcbiAgICB0aGlzLnBhc3N3b3JkID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlUG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnBhc3N3b3JkICs9IHBlcmNlbnRFbmNvZGUoY29kZVBvaW50c1tpXSwgdXNlcmluZm9QZXJjZW50RW5jb2RlU2V0KTtcbiAgICB9XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0XG4gIGdldEhvc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaG9zdCA9IHRoaXMuaG9zdDtcbiAgICB2YXIgcG9ydCA9IHRoaXMucG9ydDtcbiAgICByZXR1cm4gaG9zdCA9PT0gbnVsbCA/ICcnXG4gICAgICA6IHBvcnQgPT09IG51bGwgPyBzZXJpYWxpemVIb3N0KGhvc3QpXG4gICAgICA6IHNlcmlhbGl6ZUhvc3QoaG9zdCkgKyAnOicgKyBwb3J0O1xuICB9LFxuICBzZXRIb3N0OiBmdW5jdGlvbiAoaG9zdCkge1xuICAgIGlmICh0aGlzLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICB0aGlzLnBhcnNlKGhvc3QsIEhPU1QpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtaG9zdG5hbWVcbiAgZ2V0SG9zdG5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaG9zdCA9IHRoaXMuaG9zdDtcbiAgICByZXR1cm4gaG9zdCA9PT0gbnVsbCA/ICcnIDogc2VyaWFsaXplSG9zdChob3N0KTtcbiAgfSxcbiAgc2V0SG9zdG5hbWU6IGZ1bmN0aW9uIChob3N0bmFtZSkge1xuICAgIGlmICh0aGlzLmNhbm5vdEJlQUJhc2VVUkwpIHJldHVybjtcbiAgICB0aGlzLnBhcnNlKGhvc3RuYW1lLCBIT1NUTkFNRSk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wb3J0XG4gIGdldFBvcnQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcG9ydCA9IHRoaXMucG9ydDtcbiAgICByZXR1cm4gcG9ydCA9PT0gbnVsbCA/ICcnIDogJHRvU3RyaW5nKHBvcnQpO1xuICB9LFxuICBzZXRQb3J0OiBmdW5jdGlvbiAocG9ydCkge1xuICAgIGlmICh0aGlzLmNhbm5vdEhhdmVVc2VybmFtZVBhc3N3b3JkUG9ydCgpKSByZXR1cm47XG4gICAgcG9ydCA9ICR0b1N0cmluZyhwb3J0KTtcbiAgICBpZiAocG9ydCA9PT0gJycpIHRoaXMucG9ydCA9IG51bGw7XG4gICAgZWxzZSB0aGlzLnBhcnNlKHBvcnQsIFBPUlQpO1xuICB9LFxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGF0aG5hbWVcbiAgZ2V0UGF0aG5hbWU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGF0aCA9IHRoaXMucGF0aDtcbiAgICByZXR1cm4gdGhpcy5jYW5ub3RCZUFCYXNlVVJMID8gcGF0aFswXSA6IHBhdGgubGVuZ3RoID8gJy8nICsgam9pbihwYXRoLCAnLycpIDogJyc7XG4gIH0sXG4gIHNldFBhdGhuYW1lOiBmdW5jdGlvbiAocGF0aG5hbWUpIHtcbiAgICBpZiAodGhpcy5jYW5ub3RCZUFCYXNlVVJMKSByZXR1cm47XG4gICAgdGhpcy5wYXRoID0gW107XG4gICAgdGhpcy5wYXJzZShwYXRobmFtZSwgUEFUSF9TVEFSVCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hcbiAgZ2V0U2VhcmNoOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHF1ZXJ5ID0gdGhpcy5xdWVyeTtcbiAgICByZXR1cm4gcXVlcnkgPyAnPycgKyBxdWVyeSA6ICcnO1xuICB9LFxuICBzZXRTZWFyY2g6IGZ1bmN0aW9uIChzZWFyY2gpIHtcbiAgICBzZWFyY2ggPSAkdG9TdHJpbmcoc2VhcmNoKTtcbiAgICBpZiAoc2VhcmNoID09PSAnJykge1xuICAgICAgdGhpcy5xdWVyeSA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaGFyQXQoc2VhcmNoLCAwKSA9PT0gJz8nKSBzZWFyY2ggPSBzdHJpbmdTbGljZShzZWFyY2gsIDEpO1xuICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgdGhpcy5wYXJzZShzZWFyY2gsIFFVRVJZKTtcbiAgICB9XG4gICAgdGhpcy5zZWFyY2hQYXJhbXMudXBkYXRlKCk7XG4gIH0sXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1zZWFyY2hwYXJhbXNcbiAgZ2V0U2VhcmNoUGFyYW1zOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoUGFyYW1zLmZhY2FkZTtcbiAgfSxcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhhc2hcbiAgZ2V0SGFzaDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBmcmFnbWVudCA9IHRoaXMuZnJhZ21lbnQ7XG4gICAgcmV0dXJuIGZyYWdtZW50ID8gJyMnICsgZnJhZ21lbnQgOiAnJztcbiAgfSxcbiAgc2V0SGFzaDogZnVuY3Rpb24gKGhhc2gpIHtcbiAgICBoYXNoID0gJHRvU3RyaW5nKGhhc2gpO1xuICAgIGlmIChoYXNoID09PSAnJykge1xuICAgICAgdGhpcy5mcmFnbWVudCA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChjaGFyQXQoaGFzaCwgMCkgPT09ICcjJykgaGFzaCA9IHN0cmluZ1NsaWNlKGhhc2gsIDEpO1xuICAgIHRoaXMuZnJhZ21lbnQgPSAnJztcbiAgICB0aGlzLnBhcnNlKGhhc2gsIEZSQUdNRU5UKTtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5xdWVyeSA9IHRoaXMuc2VhcmNoUGFyYW1zLnNlcmlhbGl6ZSgpIHx8IG51bGw7XG4gIH1cbn07XG5cbi8vIGBVUkxgIGNvbnN0cnVjdG9yXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI3VybC1jbGFzc1xudmFyIFVSTENvbnN0cnVjdG9yID0gZnVuY3Rpb24gVVJMKHVybCAvKiAsIGJhc2UgKi8pIHtcbiAgdmFyIHRoYXQgPSBhbkluc3RhbmNlKHRoaXMsIFVSTFByb3RvdHlwZSk7XG4gIHZhciBiYXNlID0gdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSkgPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgc3RhdGUgPSBzZXRJbnRlcm5hbFN0YXRlKHRoYXQsIG5ldyBVUkxTdGF0ZSh1cmwsIGZhbHNlLCBiYXNlKSk7XG4gIGlmICghREVTQ1JJUFRPUlMpIHtcbiAgICB0aGF0LmhyZWYgPSBzdGF0ZS5zZXJpYWxpemUoKTtcbiAgICB0aGF0Lm9yaWdpbiA9IHN0YXRlLmdldE9yaWdpbigpO1xuICAgIHRoYXQucHJvdG9jb2wgPSBzdGF0ZS5nZXRQcm90b2NvbCgpO1xuICAgIHRoYXQudXNlcm5hbWUgPSBzdGF0ZS5nZXRVc2VybmFtZSgpO1xuICAgIHRoYXQucGFzc3dvcmQgPSBzdGF0ZS5nZXRQYXNzd29yZCgpO1xuICAgIHRoYXQuaG9zdCA9IHN0YXRlLmdldEhvc3QoKTtcbiAgICB0aGF0Lmhvc3RuYW1lID0gc3RhdGUuZ2V0SG9zdG5hbWUoKTtcbiAgICB0aGF0LnBvcnQgPSBzdGF0ZS5nZXRQb3J0KCk7XG4gICAgdGhhdC5wYXRobmFtZSA9IHN0YXRlLmdldFBhdGhuYW1lKCk7XG4gICAgdGhhdC5zZWFyY2ggPSBzdGF0ZS5nZXRTZWFyY2goKTtcbiAgICB0aGF0LnNlYXJjaFBhcmFtcyA9IHN0YXRlLmdldFNlYXJjaFBhcmFtcygpO1xuICAgIHRoYXQuaGFzaCA9IHN0YXRlLmdldEhhc2goKTtcbiAgfVxufTtcblxudmFyIFVSTFByb3RvdHlwZSA9IFVSTENvbnN0cnVjdG9yLnByb3RvdHlwZTtcblxudmFyIGFjY2Vzc29yRGVzY3JpcHRvciA9IGZ1bmN0aW9uIChnZXR0ZXIsIHNldHRlcikge1xuICByZXR1cm4ge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGdldEludGVybmFsVVJMU3RhdGUodGhpcylbZ2V0dGVyXSgpO1xuICAgIH0sXG4gICAgc2V0OiBzZXR0ZXIgJiYgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKVtzZXR0ZXJdKHZhbHVlKTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH07XG59O1xuXG5pZiAoREVTQ1JJUFRPUlMpIHtcbiAgLy8gYFVSTC5wcm90b3R5cGUuaHJlZmAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhyZWZcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ2hyZWYnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ3NlcmlhbGl6ZScsICdzZXRIcmVmJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5vcmlnaW5gIGdldHRlclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtb3JpZ2luXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdvcmlnaW4nLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldE9yaWdpbicpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUucHJvdG9jb2xgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1wcm90b2NvbFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncHJvdG9jb2wnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFByb3RvY29sJywgJ3NldFByb3RvY29sJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS51c2VybmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXVzZXJuYW1lXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICd1c2VybmFtZScsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0VXNlcm5hbWUnLCAnc2V0VXNlcm5hbWUnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnBhc3N3b3JkYCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcGFzc3dvcmRcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ3Bhc3N3b3JkJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRQYXNzd29yZCcsICdzZXRQYXNzd29yZCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuaG9zdGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhvc3RcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ2hvc3QnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldEhvc3QnLCAnc2V0SG9zdCcpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuaG9zdG5hbWVgIGFjY2Vzc29ycyBwYWlyXG4gIC8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC1ob3N0bmFtZVxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnaG9zdG5hbWUnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldEhvc3RuYW1lJywgJ3NldEhvc3RuYW1lJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wb3J0YCBhY2Nlc3NvcnMgcGFpclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtcG9ydFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAncG9ydCcsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UG9ydCcsICdzZXRQb3J0JykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5wYXRobmFtZWAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXBhdGhuYW1lXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdwYXRobmFtZScsIGFjY2Vzc29yRGVzY3JpcHRvcignZ2V0UGF0aG5hbWUnLCAnc2V0UGF0aG5hbWUnKSk7XG4gIC8vIGBVUkwucHJvdG90eXBlLnNlYXJjaGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXNlYXJjaFxuICBkZWZpbmVCdWlsdEluQWNjZXNzb3IoVVJMUHJvdG90eXBlLCAnc2VhcmNoJywgYWNjZXNzb3JEZXNjcmlwdG9yKCdnZXRTZWFyY2gnLCAnc2V0U2VhcmNoJykpO1xuICAvLyBgVVJMLnByb3RvdHlwZS5zZWFyY2hQYXJhbXNgIGdldHRlclxuICAvLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtc2VhcmNocGFyYW1zXG4gIGRlZmluZUJ1aWx0SW5BY2Nlc3NvcihVUkxQcm90b3R5cGUsICdzZWFyY2hQYXJhbXMnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldFNlYXJjaFBhcmFtcycpKTtcbiAgLy8gYFVSTC5wcm90b3R5cGUuaGFzaGAgYWNjZXNzb3JzIHBhaXJcbiAgLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLWhhc2hcbiAgZGVmaW5lQnVpbHRJbkFjY2Vzc29yKFVSTFByb3RvdHlwZSwgJ2hhc2gnLCBhY2Nlc3NvckRlc2NyaXB0b3IoJ2dldEhhc2gnLCAnc2V0SGFzaCcpKTtcbn1cblxuLy8gYFVSTC5wcm90b3R5cGUudG9KU09OYCBtZXRob2Rcbi8vIGh0dHBzOi8vdXJsLnNwZWMud2hhdHdnLm9yZy8jZG9tLXVybC10b2pzb25cbmRlZmluZUJ1aWx0SW4oVVJMUHJvdG90eXBlLCAndG9KU09OJywgZnVuY3Rpb24gdG9KU09OKCkge1xuICByZXR1cm4gZ2V0SW50ZXJuYWxVUkxTdGF0ZSh0aGlzKS5zZXJpYWxpemUoKTtcbn0sIHsgZW51bWVyYWJsZTogdHJ1ZSB9KTtcblxuLy8gYFVSTC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNVUkwtc3RyaW5naWZpY2F0aW9uLWJlaGF2aW9yXG5kZWZpbmVCdWlsdEluKFVSTFByb3RvdHlwZSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiBnZXRJbnRlcm5hbFVSTFN0YXRlKHRoaXMpLnNlcmlhbGl6ZSgpO1xufSwgeyBlbnVtZXJhYmxlOiB0cnVlIH0pO1xuXG5pZiAoTmF0aXZlVVJMKSB7XG4gIHZhciBuYXRpdmVDcmVhdGVPYmplY3RVUkwgPSBOYXRpdmVVUkwuY3JlYXRlT2JqZWN0VVJMO1xuICB2YXIgbmF0aXZlUmV2b2tlT2JqZWN0VVJMID0gTmF0aXZlVVJMLnJldm9rZU9iamVjdFVSTDtcbiAgLy8gYFVSTC5jcmVhdGVPYmplY3RVUkxgIG1ldGhvZFxuICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvVVJML2NyZWF0ZU9iamVjdFVSTFxuICBpZiAobmF0aXZlQ3JlYXRlT2JqZWN0VVJMKSBkZWZpbmVCdWlsdEluKFVSTENvbnN0cnVjdG9yLCAnY3JlYXRlT2JqZWN0VVJMJywgYmluZChuYXRpdmVDcmVhdGVPYmplY3RVUkwsIE5hdGl2ZVVSTCkpO1xuICAvLyBgVVJMLnJldm9rZU9iamVjdFVSTGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9VUkwvcmV2b2tlT2JqZWN0VVJMXG4gIGlmIChuYXRpdmVSZXZva2VPYmplY3RVUkwpIGRlZmluZUJ1aWx0SW4oVVJMQ29uc3RydWN0b3IsICdyZXZva2VPYmplY3RVUkwnLCBiaW5kKG5hdGl2ZVJldm9rZU9iamVjdFVSTCwgTmF0aXZlVVJMKSk7XG59XG5cbnNldFRvU3RyaW5nVGFnKFVSTENvbnN0cnVjdG9yLCAnVVJMJyk7XG5cbiQoeyBnbG9iYWw6IHRydWUsIGNvbnN0cnVjdG9yOiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgVVJMOiBVUkxDb25zdHJ1Y3RvclxufSk7XG4iLCIndXNlIHN0cmljdCc7XG4vLyBUT0RPOiBSZW1vdmUgdGhpcyBtb2R1bGUgZnJvbSBgY29yZS1qc0A0YCBzaW5jZSBpdCdzIHJlcGxhY2VkIHRvIG1vZHVsZSBiZWxvd1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLmNvbnN0cnVjdG9yJyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIHZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3ZhbGlkYXRlLWFyZ3VtZW50cy1sZW5ndGgnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmcnKTtcbnZhciBVU0VfTkFUSVZFX1VSTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91cmwtY29uc3RydWN0b3ItZGV0ZWN0aW9uJyk7XG5cbnZhciBVUkwgPSBnZXRCdWlsdEluKCdVUkwnKTtcblxuLy8gYFVSTC5wYXJzZWAgbWV0aG9kXG4vLyBodHRwczovL3VybC5zcGVjLndoYXR3Zy5vcmcvI2RvbS11cmwtY2FucGFyc2VcbiQoeyB0YXJnZXQ6ICdVUkwnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFVU0VfTkFUSVZFX1VSTCB9LCB7XG4gIHBhcnNlOiBmdW5jdGlvbiBwYXJzZSh1cmwpIHtcbiAgICB2YXIgbGVuZ3RoID0gdmFsaWRhdGVBcmd1bWVudHNMZW5ndGgoYXJndW1lbnRzLmxlbmd0aCwgMSk7XG4gICAgdmFyIHVybFN0cmluZyA9IHRvU3RyaW5nKHVybCk7XG4gICAgdmFyIGJhc2UgPSBsZW5ndGggPCAyIHx8IGFyZ3VtZW50c1sxXSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdG9TdHJpbmcoYXJndW1lbnRzWzFdKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG5ldyBVUkwodXJsU3RyaW5nLCBiYXNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xuXG4vLyBgVVJMLnByb3RvdHlwZS50b0pTT05gIG1ldGhvZFxuLy8gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNkb20tdXJsLXRvanNvblxuJCh7IHRhcmdldDogJ1VSTCcsIHByb3RvOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlIH0sIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oKSB7XG4gICAgcmV0dXJuIGNhbGwoVVJMLnByb3RvdHlwZS50b1N0cmluZywgdGhpcyk7XG4gIH1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2FycmF5L2luY2x1ZGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL29iamVjdC9hc3NpZ24nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvcHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL3dlYi91cmwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcycpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuZGVsZXRlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLnNpemUnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLlVSTFNlYXJjaFBhcmFtcztcbiIsIid1c2Ugc3RyaWN0JztcbnJlcXVpcmUoJy4vdXJsLXNlYXJjaC1wYXJhbXMnKTtcbnJlcXVpcmUoJy4uL21vZHVsZXMvd2ViLnVybCcpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLmNhbi1wYXJzZScpO1xucmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudXJsLnBhcnNlJyk7XG5yZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi51cmwudG8tanNvbicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguVVJMO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MTU2KTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIkJhc2U2MlN0ciIsImFscGhhYmV0IiwidGhpcyIsImxvb2t1cCIsImNyZWF0ZUxvb2t1cFRhYmxlIiwiZ2V0Qnl0ZXMiLCJzdHIiLCJieXRlcyIsImkiLCJsZW5ndGgiLCJjaGFyIiwiY2hhckNvZGVBdCIsInB1c2giLCJnZXRTdHJpbmciLCJhcnIiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJhcHBseSIsImNyZWF0ZUluc3RhbmNlIiwiY3JlYXRlSW5zdGFuY2VXaXRoR21wQ2hhcmFjdGVyU2V0IiwiQ2hhcmFjdGVyU2V0cyIsIkdNUCIsImNyZWF0ZUluc3RhbmNlV2l0aEludmVydGVkQ2hhcmFjdGVyU2V0IiwiSU5WRVJURUQiLCJ0cmFuc2xhdGUiLCJpbmRpY2VzIiwiZGljdGlvbmFyeSIsInRyYW5zbGF0aW9uIiwiX2kiLCJpbmRpY2VzXzEiLCJpbmRpY2VzaSIsImNvbnZlcnQiLCJtZXNzYWdlIiwic291cmNlQmFzZSIsInRhcmdldEJhc2UiLCJvdXQiLCJzb3VyY2UiLCJxdW90aWVudCIsInJlbWFpbmRlciIsInNvdXJjZV8xIiwiYWNjdW11bGF0b3IiLCJkaWdpdCIsInJldmVyc2UiLCJwcm90b3R5cGUiLCJlbmNvZGUiLCJTVEFOREFSRF9CQVNFIiwiVEFSR0VUX0JBU0UiLCJkZWNvZGUiLCJlbmNvZGVkIiwicHJlcGFyZWQiLCJlbmNvZGVTdHIiLCJpbnB1dCIsImRlY29kZVN0ciIsIkFycmF5IiwiRXhwaXJlU2V0IiwiY29uc3RydWN0b3IiLCJ0aW1lb3V0IiwiZ2NEZWxheSIsImRiIiwiTWFwIiwibmV4dEdjIiwic2l6ZSIsImFsbCIsInMiLCJTZXQiLCJmb3JFYWNoIiwiXyIsInYiLCJhZGQiLCJzZXQiLCJEYXRlIiwibm93Iiwic2NoZWR1bGVHYyIsImhhcyIsImRlbGV0ZSIsImdjIiwidCIsImZvcmNlIiwiY2xlYXJUaW1lb3V0IiwidHMiLCJzZXRUaW1lb3V0IiwiYmluZCIsIndpbmRvdyIsIkZ1bmN0aW9uIiwiaW1wbGVtZW50YXRpb24iLCJnIiwiTWF0aCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIm4iLCJTeW1ib2wiLCJpdGVyYXRvciIsIk9QRU5fQlJPQURDQVNUX0NIQU5ORUxTIiwiQnJvYWRjYXN0Q2hhbm5lbCIsImNsZWFyTm9kZUZvbGRlciIsImZpbGxPcHRpb25zV2l0aERlZmF1bHRzIiwibyIsImNob29zZU1ldGhvZCIsInR5cGUiLCJ0aGVuIiwiciIsIlBST01JU0VfUkVTT0xWRURfRkFMU0UiLCJlbmZvcmNlT3B0aW9ucyIsImEiLCJ1IiwiYyIsImlkIiwibmFtZSIsIm9wdGlvbnMiLCJtZXRob2QiLCJfaUwiLCJfb25NTCIsIl9hZGRFTCIsImludGVybmFsIiwiX3VNUCIsIl9iZWZDIiwiX3ByZXBQIiwiY3JlYXRlIiwiaXNQcm9taXNlIiwiX3N0YXRlIiwibCIsInRpbWUiLCJtaWNyb1NlY29uZHMiLCJkYXRhIiwiUFJPTUlTRV9SRVNPTFZFRF9WT0lEIiwicG9zdE1lc3NhZ2UiLCJjYXRjaCIsImQiLCJmIiwiZm4iLCJvbk1lc3NhZ2UiLCJoIiwiZmlsdGVyIiwiX3B1YmtleSIsImNsb3NlZCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInBvc3RJbnRlcm5hbCIsIm9ubWVzc2FnZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZmluZCIsImNsb3NlIiwiUHJvbWlzZSIsImZyb20iLCJtYXAiLCJpc0Nsb3NlZCIsImNyZWF0ZUxlYWRlckVsZWN0aW9uIiwiYmVMZWFkZXIiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX2xlYWRlckVsZWN0b3IiLCJwYXJzZSIsImZhbGxiYWNrSW50ZXJ2YWwiLCJyZXNwb25zZVRpbWUiLCJhdmVyYWdlUmVzcG9uc2VUaW1lIiwiZGllIiwiYnJvYWRjYXN0Q2hhbm5lbCIsIl9vcHRpb25zIiwiaXNMZWFkZXIiLCJoYXNMZWFkZXIiLCJpc0RlYWQiLCJ0b2tlbiIsInJhbmRvbVRva2VuIiwiX2FwbFEiLCJfYXBsUUMiLCJfdW5sIiwiX2xzdG5zIiwiX2RwTCIsIl9kcExDIiwiY29udGV4dCIsImFjdGlvbiIsImFwcGx5T25jZSIsInNsZWVwIiwiUFJPTUlTRV9SRVNPTFZFRF9UUlVFIiwicmFjZSIsInJlamVjdCIsImF3YWl0TGVhZGVyc2hpcCIsIl9hTFAiLCJvbmR1cGxpY2F0ZSIsInJlbW92ZSIsImNvbmNhdCIsIm1ldGhvZHMiLCJCb29sZWFuIiwid2ViV29ya2VyU3VwcG9ydCIsImlzTm9kZSIsImNhbkJlVXNlZCIsInciLCJDIiwiY2xlYW5PbGRNZXNzYWdlcyIsInAiLCJ5IiwiY3JlYXRlRGF0YWJhc2UiLCJnZXRBbGxNZXNzYWdlcyIsInRyYW5zYWN0aW9uIiwib2JqZWN0U3RvcmUiLCJvcGVuQ3Vyc29yIiwib25zdWNjZXNzIiwidGFyZ2V0IiwicmVzdWx0IiwiY29udGludWUiLCJnZXRJZGIiLCJnZXRNZXNzYWdlc0hpZ2hlclRoYW4iLCJnZXRPbGRNZXNzYWdlcyIsImIiLCJyZW1vdmVNZXNzYWdlQnlJZCIsIndyaXRlTWVzc2FnZSIsImluZGV4ZWREQiIsIm1vekluZGV4ZWREQiIsIndlYmtpdEluZGV4ZWREQiIsIm1zSW5kZXhlZERCIiwib3BlbiIsIm9udXBncmFkZW5lZWRlZCIsImNyZWF0ZU9iamVjdFN0b3JlIiwia2V5UGF0aCIsImF1dG9JbmNyZW1lbnQiLCJvbmVycm9yIiwidXVpZCIsImdldFRpbWUiLCJvbmNvbXBsZXRlIiwiSURCS2V5UmFuZ2UiLCJib3VuZCIsImxhc3RDdXJzb3JJZCIsImNoYW5uZWxOYW1lIiwiZU1JcyIsIk9ibGl2aW91c1NldCIsImlkYiIsInR0bCIsIndyaXRlQmxvY2tQcm9taXNlIiwibWVzc2FnZXNDYWxsYmFjayIsInJlYWRRdWV1ZVByb21pc2VzIiwib25jbG9zZSIsIm0iLCJtZXNzYWdlc0NhbGxiYWNrVGltZSIsInNvcnQiLCJyYW5kb21JbnQiLCJFIiwiYWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIiLCJnZXRMb2NhbFN0b3JhZ2UiLCJyZW1vdmVTdG9yYWdlRXZlbnRMaXN0ZW5lciIsInN0b3JhZ2VLZXkiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiZG9jdW1lbnQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImtleSIsIm5ld1ZhbHVlIiwiZGlzcGF0Y2hFdmVudCIsImxvY2Fsc3RvcmFnZSIsInJlbW92ZVRpbWVvdXQiLCJsaXN0ZW5lciIsInJlbW92ZUl0ZW0iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiYmMiLCJzdWJGbnMiLCJhcmd1bWVudHMiLCJub2RlIiwibWF4UGFyYWxsZWxXcml0ZXMiLCJ1c2VGYXN0UGF0aCIsImZsb29yIiwicmFuZG9tIiwidG9TdHJpbmciLCJzdWJzdHJpbmciLCJyZXNvbHZlIiwiY2FsbCIsImZvcm1hdEFyZ3MiLCJ1c2VDb2xvcnMiLCJuYW1lc3BhY2UiLCJodW1hbml6ZSIsImRpZmYiLCJjb2xvciIsInNwbGljZSIsInJlcGxhY2UiLCJzYXZlIiwic3RvcmFnZSIsImxvYWQiLCJnZXRJdGVtIiwiZW52IiwiREVCVUciLCJwcm9jZXNzIiwiX19ud2pzIiwibWF0Y2giLCJkb2N1bWVudEVsZW1lbnQiLCJzdHlsZSIsIldlYmtpdEFwcGVhcmFuY2UiLCJjb25zb2xlIiwiZmlyZWJ1ZyIsImV4Y2VwdGlvbiIsInRhYmxlIiwicGFyc2VJbnQiLCJSZWdFeHAiLCIkMSIsImRlc3Ryb3kiLCJ3YXJuIiwiY29sb3JzIiwibG9nIiwiZGVidWciLCJmb3JtYXR0ZXJzIiwiaiIsImVuYWJsZWQiLCJOdW1iZXIiLCJwcmV2IiwiY3VyciIsImNvZXJjZSIsInVuc2hpZnQiLCJzZWxlY3RDb2xvciIsImV4dGVuZCIsImNvbmZpZ3VyYWJsZSIsIm5hbWVzcGFjZXMiLCJpbml0Iiwic3RhY2siLCJkaXNhYmxlIiwibmFtZXMiLCJza2lwcyIsImpvaW4iLCJlbmFibGUiLCJzcGxpdCIsInNsaWNlIiwidGVzdCIsImtleXMiLCJhYnMiLCJyb3VuZCIsImV4ZWMiLCJwYXJzZUZsb2F0IiwiaXNGaW5pdGUiLCJsb25nIiwicmVtb3ZlVG9vT2xkVmFsdWVzIiwidGltZU1hcCIsImNsZWFyIiwibmV4dCIsInJ1biIsImZ1biIsImFycmF5IiwibmV4dFRpY2siLCJ0aXRsZSIsImJyb3dzZXIiLCJhcmd2IiwidmVyc2lvbiIsInZlcnNpb25zIiwib24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImVtaXQiLCJwcmVwZW5kTGlzdGVuZXIiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwibGlzdGVuZXJzIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwidW1hc2siLCJjdHgiLCJUaW55RW1pdHRlciIsIl9fZXh0ZW5kcyIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiaGFzT3duUHJvcGVydHkiLCJUeXBlRXJyb3IiLCJhc3NlcnQiLCJBc3NlcnRFcnJvciIsIlNPVVJDRV9OQU1FU1BBQ0UiLCJJbnZva2VFcnJvciIsIk1lc3NhZ2VUaW1lb3V0RXJyb3IiLCJNZXNzYWdlRXJyb3IiLCJfX2NyZWF0ZUJpbmRpbmciLCJfX2V4cG9ydFN0YXIiLCJfX2ltcG9ydERlZmF1bHQiLCJPZmZpY2VTREtNZXNzYWdlRXZlbnQiLCJpc09mZmljZVNES01lc3NhZ2VFdmVudExpa2UiLCJPZmZpY2VTREtCcm9hZGNhc3RDaGFubmVsIiwib3JpZ2luIiwiZW1pdHRlciIsImNoYW5uZWxJZCIsImFzc2lnbiIsIm1lc3NhZ2VJZCIsInRyaW0iLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX19hd2FpdGVyIiwidGhyb3ciLCJkb25lIiwiX19nZW5lcmF0b3IiLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwicmV0dXJuIiwicG9wIiwiX19zcHJlYWRBcnJheSIsIkNvbnRleHRUeXBlIiwiREVCVUdfTkFNRVNQQUNFIiwiSU5WT0tFX0RFRkFVVExfVElNRU9VVCIsImludm9rZUhhbmRsZXJzIiwiZXZlbnRIYW5kbGVycyIsImVtaXR0ZXJJZCIsIl9kZWJ1Z05hbWVzcGFjZSIsImRlYnVnTmFtZXNwYWNlIiwiYXV0b1N0cnVjdHVyZWRDbG9uZSIsImJyb2FkY2FzdENoYW5uZWxPcHRpb25zIiwiaW5pdE1lc3NhZ2VFdmVudCIsIm9yaWdpbk1lc3NhZ2UiLCJkaXN0cmlidXRlTWVzc2FnZSIsImNoYW5uZWwiLCJsb2NhdGlvbiIsInN0cnVjdHVyZWRDbG9uZSIsInJlcGxhY2VyIiwiaXNBcnJheSIsImhhbmRsZXIiLCJhdWRpZW5jZSIsImhhbmRsZXJzIiwibWVyZ2VDb250ZXh0cyIsInN0cnVjdHVyZWRDbG9uZWQiLCJvbk1lc3NhZ2VBcnJpdmUiLCJJbnZva2VSZXF1ZXN0IiwiaGFuZGxlSW52b2tlUmVxdWVzdCIsIkludm9rZVJlc3BvbnNlIiwiaGFuZGxlSW52b2tlUmVzcG9uc2UiLCJhcmdzIiwiZXJyb3IiLCJpbnZva2UiLCJwYXlsb2FkIiwiYWRkSW52b2tlSGFuZGxlciIsInJlbW92ZUludm9rZUhhbmRsZXIiLCJBcnJheUJ1ZmZlciIsIkRhdGFWaWV3IiwiRmlsZSIsIkZpbGVMaXN0IiwiQmxvYiIsIkltYWdlQml0bWFwIiwiSW1hZ2VEYXRhIiwiZ2V0UHJvdG90eXBlT2YiLCJVaW50OEFycmF5IiwiY3J5cHRvIiwibXNDcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJwYWRTdGFydCIsImdldFNpemUiLCJyZW1vdmVBbGwiLCJydW5BbGwiLCJXb3JrZXJHbG9iYWxTY29wZSIsInRvU3RyaW5nVGFnIiwiY2FjaGVkU2V0VGltZW91dCIsImNhY2hlZENsZWFyVGltZW91dCIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwicnVuVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJhaW5RdWV1ZSIsImxlbiIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJub29wIiwiZGlyIiwic2NvcGUiLCJwcm9kdWN0IiwiUHJveHkiLCJyZXZvY2FibGUiLCJQcm94eVBvbHlmaWxsIiwibGFzdFJldm9rZUZuIiwiaXNPYmplY3QiLCJ2YWxpZGF0ZVByb3RvIiwicHJvdG8iLCIkT2JqZWN0IiwiY2FuQ3JlYXRlTnVsbFByb3RvT2JqZWN0cyIsIm9iamVjdENyZWF0ZSIsIlN5bnRheEVycm9yIiwiVCIsImdldFByb3RvIiwiTyIsInVuZGVmaW5lZCIsInRocm93UmV2b2tlZCIsInRyYXAiLCJ1bnNhZmVIYW5kbGVyIiwiayIsInByb3h5IiwiaXNNZXRob2QiLCJ1c2luZ05ldyIsImdldHRlciIsInByb3AiLCJzZXR0ZXIiLCJwcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsInByb3BlcnR5TWFwIiwicmVhbCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImRlc2MiLCJwcm90b3R5cGVPayIsInNldFByb3RvIiwic2VhbCIsImNhbGxiYWNrIiwiZXZ0QXJyIiwiZXZ0cyIsImxpdmVFdmVudHMiLCJjcmVhdGVEb2NzUmFuZ2VGYWNhZGUiLCJob3N0IiwibG9jYXRvciIsImNyZWF0ZVZhbHVlT2JqZWN0RmFjYWRlIiwic3RhcnQiLCJlbmQiLCJpc0NhcmV0IiwiY3JlYXRlRG9jc1RhYmxlRmFjYWRlIiwidGFibGVJZCIsImdldENlbGwiLCJyb3ciLCJjb2x1bW4iLCJpbnZva2VFZGl0b3JGYWNhZGUiLCJuZXh0TG9jYXRvciIsImdldFJhbmdlIiwic2VsZWN0aW9uIiwiY3JlYXRlU2hlZXRSYW5nZUZhY2FkZSIsImNyZWF0ZVNoZWV0Q2VsbEZhY2FkZSIsImNyZWF0ZVNoZWV0V29ya3NoZWV0RmFjYWRlIiwiZ2V0U2VsZWN0aW9ucyIsInNlbGVjdGlvbnMiLCJzZWxlY3Rpb25JZCIsInJhbmdlTG9jYXRvciIsInNldFJhbmdlIiwiY3JlYXRlU2hlZXRTZWxlY3Rpb25GYWNhZGUiLCJjZWxsTG9jYXRvciIsImdldEFjdGl2ZUNlbGwiLCJjcmVhdGVQcmVzZW50YXRpb25UZXh0UmFuZ2VGYWNhZGUiLCJjcmVhdGVQcmVzZW50YXRpb25TaGFwZUZhY2FkZSIsInN0YXRpY0ZpZWxkcyIsInNoYXBlSWQiLCJ0ZXh0Q29udGVudCIsImNyZWF0ZVByZXNlbnRhdGlvblRhYmxlQ2VsbEZhY2FkZSIsImNyZWF0ZVByZXNlbnRhdGlvblRhYmxlUmFuZ2VGYWNhZGUiLCJjcmVhdGVQcmVzZW50YXRpb25UYWJsZUZhY2FkZSIsInJvd0NvdW50IiwiY29sdW1uQ291bnQiLCJyYW5nZSIsImNyZWF0ZVByZXNlbnRhdGlvblNsaWRlRmFjYWRlIiwic2xpZGVJZCIsImdldFNoYXBlcyIsInNoYXBlIiwiZ2V0VGFibGVzIiwiaW5zZXJ0U2hhcGUiLCJmYWNhZGUiLCJpbnNlcnRUZXh0Qm94IiwiaW5zZXJ0VGFibGUiLCJjcmVhdGVQcmVzZW50YXRpb25GYWNhZGUiLCJpbmRleCIsInF1aXQiLCJzdGFydEZyb21DdXJyZW50Iiwic3RhcnRSZW1vdGVMaXZlIiwic3RhcnRTcGVha2VyVmlldyIsImFkZENoYW5nZUxpc3RlbmVyIiwicmVnaXN0ZXJFZGl0b3JGYWNhZGVMaXN0ZW5lciIsImNyZWF0ZURvY3VtZW50UHJlc2VudGF0aW9uRmFjYWRlIiwiY3JlYXRlU3ByZWFkc2hlZXRQcmVzZW50YXRpb25GYWNhZGUiLCJ0aXRsZUZhY2FkZSIsImFkZENoYW5nZWRMaXN0ZW5lciIsImxpc3RlbkVkaXRvckV2ZW50Iiwic2V0VGl0bGUiLCJjb21tZW50c0ZhY2FkZSIsInNob3ciLCJoaWRlIiwiaGlzdG9yeUZhY2FkZSIsImRpc2N1c3Npb25GYWNhZGUiLCJjb2xsYWJvcmF0b3JGYWNhZGUiLCJleHRlcm5hbEFwcEZhY2FkZSIsImluc2VydCIsInVybCIsInBhcmFtcyIsImxvY2tzRmFjYWRlIiwiYWRkUmFuZ2VMb2NrIiwiYWRkU2hlZXRMb2NrIiwicmVtb3ZlUmFuZ2VMb2Nrc0luUmFuZ2VzIiwicmVtb3ZlU2hlZXRMb2NrIiwibWVudGlvbkZhY2FkZSIsImxvY2F0ZUNlbGxCeUd1aWQiLCJndWlkIiwibm90aWZpY2F0aW9uVHlwZSIsImNvbnRlbnRGYWNhZGUiLCJzZXRDb250ZW50IiwiY29udGVudCIsInZlcnNpb25GYWNhZGUiLCJjcmVhdGVSZXZpc2lvbiIsImJhdGNoQ2hhbmdlc0ZhY2FkZSIsImNhbGxiYWNrSWQiLCJyZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrIiwidW5yZWdpc3RlckVkaXRvckZhY2FkZUNhbGxiYWNrIiwicHJpbnRGYWNhZGUiLCJleHBvcnRGYWNhZGUiLCJkb2NzU2VsZWN0aW9uRmFjYWRlIiwiY3JlYXRlRWRpdG9yRmFjYWRlTW9kdWxlIiwiZ2V0V2hvbGVSYW5nZSIsImFkZFJhbmdlTGlzdGVuZXIiLCJkb2NzVGFibGVzRmFjYWRlIiwiZ2V0QWxsIiwiZ2V0T25lIiwic2hlZXRXb3JrYm9va0ZhY2FkZSIsImdldFdvcmtzaGVldHMiLCJzaGVldCIsImdldFdvcmtzaGVldEJ5SWQiLCJzaGVldElkIiwid29ya3NoZWV0IiwiZ2V0QWN0aXZlV29ya3NoZWV0IiwicHJlc2VudGF0aW9uU2xpZGVzRmFjYWRlIiwiZ2V0Q3VycmVudFNsaWRlIiwic2xpZGUiLCJnZXRTbGlkZXMiLCJnZXRTbGlkZUJ5SWQiLCJnZXRTZWxlY3RlZFNsaWRlcyIsImlkcyIsImFkZFNsaWRlIiwiZHVwbGljYXRlU2xpZGUiLCJwcmVzZW50YXRpb25TZWxlY3Rpb25GYWNhZGUiLCJnZXRUZXh0UmFuZ2UiLCJnZXRTZWxlY3RlZFNoYXBlcyIsInNoYXBlcyIsInByZXNlbnRhdGlvbkV2ZW50U3Vic2NyaXB0aW9uRmFjYWRlIiwiYWRkRXJyb3JMaXN0ZW5lciIsImFkZExvYWRlZExpc3RlbmVyIiwiZG9jc091dGxpbmVGYWNhZGUiLCJmaWxlVHlwZSIsIkZpbGVUeXBlIiwiRG9jdW1lbnQiLCJoaXN0b3J5IiwiY29tbWVudHMiLCJkaXNjdXNzaW9uIiwiY29sbGFib3JhdG9yIiwiZXh0ZXJuYWxBcHAiLCJwcmVzZW50YXRpb24iLCJzZXR0aW5ncyIsInNlYXJjaCIsIm91dGxpbmUiLCJzaWRlYmFyIiwidGFibGVzIiwiYmF0Y2hDaGFuZ2VzIiwicHJpbnQiLCJTcHJlYWRzaGVldCIsImxvY2tzIiwibWVudGlvbiIsIndvcmtib29rIiwiYWN0aXZlU2hlZXQiLCJhY3RpdmUiLCJjaGFydHMiLCJleHBvcnQiLCJzZXRGb2N1cyIsImlzRm9jdXMiLCJQcmVzZW50YXRpb24iLCJzbGlkZXMiLCJ0ZXh0Iiwiem9vbSIsImV2ZW50U3Vic2NyaXB0aW9uIiwiTWVudGlvblR5cGVzIiwiUGVybWlzc2lvbkxldmVsIiwiU2hlZXRSYW5nZVR5cGUiLCJFZGl0b3JTYXZlU3RhdHVzIiwiZW5zdXJlSGVhZGVyQmFyc1RpdGxlQ2hhbmdlU3Vic2NyaXB0aW9uIiwiaXNUaXRsZVN1YnNjcmliZWQiLCJzZXRUaXRsZVN1YnNjcmliZWQiLCJvbkludGVybmFsVGl0bGVDaGFuZ2UiLCJnZXRUaXRsZUhhbmRsZXIiLCJzdWJzY3JpYmVFZGl0b3JUaXRsZUNoYW5nZSIsInN5bmNIZWFkZXJCYXJzQ29tbWFuZHMiLCJjb21tYW5kcyIsImNvbW1hbmRNYXAiLCJnZXRDb21tYW5kc01hcCIsImNvbW1hbmQiLCJzeW5jSGVhZGVyQmFyc1Zpc2libGUiLCJpbnZva2VIZWFkZXJCYXJzIiwiSEVBREVSX0JBUlNfTUVUSE9EIiwiZ2V0VmlzaWJsZSIsInNldFZpc2libGVTdGF0ZSIsInZpc2libGUiLCJnZXRWaXNpYmxlU3RhdGUiLCJzZXRIZWFkZXJCYXJzVmlzaWJsZSIsInNldFZpc2libGUiLCJnZXRIZWFkZXJCYXJzQ29tbWFuZFJlZiIsInJlZnMiLCJnZXRSZWZzTWFwIiwiZXhpc3RpbmciLCJnZXRDb21tYW5kIiwiZXJyIiwiZW1pdEhlYWRlckJhcnNFcnJvciIsInJlZiIsImRpc2FibGVkIiwic3JjIiwiZWRpdGFibGUiLCJvbkNvbW1hbmRDbGljayIsImdldFN0YXRlIiwiY3VycmVudCIsInNldENvbW1hbmRWaXNpYmxlIiwic2V0Q29tbWFuZERpc2FibGVkIiwic2V0Q29tbWFuZEFjdGl2ZSIsInNldENvbW1hbmRTcmMiLCJzZXRDb21tYW5kTGFiZWwiLCJzZXRDb21tYW5kRWRpdGFibGUiLCJnZXRPdmVycmlkZXNNYXAiLCJzZXRDb21tYW5kQ2FsbGJhY2tFbmFibGVkIiwiYWRkQ29tbWFuZCIsImxpc3RWaWV3Q29tbWFuZHMiLCJoYW5kbGVDb21tYW5kQ2xpY2siLCJIRUFERVJfQkFSU19DSEFOR0VEX0VWRU5UIiwib25UaXRsZUNoYW5nZSIsInBvc0NvbW1hbmQiLCJwb3MiLCJvbkNsaWNrIiwiY29tbWFuZFBheWxvYWQiLCJhZGRlZCIsImNsaWNrSGFuZGxlciIsInNldFRpdGxlSGFuZGxlciIsInNuYXBzaG90IiwiSW52b2tlTWV0aG9kIiwiTGlzdGVuRWRpdG9yRXZlbnQiLCJnbG9iYWxUaGlzIiwiQVVEIiwiU01fUEFSQU1TX0tFWSIsIkxFR0FDWV9MQU5HVUFHRV9NQVAiLCJlbiIsImphIiwiU1VQUE9SVEVEX0xBTkdVQUdFUyIsIlBSRUxPQURfTUVTU0FHRV9UWVBFIiwiRkFDQURFX1BST1hZX1NLSVBQRURfUFJPUFMiLCJzaG91bGRTa2lwRmFjYWRlUHJveHlQcm9wIiwiTWVzc2FnZUV2ZW50IiwiY29udGVudFZlcnNpb24iLCJfZmlsZVR5cGUiLCJVbmtub3duIiwibWVzc2FnZUhhbmRsZXIiLCJfcmVhZHlTdGF0ZSIsIlJlYWR5U3RhdGUiLCJMb2FkaW5nIiwiY29sbGFib3JhdG9ycyIsImhlYWRlckJhcnNWaXNpYmxlIiwiaGVhZGVyQmFyc0NvbW1hbmRzIiwiaGVhZGVyQmFyc0NvbW1hbmRPdmVycmlkZXMiLCJzbGFzaE1lbnVDYWxsYmFja3MiLCJlZGl0b3JGYWNhZGVDYWxsYmFja3MiLCJoZWFkZXJCYXJzQ29tbWFuZFJlZnMiLCJoZWFkZXJCYXJzVGl0bGVDaGFuZ2VTdWJzY3JpYmVkIiwiZGlzY29ubmVjdGVkIiwicHJlbG9hZEFja1RpbWVvdXRNcyIsInByZWxvYWREb25lVGltZW91dE1zIiwicHJlbG9hZFJlYWR5VGltZW91dE1zIiwiY29ubmVjdE9wdGlvbnMiLCJ1c2VyVXVpZCIsIm5vcm1hbGl6ZWRFbXB0eVBhZ2UiLCJub3JtYWxpemVFbXB0eVBhZ2VPcHRpb25zIiwiZW1wdHlQYWdlIiwiY29udGFpbmVyIiwiSFRNTEVsZW1lbnQiLCJ0YWdOYW1lIiwiZW5kcG9pbnQiLCJVUkwiLCJzYW1lT3JpZ2luIiwicGF0aG5hbWUiLCJhcGlBZGFwdG9yIiwiYXBpQWRhcHRvckNvbnRleHQiLCJzdGFydFBhcmFtcyIsIlN0YXJ0UGFyYW1zIiwic21QYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJvblZpZXdwb3J0UmVzaXplIiwiZXZlbnQiLCJTREtFdmVudCIsIlZpZXdwb3J0UmVzaXplIiwiZ2V0Q29udGFpbmVyUmVjdCIsImluaXRDaGFubmVsIiwicHJlbG9hZENyZWRlbnRpYWxzTWVzc2FnZUhhbmRsZXIiLCJoYW5kbGVQcmVsb2FkTWVzc2FnZSIsImhlYWRlckJhcnMiLCJpbml0SGVhZGVyQmFyc0ZhY2FkZSIsIm1lc3NhZ2VFeHBpcmVzIiwiaXNOYU4iLCJoYW5kbGVkTWVzc2FnZUNhY2hlIiwiZXZ0Iiwic2hvdWxkSGFuZGxlTWVzc2FnZSIsInNob3VsZEV4cG9zZVNsYXNoTWVudSIsInNsYXNoTWVudSIsImhpbnRlZFR5cGUiLCJnZXRTbGFzaE1lbnVUeXBlSGludCIsImNyZWF0ZVNlcmlhbGl6ZWRTbGFzaE1lbnUiLCJlbnRyaWVzIiwic2VyaWFsaXplU2xhc2hNZW51SXRlbXMiLCJpdGVtcyIsInBhdGgiLCJpdGVtIiwibmV4dFBhdGgiLCJpc1NsYXNoTWVudUVudHJ5IiwiY2hpbGRyZW4iLCJyZWdpc3RlclNsYXNoTWVudUNhbGxiYWNrIiwic2VyaWFsaXplZEl0ZW0iLCJpY29uIiwiZ2V0RWRpdG9yIiwiZWRpdG9yIiwic2V0Q3JlZGVudGlhbHMiLCJTZXRDcmVkZW50aWFscyIsInNldFNpZ25hdHVyZSIsInNpZ25hdHVyZSIsInNldFRva2VuIiwiZ2V0UGVyZm9ybWFuY2VFbnRyaWVzIiwiUmVxdWVzdFBlcmZvcm1hbmNlRW50cmllcyIsImRpc2Nvbm5lY3QiLCJwZW5kaW5nSW5pdGlhbGl6YXRpb25FcnJvckhhbmRsZXIiLCJwZW5kaW5nSW5pdGlhbGl6YXRpb25FcnJvciIsInByZWxvYWRDcmVkZW50aWFsc1Byb21pc2UiLCJlbGVtZW50IiwicGFyZW50RWxlbWVudCIsInJlbW92ZUNoaWxkIiwidmlzdWFsVmlld3BvcnQiLCJMb2FkaW5nRWRpdG9yIiwiaW5pdElmcmFtZSIsImFwcGVuZENoaWxkIiwicnVuUHJlbG9hZEhhbmRzaGFrZSIsImluaXRFZGl0b3IiLCJyZWFkeVN0YXRlSGFuZGxlciIsInN0YXRlIiwiUmVhZHkiLCJFdmVudCIsIkRvY3VtZW50UHJvIiwiZG9jdW1lbnRQcm8iLCJzcHJlYWRzaGVldCIsIlRhYmxlIiwiRm9ybSIsImZvcm0iLCJGbG93Y2hhcnQiLCJmbG93Y2hhcnQiLCJpbnN0YWxsUm9vdEZhY2FkZSIsInJlYWR5IiwicmVhZHlTdGF0ZSIsImlmcmFtZSIsImNyZWF0ZUVsZW1lbnQiLCJib3JkZXIiLCJvdmVyZmxvdyIsIndpZHRoIiwiaGVpZ2h0IiwiZGlzcGxheSIsImFsbG93IiwiYWxsb3dQb2xpY3kiLCJhbGxvd0Z1bGxzY3JlZW4iLCJmaWxlSWQiLCJub3RFbXB0eVN0cmluZyIsInNlYXJjaFBhcmFtcyIsImRldmljZU1vZGUiLCJzaG93TG9hZGluZ0VmZmVjdCIsInNob3dMb2FkaW5nIiwibG9hZGluZ09wdGlvbnMiLCJsYW5nIiwibm9ybWFsaXplZExhbmciLCJub3JtYWxpemVkIiwibm9ybWFsaXplTGFuZ3VhZ2UiLCJjb250ZW50V2luZG93IiwicmVxdWVzdElkIiwiZ2V0UHJlbG9hZENyZWRlbnRpYWxzIiwiY3JlZGVudGlhbHMiLCJjb2RlIiwicHJvbWlzZSIsImdldENyZWRlbnRpYWxzIiwiZmlsZUd1aWQiLCJyZWFkeVJlc29sdmVkIiwiYWNrUmVzb2x2ZWQiLCJkb25lUmVzb2x2ZWQiLCJhY2tUaW1lciIsImRvbmVUaW1lciIsImNsZWFudXAiLCJoYW5kbGVNZXNzYWdlIiwic2VuZEluaXQiLCJjcmVhdGVQcmVsb2FkSW5pdFBheWxvYWQiLCJtb2RlIiwibXNnIiwiRURJVE9SX1JFTkRFUkVEX0VWRU5UIiwiRWRpdG9yUmVuZGVyZWQiLCJTREtJbml0Iiwib3B0cyIsInRvVXBwZXJDYXNlIiwiRGlzcGF0Y2hTREtFdmVudCIsImFwcGx5SGVhZGVyQmFyc0NoYW5nZWQiLCJEaXNwYXRjaEVkaXRvckV2ZW50IiwidXBkYXRlQ29sbGFib3JhdG9ycyIsIkVNUFRZX1BBR0VfRVZFTlRTIiwiaXNFbXB0eVBhZ2VFdmVudCIsImJpbmRDb250YWluZXJNZXRob2RIYW5kbGVycyIsIkNvbnRhaW5lck1ldGhvZCIsIkdlbmVyYXRlVXJsIiwiaW5mbyIsImdlbmVyYXRlVXJsIiwiSGFuZGxlQ3VzdG9tVGFzayIsInRhc2tJZCIsImhhbmRsZUN1c3RvbVRhc2siLCJPcGVuTGluayIsIm9wZW5MaW5rIiwiR2V0RmlsZUluZm9Gcm9tVXJsIiwiZ2V0RmlsZUluZm9Gcm9tVXJsIiwiTWVudGlvbkNsaWNrSGFuZGxlckZvck1vYmlsZSIsIm1lbnRpb25DbGlja0hhbmRsZXJGb3JNb2JpbGUiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwieCIsImlzTWVudGlvbiIsIm1lbnRpb25JbmZvIiwibGVmdCIsInRvcCIsIkdldENvbnRhaW5lclJlY3QiLCJTaG93VG9hc3QiLCJzaG93VG9hc3QiLCJHZXRDcmVkZW50aWFscyIsImhlYWRlckJhcnNUaXRsZUNoYW5nZUhhbmRsZXIiLCJzdWJzY3JpYmVkIiwiY3JlYXRlSGVhZGVyQmFyc0hvc3QiLCJwcmVmaXgiLCJvdmVycmlkZXMiLCJjbGVhclJvb3RGYWNhZGUiLCJidWlsZFJvb3RGYWNhZGVTdGF0ZSIsIkludm9rZUVkaXRvck1ldGhvZCIsImFkanVzdEV2ZW50TmFtZSIsImluc3QiLCJnZXRDb2xsYWJvcmF0b3JzIiwiY3JlYXRlTmVzdGVkUHJveHkiLCJfdGFyZ2V0IiwiX3RoaXNBcmciLCJ2aWV3cG9ydFdpZHRoIiwiaW5uZXJXaWR0aCIsInZpZXdwb3J0SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJyaWdodCIsInNjcm9sbFRvcCIsInNjcm9sbGluZ0VsZW1lbnQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwicGFnZUxlZnQiLCJwYWdlVG9wIiwic2NhbGUiLCJPZmZpY2VTREsiLCJjb25kaXRpb24iLCJjb25uZWN0SW50ZXJuYWwiLCJzZGsiLCJDT05ORUNUX1YyX0ZJTEVfVFlQRVMiLCJpc0Nvbm5lY3RWMkZpbGVUeXBlIiwiaXNDb25uZWN0VjJNb2RlIiwidmFsaWRhdGVDb25uZWN0VjJPcHRpb25zIiwiQUxMX0VNUFRZX1BBR0VfU0NFTkVTIiwiU1RBUlRfUEFSQU1TX0ZJRUxEIiwicmVzb2x2ZVNjZW5lcyIsImZpbHRlcmVkIiwic2NlbmUiLCJyZXNvbHZlVG9rZW5FeHBpcmVkU3RyYXRlZ3kiLCJwaWNrU3RyaW5nIiwicmVzb2x2ZUFjdGlvbiIsInJlc29sdmVDb250ZW50T3ZlcnJpZGUiLCJkZXNjcmlwdGlvbiIsInByaW1hcnkiLCJzZWNvbmRhcnkiLCJyZXNvbHZlT3ZlcnJpZGVzIiwicmVzb2x2ZWQiLCJzY2VuZXMiLCJ0b2tlbkV4cGlyZWRTdHJhdGVneSIsInJuZHM4Iiwicm5nIiwiYnl0ZVRvSGV4Iiwic3Vic3RyIiwib2Zmc2V0IiwiX25vZGVJZCIsIl9jbG9ja3NlcSIsIl9sYXN0TVNlY3MiLCJfbGFzdE5TZWNzIiwiYnVmIiwiY2xvY2tzZXEiLCJzZWVkQnl0ZXMiLCJtc2VjcyIsIm5zZWNzIiwiZHQiLCJ0bCIsInRtaCIsImhhc2hmdW5jIiwiZ2VuZXJhdGVVVUlEIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzdHJpbmdUb0J5dGVzIiwiRE5TIiwiZ2V0T3V0cHV0TGVuZ3RoIiwiaW5wdXRMZW5ndGg4Iiwic2FmZUFkZCIsImxzdyIsIm1kNWNtbiIsInEiLCJudW0iLCJjbnQiLCJtZDVmZiIsIm1kNWdnIiwibWQ1aGgiLCJtZDVpaSIsInYzNSIsIm91dHB1dCIsImxlbmd0aDMyIiwiaGV4VGFiIiwiaGV4IiwiY2hhckF0IiwibWQ1VG9IZXhFbmNvZGVkQXJyYXkiLCJvbGRhIiwib2xkYiIsIm9sZGMiLCJvbGRkIiwid29yZHNUb01kNSIsImxlbmd0aDgiLCJVaW50MzJBcnJheSIsImJ5dGVzVG9Xb3JkcyIsInJuZHMiLCJ6IiwiUk9UTCIsIksiLCJIIiwiTiIsImNlaWwiLCJNIiwicG93IiwiX2kyIiwiVyIsIl90IiwiX3QyIiwiX2EiLCJfX3ZhbHVlcyIsIl9fcmVhZCIsImFyIiwiY29udmVydEZpbGVUeXBlIiwiRmlsZVR5cGVBbGlhcyIsIk1pbmRtYXAiLCJCb2FyZCIsImVfMSIsImVfMiIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiZV8xXzEiLCJfZiIsIl9nIiwiX2giLCJlXzJfMSIsImlzU0RLRXZlbnRNZXNzYWdlIiwiZnJlZXplIiwiazIiLCJ3cml0YWJsZSIsIlVybFNoYXJpbmdUeXBlIiwiU3ByZWFkc2hlZXRTaGFyaW5nRnJvbSIsIm1vZCIsImlzX3BsYWluX29ial8xIiwiYmFzZTYyIiwicGFyYW1zXzEiLCJwYXJhbSIsInBhcmFtU3RyIiwicGFyZW50IiwiZW50cnlVbmJpbmQiLCJpc0NhbGxhYmxlIiwidHJ5VG9TdHJpbmciLCIkVHlwZUVycm9yIiwiYXJndW1lbnQiLCJpc0NvbnN0cnVjdG9yIiwiaXNQb3NzaWJsZVByb3RvdHlwZSIsIiRTdHJpbmciLCJ3ZWxsS25vd25TeW1ib2wiLCJVTlNDT1BBQkxFUyIsIkFycmF5UHJvdG90eXBlIiwiaXNQcm90b3R5cGVPZiIsIml0IiwiUHJvdG90eXBlIiwidG9PYmplY3QiLCJjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nIiwiaXNBcnJheUl0ZXJhdG9yTWV0aG9kIiwibGVuZ3RoT2ZBcnJheUxpa2UiLCJjcmVhdGVQcm9wZXJ0eSIsImdldEl0ZXJhdG9yIiwiZ2V0SXRlcmF0b3JNZXRob2QiLCIkQXJyYXkiLCJhcnJheUxpa2UiLCJJU19DT05TVFJVQ1RPUiIsImFyZ3VtZW50c0xlbmd0aCIsIm1hcGZuIiwibWFwcGluZyIsInN0ZXAiLCJpdGVyYXRvck1ldGhvZCIsInRvSW5kZXhlZE9iamVjdCIsInRvQWJzb2x1dGVJbmRleCIsImNyZWF0ZU1ldGhvZCIsIklTX0lOQ0xVREVTIiwiJHRoaXMiLCJlbCIsImZyb21JbmRleCIsImluZGV4T2YiLCJ1bmN1cnJ5VGhpcyIsImFycmF5U2xpY2UiLCJjb21wYXJlZm4iLCJtaWRkbGUiLCJsbGVuZ3RoIiwicmxlbmd0aCIsImxpbmRleCIsInJpbmRleCIsImFuT2JqZWN0IiwiaXRlcmF0b3JDbG9zZSIsIkVOVFJJRVMiLCJJVEVSQVRPUiIsIlNBRkVfQ0xPU0lORyIsImNhbGxlZCIsIml0ZXJhdG9yV2l0aFJldHVybiIsIlNLSVBfQ0xPU0lORyIsIklURVJBVElPTl9TVVBQT1JUIiwib2JqZWN0Iiwic3RyaW5nU2xpY2UiLCJUT19TVFJJTkdfVEFHX1NVUFBPUlQiLCJjbGFzc29mUmF3IiwiVE9fU1RSSU5HX1RBRyIsIkNPUlJFQ1RfQVJHVU1FTlRTIiwidGFnIiwidHJ5R2V0IiwiY2FsbGVlIiwiaGFzT3duIiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiZXhjZXB0aW9ucyIsImZhaWxzIiwiRiIsIkRFU0NSSVBUT1JTIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwiYml0bWFwIiwibWFrZUJ1aWx0SW4iLCJkZXNjcmlwdG9yIiwiZGVmaW5lR2xvYmFsUHJvcGVydHkiLCJzaW1wbGUiLCJnbG9iYWwiLCJ1bnNhZmUiLCJub25Db25maWd1cmFibGUiLCJub25Xcml0YWJsZSIsImRlZmluZUJ1aWx0SW4iLCJFWElTVFMiLCJDU1NSdWxlTGlzdCIsIkNTU1N0eWxlRGVjbGFyYXRpb24iLCJDU1NWYWx1ZUxpc3QiLCJDbGllbnRSZWN0TGlzdCIsIkRPTVJlY3RMaXN0IiwiRE9NU3RyaW5nTGlzdCIsIkRPTVRva2VuTGlzdCIsIkRhdGFUcmFuc2Zlckl0ZW1MaXN0IiwiSFRNTEFsbENvbGxlY3Rpb24iLCJIVE1MQ29sbGVjdGlvbiIsIkhUTUxGb3JtRWxlbWVudCIsIkhUTUxTZWxlY3RFbGVtZW50IiwiTWVkaWFMaXN0IiwiTWltZVR5cGVBcnJheSIsIk5hbWVkTm9kZU1hcCIsIk5vZGVMaXN0IiwiUGFpbnRSZXF1ZXN0TGlzdCIsIlBsdWdpbiIsIlBsdWdpbkFycmF5IiwiU1ZHTGVuZ3RoTGlzdCIsIlNWR051bWJlckxpc3QiLCJTVkdQYXRoU2VnTGlzdCIsIlNWR1BvaW50TGlzdCIsIlNWR1N0cmluZ0xpc3QiLCJTVkdUcmFuc2Zvcm1MaXN0IiwiU291cmNlQnVmZmVyTGlzdCIsIlN0eWxlU2hlZXRMaXN0IiwiVGV4dFRyYWNrQ3VlTGlzdCIsIlRleHRUcmFja0xpc3QiLCJUb3VjaExpc3QiLCJjbGFzc0xpc3QiLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJET01Ub2tlbkxpc3RQcm90b3R5cGUiLCJDT05TVFJVQ1RPUiIsIk1FVEhPRCIsIlBlYmJsZSIsIkVOVklST05NRU5UIiwiRGVubyIsInY4IiwiY2xhc3NvZiIsInVzZXJBZ2VudFN0YXJ0c1dpdGgiLCJzdHJpbmciLCJCdW4iLCIkRXJyb3IiLCJURVNUIiwiVjhfT1JfQ0hBS1JBX1NUQUNLX0VOVFJZIiwiSVNfVjhfT1JfQ0hBS1JBX1NUQUNLIiwiZHJvcEVudHJpZXMiLCJwcmVwYXJlU3RhY2tUcmFjZSIsImNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSIsImNsZWFyRXJyb3JTdGFjayIsIkVSUk9SX1NUQUNLX0lOU1RBTExBQkxFIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzIiwiaXNGb3JjZWQiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsImRvbnRDYWxsR2V0U2V0IiwiZm9yY2VkIiwic2hhbSIsIk5BVElWRV9CSU5EIiwiRnVuY3Rpb25Qcm90b3R5cGUiLCJSZWZsZWN0IiwiYUNhbGxhYmxlIiwidGhhdCIsImdldERlc2NyaXB0b3IiLCJQUk9QRVIiLCJDT05GSUdVUkFCTEUiLCJ1bmN1cnJ5VGhpc1dpdGhCaW5kIiwiZ2V0TWV0aG9kIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJJdGVyYXRvcnMiLCJ1c2luZ0l0ZXJhdG9yIiwiViIsIlAiLCJmdW5jIiwiY2hlY2siLCJnZXRCdWlsdEluIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzdG9yZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiY2F1c2UiLCJOQVRJVkVfV0VBS19NQVAiLCJzaGFyZWQiLCJzaGFyZWRLZXkiLCJoaWRkZW5LZXlzIiwiT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQiLCJXZWFrTWFwIiwibWV0YWRhdGEiLCJTVEFURSIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwiZG9jdW1lbnRBbGwiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvckxlZ2FjeSIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsIm5vcm1hbGl6ZSIsIlBPTFlGSUxMIiwiTkFUSVZFIiwiVVNFX1NZTUJPTF9BU19VSUQiLCIkU3ltYm9sIiwiUmVzdWx0Iiwic3RvcHBlZCIsIlJlc3VsdFByb3RvdHlwZSIsIml0ZXJhYmxlIiwidW5ib3VuZEZ1bmN0aW9uIiwiaXRlckZuIiwiQVNfRU5UUklFUyIsIklTX1JFQ09SRCIsIklTX0lURVJBVE9SIiwiSU5URVJSVVBURUQiLCJzdG9wIiwiY2FsbEZuIiwia2luZCIsImlubmVyUmVzdWx0IiwiaW5uZXJFcnJvciIsIkl0ZXJhdG9yUHJvdG90eXBlIiwic2V0VG9TdHJpbmdUYWciLCJyZXR1cm5UaGlzIiwiSXRlcmF0b3JDb25zdHJ1Y3RvciIsIk5BTUUiLCJFTlVNRVJBQkxFX05FWFQiLCIkIiwiSVNfUFVSRSIsIkZ1bmN0aW9uTmFtZSIsImNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IiLCJJdGVyYXRvcnNDb3JlIiwiUFJPUEVSX0ZVTkNUSU9OX05BTUUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsIkJVR0dZX1NBRkFSSV9JVEVSQVRPUlMiLCJLRVlTIiwiVkFMVUVTIiwiSXRlcmFibGUiLCJERUZBVUxUIiwiSVNfU0VUIiwiRk9SQ0VEIiwiQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlIiwiS0VZIiwiZ2V0SXRlcmF0aW9uTWV0aG9kIiwiS0lORCIsImRlZmF1bHRJdGVyYXRvciIsIkl0ZXJhYmxlUHJvdG90eXBlIiwiSU5DT1JSRUNUX1ZBTFVFU19OQU1FIiwibmF0aXZlSXRlcmF0b3IiLCJhbnlOYXRpdmVJdGVyYXRvciIsInZhbHVlcyIsIlByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSIsImFycmF5SXRlcmF0b3IiLCJ0b0xlbmd0aCIsIm9iaiIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImdldEludGVybmFsU3RhdGUiLCJDT05GSUdVUkFCTEVfTEVOR1RIIiwiVEVNUExBVEUiLCJhcml0eSIsInRydW5jIiwibm90aWZ5IiwidG9nZ2xlIiwic2FmZUdldEJ1aWx0SW4iLCJtYWNyb3Rhc2siLCJRdWV1ZSIsIklTX0lPUyIsIklTX0lPU19QRUJCTEUiLCJJU19XRUJPU19XRUJLSVQiLCJJU19OT0RFIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCJtaWNyb3Rhc2siLCJmbHVzaCIsImRvbWFpbiIsImV4aXQiLCJoZWFkIiwiZW50ZXIiLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwiUHJvbWlzZUNhcGFiaWxpdHkiLCIkJHJlc29sdmUiLCIkJHJlamVjdCIsIiRkZWZhdWx0Iiwib2JqZWN0S2V5cyIsImdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwiSW5kZXhlZE9iamVjdCIsIiRhc3NpZ24iLCJBIiwiQiIsInN5bWJvbCIsImNociIsImdldE93blByb3BlcnR5U3ltYm9scyIsIlMiLCJhY3RpdmVYRG9jdW1lbnQiLCJkZWZpbmVQcm9wZXJ0aWVzTW9kdWxlIiwiZW51bUJ1Z0tleXMiLCJodG1sIiwiUFJPVE9UWVBFIiwiU0NSSVBUIiwiSUVfUFJPVE8iLCJFbXB0eUNvbnN0cnVjdG9yIiwic2NyaXB0VGFnIiwiTFQiLCJOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYIiwid3JpdGUiLCJ0ZW1wIiwicGFyZW50V2luZG93IiwiTnVsbFByb3RvT2JqZWN0IiwiQWN0aXZlWE9iamVjdCIsImlmcmFtZURvY3VtZW50IiwiSlMiLCJQcm9wZXJ0aWVzIiwiVjhfUFJPVE9UWVBFX0RFRklORV9CVUciLCJwcm9wcyIsIklFOF9ET01fREVGSU5FIiwidG9Qcm9wZXJ0eUtleSIsIiRkZWZpbmVQcm9wZXJ0eSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJFTlVNRVJBQkxFIiwiV1JJVEFCTEUiLCJBdHRyaWJ1dGVzIiwiaW50ZXJuYWxPYmplY3RLZXlzIiwiQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSIiwiT2JqZWN0UHJvdG90eXBlIiwiJHByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTkFTSE9STl9CVUciLCJ1bmN1cnJ5VGhpc0FjY2Vzc29yIiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsImFQb3NzaWJsZVByb3RvdHlwZSIsIkNPUlJFQ1RfU0VUVEVSIiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiTmF0aXZlUHJvbWlzZUNvbnN0cnVjdG9yIiwiVjhfVkVSU0lPTiIsIk5hdGl2ZVByb21pc2VQcm90b3R5cGUiLCJTUEVDSUVTIiwiU1VCQ0xBU1NJTkciLCJOQVRJVkVfUFJPTUlTRV9SRUpFQ1RJT05fRVZFTlQiLCJQcm9taXNlUmVqZWN0aW9uRXZlbnQiLCJGT1JDRURfUFJPTUlTRV9DT05TVFJVQ1RPUiIsIlBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFIiwiR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSIsIkZha2VQcm9taXNlIiwiUkVKRUNUSU9OX0VWRU5UIiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJwcm9taXNlQ2FwYWJpbGl0eSIsImNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiIsInRhaWwiLCJlbnRyeSIsImRlZmluZUJ1aWx0SW5BY2Nlc3NvciIsIkNPTlNUUlVDVE9SX05BTUUiLCJDb25zdHJ1Y3RvciIsIlRBRyIsInVpZCIsIlNIQVJFRCIsImNvcHlyaWdodCIsImxpY2Vuc2UiLCJhQ29uc3RydWN0b3IiLCJkZWZhdWx0Q29uc3RydWN0b3IiLCJ0b0ludGVnZXJPckluZmluaXR5IiwiQ09OVkVSVF9UT19TVFJJTkciLCJmaXJzdCIsInNlY29uZCIsInBvc2l0aW9uIiwiY29kZUF0IiwibWF4SW50IiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsIk9WRVJGTE9XX0VSUk9SIiwiJFJhbmdlRXJyb3IiLCJSYW5nZUVycm9yIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJkZWx0YSIsIm51bVBvaW50cyIsImZpcnN0VGltZSIsImJhc2VNaW51c1RNaW4iLCJiYXNlIiwiY291bnRlciIsImV4dHJhIiwidWNzMmRlY29kZSIsImN1cnJlbnRWYWx1ZSIsImlucHV0TGVuZ3RoIiwiYmlhcyIsImJhc2ljTGVuZ3RoIiwiaGFuZGxlZENQQ291bnQiLCJoYW5kbGVkQ1BDb3VudFBsdXNPbmUiLCJxTWludXNUIiwiYmFzZU1pbnVzVCIsImxhYmVscyIsIiRsb2NhdGlvbiIsImRlZmVyIiwicG9ydCIsInZhbGlkYXRlQXJndW1lbnRzTGVuZ3RoIiwic2V0SW1tZWRpYXRlIiwiY2xlYXJJbW1lZGlhdGUiLCJEaXNwYXRjaCIsIk1lc3NhZ2VDaGFubmVsIiwiT05SRUFEWVNUQVRFQ0hBTkdFIiwicnVubmVyIiwiZXZlbnRMaXN0ZW5lciIsImdsb2JhbFBvc3RNZXNzYWdlRGVmZXIiLCJwcm90b2NvbCIsInBvcnQyIiwicG9ydDEiLCJpbXBvcnRTY3JpcHRzIiwibWF4IiwibWluIiwiaW50ZWdlciIsIm51bWJlciIsImlzU3ltYm9sIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInRvUHJpbWl0aXZlIiwicG9zdGZpeCIsInBhcmFtczIiLCJ0b0pTT04iLCJocmVmIiwidXNlcm5hbWUiLCJoYXNoIiwiTkFUSVZFX1NZTUJPTCIsInBhc3NlZCIsInJlcXVpcmVkIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiY3JlYXRlV2VsbEtub3duU3ltYm9sIiwid2l0aG91dFNldHRlciIsImluc3RhbGxFcnJvckNhdXNlIiwiaW5zdGFsbEVycm9yU3RhY2siLCJpdGVyYXRlIiwibm9ybWFsaXplU3RyaW5nQXJndW1lbnQiLCIkQWdncmVnYXRlRXJyb3IiLCJlcnJvcnMiLCJpc0luc3RhbmNlIiwiQWdncmVnYXRlRXJyb3JQcm90b3R5cGUiLCJlcnJvcnNBcnJheSIsIkFnZ3JlZ2F0ZUVycm9yIiwiJGluY2x1ZGVzIiwiYWRkVG9VbnNjb3BhYmxlcyIsImRlZmluZUl0ZXJhdG9yIiwiY3JlYXRlSXRlclJlc3VsdE9iamVjdCIsIkFSUkFZX0lURVJBVE9SIiwic2V0SW50ZXJuYWxTdGF0ZSIsIml0ZXJhdGVkIiwiQXJndW1lbnRzIiwibmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUiLCJwZXJmb3JtIiwiYWxsU2V0dGxlZCIsImNhcGFiaWxpdHkiLCJwcm9taXNlUmVzb2x2ZSIsInJlbWFpbmluZyIsImFscmVhZHlDYWxsZWQiLCJzdGF0dXMiLCJyZWFzb24iLCIkcHJvbWlzZVJlc29sdmUiLCJQUk9NSVNFX1NUQVRJQ1NfSU5DT1JSRUNUX0lURVJBVElPTiIsIlBST01JU0VfQU5ZX0VSUk9SIiwiYW55IiwiYWxyZWFkeVJlc29sdmVkIiwiYWxyZWFkeVJlamVjdGVkIiwib25SZWplY3RlZCIsIkludGVybmFsIiwiT3duUHJvbWlzZUNhcGFiaWxpdHkiLCJuYXRpdmVUaGVuIiwic2V0U3BlY2llcyIsImFuSW5zdGFuY2UiLCJzcGVjaWVzQ29uc3RydWN0b3IiLCJ0YXNrIiwiaG9zdFJlcG9ydEVycm9ycyIsIlByb21pc2VDb25zdHJ1Y3RvckRldGVjdGlvbiIsIlBST01JU0UiLCJOQVRJVkVfUFJPTUlTRV9TVUJDTEFTU0lORyIsImdldEludGVybmFsUHJvbWlzZVN0YXRlIiwiUHJvbWlzZUNvbnN0cnVjdG9yIiwiUHJvbWlzZVByb3RvdHlwZSIsIm5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSIsIkRJU1BBVENIX0VWRU5UIiwiVU5IQU5ETEVEX1JFSkVDVElPTiIsImlzVGhlbmFibGUiLCJjYWxsUmVhY3Rpb24iLCJyZWFjdGlvbiIsImV4aXRlZCIsIm9rIiwiZmFpbCIsInJlamVjdGlvbiIsIm9uSGFuZGxlVW5oYW5kbGVkIiwiaXNSZWplY3QiLCJub3RpZmllZCIsInJlYWN0aW9ucyIsIm9uVW5oYW5kbGVkIiwiaXNVbmhhbmRsZWQiLCJ1bndyYXAiLCJpbnRlcm5hbFJlamVjdCIsImludGVybmFsUmVzb2x2ZSIsIndyYXBwZXIiLCJleGVjdXRvciIsIm9uRnVsZmlsbGVkIiwiUHJvbWlzZVdyYXBwZXIiLCJ3cmFwIiwib25GaW5hbGx5IiwiaXNGdW5jdGlvbiIsImNhcGFiaWxpdHlSZWplY3QiLCJQcm9taXNlQ29uc3RydWN0b3JXcmFwcGVyIiwiQ0hFQ0tfV1JBUFBFUiIsIkFDQ0VQVF9BUkdVTUVOVFMiLCJjYWxsYmFja2ZuIiwid2l0aFJlc29sdmVycyIsIiRmcm9tQ29kZVBvaW50IiwiZnJvbUNvZGVQb2ludCIsImVsZW1lbnRzIiwiU1RSSU5HX0lURVJBVE9SIiwicG9pbnQiLCJET01JdGVyYWJsZXMiLCJBcnJheUl0ZXJhdG9yTWV0aG9kcyIsIkFycmF5VmFsdWVzIiwiaGFuZGxlUHJvdG90eXBlIiwiQ29sbGVjdGlvblByb3RvdHlwZSIsIkNPTExFQ1RJT05fTkFNRSIsIk1FVEhPRF9OQU1FIiwiVVNFX05BVElWRV9VUkwiLCJkZWZpbmVCdWlsdElucyIsIiR0b1N0cmluZyIsImFycmF5U29ydCIsIlVSTF9TRUFSQ0hfUEFSQU1TIiwiVVJMX1NFQVJDSF9QQVJBTVNfSVRFUkFUT1IiLCJnZXRJbnRlcm5hbFBhcmFtc1N0YXRlIiwiZ2V0SW50ZXJuYWxJdGVyYXRvclN0YXRlIiwibmF0aXZlRmV0Y2giLCJOYXRpdmVSZXF1ZXN0IiwiSGVhZGVycyIsIlJlcXVlc3RQcm90b3R5cGUiLCJIZWFkZXJzUHJvdG90eXBlIiwiJHBhcnNlSW50Iiwic2hpZnQiLCJwbHVzIiwiVkFMSURfSEVYIiwicGFyc2VIZXhPY3RldCIsIk5hTiIsImdldExlYWRpbmdPbmVzIiwib2N0ZXQiLCJjb3VudCIsIm1hc2siLCJ1dGY4RGVjb2RlIiwib2N0ZXRzIiwiY29kZVBvaW50IiwiZGVjb2RlZENoYXIiLCJieXRlU2VxdWVuY2VMZW5ndGgiLCJzZXF1ZW5jZUluZGV4IiwibmV4dEJ5dGUiLCJyZXBsYWNlbWVudHMiLCJzZXJpYWxpemUiLCJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIsIlVSTFNlYXJjaFBhcmFtc1N0YXRlIiwicGFyc2VPYmplY3QiLCJwYXJzZVF1ZXJ5IiwiYmluZFVSTCIsInVwZGF0ZSIsImVudHJ5SXRlcmF0b3IiLCJlbnRyeU5leHQiLCJxdWVyeSIsImF0dHJpYnV0ZSIsImF0dHJpYnV0ZXMiLCJ1cGRhdGVVUkwiLCJVUkxTZWFyY2hQYXJhbXNDb25zdHJ1Y3RvciIsIlVSTFNlYXJjaFBhcmFtc1Byb3RvdHlwZSIsImFwcGVuZCIsIiR2YWx1ZSIsImZvdW5kIiwiYm91bmRGdW5jdGlvbiIsImhlYWRlcnNIYXMiLCJoZWFkZXJzU2V0Iiwid3JhcFJlcXVlc3RPcHRpb25zIiwiaGVhZGVycyIsImJvZHkiLCJmZXRjaCIsIlJlcXVlc3RDb25zdHJ1Y3RvciIsIlJlcXVlc3QiLCIkVVJMU2VhcmNoUGFyYW1zIiwiJGRlbGV0ZSIsImRpbmRleCIsImVudHJpZXNMZW5ndGgiLCIkaGFzIiwiVEhST1dTX1dJVEhPVVRfQVJHVU1FTlRTIiwiY2FuUGFyc2UiLCJXUk9OR19BUklUWSIsInVybFN0cmluZyIsIkVPRiIsImFycmF5RnJvbSIsInRvQVNDSUkiLCJVUkxTZWFyY2hQYXJhbXNNb2R1bGUiLCJnZXRJbnRlcm5hbFVSTFN0YXRlIiwiZ2V0SW50ZXJuYWxTZWFyY2hQYXJhbXNTdGF0ZSIsIk5hdGl2ZVVSTCIsIm51bWJlclRvU3RyaW5nIiwiSU5WQUxJRF9TQ0hFTUUiLCJJTlZBTElEX0hPU1QiLCJJTlZBTElEX1BPUlQiLCJBTFBIQSIsIkFMUEhBTlVNRVJJQyIsIkRJR0lUIiwiSEVYX1NUQVJUIiwiT0NUIiwiREVDIiwiSEVYIiwiRk9SQklEREVOX0hPU1RfQ09ERV9QT0lOVCIsIkZPUkJJRERFTl9IT1NUX0NPREVfUE9JTlRfRVhDTFVESU5HX1BFUkNFTlQiLCJMRUFESU5HX0MwX0NPTlRST0xfT1JfU1BBQ0UiLCJUUkFJTElOR19DMF9DT05UUk9MX09SX1NQQUNFIiwiVEFCX0FORF9ORVdfTElORSIsInNlcmlhbGl6ZUhvc3QiLCJjb21wcmVzcyIsImlnbm9yZTAiLCJpcHY2IiwibWF4SW5kZXgiLCJtYXhMZW5ndGgiLCJjdXJyU3RhcnQiLCJjdXJyTGVuZ3RoIiwiZmluZExvbmdlc3RaZXJvU2VxdWVuY2UiLCJDMENvbnRyb2xQZXJjZW50RW5jb2RlU2V0IiwiZnJhZ21lbnRQZXJjZW50RW5jb2RlU2V0IiwicGF0aFBlcmNlbnRFbmNvZGVTZXQiLCJ1c2VyaW5mb1BlcmNlbnRFbmNvZGVTZXQiLCJwZXJjZW50RW5jb2RlIiwic3BlY2lhbFNjaGVtZXMiLCJmdHAiLCJmaWxlIiwiaHR0cCIsImh0dHBzIiwid3MiLCJ3c3MiLCJpc1dpbmRvd3NEcml2ZUxldHRlciIsInN0YXJ0c1dpdGhXaW5kb3dzRHJpdmVMZXR0ZXIiLCJ0aGlyZCIsImlzU2luZ2xlRG90Iiwic2VnbWVudCIsIlNDSEVNRV9TVEFSVCIsIlNDSEVNRSIsIk5PX1NDSEVNRSIsIlNQRUNJQUxfUkVMQVRJVkVfT1JfQVVUSE9SSVRZIiwiUEFUSF9PUl9BVVRIT1JJVFkiLCJSRUxBVElWRSIsIlJFTEFUSVZFX1NMQVNIIiwiU1BFQ0lBTF9BVVRIT1JJVFlfU0xBU0hFUyIsIlNQRUNJQUxfQVVUSE9SSVRZX0lHTk9SRV9TTEFTSEVTIiwiQVVUSE9SSVRZIiwiSE9TVCIsIkhPU1ROQU1FIiwiUE9SVCIsIkZJTEUiLCJGSUxFX1NMQVNIIiwiRklMRV9IT1NUIiwiUEFUSF9TVEFSVCIsIlBBVEgiLCJDQU5OT1RfQkVfQV9CQVNFX1VSTF9QQVRIIiwiUVVFUlkiLCJGUkFHTUVOVCIsIlVSTFN0YXRlIiwiaXNCYXNlIiwiYmFzZVN0YXRlIiwiZmFpbHVyZSIsInN0YXRlT3ZlcnJpZGUiLCJjb2RlUG9pbnRzIiwiYnVmZmVyQ29kZVBvaW50cyIsInBvaW50ZXIiLCJidWZmZXIiLCJzZWVuQXQiLCJzZWVuQnJhY2tldCIsInNlZW5QYXNzd29yZFRva2VuIiwic2NoZW1lIiwicGFzc3dvcmQiLCJmcmFnbWVudCIsImNhbm5vdEJlQUJhc2VVUkwiLCJpc1NwZWNpYWwiLCJpbmNsdWRlc0NyZWRlbnRpYWxzIiwiZW5jb2RlZENvZGVQb2ludHMiLCJwYXJzZUhvc3QiLCJzaG9ydGVuUGF0aCIsIm51bWJlcnNTZWVuIiwiaXB2NFBpZWNlIiwic3dhcHMiLCJzd2FwIiwiYWRkcmVzcyIsInBpZWNlSW5kZXgiLCJwYXJzZUlQdjYiLCJwYXJ0c0xlbmd0aCIsIm51bWJlcnMiLCJwYXJ0IiwicmFkaXgiLCJpcHY0IiwicGFydHMiLCJwYXJzZUlQdjQiLCJjYW5ub3RIYXZlVXNlcm5hbWVQYXNzd29yZFBvcnQiLCJwYXRoU2l6ZSIsInNldEhyZWYiLCJnZXRPcmlnaW4iLCJVUkxDb25zdHJ1Y3RvciIsImdldFByb3RvY29sIiwic2V0UHJvdG9jb2wiLCJnZXRVc2VybmFtZSIsInNldFVzZXJuYW1lIiwiZ2V0UGFzc3dvcmQiLCJzZXRQYXNzd29yZCIsImdldEhvc3QiLCJzZXRIb3N0IiwiZ2V0SG9zdG5hbWUiLCJzZXRIb3N0bmFtZSIsImhvc3RuYW1lIiwiZ2V0UG9ydCIsInNldFBvcnQiLCJnZXRQYXRobmFtZSIsInNldFBhdGhuYW1lIiwiZ2V0U2VhcmNoIiwic2V0U2VhcmNoIiwiZ2V0U2VhcmNoUGFyYW1zIiwiZ2V0SGFzaCIsInNldEhhc2giLCJVUkxQcm90b3R5cGUiLCJhY2Nlc3NvckRlc2NyaXB0b3IiLCJuYXRpdmVDcmVhdGVPYmplY3RVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJuYXRpdmVSZXZva2VPYmplY3RVUkwiLCJyZXZva2VPYmplY3RVUkwiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZGVmaW5pdGlvbiJdLCJzb3VyY2VSb290IjoiIn0=