@asgardeo/auth-spa 0.4.1 → 0.4.2

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.
@@ -1,2 +1,2 @@
1
- var AsgardeoAuth=function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function r(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})})),e}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){m(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof h?e:h,c=Object.create(i.prototype),a=new v(r||[]);return c._invoke=function(t,e,n){var r="suspendedStart";return function(i,c){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw c;return S()}for(n.method=i,n.arg=c;;){var a=n.delegate;if(a){var o=G(a,n);if(o){if(o===d)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(t,e,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(t,n,a),c}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var d={};function h(){}function m(){}function p(){}var b={};l(b,i,(function(){return this}));var Z=Object.getPrototypeOf,y=Z&&Z(Z(g([])));y&&y!==e&&n.call(y,i)&&(b=y);var X=p.prototype=h.prototype=Object.create(b);function f(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(i,c,a,o){var l=s(t[i],t,c);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?e.resolve(d.__await).then((function(t){r("next",t,a,o)}),(function(t){r("throw",t,a,o)})):e.resolve(d).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,o)}))}o(l.arg)}var i;this._invoke=function(t,n){function c(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(c,c):c()}}function G(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,G(t,e),"throw"===e.method))return d;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var r=s(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,d;var i=r.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function W(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function v(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function g(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,c=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return c.next=c}}return{next:S}}function S(){return{value:void 0,done:!0}}return m.prototype=p,l(X,"constructor",p),l(p,"constructor",m),m.displayName=l(p,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,l(t,o,"GeneratorFunction")),t.prototype=Object.create(X),t},t.awrap=function(t){return{__await:t}},f(I.prototype),l(I.prototype,c,(function(){return this})),t.AsyncIterator=I,t.async=function(e,n,r,i,c){void 0===c&&(c=Promise);var a=new I(u(e,n,r,i),c);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},f(X),l(X,o,"Generator"),l(X,i,(function(){return this})),l(X,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=g,v.prototype={constructor:v,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var c=this.tryEntries[i],a=c.completion;if("root"===c.tryLoc)return r("end");if(c.tryLoc<=this.prev){var o=n.call(c,"catchLoc"),l=n.call(c,"finallyLoc");if(o&&l){if(this.prev<c.catchLoc)return r(c.catchLoc,!0);if(this.prev<c.finallyLoc)return r(c.finallyLoc)}else if(o){if(this.prev<c.catchLoc)return r(c.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return r(c.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var c=i;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var a=c?c.completion:{};return a.type=t,a.arg=e,c?(this.method="next",this.next=c.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),W(n),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:g(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},t}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function l(t,e,n,r,i,c,a){try{var o=t[c](a),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(r,i)}function u(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var c=t.apply(e,n);function a(t){l(c,r,i,a,o,"next",t)}function o(t){l(c,r,i,a,o,"throw",t)}a(void 0)}))}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function h(t,e,n){return e&&d(t.prototype,e),n&&d(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function m(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function p(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Z(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}function Z(t,e){return Z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Z(t,e)}function y(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function X(t,e,n){return X=y()?Reflect.construct.bind():function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&Z(i,n.prototype),i},X.apply(null,arguments)}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return X(t,arguments,b(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Z(r,t)},f(t)}function I(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function G(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return I(t)}function V(t){var e=y();return function(){var n,r=b(t);if(e){var i=b(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return G(this,n)}}function W(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,i,c=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(c.push(r.value),!e||c.length!==e);a=!0);}catch(t){o=!0,i=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return c}(t,e)||g(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){return function(t){if(Array.isArray(t))return S(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||g(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(t,e){if(t){if("string"==typeof t)return S(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(t,e):void 0}}function S(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Y(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=g(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,c=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var R=function(t){return t&&t.Math==Math&&t},K=R("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||R("object"==("undefined"==typeof window?"undefined":o(window))&&window)||R("object"==("undefined"==typeof self?"undefined":o(self))&&self)||R("object"==o(e)&&e)||function(){return this}()||Function("return this")(),L={},J=function(t){try{return!!t()}catch(t){return!0}},N=!J((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),x=!J((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),H=x,k=Function.prototype.call,C=H?k.bind(k):function(){return k.apply(k,arguments)},U={},T={}.propertyIsEnumerable,w=Object.getOwnPropertyDescriptor,F=w&&!T.call({1:2},1);U.f=F?function(t){var e=w(this,t);return!!e&&e.enumerable}:T;var M,j,z=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},P=x,B=Function.prototype,Q=B.bind,D=B.call,E=P&&Q.bind(D,D),O=P?function(t){return t&&E(t)}:function(t){return t&&function(){return D.apply(t,arguments)}},A=O,_=A({}.toString),q=A("".slice),$=function(t){return q(_(t),8,-1)},tt=J,et=$,nt=Object,rt=O("".split),it=tt((function(){return!nt("z").propertyIsEnumerable(0)}))?function(t){return"String"==et(t)?rt(t,""):nt(t)}:nt,ct=TypeError,at=function(t){if(null==t)throw ct("Can't call method on "+t);return t},ot=it,lt=at,ut=function(t){return ot(lt(t))},st=function(t){return"function"==typeof t},dt=st,ht=function(t){return"object"==o(t)?null!==t:dt(t)},mt=K,pt=st,bt=function(t){return pt(t)?t:void 0},Zt=function(t,e){return arguments.length<2?bt(mt[t]):mt[t]&&mt[t][e]},yt=O({}.isPrototypeOf),Xt=Zt("navigator","userAgent")||"",ft=K,It=Xt,Gt=ft.process,Vt=ft.Deno,Wt=Gt&&Gt.versions||Vt&&Vt.version,vt=Wt&&Wt.v8;vt&&(j=(M=vt.split("."))[0]>0&&M[0]<4?1:+(M[0]+M[1])),!j&&It&&(!(M=It.match(/Edge\/(\d+)/))||M[1]>=74)&&(M=It.match(/Chrome\/(\d+)/))&&(j=+M[1]);var gt=j,St=gt,Yt=J,Rt=!!Object.getOwnPropertySymbols&&!Yt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&St&&St<41})),Kt=Rt&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Lt=Zt,Jt=st,Nt=yt,xt=Object,Ht=Kt?function(t){return"symbol"==o(t)}:function(t){var e=Lt("Symbol");return Jt(e)&&Nt(e.prototype,xt(t))},kt=String,Ct=function(t){try{return kt(t)}catch(t){return"Object"}},Ut=st,Tt=Ct,wt=TypeError,Ft=function(t){if(Ut(t))return t;throw wt(Tt(t)+" is not a function")},Mt=Ft,jt=function(t,e){var n=t[e];return null==n?void 0:Mt(n)},zt=C,Pt=st,Bt=ht,Qt=TypeError,Dt=function(t,e){var n,r;if("string"===e&&Pt(n=t.toString)&&!Bt(r=zt(n,t)))return r;if(Pt(n=t.valueOf)&&!Bt(r=zt(n,t)))return r;if("string"!==e&&Pt(n=t.toString)&&!Bt(r=zt(n,t)))return r;throw Qt("Can't convert object to primitive value")},Et={exports:{}},Ot=K,At=Object.defineProperty,_t=function(t,e){try{At(Ot,t,{value:e,configurable:!0,writable:!0})}catch(n){Ot[t]=e}return e},qt=_t,$t="__core-js_shared__",te=K[$t]||qt($t,{}),ee=te;(Et.exports=function(t,e){return ee[t]||(ee[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.8",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.8/LICENSE",source:"https://github.com/zloirock/core-js"});var ne=at,re=Object,ie=function(t){return re(ne(t))},ce=ie,ae=O({}.hasOwnProperty),oe=Object.hasOwn||function(t,e){return ae(ce(t),e)},le=O,ue=0,se=Math.random(),de=le(1..toString),he=function(t){return"Symbol("+(void 0===t?"":t)+")_"+de(++ue+se,36)},me=K,pe=Et.exports,be=oe,Ze=he,ye=Rt,Xe=Kt,fe=pe("wks"),Ie=me.Symbol,Ge=Ie&&Ie.for,Ve=Xe?Ie:Ie&&Ie.withoutSetter||Ze,We=function(t){if(!be(fe,t)||!ye&&"string"!=typeof fe[t]){var e="Symbol."+t;ye&&be(Ie,t)?fe[t]=Ie[t]:fe[t]=Xe&&Ge?Ge(e):Ve(e)}return fe[t]},ve=C,ge=ht,Se=Ht,Ye=jt,Re=Dt,Ke=TypeError,Le=We("toPrimitive"),Je=function(t,e){if(!ge(t)||Se(t))return t;var n,r=Ye(t,Le);if(r){if(void 0===e&&(e="default"),n=ve(r,t,e),!ge(n)||Se(n))return n;throw Ke("Can't convert object to primitive value")}return void 0===e&&(e="number"),Re(t,e)},Ne=Je,xe=Ht,He=function(t){var e=Ne(t,"string");return xe(e)?e:e+""},ke=ht,Ce=K.document,Ue=ke(Ce)&&ke(Ce.createElement),Te=function(t){return Ue?Ce.createElement(t):{}},we=Te,Fe=!N&&!J((function(){return 7!=Object.defineProperty(we("div"),"a",{get:function(){return 7}}).a})),Me=N,je=C,ze=U,Pe=z,Be=ut,Qe=He,De=oe,Ee=Fe,Oe=Object.getOwnPropertyDescriptor;L.f=Me?Oe:function(t,e){if(t=Be(t),e=Qe(e),Ee)try{return Oe(t,e)}catch(t){}if(De(t,e))return Pe(!je(ze.f,t,e),t[e])};var Ae={},_e=N&&J((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),qe=ht,$e=String,tn=TypeError,en=function(t){if(qe(t))return t;throw tn($e(t)+" is not an object")},nn=N,rn=Fe,cn=_e,an=en,on=He,ln=TypeError,un=Object.defineProperty,sn=Object.getOwnPropertyDescriptor,dn="enumerable",hn="configurable",mn="writable";Ae.f=nn?cn?function(t,e,n){if(an(t),e=on(e),an(n),"function"==typeof t&&"prototype"===e&&"value"in n&&mn in n&&!n.writable){var r=sn(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:hn in n?n.configurable:r.configurable,enumerable:dn in n?n.enumerable:r.enumerable,writable:!1})}return un(t,e,n)}:un:function(t,e,n){if(an(t),e=on(e),an(n),rn)try{return un(t,e,n)}catch(t){}if("get"in n||"set"in n)throw ln("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var pn=Ae,bn=z,Zn=N?function(t,e,n){return pn.f(t,e,bn(1,n))}:function(t,e,n){return t[e]=n,t},yn={exports:{}},Xn=N,fn=oe,In=Function.prototype,Gn=Xn&&Object.getOwnPropertyDescriptor,Vn=fn(In,"name"),Wn={EXISTS:Vn,PROPER:Vn&&"something"===function(){}.name,CONFIGURABLE:Vn&&(!Xn||Xn&&Gn(In,"name").configurable)},vn=st,gn=te,Sn=O(Function.toString);vn(gn.inspectSource)||(gn.inspectSource=function(t){return Sn(t)});var Yn,Rn,Kn,Ln=gn.inspectSource,Jn=st,Nn=Ln,xn=K.WeakMap,Hn=Jn(xn)&&/native code/.test(Nn(xn)),kn=Et.exports,Cn=he,Un=kn("keys"),Tn=function(t){return Un[t]||(Un[t]=Cn(t))},wn={},Fn=Hn,Mn=K,jn=O,zn=ht,Pn=Zn,Bn=oe,Qn=te,Dn=Tn,En=wn,On="Object already initialized",An=Mn.TypeError,_n=Mn.WeakMap;if(Fn||Qn.state){var qn=Qn.state||(Qn.state=new _n),$n=jn(qn.get),tr=jn(qn.has),er=jn(qn.set);Yn=function(t,e){if(tr(qn,t))throw new An(On);return e.facade=t,er(qn,t,e),e},Rn=function(t){return $n(qn,t)||{}},Kn=function(t){return tr(qn,t)}}else{var nr=Dn("state");En[nr]=!0,Yn=function(t,e){if(Bn(t,nr))throw new An(On);return e.facade=t,Pn(t,nr,e),e},Rn=function(t){return Bn(t,nr)?t[nr]:{}},Kn=function(t){return Bn(t,nr)}}var rr={set:Yn,get:Rn,has:Kn,enforce:function(t){return Kn(t)?Rn(t):Yn(t,{})},getterFor:function(t){return function(e){var n;if(!zn(e)||(n=Rn(e)).type!==t)throw An("Incompatible receiver, "+t+" required");return n}}},ir=J,cr=st,ar=oe,or=N,lr=Wn.CONFIGURABLE,ur=Ln,sr=rr.enforce,dr=rr.get,hr=Object.defineProperty,mr=or&&!ir((function(){return 8!==hr((function(){}),"length",{value:8}).length})),pr=String(String).split("String"),br=yn.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!ar(t,"name")||lr&&t.name!==e)&&hr(t,"name",{value:e,configurable:!0}),mr&&n&&ar(n,"arity")&&t.length!==n.arity&&hr(t,"length",{value:n.arity});try{n&&ar(n,"constructor")&&n.constructor?or&&hr(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var r=sr(t);return ar(r,"source")||(r.source=pr.join("string"==typeof e?e:"")),t};Function.prototype.toString=br((function(){return cr(this)&&dr(this).source||ur(this)}),"toString");var Zr=st,yr=Zn,Xr=yn.exports,fr=_t,Ir=function(t,e,n,r){r||(r={});var i=r.enumerable,c=void 0!==r.name?r.name:e;return Zr(n)&&Xr(n,c,r),r.global?i?t[e]=n:fr(e,n):(r.unsafe?t[e]&&(i=!0):delete t[e],i?t[e]=n:yr(t,e,n)),t},Gr={},Vr=Math.ceil,Wr=Math.floor,vr=Math.trunc||function(t){var e=+t;return(e>0?Wr:Vr)(e)},gr=vr,Sr=function(t){var e=+t;return e!=e||0===e?0:gr(e)},Yr=Sr,Rr=Math.max,Kr=Math.min,Lr=function(t,e){var n=Yr(t);return n<0?Rr(n+e,0):Kr(n,e)},Jr=Sr,Nr=Math.min,xr=function(t){return t>0?Nr(Jr(t),9007199254740991):0},Hr=xr,kr=function(t){return Hr(t.length)},Cr=ut,Ur=Lr,Tr=kr,wr=function(t){return function(e,n,r){var i,c=Cr(e),a=Tr(c),o=Ur(r,a);if(t&&n!=n){for(;a>o;)if((i=c[o++])!=i)return!0}else for(;a>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Fr={includes:wr(!0),indexOf:wr(!1)},Mr=oe,jr=ut,zr=Fr.indexOf,Pr=wn,Br=O([].push),Qr=function(t,e){var n,r=jr(t),i=0,c=[];for(n in r)!Mr(Pr,n)&&Mr(r,n)&&Br(c,n);for(;e.length>i;)Mr(r,n=e[i++])&&(~zr(c,n)||Br(c,n));return c},Dr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Er=Qr,Or=Dr.concat("length","prototype");Gr.f=Object.getOwnPropertyNames||function(t){return Er(t,Or)};var Ar={};Ar.f=Object.getOwnPropertySymbols;var _r=Zt,qr=Gr,$r=Ar,ti=en,ei=O([].concat),ni=_r("Reflect","ownKeys")||function(t){var e=qr.f(ti(t)),n=$r.f;return n?ei(e,n(t)):e},ri=oe,ii=ni,ci=L,ai=Ae,oi=function(t,e,n){for(var r=ii(e),i=ai.f,c=ci.f,a=0;a<r.length;a++){var o=r[a];ri(t,o)||n&&ri(n,o)||i(t,o,c(e,o))}},li=J,ui=st,si=/#|\.prototype\./,di=function(t,e){var n=mi[hi(t)];return n==bi||n!=pi&&(ui(e)?li(e):!!e)},hi=di.normalize=function(t){return String(t).replace(si,".").toLowerCase()},mi=di.data={},pi=di.NATIVE="N",bi=di.POLYFILL="P",Zi=di,yi=K,Xi=L.f,fi=Zn,Ii=Ir,Gi=_t,Vi=oi,Wi=Zi,vi=function(t,e){var n,r,i,c,a,l=t.target,u=t.global,s=t.stat;if(n=u?yi:s?yi[l]||Gi(l,{}):(yi[l]||{}).prototype)for(r in e){if(c=e[r],i=t.dontCallGetSet?(a=Xi(n,r))&&a.value:n[r],!Wi(u?r:l+(s?".":"#")+r,t.forced)&&void 0!==i){if(o(c)==o(i))continue;Vi(c,i)}(t.sham||i&&i.sham)&&fi(c,"sham",!0),Ii(n,r,c,t)}},gi={};gi[We("toStringTag")]="z";var Si="[object z]"===String(gi),Yi=Si,Ri=st,Ki=$,Li=We("toStringTag"),Ji=Object,Ni="Arguments"==Ki(function(){return arguments}()),xi=Yi?Ki:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Ji(t),Li))?n:Ni?Ki(e):"Object"==(r=Ki(e))&&Ri(e.callee)?"Arguments":r},Hi=xi,ki=String,Ci=function(t){if("Symbol"===Hi(t))throw TypeError("Cannot convert a Symbol value to a string");return ki(t)},Ui={},Ti=Qr,wi=Dr,Fi=Object.keys||function(t){return Ti(t,wi)},Mi=N,ji=_e,zi=Ae,Pi=en,Bi=ut,Qi=Fi;Ui.f=Mi&&!ji?Object.defineProperties:function(t,e){Pi(t);for(var n,r=Bi(e),i=Qi(e),c=i.length,a=0;c>a;)zi.f(t,n=i[a++],r[n]);return t};var Di,Ei=Zt("document","documentElement"),Oi=en,Ai=Ui,_i=Dr,qi=wn,$i=Ei,tc=Te,ec=Tn("IE_PROTO"),nc=function(){},rc=function(t){return"<script>"+t+"</"+"script>"},ic=function(t){t.write(rc("")),t.close();var e=t.parentWindow.Object;return t=null,e},cc=function(){try{Di=new ActiveXObject("htmlfile")}catch(t){}var t,e;cc="undefined"!=typeof document?document.domain&&Di?ic(Di):((e=tc("iframe")).style.display="none",$i.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(rc("document.F=Object")),t.close(),t.F):ic(Di);for(var n=_i.length;n--;)delete cc.prototype[_i[n]];return cc()};qi[ec]=!0;var ac=Object.create||function(t,e){var n;return null!==t?(nc.prototype=Oi(t),n=new nc,nc.prototype=null,n[ec]=t):n=cc(),void 0===e?n:Ai.f(n,e)},oc={},lc=He,uc=Ae,sc=z,dc=function(t,e,n){var r=lc(e);r in t?uc.f(t,r,sc(0,n)):t[r]=n},hc=Lr,mc=kr,pc=dc,bc=Array,Zc=Math.max,yc=function(t,e,n){for(var r=mc(t),i=hc(e,r),c=hc(void 0===n?r:n,r),a=bc(Zc(c-i,0)),o=0;i<c;i++,o++)pc(a,o,t[i]);return a.length=o,a},Xc=$,fc=ut,Ic=Gr.f,Gc=yc,Vc="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];oc.f=function(t){return Vc&&"Window"==Xc(t)?function(t){try{return Ic(t)}catch(t){return Gc(Vc)}}(t):Ic(fc(t))};var Wc={},vc=We;Wc.f=vc;var gc=K,Sc=oe,Yc=Wc,Rc=Ae.f,Kc=function(t){var e=gc.Symbol||(gc.Symbol={});Sc(e,t)||Rc(e,t,{value:Yc.f(t)})},Lc=C,Jc=Zt,Nc=We,xc=Ir,Hc=function(){var t=Jc("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,r=Nc("toPrimitive");e&&!e[r]&&xc(e,r,(function(t){return Lc(n,this)}),{arity:1})},kc=Ae.f,Cc=oe,Uc=We("toStringTag"),Tc=function(t,e,n){t&&!n&&(t=t.prototype),t&&!Cc(t,Uc)&&kc(t,Uc,{configurable:!0,value:e})},wc=Ft,Fc=x,Mc=O(O.bind),jc=function(t,e){return wc(t),void 0===e?t:Fc?Mc(t,e):function(){return t.apply(e,arguments)}},zc=$,Pc=Array.isArray||function(t){return"Array"==zc(t)},Bc=O,Qc=J,Dc=st,Ec=xi,Oc=Ln,Ac=function(){},_c=[],qc=Zt("Reflect","construct"),$c=/^\s*(?:class|function)\b/,ta=Bc($c.exec),ea=!$c.exec(Ac),na=function(t){if(!Dc(t))return!1;try{return qc(Ac,_c,t),!0}catch(t){return!1}},ra=function(t){if(!Dc(t))return!1;switch(Ec(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ea||!!ta($c,Oc(t))}catch(t){return!0}};ra.sham=!0;var ia=!qc||Qc((function(){var t;return na(na.call)||!na(Object)||!na((function(){t=!0}))||t}))?ra:na,ca=Pc,aa=ia,oa=ht,la=We("species"),ua=Array,sa=function(t){var e;return ca(t)&&(e=t.constructor,(aa(e)&&(e===ua||ca(e.prototype))||oa(e)&&null===(e=e[la]))&&(e=void 0)),void 0===e?ua:e},da=function(t,e){return new(sa(t))(0===e?0:e)},ha=jc,ma=it,pa=ie,ba=kr,Za=da,ya=O([].push),Xa=function(t){var e=1==t,n=2==t,r=3==t,i=4==t,c=6==t,a=7==t,o=5==t||c;return function(l,u,s,d){for(var h,m,p=pa(l),b=ma(p),Z=ha(u,s),y=ba(b),X=0,f=d||Za,I=e?f(l,y):n||a?f(l,0):void 0;y>X;X++)if((o||X in b)&&(m=Z(h=b[X],X,p),t))if(e)I[X]=m;else if(m)switch(t){case 3:return!0;case 5:return h;case 6:return X;case 2:ya(I,h)}else switch(t){case 4:return!1;case 7:ya(I,h)}return c?-1:r||i?i:I}},fa={forEach:Xa(0),map:Xa(1),filter:Xa(2),some:Xa(3),every:Xa(4),find:Xa(5),findIndex:Xa(6),filterReject:Xa(7)},Ia=vi,Ga=K,Va=C,Wa=O,va=N,ga=Rt,Sa=J,Ya=oe,Ra=yt,Ka=en,La=ut,Ja=He,Na=Ci,xa=z,Ha=ac,ka=Fi,Ca=Gr,Ua=oc,Ta=Ar,wa=L,Fa=Ae,Ma=Ui,ja=U,za=Ir,Pa=Et.exports,Ba=wn,Qa=he,Da=We,Ea=Wc,Oa=Kc,Aa=Hc,_a=Tc,qa=rr,$a=fa.forEach,to=Tn("hidden"),eo="Symbol",no=qa.set,ro=qa.getterFor(eo),io=Object.prototype,co=Ga.Symbol,ao=co&&co.prototype,oo=Ga.TypeError,lo=Ga.QObject,uo=wa.f,so=Fa.f,ho=Ua.f,mo=ja.f,po=Wa([].push),bo=Pa("symbols"),Zo=Pa("op-symbols"),yo=Pa("wks"),Xo=!lo||!lo.prototype||!lo.prototype.findChild,fo=va&&Sa((function(){return 7!=Ha(so({},"a",{get:function(){return so(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=uo(io,e);r&&delete io[e],so(t,e,n),r&&t!==io&&so(io,e,r)}:so,Io=function(t,e){var n=bo[t]=Ha(ao);return no(n,{type:eo,tag:t,description:e}),va||(n.description=e),n},Go=function(t,e,n){t===io&&Go(Zo,e,n),Ka(t);var r=Ja(e);return Ka(n),Ya(bo,r)?(n.enumerable?(Ya(t,to)&&t[to][r]&&(t[to][r]=!1),n=Ha(n,{enumerable:xa(0,!1)})):(Ya(t,to)||so(t,to,xa(1,{})),t[to][r]=!0),fo(t,r,n)):so(t,r,n)},Vo=function(t,e){Ka(t);var n=La(e),r=ka(n).concat(So(n));return $a(r,(function(e){va&&!Va(Wo,n,e)||Go(t,e,n[e])})),t},Wo=function(t){var e=Ja(t),n=Va(mo,this,e);return!(this===io&&Ya(bo,e)&&!Ya(Zo,e))&&(!(n||!Ya(this,e)||!Ya(bo,e)||Ya(this,to)&&this[to][e])||n)},vo=function(t,e){var n=La(t),r=Ja(e);if(n!==io||!Ya(bo,r)||Ya(Zo,r)){var i=uo(n,r);return!i||!Ya(bo,r)||Ya(n,to)&&n[to][r]||(i.enumerable=!0),i}},go=function(t){var e=ho(La(t)),n=[];return $a(e,(function(t){Ya(bo,t)||Ya(Ba,t)||po(n,t)})),n},So=function(t){var e=t===io,n=ho(e?Zo:La(t)),r=[];return $a(n,(function(t){!Ya(bo,t)||e&&!Ya(io,t)||po(r,bo[t])})),r};ga||(co=function(){if(Ra(ao,this))throw oo("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Na(arguments[0]):void 0,e=Qa(t),n=function t(n){this===io&&Va(t,Zo,n),Ya(this,to)&&Ya(this[to],e)&&(this[to][e]=!1),fo(this,e,xa(1,n))};return va&&Xo&&fo(io,e,{configurable:!0,set:n}),Io(e,t)},za(ao=co.prototype,"toString",(function(){return ro(this).tag})),za(co,"withoutSetter",(function(t){return Io(Qa(t),t)})),ja.f=Wo,Fa.f=Go,Ma.f=Vo,wa.f=vo,Ca.f=Ua.f=go,Ta.f=So,Ea.f=function(t){return Io(Da(t),t)},va&&(so(ao,"description",{configurable:!0,get:function(){return ro(this).description}}),za(io,"propertyIsEnumerable",Wo,{unsafe:!0}))),Ia({global:!0,constructor:!0,wrap:!0,forced:!ga,sham:!ga},{Symbol:co}),$a(ka(yo),(function(t){Oa(t)})),Ia({target:eo,stat:!0,forced:!ga},{useSetter:function(){Xo=!0},useSimple:function(){Xo=!1}}),Ia({target:"Object",stat:!0,forced:!ga,sham:!va},{create:function(t,e){return void 0===e?Ha(t):Vo(Ha(t),e)},defineProperty:Go,defineProperties:Vo,getOwnPropertyDescriptor:vo}),Ia({target:"Object",stat:!0,forced:!ga},{getOwnPropertyNames:go}),Aa(),_a(co,eo),Ba[to]=!0;var Yo=Rt&&!!Symbol.for&&!!Symbol.keyFor,Ro=vi,Ko=Zt,Lo=oe,Jo=Ci,No=Et.exports,xo=Yo,Ho=No("string-to-symbol-registry"),ko=No("symbol-to-string-registry");Ro({target:"Symbol",stat:!0,forced:!xo},{for:function(t){var e=Jo(t);if(Lo(Ho,e))return Ho[e];var n=Ko("Symbol")(e);return Ho[e]=n,ko[n]=e,n}});var Co=vi,Uo=oe,To=Ht,wo=Ct,Fo=Yo,Mo=(0,Et.exports)("symbol-to-string-registry");Co({target:"Symbol",stat:!0,forced:!Fo},{keyFor:function(t){if(!To(t))throw TypeError(wo(t)+" is not a symbol");if(Uo(Mo,t))return Mo[t]}});var jo=x,zo=Function.prototype,Po=zo.apply,Bo=zo.call,Qo="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(jo?Bo.bind(Po):function(){return Bo.apply(Po,arguments)}),Do=O([].slice),Eo=vi,Oo=Zt,Ao=Qo,_o=C,qo=O,$o=J,tl=Pc,el=st,nl=ht,rl=Ht,il=Do,cl=Rt,al=Oo("JSON","stringify"),ol=qo(/./.exec),ll=qo("".charAt),ul=qo("".charCodeAt),sl=qo("".replace),dl=qo(1..toString),hl=/[\uD800-\uDFFF]/g,ml=/^[\uD800-\uDBFF]$/,pl=/^[\uDC00-\uDFFF]$/,bl=!cl||$o((function(){var t=Oo("Symbol")();return"[null]"!=al([t])||"{}"!=al({a:t})||"{}"!=al(Object(t))})),Zl=$o((function(){return'"\\udf06\\ud834"'!==al("\udf06\ud834")||'"\\udead"'!==al("\udead")})),yl=function(t,e){var n=il(arguments),r=e;if((nl(e)||void 0!==t)&&!rl(t))return tl(e)||(e=function(t,e){if(el(r)&&(e=_o(r,this,t,e)),!rl(e))return e}),n[1]=e,Ao(al,null,n)},Xl=function(t,e,n){var r=ll(n,e-1),i=ll(n,e+1);return ol(ml,t)&&!ol(pl,i)||ol(pl,t)&&!ol(ml,r)?"\\u"+dl(ul(t,0),16):t};al&&Eo({target:"JSON",stat:!0,arity:3,forced:bl||Zl},{stringify:function(t,e,n){var r=il(arguments),i=Ao(bl?yl:al,null,r);return Zl&&"string"==typeof i?sl(i,hl,Xl):i}});var fl=Ar,Il=ie;vi({target:"Object",stat:!0,forced:!Rt||J((function(){fl.f(1)}))},{getOwnPropertySymbols:function(t){var e=fl.f;return e?e(Il(t)):[]}});var Gl=vi,Vl=N,Wl=K,vl=O,gl=oe,Sl=st,Yl=yt,Rl=Ci,Kl=Ae.f,Ll=oi,Jl=Wl.Symbol,Nl=Jl&&Jl.prototype;if(Vl&&Sl(Jl)&&(!("description"in Nl)||void 0!==Jl().description)){var xl={},Hl=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Rl(arguments[0]),e=Yl(Nl,this)?new Jl(t):void 0===t?Jl():Jl(t);return""===t&&(xl[e]=!0),e};Ll(Hl,Jl),Hl.prototype=Nl,Nl.constructor=Hl;var kl="Symbol(test)"==String(Jl("test")),Cl=vl(Nl.toString),Ul=vl(Nl.valueOf),Tl=/^Symbol\((.*)\)[^)]+$/,wl=vl("".replace),Fl=vl("".slice);Kl(Nl,"description",{configurable:!0,get:function(){var t=Ul(this),e=Cl(t);if(gl(xl,t))return"";var n=kl?Fl(e,7,-1):wl(e,Tl,"$1");return""===n?void 0:n}}),Gl({global:!0,constructor:!0,forced:!0},{Symbol:Hl})}Kc("asyncIterator"),Kc("hasInstance"),Kc("isConcatSpreadable"),Kc("iterator"),Kc("match"),Kc("matchAll"),Kc("replace"),Kc("search"),Kc("species"),Kc("split");var Ml=Hc;Kc("toPrimitive"),Ml();var jl=Zt,zl=Tc;Kc("toStringTag"),zl(jl("Symbol"),"Symbol"),Kc("unscopables");var Pl=TypeError,Bl=function(t){if(t>9007199254740991)throw Pl("Maximum allowed index exceeded");return t},Ql=J,Dl=gt,El=We("species"),Ol=function(t){return Dl>=51||!Ql((function(){var e=[];return(e.constructor={})[El]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Al=vi,_l=J,ql=Pc,$l=ht,tu=ie,eu=kr,nu=Bl,ru=dc,iu=da,cu=Ol,au=gt,ou=We("isConcatSpreadable"),lu=au>=51||!_l((function(){var t=[];return t[ou]=!1,t.concat()[0]!==t})),uu=cu("concat"),su=function(t){if(!$l(t))return!1;var e=t[ou];return void 0!==e?!!e:ql(t)};Al({target:"Array",proto:!0,arity:1,forced:!lu||!uu},{concat:function(t){var e,n,r,i,c,a=tu(this),o=iu(a,0),l=0;for(e=-1,r=arguments.length;e<r;e++)if(su(c=-1===e?a:arguments[e]))for(i=eu(c),nu(l+i),n=0;n<i;n++,l++)n in c&&ru(o,l,c[n]);else nu(l+1),ru(o,l++,c);return o.length=l,o}});var du=Ct,hu=TypeError,mu=function(t,e){if(!delete t[e])throw hu("Cannot delete property "+du(e)+" of "+du(t))},pu=ie,bu=Lr,Zu=kr,yu=mu,Xu=Math.min,fu=[].copyWithin||function(t,e){var n=pu(this),r=Zu(n),i=bu(t,r),c=bu(e,r),a=arguments.length>2?arguments[2]:void 0,o=Xu((void 0===a?r:bu(a,r))-c,r-i),l=1;for(c<i&&i<c+o&&(l=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:yu(n,i),i+=l,c+=l;return n},Iu=We,Gu=ac,Vu=Ae.f,Wu=Iu("unscopables"),vu=Array.prototype;null==vu[Wu]&&Vu(vu,Wu,{configurable:!0,value:Gu(null)});var gu=function(t){vu[Wu][t]=!0},Su=gu;vi({target:"Array",proto:!0},{copyWithin:fu}),Su("copyWithin");var Yu=ie,Ru=Lr,Ku=kr,Lu=function(t){for(var e=Yu(this),n=Ku(e),r=arguments.length,i=Ru(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:Ru(c,n);a>i;)e[i++]=t;return e},Ju=gu;vi({target:"Array",proto:!0},{fill:Lu}),Ju("fill");var Nu=fa.filter;vi({target:"Array",proto:!0,forced:!Ol("filter")},{filter:function(t){return Nu(this,t,arguments.length>1?arguments[1]:void 0)}});var xu=vi,Hu=fa.find,ku=gu,Cu="find",Uu=!0;Cu in[]&&Array(1).find((function(){Uu=!1})),xu({target:"Array",proto:!0,forced:Uu},{find:function(t){return Hu(this,t,arguments.length>1?arguments[1]:void 0)}}),ku(Cu);var Tu=vi,wu=fa.findIndex,Fu=gu,Mu="findIndex",ju=!0;Mu in[]&&Array(1).findIndex((function(){ju=!1})),Tu({target:"Array",proto:!0,forced:ju},{findIndex:function(t){return wu(this,t,arguments.length>1?arguments[1]:void 0)}}),Fu(Mu);var zu=Pc,Pu=kr,Bu=Bl,Qu=jc,Du=function t(e,n,r,i,c,a,o,l){for(var u,s=c,d=0,h=!!o&&Qu(o,l);d<i;)d in r&&(u=h?h(r[d],d,n):r[d],a>0&&zu(u)?s=t(e,n,u,Pu(u),s,a-1)-1:(Bu(s+1),e[s]=u),s++),d++;return s},Eu=Du,Ou=ie,Au=kr,_u=Sr,qu=da;vi({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=Ou(this),n=Au(e),r=qu(e,0);return r.length=Eu(r,e,e,n,0,void 0===t?1:_u(t)),r}});var $u=Du,ts=Ft,es=ie,ns=kr,rs=da;vi({target:"Array",proto:!0},{flatMap:function(t){var e,n=es(this),r=ns(n);return ts(t),(e=rs(n,0)).length=$u(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var is=C,cs=en,as=jt,os=function(t,e,n){var r,i;cs(t);try{if(!(r=as(t,"return"))){if("throw"===e)throw n;return n}r=is(r,t)}catch(t){i=!0,r=t}if("throw"===e)throw n;if(i)throw r;return cs(r),n},ls=en,us=os,ss={},ds=ss,hs=We("iterator"),ms=Array.prototype,ps=function(t){return void 0!==t&&(ds.Array===t||ms[hs]===t)},bs=xi,Zs=jt,ys=ss,Xs=We("iterator"),fs=function(t){if(null!=t)return Zs(t,Xs)||Zs(t,"@@iterator")||ys[bs(t)]},Is=C,Gs=Ft,Vs=en,Ws=Ct,vs=fs,gs=TypeError,Ss=function(t,e){var n=arguments.length<2?vs(t):e;if(Gs(n))return Vs(Is(n,t));throw gs(Ws(t)+" is not iterable")},Ys=jc,Rs=C,Ks=ie,Ls=function(t,e,n,r){try{return r?e(ls(n)[0],n[1]):e(n)}catch(e){us(t,"throw",e)}},Js=ps,Ns=ia,xs=kr,Hs=dc,ks=Ss,Cs=fs,Us=Array,Ts=function(t){var e=Ks(t),n=Ns(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Ys(i,r>2?arguments[2]:void 0));var a,o,l,u,s,d,h=Cs(e),m=0;if(!h||this===Us&&Js(h))for(a=xs(e),o=n?new this(a):Us(a);a>m;m++)d=c?i(e[m],m):e[m],Hs(o,m,d);else for(s=(u=ks(e,h)).next,o=n?new this:[];!(l=Rs(s,u)).done;m++)d=c?Ls(u,i,[l.value,m],!0):l.value,Hs(o,m,d);return o.length=m,o},ws=We("iterator"),Fs=!1;try{var Ms=0,js={next:function(){return{done:!!Ms++}},return:function(){Fs=!0}};js[ws]=function(){return this},Array.from(js,(function(){throw 2}))}catch(t){}var zs=function(t,e){if(!e&&!Fs)return!1;var n=!1;try{var r={};r[ws]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},Ps=Ts;vi({target:"Array",stat:!0,forced:!zs((function(t){Array.from(t)}))},{from:Ps});var Bs=Fr.includes,Qs=gu;vi({target:"Array",proto:!0,forced:J((function(){return!Array(1).includes()}))},{includes:function(t){return Bs(this,t,arguments.length>1?arguments[1]:void 0)}}),Qs("includes");var Ds,Es,Os,As=!J((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),_s=oe,qs=st,$s=ie,td=As,ed=Tn("IE_PROTO"),nd=Object,rd=nd.prototype,id=td?nd.getPrototypeOf:function(t){var e=$s(t);if(_s(e,ed))return e[ed];var n=e.constructor;return qs(n)&&e instanceof n?n.prototype:e instanceof nd?rd:null},cd=J,ad=st,od=id,ld=Ir,ud=We("iterator"),sd=!1;[].keys&&("next"in(Os=[].keys())?(Es=od(od(Os)))!==Object.prototype&&(Ds=Es):sd=!0);var dd=null==Ds||cd((function(){var t={};return Ds[ud].call(t)!==t}));dd&&(Ds={}),ad(Ds[ud])||ld(Ds,ud,(function(){return this}));var hd={IteratorPrototype:Ds,BUGGY_SAFARI_ITERATORS:sd},md=hd.IteratorPrototype,pd=ac,bd=z,Zd=Tc,yd=ss,Xd=function(){return this},fd=function(t,e,n,r){var i=e+" Iterator";return t.prototype=pd(md,{next:bd(+!r,n)}),Zd(t,i,!1),yd[i]=Xd,t},Id=st,Gd=String,Vd=TypeError,Wd=function(t){if("object"==o(t)||Id(t))return t;throw Vd("Can't set "+Gd(t)+" as a prototype")},vd=O,gd=en,Sd=Wd,Yd=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=vd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return gd(n),Sd(r),e?t(n,r):n.__proto__=r,n}}():void 0),Rd=vi,Kd=C,Ld=st,Jd=fd,Nd=id,xd=Yd,Hd=Tc,kd=Zn,Cd=Ir,Ud=ss,Td=Wn.PROPER,wd=Wn.CONFIGURABLE,Fd=hd.IteratorPrototype,Md=hd.BUGGY_SAFARI_ITERATORS,jd=We("iterator"),zd="keys",Pd="values",Bd="entries",Qd=function(){return this},Dd=function(t,e,n,r,i,c,a){Jd(n,e,r);var o,l,u,s=function(t){if(t===i&&b)return b;if(!Md&&t in m)return m[t];switch(t){case zd:case Pd:case Bd:return function(){return new n(this,t)}}return function(){return new n(this)}},d=e+" Iterator",h=!1,m=t.prototype,p=m[jd]||m["@@iterator"]||i&&m[i],b=!Md&&p||s(i),Z="Array"==e&&m.entries||p;if(Z&&(o=Nd(Z.call(new t)))!==Object.prototype&&o.next&&(Nd(o)!==Fd&&(xd?xd(o,Fd):Ld(o[jd])||Cd(o,jd,Qd)),Hd(o,d,!0)),Td&&i==Pd&&p&&p.name!==Pd&&(wd?kd(m,"name",Pd):(h=!0,b=function(){return Kd(p,this)})),i)if(l={values:s(Pd),keys:c?b:s(zd),entries:s(Bd)},a)for(u in l)(Md||h||!(u in m))&&Cd(m,u,l[u]);else Rd({target:e,proto:!0,forced:Md||h},l);return m[jd]!==b&&Cd(m,jd,b,{name:i}),Ud[e]=b,l},Ed=ut,Od=gu,Ad=ss,_d=rr,qd=Ae.f,$d=Dd,th=N,eh="Array Iterator",nh=_d.set,rh=_d.getterFor(eh),ih=$d(Array,"Array",(function(t,e){nh(this,{type:eh,target:Ed(t),index:0,kind:e})}),(function(){var t=rh(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),ch=Ad.Arguments=Ad.Array;if(Od("keys"),Od("values"),Od("entries"),th&&"values"!==ch.name)try{qd(ch,"name",{value:"values"})}catch(t){}var ah=J,oh=function(t,e){var n=[][t];return!!n&&ah((function(){n.call(null,e||function(){return 1},1)}))},lh=vi,uh=it,sh=ut,dh=oh,hh=O([].join),mh=uh!=Object,ph=dh("join",",");lh({target:"Array",proto:!0,forced:mh||!ph},{join:function(t){return hh(sh(this),void 0===t?",":t)}});var bh=fa.map;vi({target:"Array",proto:!0,forced:!Ol("map")},{map:function(t){return bh(this,t,arguments.length>1?arguments[1]:void 0)}});var Zh=ia,yh=dc,Xh=Array;vi({target:"Array",stat:!0,forced:J((function(){function t(){}return!(Xh.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(Zh(this)?this:Xh)(e);e>t;)yh(n,t,arguments[t++]);return n.length=e,n}});var fh=vi,Ih=Pc,Gh=ia,Vh=ht,Wh=Lr,vh=kr,gh=ut,Sh=dc,Yh=We,Rh=Do,Kh=Ol("slice"),Lh=Yh("species"),Jh=Array,Nh=Math.max;fh({target:"Array",proto:!0,forced:!Kh},{slice:function(t,e){var n,r,i,c=gh(this),a=vh(c),o=Wh(t,a),l=Wh(void 0===e?a:e,a);if(Ih(c)&&(n=c.constructor,(Gh(n)&&(n===Jh||Ih(n.prototype))||Vh(n)&&null===(n=n[Lh]))&&(n=void 0),n===Jh||void 0===n))return Rh(c,o,l);for(r=new(void 0===n?Jh:n)(Nh(l-o,0)),i=0;o<l;o++,i++)o in c&&Sh(r,i,c[o]);return r.length=i,r}});var xh=yc,Hh=Math.floor,kh=function(t,e){for(var n,r,i=t.length,c=1;c<i;){for(r=c,n=t[c];r&&e(t[r-1],n)>0;)t[r]=t[--r];r!==c++&&(t[r]=n)}return t},Ch=function(t,e,n,r){for(var i=e.length,c=n.length,a=0,o=0;a<i||o<c;)t[a+o]=a<i&&o<c?r(e[a],n[o])<=0?e[a++]:n[o++]:a<i?e[a++]:n[o++];return t},Uh=function t(e,n){var r=e.length,i=Hh(r/2);return r<8?kh(e,n):Ch(e,t(xh(e,0,i),n),t(xh(e,i),n),n)},Th=Xt.match(/firefox\/(\d+)/i),wh=!!Th&&+Th[1],Fh=/MSIE|Trident/.test(Xt),Mh=Xt.match(/AppleWebKit\/(\d+)\./),jh=!!Mh&&+Mh[1],zh=vi,Ph=O,Bh=Ft,Qh=ie,Dh=kr,Eh=mu,Oh=Ci,Ah=J,_h=Uh,qh=oh,$h=wh,tm=Fh,em=gt,nm=jh,rm=[],im=Ph(rm.sort),cm=Ph(rm.push),am=Ah((function(){rm.sort(void 0)})),om=Ah((function(){rm.sort(null)})),lm=qh("sort"),um=!Ah((function(){if(em)return em<70;if(!($h&&$h>3)){if(tm)return!0;if(nm)return nm<603;var t,e,n,r,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)rm.push({k:e+r,v:n})}for(rm.sort((function(t,e){return e.v-t.v})),r=0;r<rm.length;r++)e=rm[r].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));zh({target:"Array",proto:!0,forced:am||!om||!lm||!um},{sort:function(t){void 0!==t&&Bh(t);var e=Qh(this);if(um)return void 0===t?im(e):im(e,t);var n,r,i=[],c=Dh(e);for(r=0;r<c;r++)r in e&&cm(i,e[r]);for(_h(i,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Oh(e)>Oh(n)?1:-1}}(t)),n=i.length,r=0;r<n;)e[r]=i[r++];for(;r<c;)Eh(e,r++);return e}});var sm=Zt,dm=Ae,hm=N,mm=We("species"),pm=function(t){var e=sm(t),n=dm.f;hm&&e&&!e[mm]&&n(e,mm,{configurable:!0,get:function(){return this}})};pm("Array");var bm=vi,Zm=ie,ym=Lr,Xm=Sr,fm=kr,Im=Bl,Gm=da,Vm=dc,Wm=mu,vm=Ol("splice"),gm=Math.max,Sm=Math.min;bm({target:"Array",proto:!0,forced:!vm},{splice:function(t,e){var n,r,i,c,a,o,l=Zm(this),u=fm(l),s=ym(t,u),d=arguments.length;for(0===d?n=r=0:1===d?(n=0,r=u-s):(n=d-2,r=Sm(gm(Xm(e),0),u-s)),Im(u+n-r),i=Gm(l,r),c=0;c<r;c++)(a=s+c)in l&&Vm(i,c,l[a]);if(i.length=r,n<r){for(c=s;c<u-r;c++)o=c+n,(a=c+r)in l?l[o]=l[a]:Wm(l,o);for(c=u;c>u-r+n;c--)Wm(l,c-1)}else if(n>r)for(c=u-r;c>s;c--)o=c+n-1,(a=c+r-1)in l?l[o]=l[a]:Wm(l,o);for(c=0;c<n;c++)l[c+s]=arguments[c+2];return l.length=u-r+n,i}}),gu("flat"),gu("flatMap");var Ym="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Rm=Ir,Km=function(t,e,n){for(var r in e)Rm(t,r,e[r],n);return t},Lm=yt,Jm=TypeError,Nm=function(t,e){if(Lm(e,t))return t;throw Jm("Incorrect invocation")},xm=Sr,Hm=xr,km=RangeError,Cm=function(t){if(void 0===t)return 0;var e=xm(t),n=Hm(e);if(e!==n)throw km("Wrong length or index");return n},Um=Array,Tm=Math.abs,wm=Math.pow,Fm=Math.floor,Mm=Math.log,jm=Math.LN2,zm={pack:function(t,e,n){var r,i,c,a=Um(n),o=8*n-e-1,l=(1<<o)-1,u=l>>1,s=23===e?wm(2,-24)-wm(2,-77):0,d=t<0||0===t&&1/t<0?1:0,h=0;for((t=Tm(t))!=t||t===1/0?(i=t!=t?1:0,r=l):(r=Fm(Mm(t)/jm),t*(c=wm(2,-r))<1&&(r--,c*=2),(t+=r+u>=1?s/c:s*wm(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(t*c-1)*wm(2,e),r+=u):(i=t*wm(2,u-1)*wm(2,e),r=0));e>=8;)a[h++]=255&i,i/=256,e-=8;for(r=r<<e|i,o+=e;o>0;)a[h++]=255&r,r/=256,o-=8;return a[--h]|=128*d,a},unpack:function(t,e){var n,r=t.length,i=8*r-e-1,c=(1<<i)-1,a=c>>1,o=i-7,l=r-1,u=t[l--],s=127&u;for(u>>=7;o>0;)s=256*s+t[l--],o-=8;for(n=s&(1<<-o)-1,s>>=-o,o+=e;o>0;)n=256*n+t[l--],o-=8;if(0===s)s=1-a;else{if(s===c)return n?NaN:u?-1/0:1/0;n+=wm(2,e),s-=a}return(u?-1:1)*n*wm(2,s-e)}},Pm=K,Bm=O,Qm=N,Dm=Ym,Em=Wn,Om=Zn,Am=Km,_m=J,qm=Nm,$m=Sr,tp=xr,ep=Cm,np=zm,rp=id,ip=Yd,cp=Gr.f,ap=Ae.f,op=Lu,lp=yc,up=Tc,sp=Em.PROPER,dp=Em.CONFIGURABLE,hp=rr.get,mp=rr.set,pp="ArrayBuffer",bp="DataView",Zp="Wrong index",yp=Pm.ArrayBuffer,Xp=yp,fp=Xp&&Xp.prototype,Ip=Pm.DataView,Gp=Ip&&Ip.prototype,Vp=Object.prototype,Wp=Pm.Array,vp=Pm.RangeError,gp=Bm(op),Sp=Bm([].reverse),Yp=np.pack,Rp=np.unpack,Kp=function(t){return[255&t]},Lp=function(t){return[255&t,t>>8&255]},Jp=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Np=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},xp=function(t){return Yp(t,23,4)},Hp=function(t){return Yp(t,52,8)},kp=function(t,e){ap(t.prototype,e,{get:function(){return hp(this)[e]}})},Cp=function(t,e,n,r){var i=ep(n),c=hp(t);if(i+e>c.byteLength)throw vp(Zp);var a=hp(c.buffer).bytes,o=i+c.byteOffset,l=lp(a,o,o+e);return r?l:Sp(l)},Up=function(t,e,n,r,i,c){var a=ep(n),o=hp(t);if(a+e>o.byteLength)throw vp(Zp);for(var l=hp(o.buffer).bytes,u=a+o.byteOffset,s=r(+i),d=0;d<e;d++)l[u+d]=s[c?d:e-d-1]};if(Dm){var Tp=sp&&yp.name!==pp;if(_m((function(){yp(1)}))&&_m((function(){new yp(-1)}))&&!_m((function(){return new yp,new yp(1.5),new yp(NaN),Tp&&!dp})))Tp&&dp&&Om(yp,"name",pp);else{(Xp=function(t){return qm(this,fp),new yp(ep(t))}).prototype=fp;for(var wp,Fp=cp(yp),Mp=0;Fp.length>Mp;)(wp=Fp[Mp++])in Xp||Om(Xp,wp,yp[wp]);fp.constructor=Xp}ip&&rp(Gp)!==Vp&&ip(Gp,Vp);var jp=new Ip(new Xp(2)),zp=Bm(Gp.setInt8);jp.setInt8(0,2147483648),jp.setInt8(1,2147483649),!jp.getInt8(0)&&jp.getInt8(1)||Am(Gp,{setInt8:function(t,e){zp(this,t,e<<24>>24)},setUint8:function(t,e){zp(this,t,e<<24>>24)}},{unsafe:!0})}else Xp=function(t){qm(this,fp);var e=ep(t);mp(this,{bytes:gp(Wp(e),0),byteLength:e}),Qm||(this.byteLength=e)},fp=Xp.prototype,Ip=function(t,e,n){qm(this,Gp),qm(t,fp);var r=hp(t).byteLength,i=$m(e);if(i<0||i>r)throw vp("Wrong offset");if(i+(n=void 0===n?r-i:tp(n))>r)throw vp("Wrong length");mp(this,{buffer:t,byteLength:n,byteOffset:i}),Qm||(this.buffer=t,this.byteLength=n,this.byteOffset=i)},Gp=Ip.prototype,Qm&&(kp(Xp,"byteLength"),kp(Ip,"buffer"),kp(Ip,"byteLength"),kp(Ip,"byteOffset")),Am(Gp,{getInt8:function(t){return Cp(this,1,t)[0]<<24>>24},getUint8:function(t){return Cp(this,1,t)[0]},getInt16:function(t){var e=Cp(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Cp(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Np(Cp(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Np(Cp(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Rp(Cp(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Rp(Cp(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){Up(this,1,t,Kp,e)},setUint8:function(t,e){Up(this,1,t,Kp,e)},setInt16:function(t,e){Up(this,2,t,Lp,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){Up(this,2,t,Lp,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){Up(this,4,t,Jp,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){Up(this,4,t,Jp,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){Up(this,4,t,xp,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){Up(this,8,t,Hp,e,arguments.length>2?arguments[2]:void 0)}});up(Xp,pp),up(Ip,bp);var Pp={ArrayBuffer:Xp,DataView:Ip},Bp=pm,Qp="ArrayBuffer",Dp=Pp.ArrayBuffer;vi({global:!0,constructor:!0,forced:K.ArrayBuffer!==Dp},{ArrayBuffer:Dp}),Bp(Qp);var Ep=en,Op=Dt,Ap=TypeError,_p=oe,qp=Ir,$p=function(t){if(Ep(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Ap("Incorrect hint");return Op(this,t)},tb=We("toPrimitive"),eb=Date.prototype;_p(eb,tb)||qp(eb,tb,$p);var nb=st,rb=ht,ib=Ae,cb=id,ab=We,ob=yn.exports,lb=ab("hasInstance"),ub=Function.prototype;lb in ub||ib.f(ub,lb,{value:ob((function(t){if(!nb(this)||!rb(t))return!1;var e=this.prototype;if(!rb(e))return t instanceof this;for(;t=cb(t);)if(e===t)return!0;return!1}),lb)});var sb=N,db=Wn.EXISTS,hb=O,mb=Ae.f,pb=Function.prototype,bb=hb(pb.toString),Zb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,yb=hb(Zb.exec);sb&&!db&&mb(pb,"name",{configurable:!0,get:function(){try{return yb(Zb,bb(this))[1]}catch(t){return""}}}),vi({global:!0},{globalThis:K}),Tc(K.JSON,"JSON",!0);var Xb={exports:{}},fb=J((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),Ib=J,Gb=ht,Vb=$,Wb=fb,vb=Object.isExtensible,gb=Ib((function(){vb(1)}))||Wb?function(t){return!!Gb(t)&&((!Wb||"ArrayBuffer"!=Vb(t))&&(!vb||vb(t)))}:vb,Sb=!J((function(){return Object.isExtensible(Object.preventExtensions({}))})),Yb=vi,Rb=O,Kb=wn,Lb=ht,Jb=oe,Nb=Ae.f,xb=Gr,Hb=oc,kb=gb,Cb=Sb,Ub=!1,Tb=he("meta"),wb=0,Fb=function(t){Nb(t,Tb,{value:{objectID:"O"+wb++,weakData:{}}})},Mb=Xb.exports={enable:function(){Mb.enable=function(){},Ub=!0;var t=xb.f,e=Rb([].splice),n={};n[Tb]=1,t(n).length&&(xb.f=function(n){for(var r=t(n),i=0,c=r.length;i<c;i++)if(r[i]===Tb){e(r,i,1);break}return r},Yb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Hb.f}))},fastKey:function(t,e){if(!Lb(t))return"symbol"==o(t)?t:("string"==typeof t?"S":"P")+t;if(!Jb(t,Tb)){if(!kb(t))return"F";if(!e)return"E";Fb(t)}return t[Tb].objectID},getWeakData:function(t,e){if(!Jb(t,Tb)){if(!kb(t))return!0;if(!e)return!1;Fb(t)}return t[Tb].weakData},onFreeze:function(t){return Cb&&Ub&&kb(t)&&!Jb(t,Tb)&&Fb(t),t}};Kb[Tb]=!0;var jb=jc,zb=C,Pb=en,Bb=Ct,Qb=ps,Db=kr,Eb=yt,Ob=Ss,Ab=fs,_b=os,qb=TypeError,$b=function(t,e){this.stopped=t,this.result=e},tZ=$b.prototype,eZ=function(t,e,n){var r,i,c,a,l,u,s,d=n&&n.that,h=!(!n||!n.AS_ENTRIES),m=!(!n||!n.IS_ITERATOR),p=!(!n||!n.INTERRUPTED),b=jb(e,d),Z=function(t){return r&&_b(r,"normal",t),new $b(!0,t)},y=function(t){return h?(Pb(t),p?b(t[0],t[1],Z):b(t[0],t[1])):p?b(t,Z):b(t)};if(m)r=t;else{if(!(i=Ab(t)))throw qb(Bb(t)+" is not iterable");if(Qb(i)){for(c=0,a=Db(t);a>c;c++)if((l=y(t[c]))&&Eb(tZ,l))return l;return new $b(!1)}r=Ob(t,i)}for(u=r.next;!(s=zb(u,r)).done;){try{l=y(s.value)}catch(t){_b(r,"throw",t)}if("object"==o(l)&&l&&Eb(tZ,l))return l}return new $b(!1)},nZ=st,rZ=ht,iZ=Yd,cZ=function(t,e,n){var r,i;return iZ&&nZ(r=e.constructor)&&r!==n&&rZ(i=r.prototype)&&i!==n.prototype&&iZ(t,i),t},aZ=vi,oZ=K,lZ=O,uZ=Zi,sZ=Ir,dZ=Xb.exports,hZ=eZ,mZ=Nm,pZ=st,bZ=ht,ZZ=J,yZ=zs,XZ=Tc,fZ=cZ,IZ=function(t,e,n){var r=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),c=r?"set":"add",a=oZ[t],o=a&&a.prototype,l=a,u={},s=function(t){var e=lZ(o[t]);sZ(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!bZ(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return i&&!bZ(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!bZ(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(uZ(t,!pZ(a)||!(i||o.forEach&&!ZZ((function(){(new a).entries().next()})))))l=n.getConstructor(e,t,r,c),dZ.enable();else if(uZ(t,!0)){var d=new l,h=d[c](i?{}:-0,1)!=d,m=ZZ((function(){d.has(1)})),p=yZ((function(t){new a(t)})),b=!i&&ZZ((function(){for(var t=new a,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((l=e((function(t,e){mZ(t,o);var n=fZ(new a,t,l);return null!=e&&hZ(e,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=l),(m||b)&&(s("delete"),s("has"),r&&s("get")),(b||h)&&s(c),i&&o.clear&&delete o.clear}return u[t]=l,aZ({global:!0,constructor:!0,forced:l!=a},u),XZ(l,t),i||n.setStrong(l,t,r),l},GZ=Ae.f,VZ=ac,WZ=Km,vZ=jc,gZ=Nm,SZ=eZ,YZ=Dd,RZ=pm,KZ=N,LZ=Xb.exports.fastKey,JZ=rr.set,NZ=rr.getterFor,xZ={getConstructor:function(t,e,n,r){var i=t((function(t,i){gZ(t,c),JZ(t,{type:e,index:VZ(null),first:void 0,last:void 0,size:0}),KZ||(t.size=0),null!=i&&SZ(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=NZ(e),o=function(t,e,n){var r,i,c=a(t),o=l(t,e);return o?o.value=n:(c.last=o={index:i=LZ(e,!0),key:e,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),KZ?c.size++:t.size++,"F"!==i&&(c.index[i]=o)),t},l=function(t,e){var n,r=a(t),i=LZ(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return WZ(c,{clear:function(){for(var t=a(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,KZ?t.size=0:this.size=0},delete:function(t){var e=this,n=a(e),r=l(e,t);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),KZ?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=a(this),r=vZ(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!l(this,t)}}),WZ(c,n?{get:function(t){var e=l(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),KZ&&GZ(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(t,e,n){var r=e+" Iterator",i=NZ(e),c=NZ(r);YZ(t,e,(function(t,e){JZ(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),RZ(e)}};IZ("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),xZ);var HZ=Math.log,kZ=Math.log1p||function(t){var e=+t;return e>-1e-8&&e<1e-8?e-e*e/2:HZ(1+e)},CZ=vi,UZ=kZ,TZ=Math.acosh,wZ=Math.log,FZ=Math.sqrt,MZ=Math.LN2;CZ({target:"Math",stat:!0,forced:!TZ||710!=Math.floor(TZ(Number.MAX_VALUE))||TZ(1/0)!=1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?wZ(e)+MZ:UZ(e-1+FZ(e-1)*FZ(e+1))}});var jZ=vi,zZ=Math.asinh,PZ=Math.log,BZ=Math.sqrt;jZ({target:"Math",stat:!0,forced:!(zZ&&1/zZ(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!=n?n<0?-t(-n):PZ(n+BZ(n*n+1)):n}});var QZ=vi,DZ=Math.atanh,EZ=Math.log;QZ({target:"Math",stat:!0,forced:!(DZ&&1/DZ(-0)<0)},{atanh:function(t){var e=+t;return 0==e?e:EZ((1+e)/(1-e))/2}});var OZ=Math.sign||function(t){var e=+t;return 0==e||e!=e?e:e<0?-1:1},AZ=vi,_Z=OZ,qZ=Math.abs,$Z=Math.pow;AZ({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return _Z(e)*$Z(qZ(e),1/3)}});var ty=vi,ey=Math.floor,ny=Math.log,ry=Math.LOG2E;ty({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-ey(ny(e+.5)*ry):32}});var iy=Math.expm1,cy=Math.exp,ay=!iy||iy(10)>22025.465794806718||iy(10)<22025.465794806718||-2e-17!=iy(-2e-17)?function(t){var e=+t;return 0==e?e:e>-1e-6&&e<1e-6?e+e*e/2:cy(e)-1}:iy,oy=vi,ly=ay,uy=Math.cosh,sy=Math.abs,dy=Math.E;oy({target:"Math",stat:!0,forced:!uy||uy(710)===1/0},{cosh:function(t){var e=ly(sy(t)-1)+1;return(e+1/(e*dy*dy))*(dy/2)}});var hy=ay;vi({target:"Math",stat:!0,forced:hy!=Math.expm1},{expm1:hy});var my=OZ,py=Math.abs,by=Math.pow,Zy=by(2,-52),yy=by(2,-23),Xy=by(2,127)*(2-yy),fy=by(2,-126),Iy=Math.fround||function(t){var e,n,r=+t,i=py(r),c=my(r);return i<fy?c*function(t){return t+1/Zy-1/Zy}(i/fy/yy)*fy*yy:(n=(e=(1+yy/Zy)*i)-(e-i))>Xy||n!=n?c*(1/0):c*n};vi({target:"Math",stat:!0},{fround:Iy});var Gy=vi,Vy=Math.hypot,Wy=Math.abs,vy=Math.sqrt;Gy({target:"Math",stat:!0,arity:2,forced:!!Vy&&Vy(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,r,i=0,c=0,a=arguments.length,o=0;c<a;)o<(n=Wy(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*vy(i)}});var gy=vi,Sy=J,Yy=Math.imul;gy({target:"Math",stat:!0,forced:Sy((function(){return-5!=Yy(4294967295,5)||2!=Yy.length}))},{imul:function(t,e){var n=65535,r=+t,i=+e,c=n&r,a=n&i;return 0|c*a+((n&r>>>16)*a+c*(n&i>>>16)<<16>>>0)}});var Ry=Math.log,Ky=Math.LOG10E;vi({target:"Math",stat:!0},{log10:Math.log10||function(t){return Ry(t)*Ky}}),vi({target:"Math",stat:!0},{log1p:kZ});var Ly=vi,Jy=Math.log,Ny=Math.LN2;Ly({target:"Math",stat:!0},{log2:function(t){return Jy(t)/Ny}}),vi({target:"Math",stat:!0},{sign:OZ});var xy=vi,Hy=J,ky=ay,Cy=Math.abs,Uy=Math.exp,Ty=Math.E;xy({target:"Math",stat:!0,forced:Hy((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return Cy(e)<1?(ky(e)-ky(-e))/2:(Uy(e-1)-Uy(-e-1))*(Ty/2)}});var wy=vi,Fy=ay,My=Math.exp;wy({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=Fy(e),r=Fy(-e);return n==1/0?1:r==1/0?-1:(n-r)/(My(e)+My(-e))}}),Tc(Math,"Math",!0),vi({target:"Math",stat:!0},{trunc:vr});var jy=O(1..valueOf),zy="\t\n\v\f\r                 \u2028\u2029\ufeff",Py=at,By=Ci,Qy=O("".replace),Dy="[\t\n\v\f\r                 \u2028\u2029\ufeff]",Ey=RegExp("^"+Dy+Dy+"*"),Oy=RegExp(Dy+Dy+"*$"),Ay=function(t){return function(e){var n=By(Py(e));return 1&t&&(n=Qy(n,Ey,"")),2&t&&(n=Qy(n,Oy,"")),n}},_y={start:Ay(1),end:Ay(2),trim:Ay(3)},qy=N,$y=K,tX=O,eX=Zi,nX=Ir,rX=oe,iX=cZ,cX=yt,aX=Ht,oX=Je,lX=J,uX=Gr.f,sX=L.f,dX=Ae.f,hX=jy,mX=_y.trim,pX="Number",bX=$y.Number,ZX=bX.prototype,yX=$y.TypeError,XX=tX("".slice),fX=tX("".charCodeAt),IX=function(t){var e=oX(t,"number");return"bigint"==typeof e?e:GX(e)},GX=function(t){var e,n,r,i,c,a,o,l,u=oX(t,"number");if(aX(u))throw yX("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=mX(u),43===(e=fX(u,0))||45===e){if(88===(n=fX(u,2))||120===n)return NaN}else if(48===e){switch(fX(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(c=XX(u,2)).length,o=0;o<a;o++)if((l=fX(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(eX(pX,!bX(" 0o1")||!bX("0b1")||bX("+0x1"))){for(var VX,WX=function(t){var e=arguments.length<1?0:bX(IX(t)),n=this;return cX(ZX,n)&&lX((function(){hX(n)}))?iX(Object(e),n,WX):e},vX=qy?uX(bX):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),gX=0;vX.length>gX;gX++)rX(bX,VX=vX[gX])&&!rX(WX,VX)&&dX(WX,VX,sX(bX,VX));WX.prototype=ZX,ZX.constructor=WX,nX($y,pX,WX,{constructor:!0})}vi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var SX=K.isFinite;vi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&SX(t)}});var YX=ht,RX=Math.floor,KX=Number.isInteger||function(t){return!YX(t)&&isFinite(t)&&RX(t)===t};vi({target:"Number",stat:!0},{isInteger:KX}),vi({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var LX=vi,JX=KX,NX=Math.abs;LX({target:"Number",stat:!0},{isSafeInteger:function(t){return JX(t)&&NX(t)<=9007199254740991}}),vi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),vi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var xX=K,HX=J,kX=Ci,CX=_y.trim,UX=O("".charAt),TX=xX.parseFloat,wX=xX.Symbol,FX=wX&&wX.iterator,MX=1/TX("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||FX&&!HX((function(){TX(Object(FX))}))?function(t){var e=CX(kX(t)),n=TX(e);return 0===n&&"-"==UX(e,0)?-0:n}:TX;vi({target:"Number",stat:!0,forced:Number.parseFloat!=MX},{parseFloat:MX});var jX=K,zX=J,PX=O,BX=Ci,QX=_y.trim,DX=zy,EX=jX.parseInt,OX=jX.Symbol,AX=OX&&OX.iterator,_X=/^[+-]?0x/i,qX=PX(_X.exec),$X=8!==EX(DX+"08")||22!==EX(DX+"0x16")||AX&&!zX((function(){EX(Object(AX))}))?function(t,e){var n=QX(BX(t));return EX(n,e>>>0||(qX(_X,n)?16:10))}:EX,tf=$X;vi({target:"Number",stat:!0,forced:Number.parseInt!=tf},{parseInt:tf});var ef=Sr,nf=Ci,rf=at,cf=RangeError,af=function(t){var e=nf(rf(this)),n="",r=ef(t);if(r<0||r==1/0)throw cf("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(e+=e))1&r&&(n+=e);return n},of=vi,lf=O,uf=Sr,sf=jy,df=af,hf=J,mf=RangeError,pf=String,bf=Math.floor,Zf=lf(df),yf=lf("".slice),Xf=lf(1..toFixed),ff=function t(e,n,r){return 0===n?r:n%2==1?t(e,n-1,r*e):t(e*e,n/2,r)},If=function(t,e,n){for(var r=-1,i=n;++r<6;)i+=e*t[r],t[r]=i%1e7,i=bf(i/1e7)},Gf=function(t,e){for(var n=6,r=0;--n>=0;)r+=t[n],t[n]=bf(r/e),r=r%e*1e7},Vf=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var r=pf(t[e]);n=""===n?r:n+Zf("0",7-r.length)+r}return n};of({target:"Number",proto:!0,forced:hf((function(){return"0.000"!==Xf(8e-5,3)||"1"!==Xf(.9,0)||"1.25"!==Xf(1.255,2)||"1000000000000000128"!==Xf(0xde0b6b3a7640080,0)}))||!hf((function(){Xf({})}))},{toFixed:function(t){var e,n,r,i,c=sf(this),a=uf(t),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw mf("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return pf(c);if(c<0&&(l="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*ff(2,69,1))-69,n=e<0?c*ff(2,-e,1):c/ff(2,e,1),n*=4503599627370496,(e=52-e)>0){for(If(o,0,n),r=a;r>=7;)If(o,1e7,0),r-=7;for(If(o,ff(10,r,1),0),r=e-1;r>=23;)Gf(o,1<<23),r-=23;Gf(o,1<<r),If(o,1,1),Gf(o,2),u=Vf(o)}else If(o,0,n),If(o,1<<-e,0),u=Vf(o)+Zf("0",a);return u=a>0?l+((i=u.length)<=a?"0."+Zf("0",a-i)+u:yf(u,0,i-a)+"."+yf(u,i-a)):l+u}});var Wf=N,vf=O,gf=C,Sf=J,Yf=Fi,Rf=Ar,Kf=U,Lf=ie,Jf=it,Nf=Object.assign,xf=Object.defineProperty,Hf=vf([].concat),kf=!Nf||Sf((function(){if(Wf&&1!==Nf({b:1},Nf(xf({},"a",{enumerable:!0,get:function(){xf(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=Nf({},t)[n]||Yf(Nf({},e)).join("")!=r}))?function(t,e){for(var n=Lf(t),r=arguments.length,i=1,c=Rf.f,a=Kf.f;r>i;)for(var o,l=Jf(arguments[i++]),u=c?Hf(Yf(l),c(l)):Yf(l),s=u.length,d=0;s>d;)o=u[d++],Wf&&!gf(a,l,o)||(n[o]=l[o]);return n}:Nf,Cf=kf;vi({target:"Object",stat:!0,arity:2,forced:Object.assign!==Cf},{assign:Cf});var Uf=K,Tf=jh,wf=!J((function(){if(!(Tf&&Tf<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete Uf[t]}})),Ff=Ft,Mf=ie,jf=Ae;N&&vi({target:"Object",proto:!0,forced:wf},{__defineGetter__:function(t,e){jf.f(Mf(this),t,{get:Ff(e),enumerable:!0,configurable:!0})}});var zf=Ft,Pf=ie,Bf=Ae;N&&vi({target:"Object",proto:!0,forced:wf},{__defineSetter__:function(t,e){Bf.f(Pf(this),t,{set:zf(e),enumerable:!0,configurable:!0})}});var Qf=N,Df=O,Ef=Fi,Of=ut,Af=Df(U.f),_f=Df([].push),qf=function(t){return function(e){for(var n,r=Of(e),i=Ef(r),c=i.length,a=0,o=[];c>a;)n=i[a++],Qf&&!Af(r,n)||_f(o,t?[n,r[n]]:r[n]);return o}},$f={entries:qf(!0),values:qf(!1)},tI=$f.entries;vi({target:"Object",stat:!0},{entries:function(t){return tI(t)}});var eI=vi,nI=Sb,rI=J,iI=ht,cI=Xb.exports.onFreeze,aI=Object.freeze;eI({target:"Object",stat:!0,forced:rI((function(){aI(1)})),sham:!nI},{freeze:function(t){return aI&&iI(t)?aI(cI(t)):t}});var oI=eZ,lI=dc;vi({target:"Object",stat:!0},{fromEntries:function(t){var e={};return oI(t,(function(t,n){lI(e,t,n)}),{AS_ENTRIES:!0}),e}});var uI=vi,sI=J,dI=ut,hI=L.f,mI=N,pI=sI((function(){hI(1)}));uI({target:"Object",stat:!0,forced:!mI||pI,sham:!mI},{getOwnPropertyDescriptor:function(t,e){return hI(dI(t),e)}});var bI=ni,ZI=ut,yI=L,XI=dc;vi({target:"Object",stat:!0,sham:!N},{getOwnPropertyDescriptors:function(t){for(var e,n,r=ZI(t),i=yI.f,c=bI(r),a={},o=0;c.length>o;)void 0!==(n=i(r,e=c[o++]))&&XI(a,e,n);return a}});var fI=vi,II=J,GI=oc.f;fI({target:"Object",stat:!0,forced:II((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:GI});var VI=ie,WI=id,vI=As;vi({target:"Object",stat:!0,forced:J((function(){WI(1)})),sham:!vI},{getPrototypeOf:function(t){return WI(VI(t))}});var gI=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};vi({target:"Object",stat:!0},{is:gI});var SI=gb;vi({target:"Object",stat:!0,forced:Object.isExtensible!==SI},{isExtensible:SI});var YI=vi,RI=J,KI=ht,LI=$,JI=fb,NI=Object.isFrozen;YI({target:"Object",stat:!0,forced:RI((function(){NI(1)}))||JI},{isFrozen:function(t){return!KI(t)||(!(!JI||"ArrayBuffer"!=LI(t))||!!NI&&NI(t))}});var xI=vi,HI=J,kI=ht,CI=$,UI=fb,TI=Object.isSealed;xI({target:"Object",stat:!0,forced:HI((function(){TI(1)}))||UI},{isSealed:function(t){return!kI(t)||(!(!UI||"ArrayBuffer"!=CI(t))||!!TI&&TI(t))}});var wI=ie,FI=Fi;vi({target:"Object",stat:!0,forced:J((function(){FI(1)}))},{keys:function(t){return FI(wI(t))}});var MI=vi,jI=N,zI=wf,PI=ie,BI=He,QI=id,DI=L.f;jI&&MI({target:"Object",proto:!0,forced:zI},{__lookupGetter__:function(t){var e,n=PI(this),r=BI(t);do{if(e=DI(n,r))return e.get}while(n=QI(n))}});var EI=vi,OI=N,AI=wf,_I=ie,qI=He,$I=id,tG=L.f;OI&&EI({target:"Object",proto:!0,forced:AI},{__lookupSetter__:function(t){var e,n=_I(this),r=qI(t);do{if(e=tG(n,r))return e.set}while(n=$I(n))}});var eG=vi,nG=ht,rG=Xb.exports.onFreeze,iG=Sb,cG=J,aG=Object.preventExtensions;eG({target:"Object",stat:!0,forced:cG((function(){aG(1)})),sham:!iG},{preventExtensions:function(t){return aG&&nG(t)?aG(rG(t)):t}});var oG=vi,lG=ht,uG=Xb.exports.onFreeze,sG=Sb,dG=J,hG=Object.seal;oG({target:"Object",stat:!0,forced:dG((function(){hG(1)})),sham:!sG},{seal:function(t){return hG&&lG(t)?hG(uG(t)):t}});var mG=xi,pG=Si?{}.toString:function(){return"[object "+mG(this)+"]"};Si||Ir(Object.prototype,"toString",pG,{unsafe:!0});var bG=$f.values;vi({target:"Object",stat:!0},{values:function(t){return bG(t)}});var ZG,yG,XG,fG,IG="process"==$(K.process),GG=ia,VG=Ct,WG=TypeError,vG=function(t){if(GG(t))return t;throw WG(VG(t)+" is not a constructor")},gG=en,SG=vG,YG=We("species"),RG=function(t,e){var n,r=gG(t).constructor;return void 0===r||null==(n=gG(r)[YG])?e:SG(n)},KG=TypeError,LG=function(t,e){if(t<e)throw KG("Not enough arguments");return t},JG=/(?:ipad|iphone|ipod).*applewebkit/i.test(Xt),NG=K,xG=Qo,HG=jc,kG=st,CG=oe,UG=J,TG=Ei,wG=Do,FG=Te,MG=LG,jG=JG,zG=IG,PG=NG.setImmediate,BG=NG.clearImmediate,QG=NG.process,DG=NG.Dispatch,EG=NG.Function,OG=NG.MessageChannel,AG=NG.String,_G=0,qG={},$G="onreadystatechange";try{ZG=NG.location}catch(t){}var tV=function(t){if(CG(qG,t)){var e=qG[t];delete qG[t],e()}},eV=function(t){return function(){tV(t)}},nV=function(t){tV(t.data)},rV=function(t){NG.postMessage(AG(t),ZG.protocol+"//"+ZG.host)};PG&&BG||(PG=function(t){MG(arguments.length,1);var e=kG(t)?t:EG(t),n=wG(arguments,1);return qG[++_G]=function(){xG(e,void 0,n)},yG(_G),_G},BG=function(t){delete qG[t]},zG?yG=function(t){QG.nextTick(eV(t))}:DG&&DG.now?yG=function(t){DG.now(eV(t))}:OG&&!jG?(fG=(XG=new OG).port2,XG.port1.onmessage=nV,yG=HG(fG.postMessage,fG)):NG.addEventListener&&kG(NG.postMessage)&&!NG.importScripts&&ZG&&"file:"!==ZG.protocol&&!UG(rV)?(yG=rV,NG.addEventListener("message",nV,!1)):yG=$G in FG("script")?function(t){TG.appendChild(FG("script")).onreadystatechange=function(){TG.removeChild(this),tV(t)}}:function(t){setTimeout(eV(t),0)});var iV,cV,aV,oV,lV,uV,sV,dV,hV={set:PG,clear:BG},mV=K,pV=/ipad|iphone|ipod/i.test(Xt)&&void 0!==mV.Pebble,bV=/web0s(?!.*chrome)/i.test(Xt),ZV=K,yV=jc,XV=L.f,fV=hV.set,IV=JG,GV=pV,VV=bV,WV=IG,vV=ZV.MutationObserver||ZV.WebKitMutationObserver,gV=ZV.document,SV=ZV.process,YV=ZV.Promise,RV=XV(ZV,"queueMicrotask"),KV=RV&&RV.value;KV||(iV=function(){var t,e;for(WV&&(t=SV.domain)&&t.exit();cV;){e=cV.fn,cV=cV.next;try{e()}catch(t){throw cV?oV():aV=void 0,t}}aV=void 0,t&&t.enter()},IV||WV||VV||!vV||!gV?!GV&&YV&&YV.resolve?((sV=YV.resolve(void 0)).constructor=YV,dV=yV(sV.then,sV),oV=function(){dV(iV)}):WV?oV=function(){SV.nextTick(iV)}:(fV=yV(fV,ZV),oV=function(){fV(iV)}):(lV=!0,uV=gV.createTextNode(""),new vV(iV).observe(uV,{characterData:!0}),oV=function(){uV.data=lV=!lV}));var LV=KV||function(t){var e={fn:t,next:void 0};aV&&(aV.next=e),cV||(cV=e,oV()),aV=e},JV=K,NV=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},xV=function(){this.head=null,this.tail=null};xV.prototype={add:function(t){var e={item:t,next:null};this.head?this.tail.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};var HV=xV,kV=K.Promise,CV="object"==("undefined"==typeof window?"undefined":o(window))&&"object"!=("undefined"==typeof Deno?"undefined":o(Deno)),UV=K,TV=kV,wV=st,FV=Zi,MV=Ln,jV=We,zV=CV,PV=gt;TV&&TV.prototype;var BV=jV("species"),QV=!1,DV=wV(UV.PromiseRejectionEvent),EV=FV("Promise",(function(){var t=MV(TV),e=t!==String(TV);if(!e&&66===PV)return!0;if(PV>=51&&/native code/.test(t))return!1;var n=new TV((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))};return(n.constructor={})[BV]=r,!(QV=n.then((function(){}))instanceof r)||!e&&zV&&!DV})),OV={CONSTRUCTOR:EV,REJECTION_EVENT:DV,SUBCLASSING:QV},AV={},_V=Ft,qV=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=_V(e),this.reject=_V(n)};AV.f=function(t){return new qV(t)};var $V,tW,eW,nW=vi,rW=IG,iW=K,cW=C,aW=Ir,oW=Yd,lW=Tc,uW=pm,sW=Ft,dW=st,hW=ht,mW=Nm,pW=RG,bW=hV.set,ZW=LV,yW=function(t,e){var n=JV.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))},XW=NV,fW=HV,IW=rr,GW=kV,VW=AV,WW="Promise",vW=OV.CONSTRUCTOR,gW=OV.REJECTION_EVENT,SW=OV.SUBCLASSING,YW=IW.getterFor(WW),RW=IW.set,KW=GW&&GW.prototype,LW=GW,JW=KW,NW=iW.TypeError,xW=iW.document,HW=iW.process,kW=VW.f,CW=kW,UW=!!(xW&&xW.createEvent&&iW.dispatchEvent),TW="unhandledrejection",wW=function(t){var e;return!(!hW(t)||!dW(e=t.then))&&e},FW=function(t,e){var n,r,i,c=e.value,a=1==e.state,o=a?t.ok:t.fail,l=t.resolve,u=t.reject,s=t.domain;try{o?(a||(2===e.rejection&&BW(e),e.rejection=1),!0===o?n=c:(s&&s.enter(),n=o(c),s&&(s.exit(),i=!0)),n===t.promise?u(NW("Promise-chain cycle")):(r=wW(n))?cW(r,n,l,u):l(n)):u(c)}catch(t){s&&!i&&s.exit(),u(t)}},MW=function(t,e){t.notified||(t.notified=!0,ZW((function(){for(var n,r=t.reactions;n=r.get();)FW(n,t);t.notified=!1,e&&!t.rejection&&zW(t)})))},jW=function(t,e,n){var r,i;UW?((r=xW.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),iW.dispatchEvent(r)):r={promise:e,reason:n},!gW&&(i=iW["on"+t])?i(r):t===TW&&yW("Unhandled promise rejection",n)},zW=function(t){cW(bW,iW,(function(){var e,n=t.facade,r=t.value;if(PW(t)&&(e=XW((function(){rW?HW.emit("unhandledRejection",r,n):jW(TW,n,r)})),t.rejection=rW||PW(t)?2:1,e.error))throw e.value}))},PW=function(t){return 1!==t.rejection&&!t.parent},BW=function(t){cW(bW,iW,(function(){var e=t.facade;rW?HW.emit("rejectionHandled",e):jW("rejectionhandled",e,t.value)}))},QW=function(t,e,n){return function(r){t(e,r,n)}},DW=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,MW(t,!0))},EW=function t(e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===n)throw NW("Promise can't be resolved itself");var i=wW(n);i?ZW((function(){var r={done:!1};try{cW(i,n,QW(t,r,e),QW(DW,r,e))}catch(t){DW(r,t,e)}})):(e.value=n,e.state=1,MW(e,!1))}catch(t){DW({done:!1},t,e)}}};if(vW&&(JW=(LW=function(t){mW(this,JW),sW(t),cW($V,this);var e=YW(this);try{t(QW(EW,e),QW(DW,e))}catch(t){DW(e,t)}}).prototype,($V=function(t){RW(this,{type:WW,done:!1,notified:!1,parent:!1,reactions:new fW,rejection:!1,state:0,value:void 0})}).prototype=aW(JW,"then",(function(t,e){var n=YW(this),r=kW(pW(this,LW));return n.parent=!0,r.ok=!dW(t)||t,r.fail=dW(e)&&e,r.domain=rW?HW.domain:void 0,0==n.state?n.reactions.add(r):ZW((function(){FW(r,n)})),r.promise})),tW=function(){var t=new $V,e=YW(t);this.promise=t,this.resolve=QW(EW,e),this.reject=QW(DW,e)},VW.f=kW=function(t){return t===LW||undefined===t?new tW(t):CW(t)},dW(GW)&&KW!==Object.prototype)){eW=KW.then,SW||aW(KW,"then",(function(t,e){var n=this;return new LW((function(t,e){cW(eW,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete KW.constructor}catch(t){}oW&&oW(KW,JW)}nW({global:!0,constructor:!0,wrap:!0,forced:vW},{Promise:LW}),lW(LW,WW,!1),uW(WW);var OW=kV,AW=OV.CONSTRUCTOR||!zs((function(t){OW.all(t).then(void 0,(function(){}))})),_W=C,qW=Ft,$W=AV,tv=NV,ev=eZ;vi({target:"Promise",stat:!0,forced:AW},{all:function(t){var e=this,n=$W.f(e),r=n.resolve,i=n.reject,c=tv((function(){var n=qW(e.resolve),c=[],a=0,o=1;ev(t,(function(t){var l=a++,u=!1;o++,_W(n,e,t).then((function(t){u||(u=!0,c[l]=t,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise}});var nv=vi,rv=OV.CONSTRUCTOR,iv=kV,cv=Zt,av=st,ov=Ir,lv=iv&&iv.prototype;if(nv({target:"Promise",proto:!0,forced:rv,real:!0},{catch:function(t){return this.then(void 0,t)}}),av(iv)){var uv=cv("Promise").prototype.catch;lv.catch!==uv&&ov(lv,"catch",uv,{unsafe:!0})}var sv=C,dv=Ft,hv=AV,mv=NV,pv=eZ;vi({target:"Promise",stat:!0,forced:AW},{race:function(t){var e=this,n=hv.f(e),r=n.reject,i=mv((function(){var i=dv(e.resolve);pv(t,(function(t){sv(i,e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var bv=C,Zv=AV;vi({target:"Promise",stat:!0,forced:OV.CONSTRUCTOR},{reject:function(t){var e=Zv.f(this);return bv(e.reject,void 0,t),e.promise}});var yv=en,Xv=ht,fv=AV,Iv=function(t,e){if(yv(t),Xv(e)&&e.constructor===t)return e;var n=fv.f(t);return(0,n.resolve)(e),n.promise},Gv=vi,Vv=OV.CONSTRUCTOR,Wv=Iv;Zt("Promise"),Gv({target:"Promise",stat:!0,forced:Vv},{resolve:function(t){return Wv(this,t)}});var vv=C,gv=Ft,Sv=AV,Yv=NV,Rv=eZ;vi({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=Sv.f(e),r=n.resolve,i=n.reject,c=Yv((function(){var n=gv(e.resolve),i=[],c=0,a=1;Rv(t,(function(t){var o=c++,l=!1;a++,vv(n,e,t).then((function(t){l||(l=!0,i[o]={status:"fulfilled",value:t},--a||r(i))}),(function(t){l||(l=!0,i[o]={status:"rejected",reason:t},--a||r(i))}))})),--a||r(i)}));return c.error&&i(c.value),n.promise}});var Kv=vi,Lv=kV,Jv=J,Nv=Zt,xv=st,Hv=RG,kv=Iv,Cv=Ir,Uv=Lv&&Lv.prototype;if(Kv({target:"Promise",proto:!0,real:!0,forced:!!Lv&&Jv((function(){Uv.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=Hv(this,Nv("Promise")),n=xv(t);return this.then(n?function(n){return kv(e,t()).then((function(){return n}))}:t,n?function(n){return kv(e,t()).then((function(){throw n}))}:t)}}),xv(Lv)){var Tv=Nv("Promise").prototype.finally;Uv.finally!==Tv&&Cv(Uv,"finally",Tv,{unsafe:!0})}var wv=Qo,Fv=Ft,Mv=en;vi({target:"Reflect",stat:!0,forced:!J((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return wv(Fv(t),e,Mv(n))}});var jv=O,zv=Ft,Pv=ht,Bv=oe,Qv=Do,Dv=x,Ev=Function,Ov=jv([].concat),Av=jv([].join),_v={},qv=function(t,e,n){if(!Bv(_v,e)){for(var r=[],i=0;i<e;i++)r[i]="a["+i+"]";_v[e]=Ev("C,a","return new C("+Av(r,",")+")")}return _v[e](t,n)},$v=Dv?Ev.bind:function(t){var e=zv(this),n=e.prototype,r=Qv(arguments,1),i=function(){var n=Ov(r,Qv(arguments));return this instanceof i?qv(e,n.length,n):e.apply(t,n)};return Pv(n)&&(i.prototype=n),i},tg=vi,eg=Qo,ng=$v,rg=vG,ig=en,cg=ht,ag=ac,og=J,lg=Zt("Reflect","construct"),ug=Object.prototype,sg=[].push,dg=og((function(){function t(){}return!(lg((function(){}),[],t)instanceof t)})),hg=!og((function(){lg((function(){}))})),mg=dg||hg;tg({target:"Reflect",stat:!0,forced:mg,sham:mg},{construct:function(t,e){rg(t),ig(e);var n=arguments.length<3?t:rg(arguments[2]);if(hg&&!dg)return lg(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return eg(sg,r,e),new(eg(ng,t,r))}var i=n.prototype,c=ag(cg(i)?i:ug),a=eg(t,c,e);return cg(a)?a:c}});var pg=N,bg=en,Zg=He,yg=Ae;vi({target:"Reflect",stat:!0,forced:J((function(){Reflect.defineProperty(yg.f({},1,{value:1}),1,{value:2})})),sham:!pg},{defineProperty:function(t,e,n){bg(t);var r=Zg(e);bg(n);try{return yg.f(t,r,n),!0}catch(t){return!1}}});var Xg=vi,fg=en,Ig=L.f;Xg({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=Ig(fg(t),e);return!(n&&!n.configurable)&&delete t[e]}});var Gg=oe,Vg=function(t){return void 0!==t&&(Gg(t,"value")||Gg(t,"writable"))},Wg=C,vg=ht,gg=en,Sg=Vg,Yg=L,Rg=id;vi({target:"Reflect",stat:!0},{get:function t(e,n){var r,i,c=arguments.length<3?e:arguments[2];return gg(e)===c?e[n]:(r=Yg.f(e,n))?Sg(r)?r.value:void 0===r.get?void 0:Wg(r.get,c):vg(i=Rg(e))?t(i,n,c):void 0}});var Kg=en,Lg=L;vi({target:"Reflect",stat:!0,sham:!N},{getOwnPropertyDescriptor:function(t,e){return Lg.f(Kg(t),e)}});var Jg=en,Ng=id;vi({target:"Reflect",stat:!0,sham:!As},{getPrototypeOf:function(t){return Ng(Jg(t))}}),vi({target:"Reflect",stat:!0},{has:function(t,e){return e in t}});var xg=en,Hg=gb;vi({target:"Reflect",stat:!0},{isExtensible:function(t){return xg(t),Hg(t)}}),vi({target:"Reflect",stat:!0},{ownKeys:ni});var kg=Zt,Cg=en;vi({target:"Reflect",stat:!0,sham:!Sb},{preventExtensions:function(t){Cg(t);try{var e=kg("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Ug=vi,Tg=C,wg=en,Fg=ht,Mg=Vg,jg=Ae,zg=L,Pg=id,Bg=z;var Qg=J((function(){var t=function(){},e=jg.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Ug({target:"Reflect",stat:!0,forced:Qg},{set:function t(e,n,r){var i,c,a,o=arguments.length<4?e:arguments[3],l=zg.f(wg(e),n);if(!l){if(Fg(c=Pg(e)))return t(c,n,r,o);l=Bg(0)}if(Mg(l)){if(!1===l.writable||!Fg(o))return!1;if(i=zg.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,jg.f(o,n,i)}else jg.f(o,n,Bg(0,r))}else{if(void 0===(a=l.set))return!1;Tg(a,o,r)}return!0}});var Dg=en,Eg=Wd,Og=Yd;Og&&vi({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Dg(t),Eg(e);try{return Og(t,e),!0}catch(t){return!1}}});var Ag=ht,_g=$,qg=We("match"),$g=function(t){var e;return Ag(t)&&(void 0!==(e=t[qg])?!!e:"RegExp"==_g(t))},tS=en,eS=function(){var t=tS(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},nS=C,rS=oe,iS=yt,cS=eS,aS=RegExp.prototype,oS=function(t){var e=t.flags;return void 0!==e||"flags"in aS||rS(t,"flags")||!iS(aS,t)?e:nS(cS,t)},lS=J,uS=K.RegExp,sS=lS((function(){var t=uS("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),dS=sS||lS((function(){return!uS("a","y").sticky})),hS=sS||lS((function(){var t=uS("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),mS={BROKEN_CARET:hS,MISSED_STICKY:dS,UNSUPPORTED_Y:sS},pS=Ae.f,bS=J,ZS=K.RegExp,yS=bS((function(){var t=ZS(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),XS=J,fS=K.RegExp,IS=XS((function(){var t=fS("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),GS=N,VS=K,WS=O,vS=Zi,gS=cZ,SS=Zn,YS=Gr.f,RS=yt,KS=$g,LS=Ci,JS=oS,NS=mS,xS=function(t,e,n){n in t||pS(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})},HS=Ir,kS=J,CS=oe,US=rr.enforce,TS=pm,wS=yS,FS=IS,MS=We("match"),jS=VS.RegExp,zS=jS.prototype,PS=VS.SyntaxError,BS=WS(zS.exec),QS=WS("".charAt),DS=WS("".replace),ES=WS("".indexOf),OS=WS("".slice),AS=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,_S=/a/g,qS=/a/g,$S=new jS(_S)!==_S,tY=NS.MISSED_STICKY,eY=NS.UNSUPPORTED_Y,nY=GS&&(!$S||tY||wS||FS||kS((function(){return qS[MS]=!1,jS(_S)!=_S||jS(qS)==qS||"/a/i"!=jS(_S,"i")})));if(vS("RegExp",nY)){for(var rY=function(t,e){var n,r,i,c,a,o,l=RS(zS,this),u=KS(t),s=void 0===e,d=[],h=t;if(!l&&u&&s&&t.constructor===rY)return t;if((u||RS(zS,t))&&(t=t.source,s&&(e=JS(h))),t=void 0===t?"":LS(t),e=void 0===e?"":LS(e),h=t,wS&&"dotAll"in _S&&(r=!!e&&ES(e,"s")>-1)&&(e=DS(e,/s/g,"")),n=e,tY&&"sticky"in _S&&(i=!!e&&ES(e,"y")>-1)&&eY&&(e=DS(e,/y/g,"")),FS&&(c=function(t){for(var e,n=t.length,r=0,i="",c=[],a={},o=!1,l=!1,u=0,s="";r<=n;r++){if("\\"===(e=QS(t,r)))e+=QS(t,++r);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:BS(AS,OS(t,r+1))&&(r+=2,l=!0),i+=e,u++;continue;case">"===e&&l:if(""===s||CS(a,s))throw new PS("Invalid capture group name");a[s]=!0,c[c.length]=[s,u],l=!1,s="";continue}l?s+=e:i+=e}return[i,c]}(t),t=c[0],d=c[1]),a=gS(jS(t,e),l?this:zS,rY),(r||i||d.length)&&(o=US(a),r&&(o.dotAll=!0,o.raw=rY(function(t){for(var e,n=t.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(e=QS(t,r))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),i+=e):i+="[\\s\\S]":i+=e+QS(t,++r);return i}(t),n)),i&&(o.sticky=!0),d.length&&(o.groups=d)),t!==h)try{SS(a,"source",""===h?"(?:)":h)}catch(t){}return a},iY=YS(jS),cY=0;iY.length>cY;)xS(rY,jS,iY[cY++]);zS.constructor=rY,rY.prototype=zS,HS(VS,"RegExp",rY,{constructor:!0})}TS("RegExp");var aY=C,oY=O,lY=Ci,uY=eS,sY=mS,dY=Et.exports,hY=ac,mY=rr.get,pY=yS,bY=IS,ZY=dY("native-string-replace",String.prototype.replace),yY=RegExp.prototype.exec,XY=yY,fY=oY("".charAt),IY=oY("".indexOf),GY=oY("".replace),VY=oY("".slice),WY=function(){var t=/a/,e=/b*/g;return aY(yY,t,"a"),aY(yY,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),vY=sY.BROKEN_CARET,gY=void 0!==/()??/.exec("")[1];(WY||gY||vY||pY||bY)&&(XY=function(t){var e,n,r,i,c,a,o,l=this,u=mY(l),s=lY(t),d=u.raw;if(d)return d.lastIndex=l.lastIndex,e=aY(XY,d,s),l.lastIndex=d.lastIndex,e;var h=u.groups,m=vY&&l.sticky,p=aY(uY,l),b=l.source,Z=0,y=s;if(m&&(p=GY(p,"y",""),-1===IY(p,"g")&&(p+="g"),y=VY(s,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==fY(s,l.lastIndex-1))&&(b="(?: "+b+")",y=" "+y,Z++),n=new RegExp("^(?:"+b+")",p)),gY&&(n=new RegExp("^"+b+"$(?!\\s)",p)),WY&&(r=l.lastIndex),i=aY(yY,m?n:l,y),m?i?(i.input=VY(i.input,Z),i[0]=VY(i[0],Z),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:WY&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),gY&&i&&i.length>1&&aY(ZY,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&h)for(i.groups=a=hY(null),c=0;c<h.length;c++)a[(o=h[c])[0]]=i[o[1]];return i});var SY=XY;vi({target:"RegExp",proto:!0,forced:/./.exec!==SY},{exec:SY});var YY=yn.exports,RY=Ae,KY=function(t,e,n){return n.get&&YY(n.get,e,{getter:!0}),n.set&&YY(n.set,e,{setter:!0}),RY.f(t,e,n)},LY=N,JY=KY,NY=eS,xY=J,HY=RegExp.prototype;LY&&xY((function(){return"sy"!==Object.getOwnPropertyDescriptor(HY,"flags").get.call({dotAll:!0,sticky:!0})}))&&JY(HY,"flags",{configurable:!0,get:NY});var kY=N,CY=mS.MISSED_STICKY,UY=$,TY=KY,wY=rr.get,FY=RegExp.prototype,MY=TypeError;kY&&CY&&TY(FY,"sticky",{configurable:!0,get:function(){if(this!==FY){if("RegExp"===UY(this))return!!wY(this).sticky;throw MY("Incompatible receiver, RegExp required")}}});var jY,zY,PY=vi,BY=C,QY=O,DY=st,EY=ht,OY=(jY=!1,(zY=/[ac]/).exec=function(){return jY=!0,/./.exec.apply(this,arguments)},!0===zY.test("abc")&&jY),AY=TypeError,_Y=QY(/./.test);PY({target:"RegExp",proto:!0,forced:!OY},{test:function(t){var e=this.exec;if(!DY(e))return _Y(this,t);var n=BY(e,this,t);if(null!==n&&!EY(n))throw new AY("RegExp exec method returned something other than an Object or null");return!!n}});var qY=Wn.PROPER,$Y=Ir,tR=en,eR=Ci,nR=J,rR=oS,iR="toString",cR=RegExp.prototype.toString,aR=nR((function(){return"/a/b"!=cR.call({source:"a",flags:"b"})})),oR=qY&&cR.name!=iR;(aR||oR)&&$Y(RegExp.prototype,iR,(function(){var t=tR(this);return"/"+eR(t.source)+"/"+eR(rR(t))}),{unsafe:!0}),IZ("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),xZ);var lR=O,uR=Sr,sR=Ci,dR=at,hR=lR("".charAt),mR=lR("".charCodeAt),pR=lR("".slice),bR=function(t){return function(e,n){var r,i,c=sR(dR(e)),a=uR(n),o=c.length;return a<0||a>=o?t?"":void 0:(r=mR(c,a))<55296||r>56319||a+1===o||(i=mR(c,a+1))<56320||i>57343?t?hR(c,a):r:t?pR(c,a,a+2):i-56320+(r-55296<<10)+65536}},ZR={codeAt:bR(!1),charAt:bR(!0)},yR=ZR.codeAt;vi({target:"String",proto:!0},{codePointAt:function(t){return yR(this,t)}});var XR,fR=$g,IR=TypeError,GR=function(t){if(fR(t))throw IR("The method doesn't accept regular expressions");return t},VR=We("match"),WR=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[VR]=!1,"/./"[t](e)}catch(t){}}return!1},vR=vi,gR=O,SR=L.f,YR=xr,RR=Ci,KR=GR,LR=at,JR=WR,NR=gR("".endsWith),xR=gR("".slice),HR=Math.min,kR=JR("endsWith");vR({target:"String",proto:!0,forced:!!(kR||(XR=SR(String.prototype,"endsWith"),!XR||XR.writable))&&!kR},{endsWith:function(t){var e=RR(LR(this));KR(t);var n=arguments.length>1?arguments[1]:void 0,r=e.length,i=void 0===n?r:HR(YR(n),r),c=RR(t);return NR?NR(e,c,i):xR(e,i-c.length,i)===c}});var CR=vi,UR=O,TR=Lr,wR=RangeError,FR=String.fromCharCode,MR=String.fromCodePoint,jR=UR([].join);CR({target:"String",stat:!0,arity:1,forced:!!MR&&1!=MR.length},{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,i=0;r>i;){if(e=+arguments[i++],TR(e,1114111)!==e)throw wR(e+" is not a valid code point");n[i]=e<65536?FR(e):FR(55296+((e-=65536)>>10),e%1024+56320)}return jR(n,"")}});var zR=vi,PR=GR,BR=at,QR=Ci,DR=WR,ER=O("".indexOf);zR({target:"String",proto:!0,forced:!DR("includes")},{includes:function(t){return!!~ER(QR(BR(this)),QR(PR(t)),arguments.length>1?arguments[1]:void 0)}});var OR=ZR.charAt,AR=Ci,_R=rr,qR=Dd,$R="String Iterator",tK=_R.set,eK=_R.getterFor($R);qR(String,"String",(function(t){tK(this,{type:$R,string:AR(t),index:0})}),(function(){var t,e=eK(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=OR(n,r),e.index+=t.length,{value:t,done:!1})}));var nK=O,rK=Ir,iK=SY,cK=J,aK=We,oK=Zn,lK=aK("species"),uK=RegExp.prototype,sK=function(t,e,n,r){var i=aK(t),c=!cK((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),a=c&&!cK((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[lK]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](""),!e}));if(!c||!a||n){var o=nK(/./[i]),l=e(i,""[t],(function(t,e,n,r,i){var a=nK(t),l=e.exec;return l===iK||l===uK.exec?c&&!i?{done:!0,value:o(e,n,r)}:{done:!0,value:a(n,e,r)}:{done:!1}}));rK(String.prototype,t,l[0]),rK(uK,i,l[1])}r&&oK(uK[i],"sham",!0)},dK=ZR.charAt,hK=function(t,e,n){return e+(n?dK(t,e).length:1)},mK=C,pK=en,bK=st,ZK=$,yK=SY,XK=TypeError,fK=function(t,e){var n=t.exec;if(bK(n)){var r=mK(n,t,e);return null!==r&&pK(r),r}if("RegExp"===ZK(t))return mK(yK,t,e);throw XK("RegExp#exec called on incompatible receiver")},IK=C,GK=en,VK=xr,WK=Ci,vK=at,gK=jt,SK=hK,YK=fK;sK("match",(function(t,e,n){return[function(e){var n=vK(this),r=null==e?void 0:gK(e,t);return r?IK(r,e,n):new RegExp(e)[t](WK(n))},function(t){var r=GK(this),i=WK(t),c=n(e,r,i);if(c.done)return c.value;if(!r.global)return YK(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=YK(r,i));){var s=WK(o[0]);l[u]=s,""===s&&(r.lastIndex=SK(i,VK(r.lastIndex),a)),u++}return 0===u?null:l}]}));var RK=vi,KK=C,LK=O,JK=fd,NK=at,xK=xr,HK=Ci,kK=en,CK=$g,UK=oS,TK=jt,wK=Ir,FK=J,MK=RG,jK=hK,zK=fK,PK=rr,BK=We("matchAll"),QK="RegExp String",DK="RegExp String Iterator",EK=PK.set,OK=PK.getterFor(DK),AK=RegExp.prototype,_K=TypeError,qK=LK("".indexOf),$K=LK("".matchAll),tL=!!$K&&!FK((function(){$K("a",/./)})),eL=JK((function(t,e,n,r){EK(this,{type:DK,regexp:t,string:e,global:n,unicode:r,done:!1})}),QK,(function(){var t=OK(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,r=zK(e,n);return null===r?{value:void 0,done:t.done=!0}:t.global?(""===HK(r[0])&&(e.lastIndex=jK(n,xK(e.lastIndex),t.unicode)),{value:r,done:!1}):(t.done=!0,{value:r,done:!1})})),nL=function(t){var e,n,r,i=kK(this),c=HK(t),a=MK(i,RegExp),o=HK(UK(i));return e=new a(a===RegExp?i.source:i,o),n=!!~qK(o,"g"),r=!!~qK(o,"u"),e.lastIndex=xK(i.lastIndex),new eL(e,c,n,r)};RK({target:"String",proto:!0,forced:tL},{matchAll:function(t){var e,n,r,i=NK(this);if(null!=t){if(CK(t)&&(e=HK(NK(UK(t))),!~qK(e,"g")))throw _K("`.matchAll` does not allow non-global regexes");if(tL)return $K(i,t);if(r=TK(t,BK))return KK(r,t,i)}else if(tL)return $K(i,t);return n=HK(i),new RegExp(t,"g")[BK](n)}}),BK in AK||wK(AK,BK,nL);var rL=O,iL=xr,cL=Ci,aL=at,oL=rL(af),lL=rL("".slice),uL=Math.ceil,sL=function(t){return function(e,n,r){var i,c,a=cL(aL(e)),o=iL(n),l=a.length,u=void 0===r?" ":cL(r);return o<=l||""==u?a:((c=oL(u,uL((i=o-l)/u.length))).length>i&&(c=lL(c,0,i)),t?a+c:c+a)}},dL={start:sL(!1),end:sL(!0)},hL=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Xt),mL=dL.end;vi({target:"String",proto:!0,forced:hL},{padEnd:function(t){return mL(this,t,arguments.length>1?arguments[1]:void 0)}});var pL=dL.start;vi({target:"String",proto:!0,forced:hL},{padStart:function(t){return pL(this,t,arguments.length>1?arguments[1]:void 0)}});var bL=vi,ZL=O,yL=ut,XL=ie,fL=Ci,IL=kr,GL=ZL([].push),VL=ZL([].join);bL({target:"String",stat:!0},{raw:function(t){for(var e=yL(XL(t).raw),n=IL(e),r=arguments.length,i=[],c=0;n>c;){if(GL(i,fL(e[c++])),c===n)return VL(i,"");c<r&&GL(i,fL(arguments[c]))}}}),vi({target:"String",proto:!0},{repeat:af});var WL=O,vL=ie,gL=Math.floor,SL=WL("".charAt),YL=WL("".replace),RL=WL("".slice),KL=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,LL=/\$([$&'`]|\d{1,2})/g,JL=Qo,NL=C,xL=O,HL=sK,kL=J,CL=en,UL=st,TL=Sr,wL=xr,FL=Ci,ML=at,jL=hK,zL=jt,PL=function(t,e,n,r,i,c){var a=n+t.length,o=r.length,l=LL;return void 0!==i&&(i=vL(i),l=KL),YL(c,l,(function(c,l){var u;switch(SL(l,0)){case"$":return"$";case"&":return t;case"`":return RL(e,0,n);case"'":return RL(e,a);case"<":u=i[RL(l,1,-1)];break;default:var s=+l;if(0===s)return c;if(s>o){var d=gL(s/10);return 0===d?c:d<=o?void 0===r[d-1]?SL(l,1):r[d-1]+SL(l,1):c}u=r[s-1]}return void 0===u?"":u}))},BL=fK,QL=We("replace"),DL=Math.max,EL=Math.min,OL=xL([].concat),AL=xL([].push),_L=xL("".indexOf),qL=xL("".slice),$L="$0"==="a".replace(/./,"$0"),tJ=!!/./[QL]&&""===/./[QL]("a","$0"),eJ=!kL((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));HL("replace",(function(t,e,n){var r=tJ?"$":"$0";return[function(t,n){var r=ML(this),i=null==t?void 0:zL(t,QL);return i?NL(i,t,r,n):NL(e,FL(r),t,n)},function(t,i){var c=CL(this),a=FL(t);if("string"==typeof i&&-1===_L(i,r)&&-1===_L(i,"$<")){var o=n(e,c,a,i);if(o.done)return o.value}var l=UL(i);l||(i=FL(i));var u=c.global;if(u){var s=c.unicode;c.lastIndex=0}for(var d=[];;){var h=BL(c,a);if(null===h)break;if(AL(d,h),!u)break;""===FL(h[0])&&(c.lastIndex=jL(a,wL(c.lastIndex),s))}for(var m,p="",b=0,Z=0;Z<d.length;Z++){for(var y=FL((h=d[Z])[0]),X=DL(EL(TL(h.index),a.length),0),f=[],I=1;I<h.length;I++)AL(f,void 0===(m=h[I])?m:String(m));var G=h.groups;if(l){var V=OL([y],f,X,a);void 0!==G&&AL(V,G);var W=FL(JL(i,void 0,V))}else W=PL(y,a,X,f,G,i);X>=b&&(p+=qL(a,b,X)+W,b=X+y.length)}return p+qL(a,b)}]}),!eJ||!$L||tJ);var nJ=C,rJ=en,iJ=at,cJ=gI,aJ=Ci,oJ=jt,lJ=fK;sK("search",(function(t,e,n){return[function(e){var n=iJ(this),r=null==e?void 0:oJ(e,t);return r?nJ(r,e,n):new RegExp(e)[t](aJ(n))},function(t){var r=rJ(this),i=aJ(t),c=n(e,r,i);if(c.done)return c.value;var a=r.lastIndex;cJ(a,0)||(r.lastIndex=0);var o=lJ(r,i);return cJ(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var uJ=Qo,sJ=C,dJ=O,hJ=sK,mJ=$g,pJ=en,bJ=at,ZJ=RG,yJ=hK,XJ=xr,fJ=Ci,IJ=jt,GJ=yc,VJ=fK,WJ=SY,vJ=J,gJ=mS.UNSUPPORTED_Y,SJ=4294967295,YJ=Math.min,RJ=[].push,KJ=dJ(/./.exec),LJ=dJ(RJ),JJ=dJ("".slice),NJ=!vJ((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));hJ("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=fJ(bJ(this)),i=void 0===n?SJ:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!mJ(t))return sJ(e,r,t,i);for(var c,a,o,l=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),s=0,d=new RegExp(t.source,u+"g");(c=sJ(WJ,d,r))&&!((a=d.lastIndex)>s&&(LJ(l,JJ(r,s,c.index)),c.length>1&&c.index<r.length&&uJ(RJ,l,GJ(c,1)),o=c[0].length,s=a,l.length>=i));)d.lastIndex===c.index&&d.lastIndex++;return s===r.length?!o&&KJ(d,"")||LJ(l,""):LJ(l,JJ(r,s)),l.length>i?GJ(l,0,i):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:sJ(e,this,t,n)}:e,[function(e,n){var i=bJ(this),c=null==e?void 0:IJ(e,t);return c?sJ(c,e,i,n):sJ(r,fJ(i),e,n)},function(t,i){var c=pJ(this),a=fJ(t),o=n(r,c,a,i,r!==e);if(o.done)return o.value;var l=ZJ(c,RegExp),u=c.unicode,s=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(gJ?"g":"y"),d=new l(gJ?"^(?:"+c.source+")":c,s),h=void 0===i?SJ:i>>>0;if(0===h)return[];if(0===a.length)return null===VJ(d,a)?[a]:[];for(var m=0,p=0,b=[];p<a.length;){d.lastIndex=gJ?0:p;var Z,y=VJ(d,gJ?JJ(a,p):a);if(null===y||(Z=YJ(XJ(d.lastIndex+(gJ?p:0)),a.length))===m)p=yJ(a,p,u);else{if(LJ(b,JJ(a,m,p)),b.length===h)return b;for(var X=1;X<=y.length-1;X++)if(LJ(b,y[X]),b.length===h)return b;p=m=Z}}return LJ(b,JJ(a,m)),b}]}),!NJ,gJ);var xJ=vi,HJ=O,kJ=L.f,CJ=xr,UJ=Ci,TJ=GR,wJ=at,FJ=WR,MJ=HJ("".startsWith),jJ=HJ("".slice),zJ=Math.min,PJ=FJ("startsWith"),BJ=!PJ&&!!function(){var t=kJ(String.prototype,"startsWith");return t&&!t.writable}();xJ({target:"String",proto:!0,forced:!BJ&&!PJ},{startsWith:function(t){var e=UJ(wJ(this));TJ(t);var n=CJ(zJ(arguments.length>1?arguments[1]:void 0,e.length)),r=UJ(t);return MJ?MJ(e,r,n):jJ(e,n,n+r.length)===r}});var QJ=Wn.PROPER,DJ=J,EJ=zy,OJ=function(t){return DJ((function(){return!!EJ[t]()||"​…᠎"!=="​…᠎"[t]()||QJ&&EJ[t].name!==t}))},AJ=_y.trim;vi({target:"String",proto:!0,forced:OJ("trim")},{trim:function(){return AJ(this)}});var _J=_y.end,qJ=OJ("trimEnd")?function(){return _J(this)}:"".trimEnd;vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==qJ},{trimRight:qJ});vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==qJ},{trimEnd:qJ});var $J=_y.start,tN=OJ("trimStart")?function(){return $J(this)}:"".trimStart;vi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==tN},{trimLeft:tN});vi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==tN},{trimStart:tN});var eN=at,nN=Ci,rN=/"/g,iN=O("".replace),cN=function(t,e,n,r){var i=nN(eN(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+iN(nN(r),rN,"&quot;")+'"'),c+">"+i+"</"+e+">"},aN=J,oN=function(t){return aN((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))},lN=cN;vi({target:"String",proto:!0,forced:oN("anchor")},{anchor:function(t){return lN(this,"a","name",t)}});var uN=cN;vi({target:"String",proto:!0,forced:oN("big")},{big:function(){return uN(this,"big","","")}});var sN=cN;vi({target:"String",proto:!0,forced:oN("blink")},{blink:function(){return sN(this,"blink","","")}});var dN=cN;vi({target:"String",proto:!0,forced:oN("bold")},{bold:function(){return dN(this,"b","","")}});var hN=cN;vi({target:"String",proto:!0,forced:oN("fixed")},{fixed:function(){return hN(this,"tt","","")}});var mN=cN;vi({target:"String",proto:!0,forced:oN("fontcolor")},{fontcolor:function(t){return mN(this,"font","color",t)}});var pN=cN;vi({target:"String",proto:!0,forced:oN("fontsize")},{fontsize:function(t){return pN(this,"font","size",t)}});var bN=cN;vi({target:"String",proto:!0,forced:oN("italics")},{italics:function(){return bN(this,"i","","")}});var ZN=cN;vi({target:"String",proto:!0,forced:oN("link")},{link:function(t){return ZN(this,"a","href",t)}});var yN=cN;vi({target:"String",proto:!0,forced:oN("small")},{small:function(){return yN(this,"small","","")}});var XN=cN;vi({target:"String",proto:!0,forced:oN("strike")},{strike:function(){return XN(this,"strike","","")}});var fN=cN;vi({target:"String",proto:!0,forced:oN("sub")},{sub:function(){return fN(this,"sub","","")}});var IN=cN;vi({target:"String",proto:!0,forced:oN("sup")},{sup:function(){return IN(this,"sup","","")}});var GN,VN,WN,vN={exports:{}},gN=Ym,SN=N,YN=K,RN=st,KN=ht,LN=oe,JN=xi,NN=Ct,xN=Zn,HN=Ir,kN=Ae.f,CN=yt,UN=id,TN=Yd,wN=We,FN=he,MN=YN.Int8Array,jN=MN&&MN.prototype,zN=YN.Uint8ClampedArray,PN=zN&&zN.prototype,BN=MN&&UN(MN),QN=jN&&UN(jN),DN=Object.prototype,EN=YN.TypeError,ON=wN("toStringTag"),AN=FN("TYPED_ARRAY_TAG"),_N=FN("TYPED_ARRAY_CONSTRUCTOR"),qN=gN&&!!TN&&"Opera"!==JN(YN.opera),$N=!1,tx={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},ex={BigInt64Array:8,BigUint64Array:8},nx=function(t){if(!KN(t))return!1;var e=JN(t);return LN(tx,e)||LN(ex,e)};for(GN in tx)(WN=(VN=YN[GN])&&VN.prototype)?xN(WN,_N,VN):qN=!1;for(GN in ex)(WN=(VN=YN[GN])&&VN.prototype)&&xN(WN,_N,VN);if((!qN||!RN(BN)||BN===Function.prototype)&&(BN=function(){throw EN("Incorrect invocation")},qN))for(GN in tx)YN[GN]&&TN(YN[GN],BN);if((!qN||!QN||QN===DN)&&(QN=BN.prototype,qN))for(GN in tx)YN[GN]&&TN(YN[GN].prototype,QN);if(qN&&UN(PN)!==QN&&TN(PN,QN),SN&&!LN(QN,ON))for(GN in $N=!0,kN(QN,ON,{get:function(){return KN(this)?this[AN]:void 0}}),tx)YN[GN]&&xN(YN[GN],AN,GN);var rx={NATIVE_ARRAY_BUFFER_VIEWS:qN,TYPED_ARRAY_CONSTRUCTOR:_N,TYPED_ARRAY_TAG:$N&&AN,aTypedArray:function(t){if(nx(t))return t;throw EN("Target is not a typed array")},aTypedArrayConstructor:function(t){if(RN(t)&&(!TN||CN(BN,t)))return t;throw EN(NN(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,r){if(SN){if(n)for(var i in tx){var c=YN[i];if(c&&LN(c.prototype,t))try{delete c.prototype[t]}catch(n){try{c.prototype[t]=e}catch(t){}}}QN[t]&&!n||HN(QN,t,n?e:qN&&jN[t]||e,r)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(SN){if(TN){if(n)for(r in tx)if((i=YN[r])&&LN(i,t))try{delete i[t]}catch(t){}if(BN[t]&&!n)return;try{return HN(BN,t,n?e:qN&&BN[t]||e)}catch(t){}}for(r in tx)!(i=YN[r])||i[t]&&!n||HN(i,t,e)}},isView:function(t){if(!KN(t))return!1;var e=JN(t);return"DataView"===e||LN(tx,e)||LN(ex,e)},isTypedArray:nx,TypedArray:BN,TypedArrayPrototype:QN},ix=K,cx=J,ax=zs,ox=rx.NATIVE_ARRAY_BUFFER_VIEWS,lx=ix.ArrayBuffer,ux=ix.Int8Array,sx=!ox||!cx((function(){ux(1)}))||!cx((function(){new ux(-1)}))||!ax((function(t){new ux,new ux(null),new ux(1.5),new ux(t)}),!0)||cx((function(){return 1!==new ux(new lx(2),1,void 0).length})),dx=Sr,hx=RangeError,mx=function(t){var e=dx(t);if(e<0)throw hx("The argument can't be less than 0");return e},px=RangeError,bx=function(t,e){var n=mx(t);if(n%e)throw px("Wrong offset");return n},Zx=jc,yx=C,Xx=vG,fx=ie,Ix=kr,Gx=Ss,Vx=fs,Wx=ps,vx=rx.aTypedArrayConstructor,gx=function(t){var e,n,r,i,c,a,o=Xx(this),l=fx(t),u=arguments.length,s=u>1?arguments[1]:void 0,d=void 0!==s,h=Vx(l);if(h&&!Wx(h))for(a=(c=Gx(l,h)).next,l=[];!(i=yx(a,c)).done;)l.push(i.value);for(d&&u>2&&(s=Zx(s,arguments[2])),n=Ix(l),r=new(vx(o))(n),e=0;n>e;e++)r[e]=d?s(l[e],e):l[e];return r},Sx=vi,Yx=K,Rx=C,Kx=N,Lx=sx,Jx=rx,Nx=Pp,xx=Nm,Hx=z,kx=Zn,Cx=KX,Ux=xr,Tx=Cm,wx=bx,Fx=He,Mx=oe,jx=xi,zx=ht,Px=Ht,Bx=ac,Qx=yt,Dx=Yd,Ex=Gr.f,Ox=gx,Ax=fa.forEach,_x=pm,qx=Ae,$x=L,tH=cZ,eH=rr.get,nH=rr.set,rH=qx.f,iH=$x.f,cH=Math.round,aH=Yx.RangeError,oH=Nx.ArrayBuffer,lH=oH.prototype,uH=Nx.DataView,sH=Jx.NATIVE_ARRAY_BUFFER_VIEWS,dH=Jx.TYPED_ARRAY_CONSTRUCTOR,hH=Jx.TYPED_ARRAY_TAG,mH=Jx.TypedArray,pH=Jx.TypedArrayPrototype,bH=Jx.aTypedArrayConstructor,ZH=Jx.isTypedArray,yH="BYTES_PER_ELEMENT",XH="Wrong length",fH=function(t,e){bH(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},IH=function(t,e){rH(t,e,{get:function(){return eH(this)[e]}})},GH=function(t){var e;return Qx(lH,t)||"ArrayBuffer"==(e=jx(t))||"SharedArrayBuffer"==e},VH=function(t,e){return ZH(t)&&!Px(e)&&e in t&&Cx(+e)&&e>=0},WH=function(t,e){return e=Fx(e),VH(t,e)?Hx(2,t[e]):iH(t,e)},vH=function(t,e,n){return e=Fx(e),!(VH(t,e)&&zx(n)&&Mx(n,"value"))||Mx(n,"get")||Mx(n,"set")||n.configurable||Mx(n,"writable")&&!n.writable||Mx(n,"enumerable")&&!n.enumerable?rH(t,e,n):(t[e]=n.value,t)};Kx?(sH||($x.f=WH,qx.f=vH,IH(pH,"buffer"),IH(pH,"byteOffset"),IH(pH,"byteLength"),IH(pH,"length")),Sx({target:"Object",stat:!0,forced:!sH},{getOwnPropertyDescriptor:WH,defineProperty:vH}),vN.exports=function(t,e,n){var r=t.match(/\d+$/)[0]/8,i=t+(n?"Clamped":"")+"Array",c="get"+t,a="set"+t,o=Yx[i],l=o,u=l&&l.prototype,s={},d=function(t,e){rH(t,e,{get:function(){return function(t,e){var n=eH(t);return n.view[c](e*r+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var c=eH(t);n&&(i=(i=cH(i))<0?0:i>255?255:255&i),c.view[a](e*r+c.byteOffset,i,!0)}(this,e,t)},enumerable:!0})};sH?Lx&&(l=e((function(t,e,n,i){return xx(t,u),tH(zx(e)?GH(e)?void 0!==i?new o(e,wx(n,r),i):void 0!==n?new o(e,wx(n,r)):new o(e):ZH(e)?fH(l,e):Rx(Ox,l,e):new o(Tx(e)),t,l)})),Dx&&Dx(l,mH),Ax(Ex(o),(function(t){t in l||kx(l,t,o[t])})),l.prototype=u):(l=e((function(t,e,n,i){xx(t,u);var c,a,o,s=0,h=0;if(zx(e)){if(!GH(e))return ZH(e)?fH(l,e):Rx(Ox,l,e);c=e,h=wx(n,r);var m=e.byteLength;if(void 0===i){if(m%r)throw aH(XH);if((a=m-h)<0)throw aH(XH)}else if((a=Ux(i)*r)+h>m)throw aH(XH);o=a/r}else o=Tx(e),c=new oH(a=o*r);for(nH(t,{buffer:c,byteOffset:h,byteLength:a,length:o,view:new uH(c)});s<o;)d(t,s++)})),Dx&&Dx(l,mH),u=l.prototype=Bx(pH)),u.constructor!==l&&kx(u,"constructor",l),kx(u,dH,l),hH&&kx(u,hH,i);var h=l!=o;s[i]=l,Sx({global:!0,constructor:!0,forced:h,sham:!sH},s),yH in l||kx(l,yH,r),yH in u||kx(u,yH,r),_x(i)}):vN.exports=function(){},(0,vN.exports)("Float32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Float64",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}}),!0),(0,vN.exports)("Uint16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint32",(function(t){return function(e,n,r){return t(this,e,n,r)}}));var gH=rx,SH=O(fu),YH=gH.aTypedArray;(0,gH.exportTypedArrayMethod)("copyWithin",(function(t,e){return SH(YH(this),t,e,arguments.length>2?arguments[2]:void 0)}));var RH=fa.every,KH=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("every",(function(t){return RH(KH(this),t,arguments.length>1?arguments[1]:void 0)}));var LH=Je,JH=TypeError,NH=Lu,xH=function(t){var e=LH(t,"number");if("number"==typeof e)throw JH("Can't convert number to bigint");return BigInt(e)},HH=xi,kH=C,CH=J,UH=rx.aTypedArray,TH=rx.exportTypedArrayMethod,wH=O("".slice);TH("fill",(function(t){var e=arguments.length;UH(this);var n="Big"===wH(HH(this),0,3)?xH(t):+t;return kH(NH,this,n,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),CH((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})));var FH=kr,MH=RG,jH=rx.TYPED_ARRAY_CONSTRUCTOR,zH=rx.aTypedArrayConstructor,PH=function(t){return zH(MH(t,t[jH]))},BH=function(t,e){for(var n=0,r=FH(e),i=new t(r);r>n;)i[n]=e[n++];return i},QH=PH,DH=fa.filter,EH=function(t,e){return BH(QH(t),e)},OH=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("filter",(function(t){var e=DH(OH(this),t,arguments.length>1?arguments[1]:void 0);return EH(this,e)}));var AH=fa.find,_H=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("find",(function(t){return AH(_H(this),t,arguments.length>1?arguments[1]:void 0)}));var qH=fa.findIndex,$H=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("findIndex",(function(t){return qH($H(this),t,arguments.length>1?arguments[1]:void 0)}));var tk=fa.forEach,ek=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("forEach",(function(t){tk(ek(this),t,arguments.length>1?arguments[1]:void 0)})),(0,rx.exportTypedArrayStaticMethod)("from",gx,sx);var nk=Fr.includes,rk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("includes",(function(t){return nk(rk(this),t,arguments.length>1?arguments[1]:void 0)}));var ik=Fr.indexOf,ck=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("indexOf",(function(t){return ik(ck(this),t,arguments.length>1?arguments[1]:void 0)}));var ak=K,ok=J,lk=O,uk=rx,sk=ih,dk=We("iterator"),hk=ak.Uint8Array,mk=lk(sk.values),pk=lk(sk.keys),bk=lk(sk.entries),Zk=uk.aTypedArray,yk=uk.exportTypedArrayMethod,Xk=hk&&hk.prototype,fk=!ok((function(){Xk[dk].call([1])})),Ik=!!Xk&&Xk.values&&Xk[dk]===Xk.values&&"values"===Xk.values.name,Gk=function(){return mk(Zk(this))};yk("entries",(function(){return bk(Zk(this))}),fk),yk("keys",(function(){return pk(Zk(this))}),fk),yk("values",Gk,fk||!Ik,{name:"values"}),yk(dk,Gk,fk||!Ik,{name:"values"});var Vk=rx.aTypedArray,Wk=rx.exportTypedArrayMethod,vk=O([].join);Wk("join",(function(t){return vk(Vk(this),t)}));var gk=Qo,Sk=ut,Yk=Sr,Rk=kr,Kk=oh,Lk=Math.min,Jk=[].lastIndexOf,Nk=!!Jk&&1/[1].lastIndexOf(1,-0)<0,xk=Kk("lastIndexOf"),Hk=Nk||!xk?function(t){if(Nk)return gk(Jk,this,arguments)||0;var e=Sk(this),n=Rk(e),r=n-1;for(arguments.length>1&&(r=Lk(r,Yk(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}:Jk,kk=Qo,Ck=Hk,Uk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return kk(Ck,Uk(this),e>1?[t,arguments[1]]:[t])}));var Tk=fa.map,wk=PH,Fk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("map",(function(t){return Tk(Fk(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(wk(t))(e)}))}));var Mk=rx.aTypedArrayConstructor;(0,rx.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(Mk(this))(e);e>t;)n[t]=arguments[t++];return n}),sx);var jk=Ft,zk=ie,Pk=it,Bk=kr,Qk=TypeError,Dk=function(t){return function(e,n,r,i){jk(n);var c=zk(e),a=Pk(c),o=Bk(c),l=t?o-1:0,u=t?-1:1;if(r<2)for(;;){if(l in a){i=a[l],l+=u;break}if(l+=u,t?l<0:o<=l)throw Qk("Reduce of empty array with no initial value")}for(;t?l>=0:o>l;l+=u)l in a&&(i=n(i,a[l],l,c));return i}},Ek={left:Dk(!1),right:Dk(!0)},Ok=Ek.left,Ak=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return Ok(Ak(this),t,e,e>1?arguments[1]:void 0)}));var _k=Ek.right,qk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return _k(qk(this),t,e,e>1?arguments[1]:void 0)}));var $k=rx.aTypedArray,tC=rx.exportTypedArrayMethod,eC=Math.floor;tC("reverse",(function(){for(var t,e=this,n=$k(e).length,r=eC(n/2),i=0;i<r;)t=e[i],e[i++]=e[--n],e[n]=t;return e}));var nC=K,rC=C,iC=rx,cC=kr,aC=bx,oC=ie,lC=J,uC=nC.RangeError,sC=nC.Int8Array,dC=sC&&sC.prototype,hC=dC&&dC.set,mC=iC.aTypedArray,pC=iC.exportTypedArrayMethod,bC=!lC((function(){var t=new Uint8ClampedArray(2);return rC(hC,t,{length:1,0:3},1),3!==t[1]})),ZC=bC&&iC.NATIVE_ARRAY_BUFFER_VIEWS&&lC((function(){var t=new sC(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));pC("set",(function(t){mC(this);var e=aC(arguments.length>1?arguments[1]:void 0,1),n=oC(t);if(bC)return rC(hC,this,n,e);var r=this.length,i=cC(n),c=0;if(i+e>r)throw uC("Wrong length");for(;c<i;)this[e+c]=n[c++]}),!bC||ZC);var yC=PH,XC=Do,fC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("slice",(function(t,e){for(var n=XC(fC(this),t,e),r=yC(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),J((function(){new Int8Array(1).slice()})));var IC=fa.some,GC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("some",(function(t){return IC(GC(this),t,arguments.length>1?arguments[1]:void 0)}));var VC=O,WC=J,vC=Ft,gC=Uh,SC=wh,YC=Fh,RC=gt,KC=jh,LC=rx.aTypedArray,JC=rx.exportTypedArrayMethod,NC=K.Uint16Array,xC=NC&&VC(NC.prototype.sort),HC=!(!xC||WC((function(){xC(new NC(2),null)}))&&WC((function(){xC(new NC(2),{})}))),kC=!!xC&&!WC((function(){if(RC)return RC<74;if(SC)return SC<67;if(YC)return!0;if(KC)return KC<602;var t,e,n=new NC(516),r=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(xC(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));JC("sort",(function(t){return void 0!==t&&vC(t),kC?xC(this,t):gC(LC(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!kC||HC);var CC=xr,UC=Lr,TC=PH,wC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("subarray",(function(t,e){var n=wC(this),r=n.length,i=UC(t,r);return new(TC(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,CC((void 0===e?r:UC(e,r))-i))}));var FC=Qo,MC=rx,jC=J,zC=Do,PC=K.Int8Array,BC=MC.aTypedArray,QC=MC.exportTypedArrayMethod,DC=[].toLocaleString,EC=!!PC&&jC((function(){DC.call(new PC(1))}));QC("toLocaleString",(function(){return FC(DC,EC?zC(BC(this)):BC(this),zC(arguments))}),jC((function(){return[1,2].toLocaleString()!=new PC([1,2]).toLocaleString()}))||!jC((function(){PC.prototype.toLocaleString.call([1,2])})));var OC=rx.exportTypedArrayMethod,AC=J,_C=O,qC=K.Uint8Array,$C=qC&&qC.prototype||{},tU=[].toString,eU=_C([].join);AC((function(){tU.call({})}))&&(tU=function(){return eU(this)});var nU=$C.toString!=tU;OC("toString",tU,nU);var rU=O,iU=Km,cU=Xb.exports.getWeakData,aU=en,oU=ht,lU=Nm,uU=eZ,sU=oe,dU=rr.set,hU=rr.getterFor,mU=fa.find,pU=fa.findIndex,bU=rU([].splice),ZU=0,yU=function(t){return t.frozen||(t.frozen=new XU)},XU=function(){this.entries=[]},fU=function(t,e){return mU(t.entries,(function(t){return t[0]===e}))};XU.prototype={get:function(t){var e=fU(this,t);if(e)return e[1]},has:function(t){return!!fU(this,t)},set:function(t,e){var n=fU(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=pU(this.entries,(function(e){return e[0]===t}));return~e&&bU(this.entries,e,1),!!~e}};var IU,GU={getConstructor:function(t,e,n,r){var i=t((function(t,i){lU(t,c),dU(t,{type:e,id:ZU++,frozen:void 0}),null!=i&&uU(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=hU(e),o=function(t,e,n){var r=a(t),i=cU(aU(e),!0);return!0===i?yU(r).set(e,n):i[r.id]=n,t};return iU(c,{delete:function(t){var e=a(this);if(!oU(t))return!1;var n=cU(t);return!0===n?yU(e).delete(t):n&&sU(n,e.id)&&delete n[e.id]},has:function(t){var e=a(this);if(!oU(t))return!1;var n=cU(t);return!0===n?yU(e).has(t):n&&sU(n,e.id)}}),iU(c,n?{get:function(t){var e=a(this);if(oU(t)){var n=cU(t);return!0===n?yU(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),i}},VU=K,WU=O,vU=Km,gU=Xb.exports,SU=IZ,YU=GU,RU=ht,KU=gb,LU=rr.enforce,JU=Hn,NU=!VU.ActiveXObject&&"ActiveXObject"in VU,xU=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},HU=SU("WeakMap",xU,YU);if(JU&&NU){IU=YU.getConstructor(xU,"WeakMap",!0),gU.enable();var kU=HU.prototype,CU=WU(kU.delete),UU=WU(kU.has),TU=WU(kU.get),wU=WU(kU.set);vU(kU,{delete:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),CU(this,t)||e.frozen.delete(t)}return CU(this,t)},has:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),UU(this,t)||e.frozen.has(t)}return UU(this,t)},get:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),UU(this,t)?TU(this,t):e.frozen.get(t)}return TU(this,t)},set:function(t,e){if(RU(t)&&!KU(t)){var n=LU(this);n.frozen||(n.frozen=new IU),UU(this,t)?wU(this,t,e):n.frozen.set(t,e)}else wU(this,t,e);return this}})}IZ("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GU);var FU={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},MU=Te("span").classList,jU=MU&&MU.constructor&&MU.constructor.prototype,zU=jU===Object.prototype?void 0:jU,PU=fa.forEach,BU=oh("forEach")?[].forEach:function(t){return PU(this,t,arguments.length>1?arguments[1]:void 0)},QU=K,DU=FU,EU=zU,OU=BU,AU=Zn,_U=function(t){if(t&&t.forEach!==OU)try{AU(t,"forEach",OU)}catch(e){t.forEach=OU}};for(var qU in DU)DU[qU]&&_U(QU[qU]&&QU[qU].prototype);_U(EU);var $U=K,tT=FU,eT=zU,nT=ih,rT=Zn,iT=We,cT=iT("iterator"),aT=iT("toStringTag"),oT=nT.values,lT=function(t,e){if(t){if(t[cT]!==oT)try{rT(t,cT,oT)}catch(e){t[cT]=oT}if(t[aT]||rT(t,aT,e),tT[e])for(var n in nT)if(t[n]!==nT[n])try{rT(t,n,nT[n])}catch(e){t[n]=nT[n]}}};for(var uT in tT)lT($U[uT]&&$U[uT].prototype,uT);lT(eT,"DOMTokenList");var sT=hV.clear;vi({global:!0,bind:!0,enumerable:!0,forced:K.clearImmediate!==sT},{clearImmediate:sT});var dT=hV.set;vi({global:!0,bind:!0,enumerable:!0,forced:K.setImmediate!==dT},{setImmediate:dT});var hT=vi,mT=LV,pT=Ft,bT=LG,ZT=IG,yT=K.process;hT({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(t){bT(arguments.length,1),pT(t);var e=ZT&&yT.domain;mT(e?e.bind(t):t)}});var XT=J,fT=We("iterator"),IT=!XT((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[fT]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),GT=O,VT=2147483647,WT=/[^\0-\u007E]/,vT=/[.\u3002\uFF0E\uFF61]/g,gT="Overflow: input needs wider integers to process",ST=RangeError,YT=GT(vT.exec),RT=Math.floor,KT=String.fromCharCode,LT=GT("".charCodeAt),JT=GT([].join),NT=GT([].push),xT=GT("".replace),HT=GT("".split),kT=GT("".toLowerCase),CT=function(t){return t+22+75*(t<26)},UT=function(t,e,n){var r=0;for(t=n?RT(t/700):t>>1,t+=RT(t/e);t>455;)t=RT(t/35),r+=36;return RT(r+36*t/(t+38))},TT=function(t){var e=[];t=function(t){for(var e=[],n=0,r=t.length;n<r;){var i=LT(t,n++);if(i>=55296&&i<=56319&&n<r){var c=LT(t,n++);56320==(64512&c)?NT(e,((1023&i)<<10)+(1023&c)+65536):(NT(e,i),n--)}else NT(e,i)}return e}(t);var n,r,i=t.length,c=128,a=0,o=72;for(n=0;n<t.length;n++)(r=t[n])<128&&NT(e,KT(r));var l=e.length,u=l;for(l&&NT(e,"-");u<i;){var s=VT;for(n=0;n<t.length;n++)(r=t[n])>=c&&r<s&&(s=r);var d=u+1;if(s-c>RT((VT-a)/d))throw ST(gT);for(a+=(s-c)*d,c=s,n=0;n<t.length;n++){if((r=t[n])<c&&++a>VT)throw ST(gT);if(r==c){for(var h=a,m=36;;){var p=m<=o?1:m>=o+26?26:m-o;if(h<p)break;var b=h-p,Z=36-p;NT(e,KT(CT(p+b%Z))),h=RT(b/Z),m+=36}NT(e,KT(CT(h))),o=UT(a,d,u==l),a=0,u++}}a++,c++}return JT(e,"")},wT=vi,FT=K,MT=C,jT=O,zT=N,PT=IT,BT=Ir,QT=Km,DT=Tc,ET=fd,OT=rr,AT=Nm,_T=st,qT=oe,$T=jc,tw=xi,ew=en,nw=ht,rw=Ci,iw=ac,cw=z,aw=Ss,ow=fs,lw=LG,uw=Uh,sw=We("iterator"),dw="URLSearchParams",hw="URLSearchParamsIterator",mw=OT.set,pw=OT.getterFor(dw),bw=OT.getterFor(hw),Zw=Object.getOwnPropertyDescriptor,yw=function(t){if(!zT)return FT[t];var e=Zw(FT,t);return e&&e.value},Xw=yw("fetch"),fw=yw("Request"),Iw=yw("Headers"),Gw=fw&&fw.prototype,Vw=Iw&&Iw.prototype,Ww=FT.RegExp,vw=FT.TypeError,gw=FT.decodeURIComponent,Sw=FT.encodeURIComponent,Yw=jT("".charAt),Rw=jT([].join),Kw=jT([].push),Lw=jT("".replace),Jw=jT([].shift),Nw=jT([].splice),xw=jT("".split),Hw=jT("".slice),kw=/\+/g,Cw=Array(4),Uw=function(t){return Cw[t-1]||(Cw[t-1]=Ww("((?:%[\\da-f]{2}){"+t+"})","gi"))},Tw=function(t){try{return gw(t)}catch(e){return t}},ww=function(t){var e=Lw(t,kw," "),n=4;try{return gw(e)}catch(t){for(;n;)e=Lw(e,Uw(n--),Tw);return e}},Fw=/[!'()~]|%20/g,Mw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},jw=function(t){return Mw[t]},zw=function(t){return Lw(Sw(t),Fw,jw)},Pw=ET((function(t,e){mw(this,{type:hw,iterator:aw(pw(t).entries),kind:e})}),"Iterator",(function(){var t=bw(this),e=t.kind,n=t.iterator.next(),r=n.value;return n.done||(n.value="keys"===e?r.key:"values"===e?r.value:[r.key,r.value]),n}),!0),Bw=function(t){this.entries=[],this.url=null,void 0!==t&&(nw(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Yw(t,0)?Hw(t,1):t:rw(t)))};Bw.prototype={type:dw,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,r,i,c,a,o,l=ow(t);if(l)for(n=(e=aw(t,l)).next;!(r=MT(n,e)).done;){if(c=(i=aw(ew(r.value))).next,(a=MT(c,i)).done||(o=MT(c,i)).done||!MT(c,i).done)throw vw("Expected sequence with length 2");Kw(this.entries,{key:rw(a.value),value:rw(o.value)})}else for(var u in t)qT(t,u)&&Kw(this.entries,{key:u,value:rw(t[u])})},parseQuery:function(t){if(t)for(var e,n,r=xw(t,"&"),i=0;i<r.length;)(e=r[i++]).length&&(n=xw(e,"="),Kw(this.entries,{key:ww(Jw(n)),value:ww(Rw(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],r=0;r<e.length;)t=e[r++],Kw(n,zw(t.key)+"="+zw(t.value));return Rw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var Qw=function(){AT(this,Dw);var t=arguments.length>0?arguments[0]:void 0;mw(this,new Bw(t))},Dw=Qw.prototype;if(QT(Dw,{append:function(t,e){lw(arguments.length,2);var n=pw(this);Kw(n.entries,{key:rw(t),value:rw(e)}),n.updateURL()},delete:function(t){lw(arguments.length,1);for(var e=pw(this),n=e.entries,r=rw(t),i=0;i<n.length;)n[i].key===r?Nw(n,i,1):i++;e.updateURL()},get:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=0;r<e.length;r++)if(e[r].key===n)return e[r].value;return null},getAll:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=[],i=0;i<e.length;i++)e[i].key===n&&Kw(r,e[i].value);return r},has:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=0;r<e.length;)if(e[r++].key===n)return!0;return!1},set:function(t,e){lw(arguments.length,1);for(var n,r=pw(this),i=r.entries,c=!1,a=rw(t),o=rw(e),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?Nw(i,l--,1):(c=!0,n.value=o));c||Kw(i,{key:a,value:o}),r.updateURL()},sort:function(){var t=pw(this);uw(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=pw(this).entries,r=$T(t,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((e=n[i++]).value,e.key,this)},keys:function(){return new Pw(this,"keys")},values:function(){return new Pw(this,"values")},entries:function(){return new Pw(this,"entries")}},{enumerable:!0}),BT(Dw,sw,Dw.entries,{name:"entries"}),BT(Dw,"toString",(function(){return pw(this).serialize()}),{enumerable:!0}),DT(Qw,dw),wT({global:!0,constructor:!0,forced:!PT},{URLSearchParams:Qw}),!PT&&_T(Iw)){var Ew=jT(Vw.has),Ow=jT(Vw.set),Aw=function(t){if(nw(t)){var e,n=t.body;if(tw(n)===dw)return e=t.headers?new Iw(t.headers):new Iw,Ew(e,"content-type")||Ow(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),iw(t,{body:cw(0,rw(n)),headers:cw(0,e)})}return t};if(_T(Xw)&&wT({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return Xw(t,arguments.length>1?Aw(arguments[1]):{})}}),_T(fw)){var _w=function(t){return AT(this,Gw),new fw(t,arguments.length>1?Aw(arguments[1]):{})};Gw.constructor=_w,_w.prototype=Gw,wT({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:_w})}}var qw,$w=vi,tF=N,eF=IT,nF=K,rF=jc,iF=O,cF=Ir,aF=KY,oF=Nm,lF=oe,uF=kf,sF=Ts,dF=yc,hF=ZR.codeAt,mF=function(t){var e,n,r=[],i=HT(xT(kT(t),vT,"."),".");for(e=0;e<i.length;e++)n=i[e],NT(r,YT(WT,n)?"xn--"+TT(n):n);return JT(r,".")},pF=Ci,bF=Tc,ZF=LG,yF={URLSearchParams:Qw,getState:pw},XF=rr,fF=XF.set,IF=XF.getterFor("URL"),GF=yF.URLSearchParams,VF=yF.getState,WF=nF.URL,vF=nF.TypeError,gF=nF.parseInt,SF=Math.floor,YF=Math.pow,RF=iF("".charAt),KF=iF(/./.exec),LF=iF([].join),JF=iF(1..toString),NF=iF([].pop),xF=iF([].push),HF=iF("".replace),kF=iF([].shift),CF=iF("".split),UF=iF("".slice),TF=iF("".toLowerCase),wF=iF([].unshift),FF="Invalid scheme",MF="Invalid host",jF="Invalid port",zF=/[a-z]/i,PF=/[\d+-.a-z]/i,BF=/\d/,QF=/^0x/i,DF=/^[0-7]+$/,EF=/^\d+$/,OF=/^[\da-f]+$/i,AF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,_F=/[\0\t\n\r #/:<>?@[\\\]^|]/,qF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,$F=/[\t\n\r]/g,tM=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)wF(e,t%256),t=SF(t/256);return LF(e,".")}if("object"==o(t)){for(e="",r=function(t){for(var e=null,n=1,r=null,i=0,c=0;c<8;c++)0!==t[c]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(e=r,n=i),e}(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=JF(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},eM={},nM=uF({},eM,{" ":1,'"':1,"<":1,">":1,"`":1}),rM=uF({},nM,{"#":1,"?":1,"{":1,"}":1}),iM=uF({},rM,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),cM=function(t,e){var n=hF(t,0);return n>32&&n<127&&!lF(e,t)?t:encodeURIComponent(t)},aM={ftp:21,file:null,http:80,https:443,ws:80,wss:443},oM=function(t,e){var n;return 2==t.length&&KF(zF,RF(t,0))&&(":"==(n=RF(t,1))||!e&&"|"==n)},lM=function(t){var e;return t.length>1&&oM(UF(t,0,2))&&(2==t.length||"/"===(e=RF(t,2))||"\\"===e||"?"===e||"#"===e)},uM=function(t){return"."===t||"%2e"===TF(t)},sM={},dM={},hM={},mM={},pM={},bM={},ZM={},yM={},XM={},fM={},IM={},GM={},VM={},WM={},vM={},gM={},SM={},YM={},RM={},KM={},LM={},JM=function t(e,n,r){var i,c,a,o=pF(e);if(n){if(c=this.parse(o))throw vF(c);this.searchParams=null}else{if(void 0!==r&&(i=new t(r,!0)),c=this.parse(o,null,i))throw vF(c);(a=VF(new GF)).bindURL(this),this.searchParams=a}};JM.prototype={type:"URL",parse:function(t,e,n){var r,i,c,a,o,l=this,u=e||sM,s=0,d="",h=!1,m=!1,p=!1;for(t=pF(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=HF(t,qF,"")),t=HF(t,$F,""),r=sF(t);s<=r.length;){switch(i=r[s],u){case sM:if(!i||!KF(zF,i)){if(e)return FF;u=hM;continue}d+=TF(i),u=dM;break;case dM:if(i&&(KF(PF,i)||"+"==i||"-"==i||"."==i))d+=TF(i);else{if(":"!=i){if(e)return FF;d="",u=hM,s=0;continue}if(e&&(l.isSpecial()!=lF(aM,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,e)return void(l.isSpecial()&&aM[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?u=WM:l.isSpecial()&&n&&n.scheme==l.scheme?u=mM:l.isSpecial()?u=yM:"/"==r[s+1]?(u=pM,s++):(l.cannotBeABaseURL=!0,xF(l.path,""),u=RM)}break;case hM:if(!n||n.cannotBeABaseURL&&"#"!=i)return FF;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=dF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=LM;break}u="file"==n.scheme?WM:bM;continue;case mM:if("/"!=i||"/"!=r[s+1]){u=bM;continue}u=XM,s++;break;case pM:if("/"==i){u=fM;break}u=YM;continue;case bM:if(l.scheme=n.scheme,i==qw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=ZM;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query="",u=KM;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.path.length--,u=YM;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query,l.fragment="",u=LM}break;case ZM:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=YM;continue}u=fM}else u=XM;break;case yM:if(u=XM,"/"!=i||"/"!=RF(d,s+1))continue;s++;break;case XM:if("/"!=i&&"\\"!=i){u=fM;continue}break;case fM:if("@"==i){h&&(d="%40"+d),h=!0,c=sF(d);for(var b=0;b<c.length;b++){var Z=c[b];if(":"!=Z||p){var y=cM(Z,iM);p?l.password+=y:l.username+=y}else p=!0}d=""}else if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(h&&""==d)return"Invalid authority";s-=sF(d).length+1,d="",u=IM}else d+=i;break;case IM:case GM:if(e&&"file"==l.scheme){u=gM;continue}if(":"!=i||m){if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==d)return MF;if(e&&""==d&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(d))return a;if(d="",u=SM,e)return;continue}"["==i?m=!0:"]"==i&&(m=!1),d+=i}else{if(""==d)return MF;if(a=l.parseHost(d))return a;if(d="",u=VM,e==GM)return}break;case VM:if(!KF(BF,i)){if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||e){if(""!=d){var X=gF(d,10);if(X>65535)return jF;l.port=l.isSpecial()&&X===aM[l.scheme]?null:X,d=""}if(e)return;u=SM;continue}return jF}d+=i;break;case WM:if(l.scheme="file","/"==i||"\\"==i)u=vM;else{if(!n||"file"!=n.scheme){u=YM;continue}if(i==qw)l.host=n.host,l.path=dF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=dF(n.path),l.query="",u=KM;else{if("#"!=i){lM(LF(dF(r,s),""))||(l.host=n.host,l.path=dF(n.path),l.shortenPath()),u=YM;continue}l.host=n.host,l.path=dF(n.path),l.query=n.query,l.fragment="",u=LM}}break;case vM:if("/"==i||"\\"==i){u=gM;break}n&&"file"==n.scheme&&!lM(LF(dF(r,s),""))&&(oM(n.path[0],!0)?xF(l.path,n.path[0]):l.host=n.host),u=YM;continue;case gM:if(i==qw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!e&&oM(d))u=YM;else if(""==d){if(l.host="",e)return;u=SM}else{if(a=l.parseHost(d))return a;if("localhost"==l.host&&(l.host=""),e)return;d="",u=SM}continue}d+=i;break;case SM:if(l.isSpecial()){if(u=YM,"/"!=i&&"\\"!=i)continue}else if(e||"?"!=i)if(e||"#"!=i){if(i!=qw&&(u=YM,"/"!=i))continue}else l.fragment="",u=LM;else l.query="",u=KM;break;case YM:if(i==qw||"/"==i||"\\"==i&&l.isSpecial()||!e&&("?"==i||"#"==i)){if(".."===(o=TF(o=d))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||xF(l.path,"")):uM(d)?"/"==i||"\\"==i&&l.isSpecial()||xF(l.path,""):("file"==l.scheme&&!l.path.length&&oM(d)&&(l.host&&(l.host=""),d=RF(d,0)+":"),xF(l.path,d)),d="","file"==l.scheme&&(i==qw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)kF(l.path);"?"==i?(l.query="",u=KM):"#"==i&&(l.fragment="",u=LM)}else d+=cM(i,rM);break;case RM:"?"==i?(l.query="",u=KM):"#"==i?(l.fragment="",u=LM):i!=qw&&(l.path[0]+=cM(i,eM));break;case KM:e||"#"!=i?i!=qw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":cM(i,eM)):(l.fragment="",u=LM);break;case LM:i!=qw&&(l.fragment+=cM(i,nM))}s++}},parseHost:function(t){var e,n,r;if("["==RF(t,0)){if("]"!=RF(t,t.length-1))return MF;if(e=function(t){var e,n,r,i,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,s=null,d=0,h=function(){return RF(t,d)};if(":"==h()){if(":"!=RF(t,1))return;d+=2,s=++u}for(;h();){if(8==u)return;if(":"!=h()){for(e=n=0;n<4&&KF(OF,h());)e=16*e+gF(h(),16),d++,n++;if("."==h()){if(0==n)return;if(d-=n,u>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;d++}if(!KF(BF,h()))return;for(;KF(BF,h());){if(c=gF(h(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;d++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==h()){if(d++,!h())return}else if(h())return;l[u++]=e}else{if(null!==s)return;d++,s=++u}}if(null!==s)for(a=u-s,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[s+a-1],l[s+--a]=o;else if(8!=u)return;return l}(UF(t,1,-1)),!e)return MF;this.host=e}else if(this.isSpecial()){if(t=mF(t),KF(AF,t))return MF;if(e=function(t){var e,n,r,i,c,a,o,l=CF(t,".");if(l.length&&""==l[l.length-1]&&l.length--,(e=l.length)>4)return t;for(n=[],r=0;r<e;r++){if(""==(i=l[r]))return t;if(c=10,i.length>1&&"0"==RF(i,0)&&(c=KF(QF,i)?16:8,i=UF(i,8==c?1:2)),""===i)a=0;else{if(!KF(10==c?EF:8==c?DF:OF,i))return t;a=gF(i,c)}xF(n,a)}for(r=0;r<e;r++)if(a=n[r],r==e-1){if(a>=YF(256,5-e))return null}else if(a>255)return null;for(o=NF(n),r=0;r<n.length;r++)o+=n[r]*YF(256,3-r);return o}(t),null===e)return MF;this.host=e}else{if(KF(_F,t))return MF;for(e="",n=sF(t),r=0;r<n.length;r++)e+=cM(n[r],eM);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return lF(aM,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&oM(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,r=t.password,i=t.host,c=t.port,a=t.path,o=t.query,l=t.fragment,u=e+":";return null!==i?(u+="//",t.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=tM(i),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+LF(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(t){var e=this.parse(t);if(e)throw vF(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new NM(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+tM(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(pF(t)+":",sM)},getUsername:function(){return this.username},setUsername:function(t){var e=sF(pF(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=cM(e[n],iM)}},getPassword:function(){return this.password},setPassword:function(t){var e=sF(pF(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=cM(e[n],iM)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?tM(t):tM(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,IM)},getHostname:function(){var t=this.host;return null===t?"":tM(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,GM)},getPort:function(){var t=this.port;return null===t?"":pF(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=pF(t))?this.port=null:this.parse(t,VM))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+LF(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,SM))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=pF(t))?this.query=null:("?"==RF(t,0)&&(t=UF(t,1)),this.query="",this.parse(t,KM)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=pF(t))?("#"==RF(t,0)&&(t=UF(t,1)),this.fragment="",this.parse(t,LM)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var NM=function(t){var e=oF(this,xM),n=ZF(arguments.length,1)>1?arguments[1]:void 0,r=fF(e,new JM(t,!1,n));tF||(e.href=r.serialize(),e.origin=r.getOrigin(),e.protocol=r.getProtocol(),e.username=r.getUsername(),e.password=r.getPassword(),e.host=r.getHost(),e.hostname=r.getHostname(),e.port=r.getPort(),e.pathname=r.getPathname(),e.search=r.getSearch(),e.searchParams=r.getSearchParams(),e.hash=r.getHash())},xM=NM.prototype,HM=function(t,e){return{get:function(){return IF(this)[t]()},set:e&&function(t){return IF(this)[e](t)},configurable:!0,enumerable:!0}};if(tF&&(aF(xM,"href",HM("serialize","setHref")),aF(xM,"origin",HM("getOrigin")),aF(xM,"protocol",HM("getProtocol","setProtocol")),aF(xM,"username",HM("getUsername","setUsername")),aF(xM,"password",HM("getPassword","setPassword")),aF(xM,"host",HM("getHost","setHost")),aF(xM,"hostname",HM("getHostname","setHostname")),aF(xM,"port",HM("getPort","setPort")),aF(xM,"pathname",HM("getPathname","setPathname")),aF(xM,"search",HM("getSearch","setSearch")),aF(xM,"searchParams",HM("getSearchParams")),aF(xM,"hash",HM("getHash","setHash"))),cF(xM,"toJSON",(function(){return IF(this).serialize()}),{enumerable:!0}),cF(xM,"toString",(function(){return IF(this).serialize()}),{enumerable:!0}),WF){var kM=WF.createObjectURL,CM=WF.revokeObjectURL;kM&&cF(NM,"createObjectURL",rF(kM,WF)),CM&&cF(NM,"revokeObjectURL",rF(CM,WF))}bF(NM,"URL"),$w({global:!0,constructor:!0,forced:!eF,sham:!tF},{URL:NM});var UM=C;function TM(t,e,n,r){return new(n||(n=Promise))((function(i,c){function a(t){try{l(r.next(t))}catch(t){c(t)}}function o(t){try{l(r.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((r=r.apply(t,e||[])).next())}))}function wM(t,e,n,r){return new(n||(n=Promise))((function(i,c){function a(t){try{l(r.next(t))}catch(t){c(t)}}function o(t){try{l(r.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((r=r.apply(t,e||[])).next())}))}vi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return UM(URL.prototype.toString,this)}}),t.ResponseMode=void 0,function(t){t.formPost="form_post",t.query="query"}(t.ResponseMode||(t.ResponseMode={}));t.Stores=void 0,function(t){t.ConfigData="config_data",t.OIDCProviderMetaData="oidc_provider_meta_data",t.SessionData="session_data",t.TemporaryData="temporary_data"}(t.Stores||(t.Stores={}));var FM,MM="refresh_token_timer",jM=["RS256","RS512","RS384","PS256"],zM="code",PM="session_state",BM="sign_out_url",QM="sign_out_success",DM="state";!function(t){t.Include="include",t.SameOrigin="same-origin",t.Omit="omit"}(FM||(FM={}));var EM=h((function t(e,n,r){s(this,t),this.message=r,this.name=n,this.code=e,Object.setPrototypeOf(this,(this instanceof t?this.constructor:void 0).prototype)})),OM=function(){function t(){s(this,t)}return h(t,null,[{key:"filterClaimsFromIDTokenPayload",value:function(t){var e=Object.assign({},t);null==e||delete e.iss,null==e||delete e.aud,null==e||delete e.exp,null==e||delete e.iat,null==e||delete e.acr,null==e||delete e.amr,null==e||delete e.azp,null==e||delete e.auth_time,null==e||delete e.nonce,null==e||delete e.c_hash,null==e||delete e.at_hash,null==e||delete e.nbf,null==e||delete e.isk,null==e||delete e.sid;var n={};return Object.entries(e).forEach((function(t){var e=W(t,2),r=e[0],i=e[1],c=r.split("_").map((function(t,e){return 0===e?t:[t[0].toUpperCase()].concat(v(t.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(t,e){var n=parseInt(t.split("#")[1]);return e?"".concat(e,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(t){return"pkce_code_verifier#".concat(parseInt(t.split("request_")[1]))}}]),t}();OM.getTenantDomainFromIdTokenPayload=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=t.sub.split(e);return n.length>2?n[n.length-1]:""};var AM=function(){function t(e,n){var r=this;s(this,t),this._dataLayer=e,this._config=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._cryptoHelper=n}return h(t,[{key:"resolveEndpoints",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},e.next=3,this._config();case 3:return r=e.sent,e.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));n[e]=(null==r?void 0:r.endpoints)?r.endpoints[t]:""})),Object.assign(Object.assign({},t),n)));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return wM(this,void 0,void 0,a().mark((function t(){var e,n,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:if(n=t.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));return r.includes(e)}))){t.next=7;break}throw new EM("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return t.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),Object.assign({},e)));case 8:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return wM(this,void 0,void 0,a().mark((function t(){var e,n,r,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:if(n=t.sent,r=n.baseUrl){t.next=7;break}throw new EM("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},t.abrupt("return",Object.assign(Object.assign({},i),e));case 10:case"end":return t.stop()}}),t,this)})))}},{key:"validateIdToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=e.sent.jwks_uri,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new EM("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return e.prev=8,e.next=11,fetch(n,{credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin});case 11:i=e.sent,e.next=17;break;case 14:throw e.prev=14,e.t0=e.catch(8),new EM("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=e.t0?e.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){e.next=24;break}return e.t1=EM,e.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),e.next=22,i.json();case 22:throw e.t3=e.sent,new e.t1("JS-AUTH_HELPER-VIT-HE03",e.t2,e.t3);case 24:return e.next=26,this._oidcProviderMetaData();case 26:return c=e.sent.issuer,e.next=29,i.json();case 29:return o=e.sent,l=o.keys,e.next=33,this._cryptoHelper.getJWKForTheIdToken(t.split(".")[0],l);case 33:return u=e.sent,e.t4=this._cryptoHelper,e.t5=t,e.t6=u,e.next=39,this._config();case 39:return e.t7=e.sent.clientID,e.t8=null!=c?c:"",e.t9=this._cryptoHelper.decodeIDToken(t).sub,e.next=44,this._config();case 44:return e.t10=e.sent.clockTolerance,e.abrupt("return",e.t4.isValidIdToken.call(e.t4,e.t5,e.t6,e.t7,e.t8,e.t9,e.t10));case 46:case"end":return e.stop()}}),e,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(t){var e,n,r,i,c=this._cryptoHelper.decodeIDToken(t),a=OM.getTenantDomainFromIdTokenPayload(c),o=null!==(e=null==c?void 0:c.username)&&void 0!==e?e:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",s=l&&u?"".concat(l," ").concat(u):l||u||"",d=null!==(i=c.preferred_username)&&void 0!==i?i:s;return Object.assign({displayName:d,tenantDomain:a,username:o},OM.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(e);case 6:return o=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),t.replace("{{token}}",o.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(o.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.removeTemporaryData(t);case 2:return e.next=4,this._dataLayer.removeSessionData(t);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"handleTokenResponse",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i,c=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===t.status&&t.ok){n.next=7;break}return n.t0=EM,n.t1="Invalid response status received for token request (".concat(t.statusText,")."),n.next=5,t.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,t.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return wM(c,void 0,void 0,a().mark((function t(){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setSessionData(r,e);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},t.abrupt("return",Promise.resolve(n));case 4:case"end":return t.stop()}}),t,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,e);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(t){var e;return wM(this,void 0,void 0,a().mark((function n(){var r,i,c;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(t);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(t){t.startsWith("pkce_code_verifier")&&i.push(t)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(e=null==c?void 0:c.split("#")[1])&&void 0!==e?e:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),t}(),_M=function(){function t(e){s(this,t),this._cryptoUtils=e}return h(t,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(t){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(t))}},{key:"getJWKForTheIdToken",value:function(t,e){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(t)),i=Y(e);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(t){i.e(t)}finally{i.f()}throw new EM("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+e.map((function(t){return t.kid})).join(", "))}},{key:"isValidIdToken",value:function(t,e,n,r,i,c){return this._cryptoUtils.verifyJwt(t,e,jM,n,r,i,c).then((function(t){return t?Promise.resolve(!0):Promise.reject(new EM("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(t){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==t?void 0:t.code)&&"nbf"===(null==t?void 0:t.claim)?Promise.reject(new EM("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new EM("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(t){try{var e=this._cryptoUtils.base64URLDecode(t.split(".")[1]);return JSON.parse(e)}catch(t){throw new EM("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",t)}}}]),t}(),qM=function(){function t(e,n){var r=this;s(this,t),this._cryptoUtils=n,this._cryptoHelper=new _M(n),this._authenticationHelper=new AM(e,this._cryptoHelper),this._dataLayer=e,this._config=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return h(t,[{key:"getAuthorizationURL",value:function(t,e){var n,r,i;return wM(this,void 0,void 0,a().mark((function c(){var o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,v,g,S,R;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return o=c.sent,c.next=5,this._config();case 5:if(l=c.sent,o&&0!==o.trim().length){c.next=8;break}throw new EM("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return u=new URL(o),(s=new Map).set("response_type","code"),s.set("client_id",l.clientID),d="openid",l.scope&&l.scope.length>0&&(l.scope.includes("openid")||l.scope.push("openid"),d=l.scope.join(" ")),s.set("scope",d),s.set("redirect_uri",l.signInRedirectURL),l.responseMode&&s.set("response_mode",l.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(e);case 14:if(h=c.sent,!l.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),p=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(h,m,e);case 19:s.set("code_challenge_method","S256"),s.set("code_challenge",p);case 21:if(l.prompt&&s.set("prompt",l.prompt),b=t)for(Z=0,y=Object.entries(b);Z<y.length;Z++)X=W(y[Z],2),f=X[0],I=X[1],""!=f&&""!=I&&"state"!==f&&(G=f.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())})),s.set(G,I.toString()));s.set("state",OM.generateStateParamForRequestCorrelation(h,b?null===(i=b.state)||void 0===i?void 0:i.toString():"")),V=Y(s.entries());try{for(V.s();!(v=V.n()).done;)g=W(v.value,2),S=g[0],R=g[1],u.searchParams.append(S,R)}catch(t){V.e(t)}finally{V.f()}return c.abrupt("return",u.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(t,e,n,r){return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u,s;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(o=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new EM("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=e,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",e,r);case 12:if((l=[]).push("client_id=".concat(o.clientID)),o.clientSecret&&o.clientSecret.trim().length>0&&l.push("client_secret=".concat(o.clientSecret)),u=t,l.push("code=".concat(u)),l.push("grant_type=authorization_code"),l.push("redirect_uri=".concat(o.signInRedirectURL)),i.t1=o.enablePKCE,!i.t1){i.next=29;break}return i.t2=l,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:l.join("&"),credentials:o.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 32:s=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new EM("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(s.ok){i.next=45;break}return i.t7=EM,i.t8="Requesting access token failed with ".concat(s.statusText),i.next=43,s.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(s,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent.token_endpoint,e.next=5,this._config();case 5:return r=e.sent,e.next=8,this._dataLayer.getSessionData(t);case 8:if((i=e.sent).refresh_token){e.next=11;break}throw new EM("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){e.next=13;break}throw new EM("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),e.prev=15,e.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 18:o=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),new EM("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=e.t0?e.t0:"The request to refresh the access token failed.");case 24:if(o.ok){e.next=31;break}return e.t1=EM,e.t2="Refreshing access token failed with ".concat(o.statusText),e.next=29,o.json();case 29:throw e.t3=e.sent,new e.t1("JS-AUTH_CORE-RAT2-HE04",e.t2,e.t3);case 31:return e.abrupt("return",this._authenticationHelper.handleTokenResponse(o,t));case 32:case"end":return e.stop()}}),e,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent.revocation_endpoint,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new EM("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),e.t0=i,e.t1="token=",e.next=14,this._dataLayer.getSessionData(t);case 14:return e.t2=e.sent.access_token,e.t3=e.t1.concat.call(e.t1,e.t2),e.t0.push.call(e.t0,e.t3),i.push("token_type_hint=access_token"),e.prev=18,e.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 21:c=e.sent,e.next=27;break;case 24:throw e.prev=24,e.t4=e.catch(18),new EM("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=e.t4?e.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){e.next=34;break}return e.t5=EM,e.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),e.next=32,c.json();case 32:throw e.t7=e.sent,new e.t5("JS-AUTH_CORE-RAT3-HE03",e.t6,e.t7);case 34:return e.abrupt("return",(this._authenticationHelper.clearUserSessionData(t),Promise.resolve(c)));case 35:case"end":return e.stop()}}),e,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=t.tokenEndpoint&&0!==t.tokenEndpoint.trim().length?t.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new EM("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(t.data).map((function(t){var n=W(t,2),r=n[0],i=n[1];return wM(d,void 0,void 0,a().mark((function t(){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,e);case 2:return n=t.sent,t.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return t.stop()}}),t,this)})))})));case 10:if(o=n.sent,l=Object.assign({},OM.getTokenRequestHeaders()),n.t0=t.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},l),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(e);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},l=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return u={body:o.join("&"),credentials:i.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(l),method:"POST"},n.prev=24,n.next=27,fetch(c,u);case 27:s=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new EM("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===s.status&&s.ok){n.next=40;break}return n.t8=EM,n.t9="Invalid response status received for the custom grant request. (".concat(s.statusText,")"),n.next=38,s.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!t.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(s,e),n.next=49;break;case 44:return n.t12=Promise,n.next=47,s.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return n=e.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},e.abrupt("return",(Object.keys(r).forEach((function(t){void 0!==r[t]&&""!==r[t]&&null!==r[t]||delete r[t]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getDecodedIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return n=e.sent.id_token,e.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._cryptoHelper);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return e.abrupt("return",e.sent.id_token);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._config();case 2:if(n=e.sent,e.t0=!t,!e.t0){e.next=8;break}return e.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:e.t0=e.sent;case 8:if(!e.t0){e.next=10;break}return e.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){e.next=36;break}return e.prev=12,e.next=15,fetch(r);case 15:if(200===(i=e.sent).status&&i.ok){e.next=18;break}throw new Error;case 18:e.next=23;break;case 20:throw e.prev=20,e.t1=e.catch(12),new EM("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return e.t2=this._dataLayer,e.t3=this._authenticationHelper,e.next=27,i.json();case 27:return e.t4=e.sent,e.next=30,e.t3.resolveEndpoints.call(e.t3,e.t4);case 30:return e.t5=e.sent,e.next=33,e.t2.setOIDCProviderMetaData.call(e.t2,e.t5);case 33:return e.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return e.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){e.next=52;break}return e.prev=37,e.t6=this._dataLayer,e.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return e.t7=e.sent,e.next=44,e.t6.setOIDCProviderMetaData.call(e.t6,e.t7);case 44:e.next=49;break;case 46:throw e.prev=46,e.t8=e.catch(37),new EM("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=e.t8?e.t8:"Resolving endpoints by base url failed.");case 49:return e.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return e.abrupt("return",Promise.resolve());case 52:return e.prev=52,e.t9=this._dataLayer,e.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return e.t10=e.sent,e.next=59,e.t9.setOIDCProviderMetaData.call(e.t9,e.t10);case 59:e.next=64;break;case 61:throw e.prev=61,e.t11=e.catch(52),new EM("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=e.t11?e.t11:"Resolving endpoints by explicitly failed.");case 64:return e.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return e.abrupt("return",Promise.resolve());case 67:case"end":return e.stop()}}),e,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var t,e,n,r,i,c,o,l,u,s;return wM(this,void 0,void 0,a().mark((function d(){var h;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._oidcProviderMetaData();case 2:return h=a.sent,a.abrupt("return",{authorizationEndpoint:null!==(t=h.authorization_endpoint)&&void 0!==t?t:"",checkSessionIframe:null!==(e=h.check_session_iframe)&&void 0!==e?e:"",endSessionEndpoint:null!==(n=h.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=h.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=h.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=h.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(o=h.registration_endpoint)&&void 0!==o?o:"",revocationEndpoint:null!==(l=h.revocation_endpoint)&&void 0!==l?l:"",tokenEndpoint:null!==(u=h.token_endpoint)&&void 0!==u?u:"",userinfoEndpoint:null!==(s=h.userinfo_endpoint)&&void 0!==s?s:""});case 4:case"end":return a.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(t){var e,n,r;return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=e=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===e;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=e.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(o=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new EM("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(t);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((l=i.t5)&&0!==l.trim().length){i.next=31;break}throw new EM("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((u=null!==(r=null==o?void 0:o.signOutRedirectURL)&&void 0!==r?r:null==o?void 0:o.signInRedirectURL)&&0!==u.trim().length){i.next=34;break}throw new EM("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(l,"&post_logout_redirect_uri=").concat(u,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSignOutURL(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessToken",value:function(t){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(t);case 2:if(n.t1=e=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===e;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=e.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Boolean,e.next=3,this.getAccessToken(t);case 3:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"getPKCECode",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(t),e);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(e),t,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setConfigData(t);case 2:return e.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return e.stop()}}),e,this)})))}}]),t}(),$M=function(){function e(t,n){s(this,e),this._id=t,this._store=n}return h(e,[{key:"setDataInBulk",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),o=Object.assign(Object.assign({},c),e),l=JSON.stringify(o),r.next=17,this._store.setData(t,l);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(t,e,n){var r;return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,o=c&&JSON.parse(c),l=Object.assign(Object.assign({},o),m({},e,n)),u=JSON.stringify(l),i.next=17,this._store.setData(t,u);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(o=Object.assign({},c))[e],l=JSON.stringify(o),r.next=18,this._store.setData(t,l);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(t,e){return e?"".concat(t,"-").concat(this._id,"-").concat(e):"".concat(t,"-").concat(this._id)}},{key:"setConfigData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.TemporaryData,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.SessionData,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setCustomData",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t.Stores.TemporaryData,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionData",value:function(e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t.Stores.SessionData,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getCustomData",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigData",value:function(){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(t.Stores.TemporaryData,e));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(t.Stores.SessionData,e));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(t.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[e]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(t.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[e]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.ConfigData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(e,n,r){return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(t.Stores.TemporaryData,r),e,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(e,n,r){return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(t.Stores.SessionData,r),e,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(t.Stores.TemporaryData,n),e);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(t.Stores.SessionData,n),e);case 2:case"end":return r.stop()}}),r,this)})))}}]),e}(),tj={clockTolerance:300,enablePKCE:!0,responseMode:t.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},ej=function(){function t(e,n){s(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new $M("instance_".concat(t._instanceID),e),this._authenticationCore=new qM(this._dataLayer,n),t._authenticationCore=new qM(this._dataLayer,n)}return h(t,[{key:"initialize",value:function(t){var e,n,r;return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},tj),t),{scope:[].concat(v(null!==(e=tj.scope)&&void 0!==e?e:[]),v(null!==(r=null===(n=t.scope)||void 0===n?void 0:n.filter((function(t){var e;return!(null===(e=null==tj?void 0:tj.scope)||void 0===e?void 0:e.includes(t))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"getAuthorizationURL",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},t))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,e),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==t?void 0:t.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,e)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}},{key:"requestAccessToken",value:function(t,e,n,r){return wM(this,void 0,void 0,a().mark((function i(){var c=this;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(t,e,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(t,e,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.signOut(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getSignOutURL",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getSignOutURL(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getDecodedIDToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getIDToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getBasicUserInfo",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getBasicUserInfo(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getCryptoHelper());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(t){return this._authenticationCore.revokeAccessToken(t)}},{key:"refreshAccessToken",value:function(t){return this._authenticationCore.refreshAccessToken(t)}},{key:"getAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getAccessToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"requestCustomGrant",value:function(t,e){return this._authenticationCore.requestCustomGrant(t,e)}},{key:"isAuthenticated",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.isAuthenticated(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getPKCECode",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(t,e));case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(t,e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.updateConfig(t);case 2:case"end":return e.stop()}}),e,this)})))}}],[{key:"isSignOutSuccessful",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}},{key:"didSignOutFail",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}();function nj(t,e,n){var r=void 0===e?null:e,i=function(t,e){var n=atob(t);if(e){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(t,void 0!==n&&n),c=i.indexOf("\n",10)+1,a=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var rj,ij,cj,aj,oj,lj,uj=(rj="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKCl7cj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7dSh7fSwiIil9Y2F0Y2goZSl7dT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gYyhlLHQscixuKXt2YXIgYT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLGk9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbz1uZXcgUyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybiBUKCl9Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPWsobyxyKTtpZihzKXtpZihzPT09bCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciB1PWYoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixvKSxpfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZCgpe312YXIgdj17fTt1KHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1nJiZnKGcoRShbXSkpKTt5JiZ5IT09dCYmbi5jYWxsKHksaSkmJih2PXkpO3ZhciBtPWQucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gdyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gYihlLHQpe2Z1bmN0aW9uIHIoYSxpLG8scyl7dmFyIHU9ZihlW2FdLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxvKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxvLHMpfSkpfXModS5hcmcpfXZhciBhO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsYSl7cihlLG4sdCxhKX0pKX1yZXR1cm4gYT1hP2EudGhlbihpLGkpOmkoKX19ZnVuY3Rpb24gayhlLHQpe3ZhciByPWUuaXRlcmF0b3JbdC5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dC5tZXRob2Qpe2lmKGUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLGsoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpKXJldHVybiBsO3QubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBsfXZhciBuPWYocixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW4uYXJnLHQuZGVsZWdhdGU9bnVsbCxsO3ZhciBhPW4uYXJnO3JldHVybiBhP2EuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWEudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGwpOmE6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsbCl9ZnVuY3Rpb24geChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBTKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG4uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1kLHUobSwiY29uc3RydWN0b3IiLGQpLHUoZCwiY29uc3RydWN0b3IiLHApLHAuZGlzcGxheU5hbWU9dShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCx1KGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSx3KGIucHJvdG90eXBlKSx1KGIucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPWIsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBiKGModCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sdyhtKSx1KG0scywiR2VuZXJhdG9yIiksdShtLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShtLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUUsUy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9bi5jYWxsKGksImNhdGNoTG9jIiksdT1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJnUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxsKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGx9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxsfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO18ocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxsfX0sZX1mdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2EobyxuLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe2EobyxuLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZzKGUucHJvdG90eXBlLHQpLHImJnMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGwoZSl9ZnVuY3Rpb24gaChlLHQpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saChlLHQpfWZ1bmN0aW9uIHAoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiBkPXAoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmaChhLHIucHJvdG90eXBlKSxhfSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB2KGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIHY9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGQoZSxhcmd1bWVudHMsbCh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGgobixlKX0sdihlKX1mdW5jdGlvbiBnKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZyhlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWwoZSk7aWYodCl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLHIpfX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8ayhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGsoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4geChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1rKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIEUoZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGEsaSl7ZnVuY3Rpb24gbyhlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/YShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiByP3Q6bmV3IHIoKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9dmFyIFQ7IWZ1bmN0aW9uKGUpe2UuZm9ybVBvc3Q9ImZvcm1fcG9zdCIsZS5xdWVyeT0icXVlcnkifShUfHwoVD17fSkpO3ZhciBBOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0oQXx8KEE9e30pKTt2YXIgUixDPSJyZWZyZXNoX3Rva2VuX3RpbWVyIixQPVsiUlMyNTYiLCJSUzUxMiIsIlJTMzg0IiwiUFMyNTYiXSxEPSJzaWduX291dF91cmwiLE89InNpZ25fb3V0X3N1Y2Nlc3MiOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFJ8fChSPXt9KSk7dmFyIEk9dSgoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD13KGUsMiksbj10WzBdLGE9dFsxXSxpPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3JbaV09YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7TC5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBVLEgsTT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXt2YXIgYT10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1ufXJldHVybiB1KGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIGE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChhLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoYS5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO25bdF09KG51bGw9PWE/dm9pZCAwOmEuZW5kcG9pbnRzKT9hLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihuPWUuc2VudCxhPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sbi5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIGEuaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKG49ZS5zZW50LGE9bi5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiBuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxpPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGEsaSxvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChuLHtjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2lufSk7Y2FzZSAxMTppPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1pLnN0YXR1cyYmaS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoaS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixpLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGkuanNvbigpO2Nhc2UgMjk6cmV0dXJuIHM9dC5zZW50LHU9cy5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdSk7Y2FzZSAzMzpyZXR1cm4gYz10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9Yyx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGk9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksbz1MLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChpKSxzPW51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPWkuZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1pLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1pLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjpvLHVzZXJuYW1lOnN9LEwuZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKGkpKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT0ib3BlbmlkIixyLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89ci5zZW50LHIubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIHM9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksaT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLHMuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKHMuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGkpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShuPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09bj9uOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG89dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtuLm5leHQ9NzticmVha31yZXR1cm4gbi50MD1JLG4udDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksbi5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IG4udDI9bi5zZW50LG5ldyBuLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsbi50MSxuLnQyKTtjYXNlIDc6cmV0dXJuIG4ubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4oYT1uLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksbi5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIW4uc2VudC52YWxpZGF0ZUlEVG9rZW4pe24ubmV4dD0xNTticmVha31yZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oYS5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gRShvLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDI6cmV0dXJuIG49e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGk9e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LG4ubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDE4OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoaSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsaT1bXSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZpLnB1c2goZSl9KSksbz1pLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiB1KGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Xyh0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYobi5raWQ9PT1pLmtpZClyZXR1cm4gaX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEkoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LFAscixuLGEsaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBJKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBhPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPW4sdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBqKG4pLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBNKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB1KGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGwsaCxwLGQsdixnLHksbSxiLGsseCxTLEUsVCxBLFI7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBzPXIuc2VudCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYodT1yLnNlbnQscyYmMCE9PXMudHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiBjPW5ldyBVUkwocyksKGY9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGYuc2V0KCJjbGllbnRfaWQiLHUuY2xpZW50SUQpLGw9Im9wZW5pZCIsdS5zY29wZSYmdS5zY29wZS5sZW5ndGg+MCYmKHUuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHx1LnNjb3BlLnB1c2goIm9wZW5pZCIpLGw9dS5zY29wZS5qb2luKCIgIikpLGYuc2V0KCJzY29wZSIsbCksZi5zZXQoInJlZGlyZWN0X3VyaSIsdS5zaWduSW5SZWRpcmVjdFVSTCksdS5yZXNwb25zZU1vZGUmJmYuc2V0KCJyZXNwb25zZV9tb2RlIix1LnJlc3BvbnNlTW9kZSksci5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGg9ci5zZW50LCF1LmVuYWJsZVBLQ0Upe3IubmV4dD0yMTticmVha31yZXR1cm4gcD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlVmVyaWZpZXIoKSxkPW51bGw9PT0oYT10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmdldENvZGVDaGFsbGVuZ2UocCksci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGgscCx0KTtjYXNlIDE5OmYuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksZi5zZXQoImNvZGVfY2hhbGxlbmdlIixkKTtjYXNlIDIxOmlmKHUucHJvbXB0JiZmLnNldCgicHJvbXB0Iix1LnByb21wdCksdj1lKWZvcihnPTAseT1PYmplY3QuZW50cmllcyh2KTtnPHkubGVuZ3RoO2crKyltPXcoeVtnXSwyKSxiPW1bMF0saz1tWzFdLCIiIT1iJiYiIiE9ayYmInN0YXRlIiE9PWImJih4PWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGYuc2V0KHgsay50b1N0cmluZygpKSk7Zi5zZXQoInN0YXRlIixMLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihoLHY/bnVsbD09PShpPXYuc3RhdGUpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRvU3RyaW5nKCk6IiIpKSxTPV8oZi5lbnRyaWVzKCkpO3RyeXtmb3IoUy5zKCk7IShFPVMubigpKS5kb25lOylUPXcoRS52YWx1ZSwyKSxBPVRbMF0sUj1UWzFdLGMuc2VhcmNoUGFyYW1zLmFwcGVuZChBLFIpfWNhdGNoKGUpe1MuZShlKX1maW5hbGx5e1MuZigpfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjLnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGMsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1yLnNlbnQudG9rZW5fZW5kcG9pbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihyLnQwPXQsIXIudDApe3IubmV4dD0xMjticmVha31yZXR1cm4gci5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxhKTtjYXNlIDEyOmlmKCh1PVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQocy5jbGllbnRJRCkpLHMuY2xpZW50U2VjcmV0JiZzLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnUucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChzLmNsaWVudFNlY3JldCkpLGM9ZSx1LnB1c2goImNvZGU9Ii5jb25jYXQoYykpLHUucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSx1LnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChzLnNpZ25JblJlZGlyZWN0VVJMKSksci50MT1zLmVuYWJsZVBLQ0UsIXIudDEpe3IubmV4dD0yOTticmVha31yZXR1cm4gci50Mj11LHIudDM9ImNvZGVfdmVyaWZpZXI9IixyLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKG4pLGEpO2Nhc2UgMjQ6cmV0dXJuIHIudDQ9ci5zZW50LHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDIucHVzaC5jYWxsKHIudDIsci50NSksci5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShuKSxhKTtjYXNlIDI5OnJldHVybiByLnByZXY9Mjksci5uZXh0PTMyLGZldGNoKG8se2JvZHk6dS5qb2luKCImIiksY3JlZGVudGlhbHM6cy5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpmPXIuc2VudCxyLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyByLnByZXY9MzUsci50Nj1yLmNhdGNoKDI5KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9ci50Nj9yLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoZi5vayl7ci5uZXh0PTQ1O2JyZWFrfXJldHVybiByLnQ3PUksci50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoZi5zdGF0dXNUZXh0KSxyLm5leHQ9NDMsZi5qc29uKCk7Y2FzZSA0Mzp0aHJvdyByLnQ5PXIuc2VudCxuZXcgci50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsci50OCxyLnQ5KTtjYXNlIDQ1OnJldHVybiByLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShmLGEpO2Nhc2UgNDc6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBhPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChpPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYobiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KGEuY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoaS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxhLmNsaWVudFNlY3JldCYmYS5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoYS5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKG4se2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODpzPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYocy5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQocy5zdGF0dXNUZXh0KSx0Lm5leHQ9Mjkscy5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHMsZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG87cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihpPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoYS5jbGllbnRJRCkpLHQudDA9aSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksaS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChuLHtib2R5Omkuam9pbigiJiIpLGNyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1IuSW5jbHVkZTpSLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhMLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUksdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGw9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gYT1uLnNlbnQsbi5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9bi5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDphLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7bi5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIG4ubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49dyhlLDIpLGE9blswXSxpPW5bMV07cmV0dXJuIEUobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGksdCk7Y2FzZSAyOnJldHVybiBuPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQoYSwiPSIpLmNvbmNhdChuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYocz1uLnNlbnQsdT1PYmplY3QuYXNzaWduKHt9LEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxuLnQwPWUuYXR0YWNoVG9rZW4sIW4udDApe24ubmV4dD0yMzticmVha31yZXR1cm4gbi50MT1PYmplY3Qsbi50Mj1PYmplY3QuYXNzaWduKHt9LHUpLG4udDM9IkJlYXJlciAiLG4ubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpuLnQ0PW4uc2VudC5hY2Nlc3NfdG9rZW4sbi50NT1uLnQzLmNvbmNhdC5jYWxsKG4udDMsbi50NCksbi50Nj17QXV0aG9yaXphdGlvbjpuLnQ1fSx1PW4udDEuYXNzaWduLmNhbGwobi50MSxuLnQyLG4udDYpO2Nhc2UgMjM6cmV0dXJuIGM9e2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHUpLG1ldGhvZDoiUE9TVCJ9LG4ucHJldj0yNCxuLm5leHQ9MjcsZmV0Y2gobyxjKTtjYXNlIDI3OmY9bi5zZW50LG4ubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IG4ucHJldj0zMCxuLnQ3PW4uY2F0Y2goMjQpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9bi50Nz9uLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWYuc3RhdHVzJiZmLm9rKXtuLm5leHQ9NDA7YnJlYWt9cmV0dXJuIG4udDg9SSxuLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoZi5zdGF0dXNUZXh0LCIpIiksbi5uZXh0PTM4LGYuanNvbigpO2Nhc2UgMzg6dGhyb3cgbi50MTA9bi5zZW50LG5ldyBuLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLG4udDksbi50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe24ubmV4dD00NDticmVha31uLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGYsdCksbi5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIG4udDEyPVByb21pc2Usbi5uZXh0PTQ3LGYuanNvbigpO2Nhc2UgNDc6bi50MTM9bi5zZW50LG4udDExPW4udDEyLnJlc29sdmUuY2FsbChuLnQxMixuLnQxMyk7Y2FzZSA0OTpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsYT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09bj92b2lkIDA6bi5pZF90b2tlbiksaT17YWxsb3dlZFNjb3BlczpuLnNjb3BlLHNlc3Npb25TdGF0ZTpuLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1hW2VdJiYiIiE9PWFbZV0mJm51bGwhPT1hW2VdfHxkZWxldGUgYVtlXX0pKSxpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSxhKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENyeXB0b0hlbHBlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOmlmKG49dC5zZW50LHQudDA9IWUsIXQudDApe3QubmV4dD04O2JyZWFrfXJldHVybiB0Lm5leHQ9Nyx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNzp0LnQwPXQuc2VudDtjYXNlIDg6aWYoIXQudDApe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMTA6aWYoIShhPW4ud2VsbEtub3duRW5kcG9pbnQpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIHQucHJldj0xMix0Lm5leHQ9MTUsZmV0Y2goYSk7Y2FzZSAxNTppZigyMDA9PT0oaT10LnNlbnQpLnN0YXR1cyYmaS5vayl7dC5uZXh0PTE4O2JyZWFrfXRocm93IG5ldyBFcnJvcjtjYXNlIDE4OnQubmV4dD0yMzticmVhaztjYXNlIDIwOnRocm93IHQucHJldj0yMCx0LnQxPXQuY2F0Y2goMTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSEUwMSIsIkludmFsaWQgd2VsbC1rbm93biByZXNwb25zZSIsIlRoZSB3ZWxsIGtub3duIGVuZHBvaW50IHJlc3BvbnNlIGhhcyBiZWVuIGZhaWxlZCB3aXRoIGFuIGVycm9yLiIpO2Nhc2UgMjM6cmV0dXJuIHQudDI9dGhpcy5fZGF0YUxheWVyLHQudDM9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIsdC5uZXh0PTI3LGkuanNvbigpO2Nhc2UgMjc6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0zMCx0LnQzLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQzLHQudDQpO2Nhc2UgMzA6cmV0dXJuIHQudDU9dC5zZW50LHQubmV4dD0zMyx0LnQyLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Mix0LnQ1KTtjYXNlIDMzOnJldHVybiB0Lm5leHQ9MzUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDM1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAzNjppZighbi5iYXNlVXJsKXt0Lm5leHQ9NTI7YnJlYWt9cmV0dXJuIHQucHJldj0zNyx0LnQ2PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHQudDc9dC5zZW50LHQubmV4dD00NCx0LnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Nix0LnQ3KTtjYXNlIDQ0OnQubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHQucHJldj00Nix0LnQ4PXQuY2F0Y2goMzcpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50OD90LnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiB0Lm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gdC5wcmV2PTUyLHQudDk9dGhpcy5fZGF0YUxheWVyLHQubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHQudDEwPXQuc2VudCx0Lm5leHQ9NTksdC50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDksdC50MTApO2Nhc2UgNTk6dC5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgdC5wcmV2PTYxLHQudDExPXQuY2F0Y2goNTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50MTE/dC50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gdC5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLGEsaSxvLHMsdSxjLGY7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBsKCl7dmFyIGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGg9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6bnVsbCE9PShlPWguYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixjaGVja1Nlc3Npb25JZnJhbWU6bnVsbCE9PSh0PWguY2hlY2tfc2Vzc2lvbl9pZnJhbWUpJiZ2b2lkIDAhPT10P3Q6IiIsZW5kU2Vzc2lvbkVuZHBvaW50Om51bGwhPT0obj1oLmVuZF9zZXNzaW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGludHJvc3BlY3Rpb25FbmRwb2ludDpudWxsIT09KGE9aC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09YT9hOiIiLGlzc3VlcjpudWxsIT09KGk9aC5pc3N1ZXIpJiZ2b2lkIDAhPT1pP2k6IiIsandrc1VyaTpudWxsIT09KG89aC5qd2tzX3VyaSkmJnZvaWQgMCE9PW8/bzoiIixyZWdpc3RyYXRpb25FbmRwb2ludDpudWxsIT09KHM9aC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1zP3M6IiIscmV2b2NhdGlvbkVuZHBvaW50Om51bGwhPT0odT1oLnJldm9jYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdG9rZW5FbmRwb2ludDpudWxsIT09KGM9aC50b2tlbl9lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIix1c2VyaW5mb0VuZHBvaW50Om51bGwhPT0oZj1oLnVzZXJpbmZvX2VuZHBvaW50KSYmdm9pZCAwIT09Zj9mOiIifSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1yLnQyLHIubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0xNzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMSIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiByLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTk6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0yMzticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAyMzppZighci50Myl7ci5uZXh0PTI3O2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yODticmVhaztjYXNlIDI3OnIudDU9bi5pZF90b2tlbjtjYXNlIDI4OmlmKCh1PXIudDUpJiYwIT09dS50cmltKCkubGVuZ3RoKXtyLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDIiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigoYz1udWxsIT09KGE9bnVsbD09cz92b2lkIDA6cy5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1hP2E6bnVsbD09cz92b2lkIDA6cy5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT1jLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0zNDticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMyIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQodSwiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQoYywiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUsbik7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKHIudDE9bj1yLnNlbnQsci50MD1udWxsIT09ci50MSwhci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9bixyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1yLnQyLG89aSYmSlNPTi5wYXJzZShpKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0KSx1PUpTT04uc3RyaW5naWZ5KHMpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihyLnQxPWE9ci5zZW50LHIudDA9bnVsbCE9PXIudDEsIXIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwIT09YTtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPWEsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89ci50MixzPW8mJkpTT04ucGFyc2UobyksdT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scyksYyh7fSx0LG4pKSxmPUpTT04uc3RyaW5naWZ5KHUpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsZik7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHU7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoci50MT1uPXIuc2VudCxyLnQwPW51bGwhPT1yLnQxLCFyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj1uLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9bnVsbDtjYXNlIDExOnJldHVybiBpPXIudDIsbz1pJiZKU09OLnBhcnNlKGkpLGRlbGV0ZShzPU9iamVjdC5hc3NpZ24oe30sbykpW3RdLHU9SlNPTi5zdHJpbmdpZnkocyksci5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0Q3VzdG9tRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoZSxuKSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRDdXN0b21EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoZSx0KSk7Y2FzZSAzOmlmKHIudDI9bj1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT1uO2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9bixyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsYSYmSlNPTi5wYXJzZShhKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixhJiZKU09OLnBhcnNlKGEpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuU2Vzc2lvbkRhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLEs9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpULnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IHEoImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgTih0aGlzLl9kYXRhTGF5ZXIsciksZS5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBOKHRoaXMuX2RhdGFMYXllcixyKX1yZXR1cm4gdShlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSyksZSkse3Njb3BlOltdLmNvbmNhdChiKG51bGwhPT0odD1LLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxiKG51bGwhPT0oYT1udWxsPT09KG49ZS5zY29wZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1LP3ZvaWQgMDpLLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1hP2E6W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfX0se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KGE9T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBhLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKGEsdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChhLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFyLnNlbnQpe3IubmV4dD02O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsbixhKSxyLm5leHQ9NzticmVhaztjYXNlIDY6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LG4sYSl9KSk7Y2FzZSA3OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0Q3J5cHRvSGVscGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRDcnlwdG9IZWxwZXIoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbihlKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oZSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEFjY2Vzc1Rva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlLHQpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZShlLHQpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNldFBLQ0VDb2RlKGUsdCxuKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufX0se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiZufX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxCPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KFV8fChVPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShIfHwoSD17fSkpO3ZhciBGPSJwcm9tcHROb25lUmVxdWVzdFNlbnQiLFc9ImVycm9yIix6PSJlcnJvcl9kZXNjcmlwdGlvbiIsWT0iY3VzdG9tX2dyYW50X2NvbmZpZyIsRz0ic3RhdGUiLFY9IkFjY2VzcyB0b2tlbiBpcyBpbnZhbGlkIixYPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gJChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIFooZSl7aWYoZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9KSksdH12YXIgUT17ZXhwb3J0czp7fX0sZWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sdGU9ZWUscmU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBuZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZShlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBpZShlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09cmUuY2FsbChlKX1mdW5jdGlvbiBvZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09bihlKX1mdW5jdGlvbiBzZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PXJlLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PXJlLmNhbGwoZSl9ZnVuY3Rpb24gY2UoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09bihlKSYmKGU9W2VdKSxuZShlKSlmb3IodmFyIHI9MCxhPWUubGVuZ3RoO3I8YTtyKyspdC5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgZmU9e2lzQXJyYXk6bmUsaXNBcnJheUJ1ZmZlcjppZSxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFhZShlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFhZShlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRm9ybURhdGFdIj09PXJlLmNhbGwoZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXImJmllKGUuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0Om9lLGlzUGxhaW5PYmplY3Q6c2UsaXNVbmRlZmluZWQ6YWUsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PXJlLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1yZS5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09cmUuY2FsbChlKX0saXNGdW5jdGlvbjp1ZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gb2UoZSkmJnVlKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10iPT09cmUuY2FsbChlKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDpjZSxtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gcihyLG4pe3NlKHRbbl0pJiZzZShyKT90W25dPWUodFtuXSxyKTpzZShyKT90W25dPWUoe30scik6bmUocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWNlKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gY2UodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0P3RlKHQscik6dH0pKSxlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGUpe3JldHVybiA2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSksZX19LGxlPWZlO2Z1bmN0aW9uIGhlKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfXZhciBwZT1mdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7dmFyIG47aWYociluPXIodCk7ZWxzZSBpZihsZS5pc1VSTFNlYXJjaFBhcmFtcyh0KSluPXQudG9TdHJpbmcoKTtlbHNle3ZhciBhPVtdO2xlLmZvckVhY2godCwoZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYobGUuaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLGxlLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7bGUuaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOmxlLmlzT2JqZWN0KGUpJiYoZT1KU09OLnN0cmluZ2lmeShlKSksYS5wdXNoKGhlKHQpKyI9IitoZShlKSl9KSkpfSkpLG49YS5qb2luKCImIil9aWYobil7dmFyIGk9ZS5pbmRleE9mKCIjIik7LTEhPT1pJiYoZT1lLnNsaWNlKDAsaSkpLGUrPSgtMT09PWUuaW5kZXhPZigiPyIpPyI/IjoiJiIpK259cmV0dXJuIGV9LGRlPWZlO2Z1bmN0aW9uIHZlKCl7dGhpcy5oYW5kbGVycz1bXX12ZS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOiEhciYmci5zeW5jaHJvbm91cyxydW5XaGVuOnI/ci5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSx2ZS5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9LHZlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe2RlLmZvckVhY2godGhpcy5oYW5kbGVycywoZnVuY3Rpb24odCl7bnVsbCE9PXQmJmUodCl9KSl9O3ZhciBnZT12ZSx5ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9O2Z1bmN0aW9uIG1lKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gd2UoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciBiZT1tZSxrZT13ZTtmdW5jdGlvbiB4ZShlKXtpZihiZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYmU9PT1tZXx8IWJlKSYmc2V0VGltZW91dClyZXR1cm4gYmU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBiZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gYmUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGJlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIHllLnNldFRpbWVvdXQmJihiZT1zZXRUaW1lb3V0KSwiZnVuY3Rpb24iPT10eXBlb2YgeWUuY2xlYXJUaW1lb3V0JiYoa2U9Y2xlYXJUaW1lb3V0KTt2YXIgX2UsU2U9W10sRWU9ITEsVGU9LTE7ZnVuY3Rpb24gQWUoKXtFZSYmX2UmJihFZT0hMSxfZS5sZW5ndGg/U2U9X2UuY29uY2F0KFNlKTpUZT0tMSxTZS5sZW5ndGgmJlJlKCkpfWZ1bmN0aW9uIFJlKCl7aWYoIUVlKXt2YXIgZT14ZShBZSk7RWU9ITA7Zm9yKHZhciB0PVNlLmxlbmd0aDt0Oyl7Zm9yKF9lPVNlLFNlPVtdOysrVGU8dDspX2UmJl9lW1RlXS5ydW4oKTtUZT0tMSx0PVNlLmxlbmd0aH1fZT1udWxsLEVlPSExLGZ1bmN0aW9uKGUpe2lmKGtlPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKGtlPT09d2V8fCFrZSkmJmNsZWFyVGltZW91dClyZXR1cm4ga2U9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7a2UoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBrZS5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIGtlLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gQ2UoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1DZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX07ZnVuY3Rpb24gUGUoKXt9dmFyIERlPVBlLE9lPVBlLEllPVBlLExlPVBlLFVlPVBlLEhlPVBlLE1lPVBlO3ZhciBqZT15ZS5wZXJmb3JtYW5jZXx8e30sTmU9amUubm93fHxqZS5tb3pOb3d8fGplLm1zTm93fHxqZS5vTm93fHxqZS53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBxZT1uZXcgRGF0ZTt2YXIgS2U9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07U2UucHVzaChuZXcgQ2UoZSx0KSksMSE9PVNlLmxlbmd0aHx8RWV8fHhlKFJlKX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpEZSxhZGRMaXN0ZW5lcjpPZSxvbmNlOkllLG9mZjpMZSxyZW1vdmVMaXN0ZW5lcjpVZSxyZW1vdmVBbGxMaXN0ZW5lcnM6SGUsZW1pdDpNZSxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSpOZS5jYWxsKGplKSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1xZSkvMWUzfX0sSmU9S2UsQmU9ZmUsRmU9ZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4gZS5jb25maWc9dCxyJiYoZS5jb2RlPXIpLGUucmVxdWVzdD1uLGUucmVzcG9uc2U9YSxlLmlzQXhpb3NFcnJvcj0hMCxlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19LGV9LFdlPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSx6ZT1GZSxZZT1mdW5jdGlvbihlLHQscixuLGEpe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gemUoaSx0LHIsbixhKX0sR2U9WWUsVmU9ZmUsWGU9VmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3ZhciBvPVtdO28ucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLFZlLmlzTnVtYmVyKHIpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxWZS5pc1N0cmluZyhuKSYmby5wdXNoKCJwYXRoPSIrbiksVmUuaXNTdHJpbmcoYSkmJm8ucHVzaCgiZG9tYWluPSIrYSksITA9PT1pJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSwkZT1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfSxaZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfSxRZT1mZSxldD1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLHR0PWZlLHJ0PXR0LmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPXR0LmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH07ZnVuY3Rpb24gbnQoZSl7dGhpcy5tZXNzYWdlPWV9bnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LG50LnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwO3ZhciBhdD1udCxpdD1mZSxvdD1mdW5jdGlvbihlLHQscil7dmFyIG49ci5jb25maWcudmFsaWRhdGVTdGF0dXM7ci5zdGF0dXMmJm4mJiFuKHIuc3RhdHVzKT90KEdlKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrci5zdGF0dXMsci5jb25maWcsbnVsbCxyLnJlcXVlc3QscikpOmUocil9LHN0PVhlLHV0PXBlLGN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiEkZSh0KT9aZShlLHQpOnR9LGZ0PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhPXt9O3JldHVybiBlPyhRZS5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKG49ZS5pbmRleE9mKCI6IiksdD1RZS50cmltKGUuc3Vic3RyKDAsbikpLnRvTG93ZXJDYXNlKCkscj1RZS50cmltKGUuc3Vic3RyKG4rMSkpLHQpe2lmKGFbdF0mJmV0LmluZGV4T2YodCk+PTApcmV0dXJuO2FbdF09InNldC1jb29raWUiPT09dD8oYVt0XT9hW3RdOltdKS5jb25jYXQoW3JdKTphW3RdP2FbdF0rIiwgIityOnJ9fSkpLGEpOmF9LGx0PXJ0LGh0PVllLHB0PVdlLGR0PWF0LHZ0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXt2YXIgbixhPWUuZGF0YSxpPWUuaGVhZGVycyxvPWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHMoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsbil9aXQuaXNGb3JtRGF0YShhKSYmZGVsZXRlIGlbIkNvbnRlbnQtVHlwZSJdO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBjPWUuYXV0aC51c2VybmFtZXx8IiIsZj1lLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO2kuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGMrIjoiK2YpfXZhciBsPWN0KGUuYmFzZVVSTCxlLnVybCk7ZnVuY3Rpb24gaCgpe2lmKHUpe3ZhciBuPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gdT9mdCh1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGE9e2RhdGE6byYmInRleHQiIT09byYmImpzb24iIT09bz91LnJlc3BvbnNlOnUucmVzcG9uc2VUZXh0LHN0YXR1czp1LnN0YXR1cyxzdGF0dXNUZXh0OnUuc3RhdHVzVGV4dCxoZWFkZXJzOm4sY29uZmlnOmUscmVxdWVzdDp1fTtvdCgoZnVuY3Rpb24oZSl7dChlKSxzKCl9KSwoZnVuY3Rpb24oZSl7cihlKSxzKCl9KSxhKSx1PW51bGx9fWlmKHUub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHV0KGwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksdS50aW1lb3V0PWUudGltZW91dCwib25sb2FkZW5kImluIHU/dS5vbmxvYWRlbmQ9aDp1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UmJjQ9PT11LnJlYWR5U3RhdGUmJigwIT09dS5zdGF0dXN8fHUucmVzcG9uc2VVUkwmJjA9PT11LnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KGgpfSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXt1JiYocihodCgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGwpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyKGh0KCJOZXR3b3JrIEVycm9yIixlLG51bGwsdSkpLHU9bnVsbH0sdS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsbj1lLnRyYW5zaXRpb25hbHx8cHQ7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIoaHQodCxlLG4uY2xhcmlmeVRpbWVvdXRFcnJvcj8iRVRJTUVET1VUIjoiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsfSxpdC5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgcD0oZS53aXRoQ3JlZGVudGlhbHN8fGx0KGwpKSYmZS54c3JmQ29va2llTmFtZT9zdC5yZWFkKGUueHNyZkNvb2tpZU5hbWUpOnZvaWQgMDtwJiYoaVtlLnhzcmZIZWFkZXJOYW1lXT1wKX0ic2V0UmVxdWVzdEhlYWRlciJpbiB1JiZpdC5mb3JFYWNoKGksKGZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09YSYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGlbdF06dS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSksaXQuaXNVbmRlZmluZWQoZS53aXRoQ3JlZGVudGlhbHMpfHwodS53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksbyYmImpzb24iIT09byYmKHUucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkRvd25sb2FkUHJvZ3Jlc3MmJnUuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzJiZ1LnVwbG9hZCYmdS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25VcGxvYWRQcm9ncmVzcyksKGUuY2FuY2VsVG9rZW58fGUuc2lnbmFsKSYmKG49ZnVuY3Rpb24oZSl7dSYmKHIoIWV8fGUmJmUudHlwZT9uZXcgZHQoImNhbmNlbGVkIik6ZSksdS5hYm9ydCgpLHU9bnVsbCl9LGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiYoZS5zaWduYWwuYWJvcnRlZD9uKCk6ZS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pKSksYXx8KGE9bnVsbCksdS5zZW5kKGEpfSkpfSxndD1mZSx5dD1mdW5jdGlvbihlLHQpe0JlLmZvckVhY2goZSwoZnVuY3Rpb24ocixuKXtuIT09dCYmbi50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpJiYoZVt0XT1yLGRlbGV0ZSBlW25dKX0pKX0sbXQ9RmUsd3Q9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifTtmdW5jdGlvbiBidChlLHQpeyFndC5pc1VuZGVmaW5lZChlKSYmZ3QuaXNVbmRlZmluZWQoZVsiQ29udGVudC1UeXBlIl0pJiYoZVsiQ29udGVudC1UeXBlIl09dCl9dmFyIGt0LHh0PXt0cmFuc2l0aW9uYWw6V2UsYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PUplJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSmUpKSYmKGt0PXZ0KSxrdCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4geXQodCwiQWNjZXB0IikseXQodCwiQ29udGVudC1UeXBlIiksZ3QuaXNGb3JtRGF0YShlKXx8Z3QuaXNBcnJheUJ1ZmZlcihlKXx8Z3QuaXNCdWZmZXIoZSl8fGd0LmlzU3RyZWFtKGUpfHxndC5pc0ZpbGUoZSl8fGd0LmlzQmxvYihlKT9lOmd0LmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOmd0LmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhidCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6Z3QuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhidCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKGd0LmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksZ3QudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fHh0LnRyYW5zaXRpb25hbCxyPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGE9IXImJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKGF8fG4mJmd0LmlzU3RyaW5nKGUpJiZlLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7aWYoYSl7aWYoIlN5bnRheEVycm9yIj09PWUubmFtZSl0aHJvdyBtdChlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O2d0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe3h0LmhlYWRlcnNbZV09e319KSksZ3QuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXt4dC5oZWFkZXJzW2VdPWd0Lm1lcmdlKHd0KX0pKTt2YXIgX3Q9eHQsU3Q9ZmUsRXQ9X3QsVHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9LEF0PWZlLFJ0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxFdDtyZXR1cm4gU3QuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sQ3Q9VHQsUHQ9X3QsRHQ9YXQ7ZnVuY3Rpb24gT3QoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IER0KCJjYW5jZWxlZCIpfXZhciBJdD1mZSxMdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307ZnVuY3Rpb24gbihlLHQpe3JldHVybiBJdC5pc1BsYWluT2JqZWN0KGUpJiZJdC5pc1BsYWluT2JqZWN0KHQpP0l0Lm1lcmdlKGUsdCk6SXQuaXNQbGFpbk9iamVjdCh0KT9JdC5tZXJnZSh7fSx0KTpJdC5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGEocil7cmV0dXJuIEl0LmlzVW5kZWZpbmVkKHRbcl0pP0l0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKGVbcl0sdFtyXSl9ZnVuY3Rpb24gaShlKXtpZighSXQuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG4odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIG8ocil7cmV0dXJuIEl0LmlzVW5kZWZpbmVkKHRbcl0pP0l0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKHZvaWQgMCx0W3JdKX1mdW5jdGlvbiBzKHIpe3JldHVybiByIGluIHQ/bihlW3JdLHRbcl0pOnIgaW4gZT9uKHZvaWQgMCxlW3JdKTp2b2lkIDB9dmFyIHU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOm8sdHJhbnNmb3JtUmVxdWVzdDpvLHRyYW5zZm9ybVJlc3BvbnNlOm8scGFyYW1zU2VyaWFsaXplcjpvLHRpbWVvdXQ6byx0aW1lb3V0TWVzc2FnZTpvLHdpdGhDcmVkZW50aWFsczpvLGFkYXB0ZXI6byxyZXNwb25zZVR5cGU6byx4c3JmQ29va2llTmFtZTpvLHhzcmZIZWFkZXJOYW1lOm8sb25VcGxvYWRQcm9ncmVzczpvLG9uRG93bmxvYWRQcm9ncmVzczpvLGRlY29tcHJlc3M6byxtYXhDb250ZW50TGVuZ3RoOm8sbWF4Qm9keUxlbmd0aDpvLHRyYW5zcG9ydDpvLGh0dHBBZ2VudDpvLGh0dHBzQWdlbnQ6byxjYW5jZWxUb2tlbjpvLHNvY2tldFBhdGg6byxyZXNwb25zZUVuY29kaW5nOm8sdmFsaWRhdGVTdGF0dXM6c307cmV0dXJuIEl0LmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9dVtlXXx8YSxuPXQoZSk7SXQuaXNVbmRlZmluZWQobikmJnQhPT1zfHwocltlXT1uKX0pKSxyfSxVdD0iMC4yNi4xIixIdD1VdCxNdD17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7TXRbZV09ZnVuY3Rpb24ocil7cmV0dXJuIG4ocik9PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIGp0PXt9O010LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLHQpe3JldHVybiJbQXhpb3MgdiIrSHQrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhyPyIuICIrcjoiIil9cmV0dXJuIGZ1bmN0aW9uKHIsYSxpKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG4oYSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhanRbYV0mJihqdFthXT0hMCxjb25zb2xlLndhcm4obihhLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFlfHxlKHIsYSxpKX19O3ZhciBOdD17YXNzZXJ0T3B0aW9uczpmdW5jdGlvbihlLHQscil7aWYoIm9iamVjdCIhPT1uKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtmb3IodmFyIGE9T2JqZWN0LmtleXMoZSksaT1hLmxlbmd0aDtpLS0gPjA7KXt2YXIgbz1hW2ldLHM9dFtvXTtpZihzKXt2YXIgdT1lW29dLGM9dm9pZCAwPT09dXx8cyh1LG8sZSk7aWYoITAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiAiK28rIiBtdXN0IGJlICIrYyl9ZWxzZSBpZighMCE9PXIpdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIrbyl9fSx2YWxpZGF0b3JzOk10fSxxdD1mZSxLdD1wZSxKdD1nZSxCdD1mdW5jdGlvbihlKXtyZXR1cm4gT3QoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPVJ0LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPUF0Lm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksQXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxQdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gT3QoZSksdC5kYXRhPVJ0LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIEN0KHQpfHwoT3QoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1SdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxGdD1MdCxXdD1OdCx6dD1XdC52YWxpZGF0b3JzO2Z1bmN0aW9uIFl0KGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgSnQscmVzcG9uc2U6bmV3IEp0fX1ZdC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZT8odD10fHx7fSkudXJsPWU6dD1lfHx7fSwodD1GdCh0aGlzLmRlZmF1bHRzLHQpKS5tZXRob2Q/dC5tZXRob2Q9dC5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD90Lm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnQubWV0aG9kPSJnZXQiO3ZhciByPXQudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXImJld0LmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOnp0LnRyYW5zaXRpb25hbCh6dC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOnp0LnRyYW5zaXRpb25hbCh6dC5ib29sZWFuKX0sITEpO3ZhciBuPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5ydW5XaGVuJiYhMT09PWUucnVuV2hlbih0KXx8KGE9YSYmZS5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZS5mdWxmaWxsZWQsZS5yZWplY3RlZCkpfSkpO3ZhciBpLG89W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFhKXt2YXIgcz1bQnQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkocyxuKSxzPXMuY29uY2F0KG8pLGk9UHJvbWlzZS5yZXNvbHZlKHQpO3MubGVuZ3RoOylpPWkudGhlbihzLnNoaWZ0KCkscy5zaGlmdCgpKTtyZXR1cm4gaX1mb3IodmFyIHU9dDtuLmxlbmd0aDspe3ZhciBjPW4uc2hpZnQoKSxmPW4uc2hpZnQoKTt0cnl7dT1jKHUpfWNhdGNoKGUpe2YoZSk7YnJlYWt9fXRyeXtpPUJ0KHUpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO28ubGVuZ3RoOylpPWkudGhlbihvLnNoaWZ0KCksby5zaGlmdCgpKTtyZXR1cm4gaX0sWXQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1GdCh0aGlzLmRlZmF1bHRzLGUpLEt0KGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LHF0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtZdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEZ0KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSkscXQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtZdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoRnQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIEd0PVl0LFZ0PWF0O2Z1bmN0aW9uIFh0KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihyLl9saXN0ZW5lcnMpe3ZhciB0LG49ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8bjt0Kyspci5fbGlzdGVuZXJzW3RdKGUpO3IuX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKHQpfSxufSxlKChmdW5jdGlvbihlKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBWdChlKSx0KHIucmVhc29uKSl9KSl9WHQucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sWHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sWHQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9fSxYdC5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZSx0PW5ldyBYdCgoZnVuY3Rpb24odCl7ZT10fSkpO3JldHVybnt0b2tlbjp0LGNhbmNlbDplfX07dmFyICR0PVh0LFp0PWZlLFF0PWZlLGVyPWVlLHRyPUd0LHJyPUx0O3ZhciBucj1mdW5jdGlvbiBlKHQpe3ZhciByPW5ldyB0cih0KSxuPWVyKHRyLnByb3RvdHlwZS5yZXF1ZXN0LHIpO3JldHVybiBRdC5leHRlbmQobix0ci5wcm90b3R5cGUsciksUXQuZXh0ZW5kKG4sciksbi5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUocnIodCxyKSl9LG59KF90KTtuci5BeGlvcz10cixuci5DYW5jZWw9YXQsbnIuQ2FuY2VsVG9rZW49JHQsbnIuaXNDYW5jZWw9VHQsbnIuVkVSU0lPTj1VdCxuci5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSxuci5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSxuci5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIFp0LmlzT2JqZWN0KGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfSxRLmV4cG9ydHM9bnIsUS5leHBvcnRzLmRlZmF1bHQ9bnI7dmFyIGFyLGlyPVEuZXhwb3J0czt2YXIgb3I9YXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHUoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihuPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxhPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXthLmFwcGVuZChlLG5bZV0pfSkpLGUuZGF0YT1hKSxlLnN0YXJ0VGltZUluTXM9KG5ldyBEYXRlKS5nZXRUaW1lKCksYXIuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IGFyLmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhci5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6YXIuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7YXIuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe2FyLmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTphci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO2FyLmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXthci5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPWlyLmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IGFyKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gUyhlLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9aXIuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9aXIuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtvci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxvcj1hcj1mdW5jdGlvbihlLHQscixhKXt2YXIgaSxvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpuKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKGk9ZVt1XSkmJihzPShvPDM/aShzKTpvPjM/aSh0LHIscyk6aSh0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfShbZnVuY3Rpb24oZSl7fV0sb3IpO3ZhciBzcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiB1KGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIixudWxsIT09KG49bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PW4/bjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksdXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpLGNyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6InJlbW92ZUF1dGhvcml6YXRpb25Db2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWxvY2F0aW9uLmhyZWY7aGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsZS5yZXBsYWNlKC9cP2NvZGU9LiokLywiIikpfX0se2tleToiZ2V0UEtDRSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGUpKSYmdm9pZCAwIT09dD90OiIifX0se2tleToic2V0UEtDRSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGUsdCl9fSx7a2V5OiJzZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKEQsZSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBudWxsIT09KGU9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShEKSkmJnZvaWQgMCE9PWU/ZToiIn19LHtrZXk6InJlbW92ZVBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUpe3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oZSl9fSx7a2V5OiJjYW5Db250aW51ZVNpZ25JbiIsdmFsdWU6ZnVuY3Rpb24odCxyKXtyZXR1cm4hKHQmJiFlLmhhc0Vycm9ySW5VUkwoKSYmIWUuaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMKCkmJiFyKX19LHtrZXk6ImlzSW5pdGlhbGl6ZWRTaWxlbnRTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCgpfX0se2tleToid2FzU2lnbkluQ2FsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIWUuaGFzRXJyb3JJblVSTCgpJiYhZS5oYXNBdXRoU2VhcmNoUGFyYW1zSW5VUkwoKXx8dGhpcy5pc1NpbGVudFN0YXRlUHJlc2VudEluVVJMKCkpfX0se2tleToid2FzU2lsZW50U2lnbkluQ2FsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImluaXRpYWxpemVkLXNpbGVudC1zaWduLWluIiksdD1lP0pTT04ucGFyc2UoZSk6bnVsbDtyZXR1cm4gQm9vbGVhbih0KX19LHtrZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighSi5pc1NpZ25PdXRTdWNjZXNzZnVsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSl7ZS5uZXh0PTY7YnJlYWt9cmV0dXJuIHQ9d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXSxoaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSx0KSxlLm5leHQ9NSxKLmNsZWFyVXNlclNlc3Npb25EYXRhKCk7Y2FzZSA1OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwhMCk7Y2FzZSA2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfX0se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoSi5kaWRTaWduT3V0RmFpbCh3aW5kb3cubG9jYXRpb24uaHJlZikpe3ZhciBlPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLHQ9ZS5zZWFyY2hQYXJhbXMuZ2V0KFcpLHI9ZS5zZWFyY2hQYXJhbXMuZ2V0KHopLG49d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXTtyZXR1cm4gaGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsbikse2Rlc2NyaXB0aW9uOm51bGwhPXI/cjoiIixlcnJvcjpudWxsIT10P3Q6IiJ9fXJldHVybiExfX0se2tleToiaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIik7cmV0dXJuIG51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmluY2x1ZGVzKCJzaWduLWluLXNpbGVudGx5IikpJiZ2b2lkIDAhPT1lJiZlfX0se2tleToiaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3cubG9jYXRpb24uc2VhcmNoLHQ9L1s/Jl1jb2RlPVteJl0rLztyZXR1cm4gdC50ZXN0KGUpfX0se2tleToiaGFzRXJyb3JJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LmxvY2F0aW9uLmhyZWYsdD1uZXcgVVJMKGUpO3JldHVybiEhdC5zZWFyY2hQYXJhbXMuZ2V0KFcpJiZ0LnNlYXJjaFBhcmFtcy5nZXQoRykhPT1PfX0se2tleToiY2FuU2VuZFByb21wdE5vbmVSZXF1ZXN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oRik7cmV0dXJuIShlP0pTT04ucGFyc2UoZSk6bnVsbCl9fSx7a2V5OiJzZXRQcm9tcHROb25lUmVxdWVzdFNlbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oRixKU09OLnN0cmluZ2lmeShlKSl9fSx7a2V5OiJ3YWl0VGlsbFBhZ2VSZWRpcmVjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1udWxsIT1lP2U6M2UzLHQubmV4dD0zLG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLDFlMypuKX0pKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9fV0pLGV9KCksZnI9W10sbHI9W10saHI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXkscHI9ITE7ZnVuY3Rpb24gZHIoKXtwcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZnJbdF09ZVt0XSxscltlLmNoYXJDb2RlQXQodCldPXQ7bHJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGxyWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiB2cihlLHQscil7Zm9yKHZhciBuLGEsaT1bXSxvPXQ7bzxyO28rPTMpbj0oZVtvXTw8MTYpKyhlW28rMV08PDgpK2VbbysyXSxpLnB1c2goZnJbKGE9bik+PjE4JjYzXStmclthPj4xMiY2M10rZnJbYT4+NiY2M10rZnJbNjMmYV0pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdyKGUpe3ZhciB0O3ByfHxkcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLGk9W10sbz0xNjM4MyxzPTAsdT1yLW47czx1O3MrPW8paS5wdXNoKHZyKGUscyxzK28+dT91OnMrbykpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9ZnJbdD4+Ml0sYSs9ZnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1mclt0Pj4xMF0sYSs9ZnJbdD4+NCY2M10sYSs9ZnJbdDw8MiY2M10sYSs9Ij0iKSxpLnB1c2goYSksaS5qb2luKCIiKX1mdW5jdGlvbiB5cihlLHQscixuLGEpe3ZhciBpLG8scz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLGk9cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7Zm9yKG89aSYoMTw8LWYpLTEsaT4+PS1mLGYrPW47Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09dSlyZXR1cm4gbz9OYU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiksaS09Y31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsaS1uKX1mdW5jdGlvbiBtcihlLHQscixuLGEsaSl7dmFyIG8scyx1LGM9OCppLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxvPWYpOihvPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sdSo9MiksKHQrPW8rbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihvKyssdS89MiksbytsPj1mPyhzPTAsbz1mKTpvK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLG8rPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksbz0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKG89bzw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmbyxwKz1kLG8vPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIHdyPXt9LnRvU3RyaW5nLGJyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PXdyLmNhbGwoZSl9O1NyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09eWUuVFlQRURfQVJSQVlfU1VQUE9SVHx8eWUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIga3I9eHIoKTtmdW5jdGlvbiB4cigpe3JldHVybiBTci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBfcihlLHQpe2lmKHhyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVNyLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBTcih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBTcihlLHQscil7aWYoIShTci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgU3IpKXJldHVybiBuZXcgU3IoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gQXIodGhpcyxlKX1yZXR1cm4gRXIodGhpcyxlLHQscil9ZnVuY3Rpb24gRXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU6ZT1ScihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFTci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8RHIodCxyKSxhPShlPV9yKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKFByKHQpKXt2YXIgcj0wfENyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPV9yKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj9fcihlLDApOlJyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJmJyKHQuZGF0YSkpcmV0dXJuIFJyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gVHIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBBcihlLHQpe2lmKFRyKHQpLGU9X3IoZSx0PDA/MDowfENyKHQpKSwhU3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiBScihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfENyKHQubGVuZ3RoKTtlPV9yKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBDcihlKXtpZihlPj14cigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4Iit4cigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBQcihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24gRHIoZSx0KXtpZihQcihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gYW4oZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBvbihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBhbihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBPcihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBZcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gQnIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBXcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4genIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gSnIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gR3IodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gSXIoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBMcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9U3IuZnJvbSh0LG4pKSxQcih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlVyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsU3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOlVyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBVcihlLHQscixuLGEpe3ZhciBpLG89MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtvPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09bz9lW3RdOmUucmVhZFVJbnQxNkJFKHQqbyl9aWYoYSl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZipvfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLGkraCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBIcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgbz0wO288bjsrK28pe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqbywyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIG87ZVtyK29dPXN9cmV0dXJuIG99ZnVuY3Rpb24gTXIoZSx0LHIsbil7cmV0dXJuIHNuKGFuKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGpyKGUsdCxyLG4pe3JldHVybiBzbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIE5yKGUsdCxyLG4pe3JldHVybiBqcihlLHQscixuKX1mdW5jdGlvbiBxcihlLHQscixuKXtyZXR1cm4gc24ob24odCksZSxyLG4pfWZ1bmN0aW9uIEtyKGUsdCxyLG4pe3JldHVybiBzbihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsaT1bXSxvPTA7bzxlLmxlbmd0aCYmISgodC09Mik8MCk7KytvKW49KHI9ZS5jaGFyQ29kZUF0KG8pKT4+OCxhPXIlMjU2LGkucHVzaChhKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIEpyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9ncihlKTpncihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIEJyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIGksbyxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKGk9ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZpKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzppPWVbYSsxXSxvPWVbYSsyXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZvKSYmKHU9KDE1JmMpPDwxMnwoNjMmaSk8PDZ8NjMmbyk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6aT1lW2ErMV0sbz1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmaSk8PDEyfCg2MyZvKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9RnIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPUZyKSk7cmV0dXJuIHJ9KG4pfVNyLnBvb2xTaXplPTgxOTIsU3IuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPVNyLnByb3RvdHlwZSxlfSxTci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIobnVsbCxlLHQscil9LFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihTci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLFNyLl9fcHJvdG9fXz1VaW50OEFycmF5KSxTci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBUcih0KSx0PD0wP19yKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/X3IoZSx0KS5maWxsKHIsbik6X3IoZSx0KS5maWxsKHIpOl9yKGUsdCl9KG51bGwsZSx0LHIpfSxTci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gQXIobnVsbCxlKX0sU3IuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBBcihudWxsLGUpfSxTci5pc0J1ZmZlcj11bixTci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIVByKGUpfHwhUHIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxpPU1hdGgubWluKHIsbik7YTxpOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LFNyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LFNyLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFicihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBTci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPVNyLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdO2lmKCFQcihpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aS5jb3B5KG4sYSksYSs9aS5sZW5ndGh9cmV0dXJuIG59LFNyLmJ5dGVMZW5ndGg9RHIsU3IucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxTci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKUlyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KUlyKHRoaXMsdCx0KzMpLElyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LFNyLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpSXIodGhpcyx0LHQrNyksSXIodGhpcyx0KzEsdCs2KSxJcih0aGlzLHQrMix0KzUpLElyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LFNyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0JyKHRoaXMsMCxlKTpPci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFNyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1Tci5jb21wYXJlKHRoaXMsZSl9LFNyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LFNyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShhPj4+PTApLShuPj4+PTApLG89KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLG8pLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sbz1jW2ZdO2JyZWFrfXJldHVybiBpPG8/LTE6bzxpPzE6MH0sU3IucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LFNyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gTHIodGhpcyxlLHQsciwhMCl9LFNyLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIExyKHRoaXMsZSx0LHIsITEpfSxTci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgaT0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIEhyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIE1yKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBqcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBOcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIHFyKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gS3IodGhpcyxlLHQscik7ZGVmYXVsdDppZihpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxpPSEwfX0sU3IucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEZyPTQwOTY7ZnVuY3Rpb24gV3IoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiB6cihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gWXIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixpPXQ7aTxyOysraSlhKz1ubihlW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBHcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBhfWZ1bmN0aW9uIFZyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBYcihlLHQscixuLGEsaSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiAkcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8aTsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gWnIoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8aTsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24gUXIoZSx0LHIsbixhLGkpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBlbihlLHQscixuLGEpe3JldHVybiBhfHxRcihlLDAsciw0KSxtcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiB0bihlLHQscixuLGEpe3JldHVybiBhfHxRcihlLDAsciw4KSxtcihlLHQscixuLDUyLDgpLHIrOH1Tci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksU3IuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgU3IoYSx2b2lkIDApO2Zvcih2YXIgaT0wO2k8YTsrK2kpcltpXT10aGlzW2krZV19cmV0dXJuIHJ9LFNyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG59LFNyLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LFNyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxTci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFNyLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sU3IucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LFNyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxTci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxTci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsaT10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylpKz10aGlzW2UrLS1uXSphO3JldHVybiBpPj0oYSo9MTI4KSYmKGktPU1hdGgucG93KDIsOCp0KSksaX0sU3IucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFNyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fFZyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFNyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fFZyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFNyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sU3IucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxTci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITAsMjMsNCl9LFNyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMSwyMyw0KX0sU3IucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDgsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMCw1Miw4KX0sU3IucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDgsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMSw1Miw4KX0sU3IucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8WHIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KXRoaXNbdCtpXT1lL2EmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fFhyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLGk9MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKGkqPTI1Nik7KXRoaXNbdCthXT1lL2kmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDEsMjU1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxTci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDY1NTM1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTokcih0aGlzLGUsdCwhMCksdCsyfSxTci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDY1NTM1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTokcih0aGlzLGUsdCwhMSksdCsyfSxTci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpacih0aGlzLGUsdCwhMCksdCs0fSxTci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpacih0aGlzLGUsdCwhMSksdCs0fSxTci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO1hyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT0wLG89MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2ktMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO1hyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraSsxXSYmKHM9MSksdGhpc1t0K2ldPShlL28+PjApLXMmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMSwxMjcsLTEyOCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sU3IucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOiRyKHRoaXMsZSx0LCEwKSx0KzJ9LFNyLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTokcih0aGlzLGUsdCwhMSksdCsyfSxTci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpacih0aGlzLGUsdCwhMCksdCs0fSxTci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpacih0aGlzLGUsdCwhMSksdCs0fSxTci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZW4odGhpcyxlLHQsITAscil9LFNyLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlbih0aGlzLGUsdCwhMSxyKX0sU3IucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0bih0aGlzLGUsdCwhMCxyKX0sU3IucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0bih0aGlzLGUsdCwhMSxyKX0sU3IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxpPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9aS0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihpPDFlM3x8IVNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPGk7KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxTci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhU3IuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgaTtpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3IoaT10O2k8cjsrK2kpdGhpc1tpXT1lO2Vsc2V7dmFyIG89UHIoZSk/ZTphbihuZXcgU3IoZSxuKS50b1N0cmluZygpKSxzPW8ubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1vW2klc119cmV0dXJuIHRoaXN9O3ZhciBybj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBubihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gYW4oZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLGk9W10sbz0wO288bjsrK28pe2lmKChyPWUuY2hhckNvZGVBdChvKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYobysxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIG9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxpLG87cHJ8fGRyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7aT0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLG89bmV3IGhyKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPWxyW2UuY2hhckNvZGVBdCh0KV08PDE4fGxyW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8bHJbZS5jaGFyQ29kZUF0KHQrMildPDw2fGxyW2UuY2hhckNvZGVBdCh0KzMpXSxvW3UrK109YT4+MTYmMjU1LG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmE7cmV0dXJuIDI9PT1pPyhhPWxyW2UuY2hhckNvZGVBdCh0KV08PDJ8bHJbZS5jaGFyQ29kZUF0KHQrMSldPj40LG9bdSsrXT0yNTUmYSk6MT09PWkmJihhPWxyW2UuY2hhckNvZGVBdCh0KV08PDEwfGxyW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxscltlLmNoYXJDb2RlQXQodCsyKV0+PjIsb1t1KytdPWE+PjgmMjU1LG9bdSsrXT0yNTUmYSksb30oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShybiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gc24oZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHxjbihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZjbihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gY24oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgZm49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOlNyLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLFNyLmFsbG9jKCtlKX0saXNCdWZmZXI6dW4sa01heExlbmd0aDprcn0pLGxuPXtleHBvcnRzOnt9fSxobj17fSxwbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHBuLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixpPXQrYSxvPVNyLmFsbG9jKGkpO2ZvcihvLndyaXRlKGUpO2EtLTspby53cml0ZSgiPSIsbisrKTtyZXR1cm4gby50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBkbj1wbjtmdW5jdGlvbiB2bihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFNyLmlzQnVmZmVyKGUpP3luKGUudG9TdHJpbmcoImJhc2U2NCIpKTp5bihTci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksZG4uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBtbix3bj12bjt3bi5lbmNvZGU9dm4sd24uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksU3IuZnJvbShnbihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LHduLnRvQmFzZTY0PWduLHduLmZyb21CYXNlNjQ9eW4sd24udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIFNyLmZyb20oZ24oZSksImJhc2U2NCIpfSxobi5kZWZhdWx0PXduLChtbj1sbikuZXhwb3J0cz1obi5kZWZhdWx0LG1uLmV4cG9ydHMuZGVmYXVsdD1tbi5leHBvcnRzO3ZhciBibj1sbi5leHBvcnRzLGtuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxpKXtmb3IodmFyIG8scyx1LGMsZixsLGgscCxkLHYsZyx5LG07aT49NjQ7KXtmb3Iobz1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspeT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAsbT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPSh5K2Vbdi03XXwwKSsobStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspeT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAsbT0oKG8+Pj4yfG88PDMwKV4obz4+PjEzfG88PDE5KV4obz4+PjIyfG88PDEwKSkrKG8mc15vJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9Yyt5fDAsYz11LHU9cyxzPW8sbz15K218MDtyWzBdKz1vLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsaS09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsaT10PDwzLG89dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxvLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbby04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltvLTRdPWk+Pj4yNCYyNTUsdGhpcy5idWZmZXJbby0zXT1pPj4+MTYmMjU1LHRoaXMuYnVmZmVyW28tMl09aT4+PjgmMjU1LHRoaXMuYnVmZmVyW28tMV09aT4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxvKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBpKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9aSxlLmRlZmF1bHQ9aSxlLmhtYWM9bzt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBpPW5ldyBVaW50OEFycmF5KFsxXSksYz1vKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixpKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLGkuZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBpPW5ldyBhKGUpLG89aS5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KG8pLGM9bmV3IFVpbnQ4QXJyYXkobyksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCpvPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxpLnJlc2V0KCksaS51cGRhdGUodCksaS51cGRhdGUocyksaS5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxvO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7aS5yZXNldCgpLGkudXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPG87ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPG8mJmwqbytwPG47cCsrKWZbbCpvK3BdPXVbcF19Zm9yKGw9MDtsPG87bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIGkuY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIGkgaW4gbilhW2ldPW5baV07ZS5leHBvcnRzPWF9KCl9KGtuKTt2YXIgeG49JChrbi5leHBvcnRzKSxfbj1jcnlwdG8sU249ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDcnlwdG9LZXl9LEVuPW5ldyBUZXh0RW5jb2RlcixUbj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gQW4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksaT0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsaSksaSs9ZS5sZW5ndGh9KSksYX12YXIgUm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9VG4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LENuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcixnKG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KHYoRXJyb3IpKSxQbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShDbiksRG49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KENuKSxPbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KENuKSxJbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oQ24pLExuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oQ24pLFVuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oQ24pLEhuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShDbiksTW49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShDbiksam49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oQ24pLE5uPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShDbik7ZnVuY3Rpb24gcW4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBLbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09SmUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gSm4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBCbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIEZuKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIFduKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gem4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgWW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLHI9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKWFbaS0xXT1hcmd1bWVudHNbaV07aWYoYS5sZW5ndGg+Mil7dmFyIG89YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChvLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09bihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxHbj1mdW5jdGlvbihlKXtyZXR1cm4gU24oZSl9LFZuPVsiQ3J5cHRvS2V5Il0sWG49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBpLG89XyhhKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBzPWkudmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uICRuKGUpe2lmKCJvYmplY3QiIT09bih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIHI9ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpOylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09cn12YXIgWm49ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIFFuKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgSW4oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UocW4oKXx8S24oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBLbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgZWE9ZnVuY3Rpb24oKXt2YXIgZT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4pe3ZhciBhLGksbyxzLHUsYyxmLGwsaDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9UW4obiksdT1zLmFsZ29yaXRobSxjPXMua2V5VXNhZ2VzLGY9W3UsbnVsbCE9PShpPW4uZXh0KSYmdm9pZCAwIT09aSYmaSxudWxsIT09KG89bi5rZXlfb3BzKSYmdm9pZCAwIT09bz9vOmNdLCJQQktERjIiIT09dS5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGw9X24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobCxbInJhdyIsUm4obi5rKV0uY29uY2F0KGYpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUoaD10KHt9LG4pKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKGE9X24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoYSxbImp3ayIsaF0uY29uY2F0KGYpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHRhKGUsdCxyKXtyZXR1cm4gcmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJhKCl7cmV0dXJuKHJhPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUobixhLGkpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoJG4obikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihhfHwoYT1uLmFsZyksInN0cmluZyI9PXR5cGVvZiBhJiZhKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPW4ua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiBuLmsmJm4uayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9aXx8KGk9ITAhPT1uLmV4dCksIWkpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZWEodCh0KHt9LG4pLHt9LHthbGc6YSxleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFJuKG4uaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09bi5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgSW4oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGVhKHQodCh7fSxuKSx7fSx7YWxnOmF9KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IEluKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbmE9ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFHbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFluLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoVm4pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighR24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKFZuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiBhYShlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBpO2k9dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIG8scz1fKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgdT1vLnZhbHVlO2lmKCFpLmhhcyh1KSl0aHJvdyBuZXcgSW4oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoaS5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgaWE9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIG9hKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKHFuKCl8fEtuKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgSW4oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gc2EoZSx0LHIpe2lmKFNuKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBKbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEZuKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBKbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFCbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBKbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBKbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEZuKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBKbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgS24oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgSm4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBxbigpJiYiRWREU0EiOmlmKCFCbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgSm4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFCbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBKbigiRUNEU0EiKTt2YXIgaT1Xbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09aSl0aHJvdyBKbihpLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShvPjI/by0yOjApLHU9Mjt1PG87dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07em4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKFZuKSkpKTtyZXR1cm4gX24uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihWbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIHVhPWZ1bmN0aW9uKCl7dmFyIGU9aShyKCkubWFyaygoZnVuY3Rpb24gZSh0LG4sYSxpKXt2YXIgbyxzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHNhKHQsbiwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxabih0LG8pLHM9b2EodCxvLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsX24uc3VidGxlLnZlcmlmeShzLG8sYSxpKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIGNhKGUsdCxyKXtyZXR1cm4gZmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGZhKCl7cmV0dXJuIGZhPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUobixhLGkpe3ZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoJG4obikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBMbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1uLnByb3RlY3RlZHx8dm9pZCAwIT09bi5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBMbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PW4ucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIG4ucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgTG4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PW4ucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygbi5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgTG4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09bi5oZWFkZXJ8fCRuKG4uaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBMbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYocz17fSwhbi5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha311PVJuKG4ucHJvdGVjdGVkKSxlLnByZXY9MTUscz1KU09OLnBhcnNlKFRuLmRlY29kZSh1KSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IExuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihYbihzLG4uaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBMbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYoYz10KHQoe30scyksbi5oZWFkZXIpLGY9YWEoTG4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWk/dm9pZCAwOmkuY3JpdCxzLGMpLGw9ITAsIWYuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGw9cy5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IExuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihoPWMuYWxnKSYmaCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBMbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKHA9aSYmaWEoImFsZ29yaXRobXMiLGkuYWxnb3JpdGhtcykpfHxwLmhhcyhoKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyBPbignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWwpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIG4ucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBMbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWR8fG4ucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYoZD0hMSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsYShzLG4pO2Nhc2UgNDg6YT1lLnNlbnQsZD0hMDtjYXNlIDUwOnJldHVybiBuYShoLGEsInZlcmlmeSIpLHY9QW4oRW4uZW5jb2RlKG51bGwhPT0obz1uLnByb3RlY3RlZCkmJnZvaWQgMCE9PW8/bzoiIiksRW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQ/RW4uZW5jb2RlKG4ucGF5bG9hZCk6bi5wYXlsb2FkKSxnPVJuKG4uc2lnbmF0dXJlKSxlLm5leHQ9NTUsdWEoaCxhLGcsdik7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgTm47Y2FzZSA1ODppZih5PWw/Um4obi5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIG4ucGF5bG9hZD9Fbi5lbmNvZGUobi5wYXlsb2FkKTpuLnBheWxvYWQsbT17cGF5bG9hZDp5fSx2b2lkIDAhPT1uLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPXMpLHZvaWQgMCE9PW4uaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1uLmhlYWRlciksIWQpe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6YX0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLGZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBsYShlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBoYSgpe3JldHVybihoYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYyxmLGw7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuIGluc3RhbmNlb2YgVWludDhBcnJheSYmKG49VG4uZGVjb2RlKG4pKSwic3RyaW5nIj09dHlwZW9mIG4pe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBMbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKG89bi5zcGxpdCgiLiIpLHM9b1swXSx1PW9bMV0sYz1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IExuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCxjYSh7cGF5bG9hZDp1LHByb3RlY3RlZDpzLHNpZ25hdHVyZTpjfSxhLGkpO2Nhc2UgODppZihmPWUuc2VudCxsPXtwYXlsb2FkOmYucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Zi5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxsKSx7fSx7a2V5OmYua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGwpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcGE9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0sZGE9ODY0MDAsdmE9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksZ2E9ZnVuY3Rpb24oZSl7dmFyIHQ9dmEuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqZGEpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LHlhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sbWE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0sd2E9ZnVuY3Rpb24oZSx0KXt2YXIgcixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxpPWEudHlwO2lmKGkmJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHx5YShlLnR5cCkhPT15YShpKSkpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7cj1KU09OLnBhcnNlKFRuLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCEkbihyKSl0aHJvdyBuZXcgVW4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgbz1hLmlzc3VlcjtpZihvJiYhKEFycmF5LmlzQXJyYXkobyk/bzpbb10pLmluY2x1ZGVzKHIuaXNzKSl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmci5zdWIhPT1zKXRocm93IG5ldyBQbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhbWEoci5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gobihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9Z2EoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1wYShmfHxuZXcgRGF0ZSk7aWYoKHZvaWQgMCE9PXIuaWF0fHxhLm1heFRva2VuQWdlKSYmIm51bWJlciIhPXR5cGVvZiByLmlhdCl0aHJvdyBuZXcgUG4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwIT09ci5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygci5uYmYpdGhyb3cgbmV3IFBuKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKHIubmJmPmwrdSl0aHJvdyBuZXcgUG4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1yLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiByLmV4cCl0aHJvdyBuZXcgUG4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYoci5leHA8PWwtdSl0aHJvdyBuZXcgRG4oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLXIuaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6Z2EoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IERuKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBQbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiByfTtmdW5jdGlvbiBiYSgpe3JldHVybihiYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixsYShuLGEsaSk7Y2FzZSAyOmlmKHM9ZS5zZW50LCEobnVsbD09PShvPXMucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09cy5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVW4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHU9d2Eocy5wcm90ZWN0ZWRIZWFkZXIscy5wYXlsb2FkLGkpLGM9e3BheWxvYWQ6dSxwcm90ZWN0ZWRIZWFkZXI6cy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LGMpLHt9LHtrZXk6cy5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga2EoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIHhhKGUpe3JldHVybiAkbihlKX12YXIgX2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PW4oZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KHhhKX0odCkpdGhyb3cgbmV3IEhuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciByO3RoaXMuX2p3a3M9KHI9dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShyKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHIpKSl9dmFyIGE7cmV0dXJuIHUoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZTooYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSl7dmFyIGksbyxzLHUsYyxmLGwsaCxwO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoaT10KHQoe30sbiksYS5oZWFkZXIpLG89aS5hbGcscz1pLmtpZCx1PWthKG8pLGM9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9dT09PWUua3R5O2lmKHQmJiJzdHJpbmciPT10eXBlb2YgcyYmKHQ9cz09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1vPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PW8mJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKG8pe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksZj1jWzBdLDAhPT0obD1jLmxlbmd0aCkpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBNbjtjYXNlIDg6aWYoMT09PWwpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgam47Y2FzZSAxMDppZih2b2lkIDAhPT0oaD10aGlzLl9jYWNoZWQuZ2V0KGYpfHx0aGlzLl9jYWNoZWQuc2V0KGYse30pLmdldChmKSlbb10pe2UubmV4dD0xODticmVha31yZXR1cm4gZS5uZXh0PTE0LHRhKHQodCh7fSxmKSx7fSx7ZXh0OiEwfSksbyk7Y2FzZSAxNDppZighKChwPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09cC50eXBlKSl7ZS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBIbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE3Omhbb109cDtjYXNlIDE4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixoW29dKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBTYT17ZXhwb3J0czp7fX0sRWE9e2V4cG9ydHM6e319LFRhPVooZm4pOyFmdW5jdGlvbihlLHQpe3ZhciByPVRhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPWkpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixpKSxpLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0saS5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0saS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0oRWEsRWEuZXhwb3J0cyk7dmFyIEFhPTY1NTM2LFJhPTQyOTQ5NjcyOTU7dmFyIENhPUVhLmV4cG9ydHMuQnVmZmVyLFBhPVguY3J5cHRvfHxYLm1zQ3J5cHRvO1BhJiZQYS5nZXRSYW5kb21WYWx1ZXM/U2EuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+UmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1DYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5BYSlmb3IodmFyIG49MDtuPGU7bis9QWEpUGEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK0FhKSk7ZWxzZSBQYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06U2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIERhPVNhLmV4cG9ydHMsT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBibi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKHhuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBiYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSxfYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IF9hKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOm8saXNzdWVyOmEsc3ViamVjdDppfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKTtvcmlnaW4sVS5TZXNzaW9uU3RvcmFnZTt2YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdShlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiBuPXBhcnNlSW50KHQuZXhwaXJlc19pbiksYT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBTKGksdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihuPD0xMD9uOm4tMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDLEpTT04uc3RyaW5naWZ5KGEpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksTGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbSx3LGIsayx4LF8sRSxULEEsUixDLFAsRCxPLEksTCxVLEgsTSxqO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9bmV3IHNyLGk9bmV3IE9hLG89bmV3IEooYSxpKSxuLm5leHQ9NSxvLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKHM9bmV3IElhKG8pLHU9dChvLHMpLGM9by5nZXREYXRhTGF5ZXIoKSxmPW9yLmdldEluc3RhbmNlKCksbD1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIShuPU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKSkuYXR0YWNoVG9rZW4pe3QubmV4dD0yMzticmVha31pZighbi5zaG91bGRBdHRhY2hJRFBBY2Nlc3NUb2tlbil7dC5uZXh0PTE0O2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9OCx1LmdldElEUEFjY2Vzc1Rva2VuKCk7Y2FzZSA4OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpLHQubmV4dD0yMzticmVhaztjYXNlIDE0OnJldHVybiB0LnQ2PU9iamVjdCx0LnQ3PU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQ4PSJCZWFyZXIgIix0Lm5leHQ9MTksdS5nZXRBY2Nlc3NUb2tlbigpO2Nhc2UgMTk6dC50OT10LnNlbnQsdC50MTA9dC50OC5jb25jYXQuY2FsbCh0LnQ4LHQudDkpLHQudDExPXtBdXRob3JpemF0aW9uOnQudDEwfSxlLmhlYWRlcnM9dC50Ni5hc3NpZ24uY2FsbCh0LnQ2LHQudDcsdC50MTEpO2Nhc2UgMjM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG4udDA9bnVsbD09Zj92b2lkIDA6Zi5pbml0LCFuLnQwKXtuLm5leHQ9MTQ7YnJlYWt9cmV0dXJuIG4ubmV4dD0xNCxmLmluaXQoITAsbCk7Y2FzZSAxNDpyZXR1cm4gaD1mdW5jdGlvbihlKXsobnVsbD09Zj92b2lkIDA6Zi5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZmLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0scD1mdW5jdGlvbihlKXsobnVsbD09Zj92b2lkIDA6Zi5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJmYuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7KG51bGw9PWY/dm9pZCAwOmYuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJmYuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHUuaHR0cFJlcXVlc3QoZixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxnPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdS5odHRwUmVxdWVzdEFsbChlLGYpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHk9ZnVuY3Rpb24oKXt1LmVuYWJsZUh0dHBIYW5kbGVyKGYpfSxtPWZ1bmN0aW9uKCl7dS5kaXNhYmxlSHR0cEhhbmRsZXIoZil9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixvLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGkscztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBhPW5ldyBVUkwoZSksaT1udWxsIT09KG49YS5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09bj9uOiIiLHQubmV4dD00LG8uZ2V0UEtDRUNvZGUoaSk7Y2FzZSA0OnJldHVybiBzPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6c30pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LGI9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHMuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCkscy5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0saz1mdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gaSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCx2b2lkIDAsbixhKTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBzLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGUubmV4dD0zLG8uc2lnbk91dCgpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LF89ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG8uZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1LnJlcXVlc3RDdXN0b21HcmFudChlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9Myx1LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDY6cmV0dXJuIGUucHJldj02LGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMCw2XV0pfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBvLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9LFI9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldENyeXB0b0hlbHBlcigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0RGVjb2RlZElEUElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxJPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTD1mdW5jdGlvbigpe3JldHVybiB1LmdldEFjY2Vzc1Rva2VuKCl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gdS5pc0F1dGhlbnRpY2F0ZWQoKX0sSD1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLGMuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLG8udXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0saj1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYy5nZXRDb25maWdEYXRhKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sbi5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjptLGVuYWJsZUh0dHBIYW5kbGVyOnksZ2V0QWNjZXNzVG9rZW46TCxnZXRBdXRob3JpemF0aW9uVVJMOncsZ2V0QmFzaWNVc2VySW5mbzpSLGdldENvbmZpZ0RhdGE6aixnZXRDcnlwdG9IZWxwZXI6UCxnZXREZWNvZGVkSURQSURUb2tlbjpELGdldERlY29kZWRJRFRva2VuOkMsZ2V0SURUb2tlbjpPLGdldE9JRENTZXJ2aWNlRW5kcG9pbnRzOkksZ2V0U2lnbk91dFVSTDpfLGh0dHBSZXF1ZXN0OnYsaHR0cFJlcXVlc3RBbGw6Zyxpc0F1dGhlbnRpY2F0ZWQ6VSxyZWZyZXNoQWNjZXNzVG9rZW46VCxyZXF1ZXN0QWNjZXNzVG9rZW46ayxyZXF1ZXN0Q3VzdG9tR3JhbnQ6RSxyZXZva2VBY2Nlc3NUb2tlbjpBLHNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s6ZCxzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s6aCxzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjazpwLHNldFNlc3Npb25TdGF0ZTpILHNpZ25PdXQ6eCxzdGFydEF1dG9SZWZyZXNoVG9rZW46Yix1cGRhdGVDb25maWc6TX0pO2Nhc2UgNDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSl9LFVhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKSx0aGlzLl9zcGFIZWxwZXI9cn1yZXR1cm4gdShlLFt7a2V5OiJlbmFibGVIdHRwSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7KG51bGw9PWU/dm9pZCAwOmUuZW5hYmxlSGFuZGxlcikmJmUuZW5hYmxlSGFuZGxlcigpfX0se2tleToiZGlzYWJsZUh0dHBIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXsobnVsbD09ZT92b2lkIDA6ZS5kaXNhYmxlSGFuZGxlcikmJmUuZGlzYWJsZUhhbmRsZXIoKX19LHtrZXk6ImluaXRpYWxpemVTZXNzaW9uTWFuZ2VyIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEpe3ZhciBpLG8sczthLmluaXRpYWxpemUoZS5jbGllbnRJRCxudWxsIT09KGk9dC5jaGVja1Nlc3Npb25JZnJhbWUpJiZ2b2lkIDAhPT1pP2k6IiIscixudWxsIT09KG89ZS5jaGVja1Nlc3Npb25JbnRlcnZhbCkmJnZvaWQgMCE9PW8/bzozLG51bGwhPT0ocz1lLnNlc3Npb25SZWZyZXNoSW50ZXJ2YWwpJiZ2b2lkIDAhPT1zP3M6MzAwLGUuc2lnbkluUmVkaXJlY3RVUkwsbil9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGwsaD10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6aWYocz0hMCx1PSExLCEobnVsbD09ZT92b2lkIDA6ZS50b2tlbkVuZHBvaW50KSl7by5uZXh0PTM5O2JyZWFrfXJldHVybiBzPSExLGM9MCxvLnQwPVtdLG8udDE9YixvLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgOTppZihvLnQ0PW49by5zZW50LG8udDM9bnVsbD09PW8udDQsby50Myl7by5uZXh0PTEzO2JyZWFrfW8udDM9dm9pZCAwPT09bjtjYXNlIDEzOmlmKCFvLnQzKXtvLm5leHQ9MTc7YnJlYWt9by50NT12b2lkIDAsby5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6by50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE4OmlmKG8udDY9YT1vLnQ1LG8udDI9bnVsbCE9PW8udDYsIW8udDIpe28ubmV4dD0yMjticmVha31vLnQyPXZvaWQgMCE9PWE7Y2FzZSAyMjppZighby50Mil7by5uZXh0PTI2O2JyZWFrfW8udDc9YSxvLm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNjpvLnQ3PVtdO2Nhc2UgMjc6by50OD1vLnQ3LG8udDk9KDAsby50MSkoby50OCksby50MTA9W2UuYmFzZVVybF0sZj1vLnQwLmNvbmNhdC5jYWxsKG8udDAsby50OSxvLnQxMCk7Y2FzZSAzMTppZighKGM8Zi5sZW5ndGgpKXtvLm5leHQ9Mzk7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0oaT1lLnRva2VuRW5kcG9pbnQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0YXJ0c1dpdGgobCkpKXtvLm5leHQ9MzY7YnJlYWt9cmV0dXJuIHU9ITAsby5hYnJ1cHQoImJyZWFrIiwzOSk7Y2FzZSAzNjpjKyssby5uZXh0PTMxO2JyZWFrO2Nhc2UgMzk6aWYoZS5zaG91bGRSZXBsYXlBZnRlclJlZnJlc2gmJnRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKFksSlNPTi5zdHJpbmdpZnkoZSkpLCFzJiYhdSl7by5uZXh0PTQ0O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSkudGhlbigoZnVuY3Rpb24obil7cmV0dXJuIFMoaCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZih0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdChlKSwhZS5yZXR1cm5zU2Vzc2lvbil7ci5uZXh0PTY7YnJlYWt9cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDY6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLG4pO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNDQ6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtTUFJTl9USFJFQURfQ0xJRU5ULVJDRy1JVjAxIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgdG9rZW4gZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDU6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6ImdldEN1c3RvbUdyYW50Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihZKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnByZXY9MCx0Lm5leHQ9Myx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIHQubmV4dD01LHRoaXMuZ2V0Q3VzdG9tR3JhbnRDb25maWdEYXRhKCk7Y2FzZSA1OmlmKCEobj10LnNlbnQpKXt0Lm5leHQ9OTticmVha31yZXR1cm4gdC5uZXh0PTksdGhpcy5yZXF1ZXN0Q3VzdG9tR3JhbnQobixlKTtjYXNlIDk6cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDEzOnJldHVybiB0LnByZXY9MTMsdC50MD10LmNhdGNoKDApLHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KHQudDApKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMCwxM11dKX0pKSl9fSx7a2V5OiJodHRwUmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSxpLG8pe3ZhciBzLHU7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBjKCl7dmFyIGYsbCxoLHAsZCx2PXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihjKXtmb3IoOzspc3dpdGNoKGMucHJldj1jLm5leHQpe2Nhc2UgMDpyZXR1cm4gZj0hMSxjLm5leHQ9Myx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpyZXR1cm4gbD1jLnNlbnQsaD0wLGMudDA9W10sYy50MT1iLGMubmV4dD05LG51bGw9PWw/dm9pZCAwOmwucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgOTppZihjLnQzPXM9Yy5zZW50LGMudDI9bnVsbCE9PWMudDMsIWMudDIpe2MubmV4dD0xMzticmVha31jLnQyPXZvaWQgMCE9PXM7Y2FzZSAxMzppZighYy50Mil7Yy5uZXh0PTE3O2JyZWFrfWMudDQ9cyxjLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzpjLnQ0PVtdO2Nhc2UgMTg6Yy50NT1jLnQ0LGMudDY9KDAsYy50MSkoYy50NSksYy50Nz1bbC5iYXNlVXJsXSxwPWMudDAuY29uY2F0LmNhbGwoYy50MCxjLnQ2LGMudDcpO2Nhc2UgMjI6aWYoIShoPHAubGVuZ3RoKSl7Yy5uZXh0PTMwO2JyZWFrfWlmKCEoZD1wW2hdKXx8IShudWxsPT09KHU9bnVsbD09dD92b2lkIDA6dC51cmwpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnN0YXJ0c1dpdGgoZCkpKXtjLm5leHQ9Mjc7YnJlYWt9cmV0dXJuIGY9ITAsYy5hYnJ1cHQoImJyZWFrIiwzMCk7Y2FzZSAyNzpoKyssYy5uZXh0PTIyO2JyZWFrO2Nhc2UgMzA6aWYoIWYpe2MubmV4dD0zNDticmVha31yZXR1cm4gYy5hYnJ1cHQoInJldHVybiIsZS5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHMpe3JldHVybiBTKHYsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdSgpe3ZhciBjLGYsbCxoLHA7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShjPW51bGw9PXM/dm9pZCAwOnMucmVzcG9uc2UpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnN0YXR1cykmJihudWxsPT1zP3ZvaWQgMDpzLnJlc3BvbnNlKSl7ci5uZXh0PTMxO2JyZWFrfXJldHVybiByLnByZXY9MSxyLm5leHQ9NCx0aGlzLnJlZnJlc2hBY2Nlc3NUb2tlbihvKTtjYXNlIDQ6aD1yLnNlbnQsci5uZXh0PTE1O2JyZWFrO2Nhc2UgNzppZihyLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksIW4pe3IubmV4dD0xNDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTEzO2JyZWFrfXJldHVybiByLm5leHQ9MTMsYShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2NvZGU6Vn0pKTtjYXNlIDEzOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAxNDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSLVNFMDEiLG51bGwhPT0oZj1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5uYW1lKSYmdm9pZCAwIT09Zj9mOiJSZWZyZXNoIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9PShsPW51bGw9PT1yLnQwfHx2b2lkIDA9PT1yLnQwP3ZvaWQgMDpyLnQwLm1lc3NhZ2UpJiZ2b2lkIDAhPT1sP2w6IkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZm9sbG93aW5nIGEgNDAxIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4iKTtjYXNlIDE1OmlmKCFoKXtyLm5leHQ9MzE7YnJlYWt9cmV0dXJuIHIucHJldj0xNixyLm5leHQ9MTksZS5yZXF1ZXN0KHQpO2Nhc2UgMTk6cmV0dXJuIHA9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShwKSk7Y2FzZSAyMzppZihyLnByZXY9MjMsci50MT1yLmNhdGNoKDE2KSwhbil7ci5uZXh0PTMwO2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtyLm5leHQ9Mjk7YnJlYWt9cmV0dXJuIHIubmV4dD0yOSxhKHIudDEpO2Nhc2UgMjk6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDMwOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChyLnQxKSk7Y2FzZSAzMTppZighbil7ci5uZXh0PTM2O2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtyLm5leHQ9MzU7YnJlYWt9cmV0dXJuIHIubmV4dD0zNSxhKHMpO2Nhc2UgMzU6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDM2OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChzKSk7Y2FzZSAzNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHUsdGhpcyxbWzEsN10sWzE2LDIzXV0pfSkpKX0pKSk7Y2FzZSAzNDpyZXR1cm4gYy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUi1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBjLnN0b3AoKX19KSxjLHRoaXMpfSkpKX19LHtrZXk6Imh0dHBSZXF1ZXN0QWxsIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGkpe3ZhciBvLHMsdTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGMoKXt2YXIgZixsLGgscCxkLHYsZyx5LG0sdyxrPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihjKXtmb3IoOzspc3dpdGNoKGMucHJldj1jLm5leHQpe2Nhc2UgMDpyZXR1cm4gZj0hMCxjLm5leHQ9Myx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpsPWMuc2VudCxoPV8oZSksYy5wcmV2PTUsaC5zKCk7Y2FzZSA3OmlmKChwPWgubigpKS5kb25lKXtjLm5leHQ9NTA7YnJlYWt9cmV0dXJuIGQ9cC52YWx1ZSx2PSExLGc9MCxjLnQwPVtdLGMudDE9YixjLm5leHQ9MTUsbDtjYXNlIDE1OmlmKGMudDQ9bz1jLnNlbnQsYy50Mz1udWxsPT09Yy50NCxjLnQzKXtjLm5leHQ9MTk7YnJlYWt9Yy50Mz12b2lkIDA9PT1vO2Nhc2UgMTk6aWYoIWMudDMpe2MubmV4dD0yMzticmVha31jLnQ1PXZvaWQgMCxjLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpjLnQ1PW8ucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjQ6aWYoYy50Nj1zPWMudDUsYy50Mj1udWxsIT09Yy50NiwhYy50Mil7Yy5uZXh0PTI4O2JyZWFrfWMudDI9dm9pZCAwIT09cztjYXNlIDI4OmlmKCFjLnQyKXtjLm5leHQ9MzI7YnJlYWt9Yy50Nz1zLGMubmV4dD0zMzticmVhaztjYXNlIDMyOmMudDc9W107Y2FzZSAzMzpjLnQ4PWMudDcsYy50OT0oMCxjLnQxKShjLnQ4KSxjLnQxMD1bbC5iYXNlVXJsXSx5PWMudDAuY29uY2F0LmNhbGwoYy50MCxjLnQ5LGMudDEwKTtjYXNlIDM3OmlmKCEoZzx5Lmxlbmd0aCkpe2MubmV4dD00NTticmVha31pZighKG09eVtnXSl8fCEobnVsbD09PSh1PWQudXJsKXx8dm9pZCAwPT09dT92b2lkIDA6dS5zdGFydHNXaXRoKG0pKSl7Yy5uZXh0PTQyO2JyZWFrfXJldHVybiB2PSEwLGMuYWJydXB0KCJicmVhayIsNDUpO2Nhc2UgNDI6ZysrLGMubmV4dD0zNzticmVhaztjYXNlIDQ1OmlmKHYpe2MubmV4dD00ODticmVha31yZXR1cm4gZj0hMSxjLmFicnVwdCgiYnJlYWsiLDUwKTtjYXNlIDQ4OmMubmV4dD03O2JyZWFrO2Nhc2UgNTA6Yy5uZXh0PTU1O2JyZWFrO2Nhc2UgNTI6Yy5wcmV2PTUyLGMudDExPWMuY2F0Y2goNSksaC5lKGMudDExKTtjYXNlIDU1OnJldHVybiBjLnByZXY9NTUsaC5mKCksYy5maW5pc2goNTUpO2Nhc2UgNTg6aWYodz1bXSwhZil7Yy5uZXh0PTY0O2JyZWFrfXJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3cucHVzaCh0LnJlcXVlc3QoZSkpfSkpLGMuYWJydXB0KCJyZXR1cm4iLChudWxsPT10P3ZvaWQgMDp0LmFsbCkmJnQuYWxsKHcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBTKGssdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGw9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KHM9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtvLm5leHQ9MTc7YnJlYWt9cmV0dXJuIG8ucHJldj0xLG8ubmV4dD00LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgNDpmPW8uc2VudCxvLm5leHQ9MTU7YnJlYWs7Y2FzZSA3OmlmKG8ucHJldj03LG8udDA9by5jYXRjaCgxKSwhbil7by5uZXh0PTE0O2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtvLm5leHQ9MTM7YnJlYWt9cmV0dXJuIG8ubmV4dD0xMyxhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7Y29kZTpWfSkpO2Nhc2UgMTM6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDE0OnRocm93IG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItSFJBLVNFMDEiLG51bGwhPT0odT1udWxsPT09by50MHx8dm9pZCAwPT09by50MD92b2lkIDA6by50MC5uYW1lKSYmdm9pZCAwIT09dT91OiJSZWZyZXNoIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9PShjPW51bGw9PT1vLnQwfHx2b2lkIDA9PT1vLnQwP3ZvaWQgMDpvLnQwLm1lc3NhZ2UpJiZ2b2lkIDAhPT1jP2M6IkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZm9sbG93aW5nIGEgNDAxIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4iKTtjYXNlIDE1OmlmKCFmKXtvLm5leHQ9MTc7YnJlYWt9cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLHQuYWxsJiZ0LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUyhsLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFuKXt0Lm5leHQ9NTticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7dC5uZXh0PTQ7YnJlYWt9cmV0dXJuIHQubmV4dD00LGEoZSk7Y2FzZSA0OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSA1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSkpKTtjYXNlIDE3OmlmKCFuKXtvLm5leHQ9MjI7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe28ubmV4dD0yMTticmVha31yZXR1cm4gby5uZXh0PTIxLGEoZSk7Y2FzZSAyMToiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgMjI6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUpKTtjYXNlIDIzOmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzLFtbMSw3XV0pfSkpKX0pKSk7Y2FzZSA2NDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gYy5zdG9wKCl9fSksYyx0aGlzLFtbNSw1Miw1NSw1OF1dKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGEsaSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIHMsdSxjPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6aWYoKHM9by5zZW50KS5zdG9yYWdlIT09VS5Ccm93c2VyTWVtb3J5fHwhcy5lbmFibGVQS0NFfHwhdCl7by5uZXh0PTk7YnJlYWt9cmV0dXJuIHU9Y3IuZ2V0UEtDRShMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCkpLG8ubmV4dD03LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnNldFBLQ0VDb2RlKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSx1KTtjYXNlIDc6by5uZXh0PTEyO2JyZWFrO2Nhc2UgOTppZihzLnN0b3JhZ2UhPT1VLldlYldvcmtlcnx8IWEpe28ubmV4dD0xMjticmVha31yZXR1cm4gby5uZXh0PTEyLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnNldFBLQ0VDb2RlKGEsbnVsbCE9aT9pOiIiKTtjYXNlIDEyOmlmKCFlKXtvLm5leHQ9MTQ7YnJlYWt9cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlcXVlc3RBY2Nlc3NUb2tlbihlLG51bGwhPXQ/dDoiIixudWxsIT1pP2k6IiIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFMoYyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzLnN0b3JhZ2U9PT1VLldlYldvcmtlcil7ZS5uZXh0PTEwO2JyZWFrfXJldHVybiBlLnQwPWNyLGUubmV4dD00LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldFNpZ25PdXRVUkwoKTtjYXNlIDQ6ZS50MT1lLnNlbnQsZS50MC5zZXRTaWduT3V0VVJMLmNhbGwoZS50MCxlLnQxKSx0aGlzLl9zcGFIZWxwZXImJih0aGlzLl9zcGFIZWxwZXIuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksdGhpcy5fc3BhSGVscGVyLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSksbiYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJnMuZW5hYmxlT0lEQ1Nlc3Npb25NYW5hZ2VtZW50JiZuKCksZS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6dGhpcy5fc3BhSGVscGVyJiZ0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpO2Nhc2UgMTE6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTQ6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItUkFUMS1ORjAxIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlLiIsIk5vIGF1dGhvcml6YXRpb24gY29kZSB3YXMgZm91bmQuIikpKTtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJ0cnlTaWduSW5TaWxlbnRseSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gaSgpe3ZhciBvLHMsdSxjPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihpKXtmb3IoOzspc3dpdGNoKGkucHJldj1pLm5leHQpe2Nhc2UgMDppZighY3IuaXNJbml0aWFsaXplZFNpbGVudFNpZ25JbigpKXtpLm5leHQ9NDticmVha31yZXR1cm4gaS5uZXh0PTMsbi5yZWNlaXZlUHJvbXB0Tm9uZVJlc3BvbnNlKCk7Y2FzZSAzOnJldHVybiBpLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoe2FsbG93ZWRTY29wZXM6IiIsZGlzcGxheU5hbWU6IiIsZW1haWw6IiIsc2Vzc2lvblN0YXRlOiIiLHN1YjoiIix0ZW5hbnREb21haW46IiIsdXNlcm5hbWU6IiJ9KSk7Y2FzZSA0OnJldHVybiBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJycElGcmFtZSIpLHM9bnVsbD09PShhPW51bGw9PW8/dm9pZCAwOm8uY29udGVudERvY3VtZW50KXx8dm9pZCAwPT09YT92b2lkIDA6YS5nZXRFbGVtZW50QnlJZCgicHJvbXB0Tm9uZUlGcmFtZSIpLGkucHJldj02LGkubmV4dD05LGUoKTtjYXNlIDk6dT1pLnNlbnQscy5zcmM9dSxpLm5leHQ9MTY7YnJlYWs7Y2FzZSAxMzpyZXR1cm4gaS5wcmV2PTEzLGkudDA9aS5jYXRjaCg2KSxpLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChpLnQwKSk7Y2FzZSAxNjpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dmFyIGE9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlKCExKX0pLDFlNCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBpKG8pe3JldHVybiBTKGMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1LGMsZixsLGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDoiY2hlY2tfc2Vzc2lvbl9zaWduZWRfb3V0Ij09KG51bGw9PShoPW8uZGF0YSk/dm9pZCAwOmgudHlwZSkmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSksY2xlYXJUaW1lb3V0KGEpLGUoITEpKSwiY2hlY2tfc2Vzc2lvbl9zaWduZWRfaW4iPT0obnVsbD09aD92b2lkIDA6aC50eXBlKSYmKG51bGw9PT0odT1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LmNvZGUpJiZ0KG51bGw9PT0oYz1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvZGUsbnVsbD09PShmPW51bGw9PWg/dm9pZCAwOmguZGF0YSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2Vzc2lvblN0YXRlLG51bGw9PT0obD1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnN0YXRlKS50aGVuKChmdW5jdGlvbih0KXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSksZSh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLG4oZSl9KSkuZmluYWxseSgoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYSl9KSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscyl9KSkpfSkpfSkpKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gaS5zdG9wKCl9fSksaSxudWxsLFtbNiwxM11dKX0pKSl9fSx7a2V5OiJoYW5kbGVTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBpPXIuc2VudCxyLm5leHQ9NSxlKCk7Y2FzZSA1OmlmKCFyLnNlbnQpe3IubmV4dD03O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoe2FsbG93ZWRTY29wZXM6IiIsZGlzcGxheU5hbWU6IiIsZW1haWw6IiIsc2Vzc2lvblN0YXRlOiIiLHN1YjoiIix0ZW5hbnREb21haW46IiIsdXNlcm5hbWU6IiJ9KSk7Y2FzZSA3OmlmKGkuc3RvcmFnZT09PVUuV2ViV29ya2VyKXtyLm5leHQ9MTk7YnJlYWt9cmV0dXJuIHIubmV4dD0xMCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDEwOmlmKCFyLnNlbnQpe3IubmV4dD0xOTticmVha31yZXR1cm4gdGhpcy5fc3BhSGVscGVyLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksaS5lbmFibGVPSURDU2Vzc2lvbk1hbmFnZW1lbnQmJnQoKSxyLnQwPVByb21pc2Usci5uZXh0PTE3LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDE3OnJldHVybiByLnQxPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixyLnQwLnJlc29sdmUuY2FsbChyLnQwLHIudDEpKTtjYXNlIDE5OmlmKG89bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikuc2VhcmNoUGFyYW1zLmdldChXKSxzPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoeiksIW8pe3IubmV4dD0yNzticmVha310aHJvdyh1PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKS5zZWFyY2hQYXJhbXMuZGVsZXRlKFcpLHUuc2VhcmNoUGFyYW1zLmRlbGV0ZSh6KSxoaXN0b3J5LnB1c2hTdGF0ZShudWxsLGRvY3VtZW50LnRpdGxlLHUudG9TdHJpbmcoKSksbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1TSS1TRTAxIixvLG51bGwhPXM/czoiIik7Y2FzZSAyNzppZihpLnN0b3JhZ2UhPT1VLldlYldvcmtlcnx8IW4pe3IubmV4dD0zMzticmVha31yZXR1cm4gci5uZXh0PTMwLG4oKTtjYXNlIDMwOmlmKCEoYz1yLnNlbnQpKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLGMpO2Nhc2UgMzM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEUElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDcnlwdG9IZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0Q3J5cHRvSGVscGVyKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRBY2Nlc3NUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldElEUEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZih0LnQxPWU9dC5zZW50LHQudDA9bnVsbD09PXQudDEsdC50MCl7dC5uZXh0PTY7YnJlYWt9dC50MD12b2lkIDA9PT1lO2Nhc2UgNjppZighdC50MCl7dC5uZXh0PTEwO2JyZWFrfXQudDI9dm9pZCAwLHQubmV4dD0xMTticmVhaztjYXNlIDEwOnQudDI9ZS5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YUxheWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhTGF5ZXJ9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpOyFmdW5jdGlvbihlKXt2YXIgdCxuPXNlbGY7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24obil7dmFyIHM9bi5kYXRhLHU9bi5wb3J0cztyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBjLGYsbCxoLHAsZDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHA9dVswXSxzLnR5cGU9PT1CfHx0KXtyLm5leHQ9NDticmVha31yZXR1cm4gcC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBJKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxyLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnIudDA9cy50eXBlLHIubmV4dD1yLnQwPT09Qj83OiJnZXRfYXV0aF91cmwiPT09ci50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ci50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PXIudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ci50MD8yODoic2lnbi1vdXQiPT09ci50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ci50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1yLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1yLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PXIudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PXIudDA/NzY6ImdldC1jcnlwdG8taGVscGVyIj09PXIudDA/OTA6ImdldF9pZF90b2tlbiI9PT1yLnQwPzEwNDoiZW5hYmxlX2h0dHBfaGFuZGxlciI9PT1yLnQwPzExODoiZGlzYWJsZV9odHRwX2hhbmRsZXIiPT09ci50MD8xMjE6ImlzX2F1dGhlbnRpY2F0ZWQiPT09ci50MD8xMjQ6ImdldF9zaWduX291dF91cmwiPT09ci50MD8xMzg6InJlZnJlc2hfYWNjZXNzLXRva2VuIj09PXIudDA/MTUyOiJzdGFydF9hdXRvX3JlZnJlc2hfdG9rZW4iPT09ci50MD8xNjY6InNldF9zZXNzaW9uX3N0YXRlIj09PXIudDA/MTY4OiJ1cGRhdGVfY29uZmlnIj09PXIudDA/MTgyOiJnZXRfY29uZmlnX2RhdGEiPT09ci50MD8xOTY6MjEwO2JyZWFrO2Nhc2UgNzpyZXR1cm4gci5wcmV2PTcsZD1PYmplY3QuYXNzaWduKHt9LHMuZGF0YSksci5uZXh0PTExLExhKGQsZSk7Y2FzZSAxMToodD1yLnNlbnQpLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2sobyksdC5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soYSksdC5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhpKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksci5uZXh0PTIxO2JyZWFrO2Nhc2UgMTg6ci5wcmV2PTE4LHIudDE9ci5jYXRjaCg3KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MSkpO2Nhc2UgMjE6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDIyOnJldHVybiB0LmdldEF1dGhvcml6YXRpb25VUkwobnVsbD09cz92b2lkIDA6cy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDI0OnJldHVybiB0LnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KGM9bnVsbD09cz92b2lkIDA6cy5kYXRhKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb2RlLG51bGw9PT0oZj1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnNlc3Npb25TdGF0ZSxudWxsPT09KGw9bnVsbD09cz92b2lkIDA6cy5kYXRhKXx8dm9pZCAwPT09bD92b2lkIDA6bC5wa2NlLG51bGw9PT0oaD1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnN0YXRlKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDI2OnJldHVybiB0Lmh0dHBSZXF1ZXN0KHMuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSAyODpyZXR1cm4gdC5odHRwUmVxdWVzdEFsbChzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMzA6cmV0dXJuIHIucHJldj0zMCxyLnQyPXAsci50Mz11cixyLm5leHQ9MzUsdC5zaWduT3V0KCk7Y2FzZSAzNTpyLnQ0PXIuc2VudCxyLnQ1PXIudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDMsci50NCksci50Mi5wb3N0TWVzc2FnZS5jYWxsKHIudDIsci50NSksci5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ci5wcmV2PTQwLHIudDY9ci5jYXRjaCgzMCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDYpKTtjYXNlIDQzOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA0NDpyZXR1cm4gdC5yZXF1ZXN0Q3VzdG9tR3JhbnQocy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDQ2OnJldHVybiB0LnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA0ODpyZXR1cm4gci5wcmV2PTQ4LHIudDc9cCxyLnQ4PXVyLHIubmV4dD01Myx0LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzpyLnQ5PXIuc2VudCxyLnQxMD1yLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ4LHIudDkpLHIudDcucG9zdE1lc3NhZ2UuY2FsbChyLnQ3LHIudDEwKSxyLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODpyLnByZXY9NTgsci50MTE9ci5jYXRjaCg0OCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDExKSk7Y2FzZSA2MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgNjI6cmV0dXJuIHIucHJldj02MixyLnQxMj1wLHIudDEzPXVyLHIubmV4dD02Nyx0LmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDY3OnIudDE0PXIuc2VudCxyLnQxNT1yLnQxMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MTMsci50MTQpLHIudDEyLnBvc3RNZXNzYWdlLmNhbGwoci50MTIsci50MTUpLHIubmV4dD03NTticmVhaztjYXNlIDcyOnIucHJldj03MixyLnQxNj1yLmNhdGNoKDYyKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MTYpKTtjYXNlIDc1OnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA3NjpyZXR1cm4gci5wcmV2PTc2LHIudDE3PXAsci50MTg9dXIsci5uZXh0PTgxLHQuZ2V0RGVjb2RlZElEVG9rZW4oKTtjYXNlIDgxOnIudDE5PXIuc2VudCxyLnQyMD1yLnQxOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MTgsci50MTkpLHIudDE3LnBvc3RNZXNzYWdlLmNhbGwoci50MTcsci50MjApLHIubmV4dD04OTticmVhaztjYXNlIDg2OnIucHJldj04NixyLnQyMT1yLmNhdGNoKDc2KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MjEpKTtjYXNlIDg5OnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA5MDpyZXR1cm4gci5wcmV2PTkwLHIudDIyPXAsci50MjM9dXIsci5uZXh0PTk1LHQuZ2V0Q3J5cHRvSGVscGVyKCk7Y2FzZSA5NTpyLnQyND1yLnNlbnQsci50MjU9ci50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDIzLHIudDI0KSxyLnQyMi5wb3N0TWVzc2FnZS5jYWxsKHIudDIyLHIudDI1KSxyLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOnIucHJldj0xMDAsci50MjY9ci5jYXRjaCg5MCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEwNDpyZXR1cm4gci5wcmV2PTEwNCxyLnQyNz1wLHIudDI4PXVyLHIubmV4dD0xMDksdC5nZXRJRFRva2VuKCk7Y2FzZSAxMDk6ci50Mjk9ci5zZW50LHIudDMwPXIudDI4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQyOCxyLnQyOSksci50MjcucG9zdE1lc3NhZ2UuY2FsbChyLnQyNyxyLnQzMCksci5uZXh0PTExNzticmVhaztjYXNlIDExNDpyLnByZXY9MTE0LHIudDMxPXIuY2F0Y2goMTA0KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MzEpKTtjYXNlIDExNzpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTE4OnJldHVybiB0LmVuYWJsZUh0dHBIYW5kbGVyKCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEyMTpyZXR1cm4gdC5kaXNhYmxlSHR0cEhhbmRsZXIoKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTI0OnJldHVybiByLnByZXY9MTI0LHIudDMyPXAsci50MzM9dXIsci5uZXh0PTEyOSx0LmlzQXV0aGVudGljYXRlZCgpO2Nhc2UgMTI5OnIudDM0PXIuc2VudCxyLnQzNT1yLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MzMsci50MzQpLHIudDMyLnBvc3RNZXNzYWdlLmNhbGwoci50MzIsci50MzUpLHIubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ci5wcmV2PTEzNCxyLnQzNj1yLmNhdGNoKDEyNCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEzODpyZXR1cm4gci5wcmV2PTEzOCxyLnQzNz1wLHIudDM4PXVyLHIubmV4dD0xNDMsdC5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxNDM6ci50Mzk9ci5zZW50LHIudDQwPXIudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQzOCxyLnQzOSksci50MzcucG9zdE1lc3NhZ2UuY2FsbChyLnQzNyxyLnQ0MCksci5uZXh0PTE1MTticmVhaztjYXNlIDE0ODpyLnByZXY9MTQ4LHIudDQxPXIuY2F0Y2goMTM4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NDEpKTtjYXNlIDE1MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTUyOnJldHVybiByLnByZXY9MTUyLHIudDQyPXAsci50NDM9dXIsci5uZXh0PTE1Nyx0LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMTU3OnIudDQ0PXIuc2VudCxyLnQ0NT1yLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NDMsci50NDQpLHIudDQyLnBvc3RNZXNzYWdlLmNhbGwoci50NDIsci50NDUpLHIubmV4dD0xNjU7YnJlYWs7Y2FzZSAxNjI6ci5wcmV2PTE2MixyLnQ0Nj1yLmNhdGNoKDE1MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDQ2KSk7Y2FzZSAxNjU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDE2Njp0cnl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKHQuc3RhcnRBdXRvUmVmcmVzaFRva2VuKCkpKX1jYXRjaChlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSAxNjg6cmV0dXJuIHIucHJldj0xNjgsci50NDc9cCxyLnQ0OD11cixyLm5leHQ9MTczLHQuc2V0U2Vzc2lvblN0YXRlKG51bGw9PXM/dm9pZCAwOnMuZGF0YSk7Y2FzZSAxNzM6ci50NDk9ci5zZW50LHIudDUwPXIudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ0OCxyLnQ0OSksci50NDcucG9zdE1lc3NhZ2UuY2FsbChyLnQ0NyxyLnQ1MCksci5uZXh0PTE4MTticmVhaztjYXNlIDE3ODpyLnByZXY9MTc4LHIudDUxPXIuY2F0Y2goMTY4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NTEpKTtjYXNlIDE4MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTgyOnJldHVybiByLnByZXY9MTgyLHIudDUyPXAsci50NTM9dXIsci5uZXh0PTE4Nyx0LnVwZGF0ZUNvbmZpZyhudWxsPT1zP3ZvaWQgMDpzLmRhdGEpO2Nhc2UgMTg3OnIudDU0PXIuc2VudCxyLnQ1NT1yLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NTMsci50NTQpLHIudDUyLnBvc3RNZXNzYWdlLmNhbGwoci50NTIsci50NTUpLHIubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ci5wcmV2PTE5MixyLnQ1Nj1yLmNhdGNoKDE4MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDE5NjpyZXR1cm4gci5wcmV2PTE5NixyLnQ1Nz1wLHIudDU4PXVyLHIubmV4dD0yMDEsdC5nZXRDb25maWdEYXRhKCk7Y2FzZSAyMDE6ci50NTk9ci5zZW50LHIudDYwPXIudDU4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ1OCxyLnQ1OSksci50NTcucG9zdE1lc3NhZ2UuY2FsbChyLnQ1NyxyLnQ2MCksci5uZXh0PTIwOTticmVhaztjYXNlIDIwNjpyLnByZXY9MjA2LHIudDYxPXIuY2F0Y2goMTk2KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NjEpKTtjYXNlIDIwOTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMjEwOm51bGw9PXB8fHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgSSgiU1BBLUNMSUVOVF9XT1JLRVItT05NU0ctSVYwMiIsIlRoZSBtZXNzYWdlIHR5cGUgaXMgaW52YWxpZC4iLCJUaGUgbWVzc2FnZSB0eXBlIHByb3ZpZGVkLCAiLmNvbmNhdChzLnR5cGUsIiwgaXMgaW52YWxpZC4iKSkpKTtjYXNlIDIxMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sbnVsbCxbWzcsMThdLFszMCw0MF0sWzQ4LDU4XSxbNjIsNzJdLFs3Niw4Nl0sWzkwLDEwMF0sWzEwNCwxMTRdLFsxMjQsMTM0XSxbMTM4LDE0OF0sWzE1MiwxNjJdLFsxNjgsMTc4XSxbMTgyLDE5Ml0sWzE5NiwyMDZdXSl9KSkpfTt2YXIgYT1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LGk9ZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sbz1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfX0oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVYShlLHQpfSkpO3JldHVybnt9fSgpOwoK",ij=null,cj=!1,function(t){return aj=aj||nj(rj,ij,cj),new Worker(aj,t)}),sj="init",dj="sign-out",hj="http-request",mj="http-request-all",pj="request-custom-grant",bj="revoke-access-token",Zj="request-start",yj="request-success",Xj="request-finish",fj="get-oidc-service-endpoints",Ij="get-basic-user-info",Gj="get-decoded-id-token",Vj="get-crypto-helper",Wj="enable_http_handler",vj="disable_http_handler",gj="get_auth_url",Sj="request_get_token",Yj="is_authenticated",Rj="get_sign_out_url",Kj="refresh_access-token",Lj="set_session_state",Jj="start_auto_refresh_token",Nj="update_config",xj="get_id_token",Hj="check_session_signed_in",kj="check_session_signed_out",Cj="get_config_data",Uj="set_session_state_from_iframe";t.Storage=void 0,(oj=t.Storage||(t.Storage={})).LocalStorage="localStorage",oj.SessionStorage="sessionStorage",oj.WebWorker="webWorker",oj.BrowserMemory="browserMemory",t.Hooks=void 0,(lj=t.Hooks||(t.Hooks={})).SignIn="sign-in",lj.SignOut="sign-out",lj.Initialize="initialize",lj.HttpRequestStart="http-request-start",lj.HttpRequestFinish="http-request-finish",lj.HttpRequestError="http-request-error",lj.HttpRequestSuccess="http-request-success",lj.RevokeAccessToken="revoke-access-token",lj.CustomGrant="custom-grant",lj.SignOutFailed="sign-out-failed";var Tj,wj,Fj,Mj,jj,zj,Pj,Bj,Qj,Dj,Ej,Oj,Aj,_j,qj,$j,tz,ez="rpIFrame",nz="promptNoneIFrame",rz="Y2hlY2tTZXNzaW9u",iz="sign-in-silently",cz="initialized-silent-sign-in",az="promptNoneRequestSent",oz="error",lz="error_description",uz="custom_grant_config",sz="state",dz="Access token is invalid",hz=function(){function e(t,n){s(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer(),this._spaHelper=n}return h(e,[{key:"enableHttpHandler",value:function(t){(null==t?void 0:t.enableHandler)&&t.enableHandler()}},{key:"disableHttpHandler",value:function(t){(null==t?void 0:t.disableHandler)&&t.disableHandler()}},{key:"initializeSessionManger",value:function(t,e,n,r,i){var c,a,o;i.initialize(t.clientID,null!==(c=e.checkSessionIframe)&&void 0!==c?c:"",n,null!==(a=t.checkSessionInterval)&&void 0!==a?a:3,null!==(o=t.sessionRefreshInterval)&&void 0!==o?o:300,t.signInRedirectURL,r)}},{key:"requestCustomGrant",value:function(t,e){var n,r,i;return TM(this,void 0,void 0,a().mark((function c(){var o,l,u,s,d,h=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(o=!0,l=!1,!(null==t?void 0:t.tokenEndpoint)){c.next=39;break}return o=!1,u=0,c.t0=[],c.t1=v,c.next=9,this._dataLayer.getConfigData();case 9:if(c.t4=n=c.sent,c.t3=null===c.t4,c.t3){c.next=13;break}c.t3=void 0===n;case 13:if(!c.t3){c.next=17;break}c.t5=void 0,c.next=18;break;case 17:c.t5=n.resourceServerURLs;case 18:if(c.t6=r=c.t5,c.t2=null!==c.t6,!c.t2){c.next=22;break}c.t2=void 0!==r;case 22:if(!c.t2){c.next=26;break}c.t7=r,c.next=27;break;case 26:c.t7=[];case 27:c.t8=c.t7,c.t9=(0,c.t1)(c.t8),c.t10=[t.baseUrl],s=c.t0.concat.call(c.t0,c.t9,c.t10);case 31:if(!(u<s.length)){c.next=39;break}if(!(d=s[u])||!(null===(i=t.tokenEndpoint)||void 0===i?void 0:i.startsWith(d))){c.next=36;break}return l=!0,c.abrupt("break",39);case 36:u++,c.next=31;break;case 39:if(t.shouldReplayAfterRefresh&&this._dataLayer.setTemporaryDataParameter(uz,JSON.stringify(t)),!o&&!l){c.next=44;break}return c.abrupt("return",this._authenticationClient.requestCustomGrant(t).then((function(n){return TM(h,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e&&"function"==typeof e&&e(t),!t.returnsSession){r.next=6;break}return this._spaHelper.refreshAccessTokenAutomatically(),r.abrupt("return",this._authenticationClient.getBasicUserInfo());case 6:return r.abrupt("return",n);case 7:case"end":return r.stop()}}),r,this)})))})).catch((function(t){return Promise.reject(t)})));case 44:return c.abrupt("return",Promise.reject(new EM("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return c.stop()}}),c,this)})))}},{key:"getCustomGrantConfigData",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(uz);case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._authenticationClient.refreshAccessToken();case 3:return e.next=5,this.getCustomGrantConfigData();case 5:if(!(n=e.sent)){e.next=9;break}return e.next=9,this.requestCustomGrant(n,t);case 9:return this._spaHelper.refreshAccessTokenAutomatically(),e.abrupt("return",this._authenticationClient.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,this,[[0,13]])})))}},{key:"httpRequest",value:function(t,e,n,r,i,c){var o,l;return TM(this,void 0,void 0,a().mark((function u(){var s,d,h,m,p,b=this;return a().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return s=!1,u.next=3,this._dataLayer.getConfigData();case 3:return d=u.sent,h=0,u.t0=[],u.t1=v,u.next=9,null==d?void 0:d.resourceServerURLs;case 9:if(u.t3=o=u.sent,u.t2=null!==u.t3,!u.t2){u.next=13;break}u.t2=void 0!==o;case 13:if(!u.t2){u.next=17;break}u.t4=o,u.next=18;break;case 17:u.t4=[];case 18:u.t5=u.t4,u.t6=(0,u.t1)(u.t5),u.t7=[d.baseUrl],m=u.t0.concat.call(u.t0,u.t6,u.t7);case 22:if(!(h<m.length)){u.next=30;break}if(!(p=m[h])||!(null===(l=null==e?void 0:e.url)||void 0===l?void 0:l.startsWith(p))){u.next=27;break}return s=!0,u.abrupt("break",30);case 27:h++,u.next=22;break;case 30:if(!s){u.next=34;break}return u.abrupt("return",t.request(e).then((function(t){return Promise.resolve(t)})).catch((function(o){return TM(b,void 0,void 0,a().mark((function l(){var u,s,d,h,m;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(401!==(null===(u=null==o?void 0:o.response)||void 0===u?void 0:u.status)&&(null==o?void 0:o.response)){a.next=31;break}return a.prev=1,a.next=4,this.refreshAccessToken(c);case 4:h=a.sent,a.next=15;break;case 7:if(a.prev=7,a.t0=a.catch(1),!n){a.next=14;break}if("function"!=typeof r){a.next=13;break}return a.next=13,r(Object.assign(Object.assign({},o),{code:dz}));case 13:"function"==typeof i&&i();case 14:throw new EM("SPA-AUTH_HELPER-HR-SE01",null!==(s=null===a.t0||void 0===a.t0?void 0:a.t0.name)&&void 0!==s?s:"Refresh token request failed.",null!==(d=null===a.t0||void 0===a.t0?void 0:a.t0.message)&&void 0!==d?d:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!h){a.next=31;break}return a.prev=16,a.next=19,t.request(e);case 19:return m=a.sent,a.abrupt("return",Promise.resolve(m));case 23:if(a.prev=23,a.t1=a.catch(16),!n){a.next=30;break}if("function"!=typeof r){a.next=29;break}return a.next=29,r(a.t1);case 29:"function"==typeof i&&i();case 30:return a.abrupt("return",Promise.reject(a.t1));case 31:if(!n){a.next=36;break}if("function"!=typeof r){a.next=35;break}return a.next=35,r(o);case 35:"function"==typeof i&&i();case 36:return a.abrupt("return",Promise.reject(o));case 37:case"end":return a.stop()}}),l,this,[[1,7],[16,23]])})))})));case 34:return u.abrupt("return",Promise.reject(new EM("SPA-AUTH_HELPER-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return u.stop()}}),u,this)})))}},{key:"httpRequestAll",value:function(t,e,n,r,i){var c,o,l;return TM(this,void 0,void 0,a().mark((function u(){var s,d,h,m,p,b,Z,y,X,f,I=this;return a().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return s=!0,u.next=3,this._dataLayer.getConfigData();case 3:d=u.sent,h=Y(t),u.prev=5,h.s();case 7:if((m=h.n()).done){u.next=50;break}return p=m.value,b=!1,Z=0,u.t0=[],u.t1=v,u.next=15,d;case 15:if(u.t4=c=u.sent,u.t3=null===u.t4,u.t3){u.next=19;break}u.t3=void 0===c;case 19:if(!u.t3){u.next=23;break}u.t5=void 0,u.next=24;break;case 23:u.t5=c.resourceServerURLs;case 24:if(u.t6=o=u.t5,u.t2=null!==u.t6,!u.t2){u.next=28;break}u.t2=void 0!==o;case 28:if(!u.t2){u.next=32;break}u.t7=o,u.next=33;break;case 32:u.t7=[];case 33:u.t8=u.t7,u.t9=(0,u.t1)(u.t8),u.t10=[d.baseUrl],y=u.t0.concat.call(u.t0,u.t9,u.t10);case 37:if(!(Z<y.length)){u.next=45;break}if(!(X=y[Z])||!(null===(l=p.url)||void 0===l?void 0:l.startsWith(X))){u.next=42;break}return b=!0,u.abrupt("break",45);case 42:Z++,u.next=37;break;case 45:if(b){u.next=48;break}return s=!1,u.abrupt("break",50);case 48:u.next=7;break;case 50:u.next=55;break;case 52:u.prev=52,u.t11=u.catch(5),h.e(u.t11);case 55:return u.prev=55,h.f(),u.finish(55);case 58:if(f=[],!s){u.next=64;break}return t.forEach((function(t){f.push(e.request(t))})),u.abrupt("return",(null==e?void 0:e.all)&&e.all(f).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(I,void 0,void 0,a().mark((function c(){var o,l,u,s,d=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(401!==(null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.status)&&(null==t?void 0:t.response)){c.next=17;break}return c.prev=1,c.next=4,this._authenticationClient.refreshAccessToken();case 4:s=c.sent,c.next=15;break;case 7:if(c.prev=7,c.t0=c.catch(1),!n){c.next=14;break}if("function"!=typeof r){c.next=13;break}return c.next=13,r(Object.assign(Object.assign({},t),{code:dz}));case 13:"function"==typeof i&&i();case 14:throw new EM("SPA-AUTH_HELPER-HRA-SE01",null!==(l=null===c.t0||void 0===c.t0?void 0:c.t0.name)&&void 0!==l?l:"Refresh token request failed.",null!==(u=null===c.t0||void 0===c.t0?void 0:c.t0.message)&&void 0!==u?u:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!s){c.next=17;break}return c.abrupt("return",e.all&&e.all(f).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(d,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}if("function"!=typeof r){e.next=4;break}return e.next=4,r(t);case 4:"function"==typeof i&&i();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!n){c.next=22;break}if("function"!=typeof r){c.next=21;break}return c.next=21,r(t);case 21:"function"==typeof i&&i();case 22:return c.abrupt("return",Promise.reject(t));case 23:case"end":return c.stop()}}),c,this,[[1,7]])})))})));case 64:throw new EM("SPA-AUTH_HELPER-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return u.stop()}}),u,this,[[5,52,55,58]])})))}},{key:"requestAccessToken",value:function(e,n,r,i,c){return TM(this,void 0,void 0,a().mark((function o(){var l,u,s=this;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this._dataLayer.getConfigData();case 2:if((l=o.sent).storage!==t.Storage.BrowserMemory||!l.enablePKCE||!n){o.next=9;break}return u=bz.getPKCE(OM.extractPKCEKeyFromStateParam(n)),o.next=7,this._authenticationClient.setPKCECode(OM.extractPKCEKeyFromStateParam(n),u);case 7:o.next=12;break;case 9:if(l.storage!==t.Storage.WebWorker||!i){o.next=12;break}return o.next=12,this._authenticationClient.setPKCECode(i,null!=c?c:"");case 12:if(!e){o.next=14;break}return o.abrupt("return",this._authenticationClient.requestAccessToken(e,null!=n?n:"",null!=c?c:"").then((function(){return TM(s,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l.storage===t.Storage.WebWorker){e.next=10;break}return e.t0=bz,e.next=4,this._authenticationClient.getSignOutURL();case 4:e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),this._spaHelper&&(this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically()),r&&"function"==typeof r&&l.enableOIDCSessionManagement&&r(),e.next=11;break;case 10:this._spaHelper&&this._spaHelper.refreshAccessTokenAutomatically();case 11:return e.abrupt("return",this._authenticationClient.getBasicUserInfo());case 12:case"end":return e.stop()}}),e,this)})))})).catch((function(t){return Promise.reject(t)})));case 14:return o.abrupt("return",Promise.reject(new EM("SPA-AUTH_HELPER-RAT1-NF01","No authorization code.","No authorization code was found.")));case 15:case"end":return o.stop()}}),o,this)})))}},{key:"trySignInSilently",value:function(t,e,n){var r;return TM(this,void 0,void 0,a().mark((function i(){var c,o,l,u=this;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!bz.isInitializedSilentSignIn()){i.next=4;break}return i.next=3,n.receivePromptNoneResponse();case 3:return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:return c=document.getElementById(ez),o=null===(r=null==c?void 0:c.contentDocument)||void 0===r?void 0:r.getElementById(nz),i.prev=6,i.next=9,t();case 9:l=i.sent,o.src=l,i.next=16;break;case 13:return i.prev=13,i.t0=i.catch(6),i.abrupt("return",Promise.reject(i.t0));case 16:return i.abrupt("return",new Promise((function(t,n){var r=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function i(c){return TM(u,void 0,void 0,a().mark((function o(){var l,u,s,d,h;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:(null==(h=c.data)?void 0:h.type)==kj&&(window.removeEventListener("message",i),clearTimeout(r),t(!1)),(null==h?void 0:h.type)==Hj&&(null===(l=null==h?void 0:h.data)||void 0===l?void 0:l.code)&&e(null===(u=null==h?void 0:h.data)||void 0===u?void 0:u.code,null===(s=null==h?void 0:h.data)||void 0===s?void 0:s.sessionState,null===(d=null==h?void 0:h.data)||void 0===d?void 0:d.state).then((function(e){window.removeEventListener("message",i),t(e)})).catch((function(t){window.removeEventListener("message",i),n(t)})).finally((function(){clearTimeout(r)}));case 3:case"end":return a.stop()}}),o)})))}))})));case 17:case"end":return i.stop()}}),i,null,[[6,13]])})))}},{key:"handleSignIn",value:function(e,n,r){return TM(this,void 0,void 0,a().mark((function i(){var c,o,l,u,s;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getConfigData();case 2:return c=i.sent,i.next=5,e();case 5:if(!i.sent){i.next=7;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:if(c.storage===t.Storage.WebWorker){i.next=19;break}return i.next=10,this._authenticationClient.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&n(),i.t0=Promise,i.next=17,this._authenticationClient.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if(o=new URL(window.location.href).searchParams.get(oz),l=new URL(window.location.href).searchParams.get(lz),!o){i.next=27;break}throw(u=new URL(window.location.href)).searchParams.delete(oz),u.searchParams.delete(lz),history.pushState(null,document.title,u.toString()),new EM("SPA-AUTH_HELPER-SI-SE01",o,null!=l?l:"");case 27:if(c.storage!==t.Storage.WebWorker||!r){i.next=33;break}return i.next=30,r();case 30:if(!(s=i.sent)){i.next=33;break}return i.abrupt("return",s);case 33:case"end":return i.stop()}}),i,this)})))}},{key:"getBasicUserInfo",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDPIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getCryptoHelper",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getCryptoHelper());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDPAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(e.t1=t=e.sent,e.t0=null===e.t1,e.t0){e.next=6;break}e.t0=void 0===t;case 6:if(!e.t0){e.next=10;break}e.t2=void 0,e.next=11;break;case 10:e.t2=t.access_token;case 11:return e.abrupt("return",e.t2);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"isAuthenticated",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),mz=function(){function t(e){s(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return h(t,[{key:"refreshAccessTokenAutomatically",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e,n,r,i=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),r=setTimeout((function(){return TM(i,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(MM,JSON.stringify(r));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(MM);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(MM);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),pz=function(){function t(){s(this,t)}return h(t,null,[{key:"generateSuccessMessage",value:function(t){return{blob:(null==t?void 0:t.data)instanceof Blob?null==t?void 0:t.data:null,data:JSON.stringify(null!=t?t:""),success:!0}}},{key:"generateFailureMessage",value:function(t){return(null==t?void 0:t.toJSON)&&delete t.toJSON,{error:JSON.stringify(null!=t?t:""),success:!1}}}]),t}(),bz=function(){function t(){s(this,t)}return h(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(t){var e;return null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:""}},{key:"setPKCE",value:function(t,e){sessionStorage.setItem(t,e)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(BM,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(BM))&&void 0!==t?t:""}},{key:"removePKCE",value:function(t){sessionStorage.removeItem(t)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem(cz),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!ej.isSignOutSuccessful(window.location.href)){t.next=6;break}return e=window.location.href.split("?")[0],history.pushState({},document.title,e),t.next=5,ej.clearUserSessionData();case 5:return t.abrupt("return",!0);case 6:return t.abrupt("return",!1);case 7:case"end":return t.stop()}}),t)})))}},{key:"didSignOutFail",value:function(){if(ej.didSignOutFail(window.location.href)){var t=new URL(window.location.href),e=t.searchParams.get(oz),n=t.searchParams.get(lz),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=e?e:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var t,e=new URL(window.location.href).searchParams.get("state");return null!==(t=null==e?void 0:e.includes(iz))&&void 0!==t&&t}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,e=new URL(t);return!!e.searchParams.get(oz)&&e.searchParams.get(sz)!==QM}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem(az);return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem(az,JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),Zz=(Oj=function(t,e,n,r,i,c,a){Tj=t,wj=e,Fj=n,jj=c,zj=i,Ej=a,(Mj=r)>-1&&Aj(),zj>-1&&(i=setInterval((function(){$j()}),1e3*zj))},Aj=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n,r,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var r,i,c,o,l;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Fj();case 2:r=e.sent,Boolean(Tj)&&Boolean(r)&&(i="".concat(Tj," ").concat(r),c=document.getElementById(ez),o=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(l=o.contentWindow)||l.postMessage(i,wj));case 4:case"end":return e.stop()}}),e)})))},wj&&Tj&&jj){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(ez),(null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=wj+"?client_id="+Tj+"&redirect_uri="+jj,t.next=9,r();case 9:Bj=setInterval(r,1e3*Mj),qj();case 11:case"end":return t.stop()}}),t)})))},_j=function(){clearInterval(Bj),clearInterval(void 0)},qj=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=wj)&&!((null==r?void 0:r.indexOf(t.origin))<0)&&(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)!==Uj){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,Pj();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&$j();case 13:case"end":return n.stop()}}),n)})))}),!1)},$j=function(){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=document.getElementById(ez),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(nz),!bz.canSendPromptNoneRequest()){e.next=10;break}return bz.setPromptNoneRequestSent(!0),c=function t(e){var n,r,i;(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)===Uj&&(Dj(null!==(i=null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",t))},Qj!==t.Storage.BrowserMemory&&Qj!==t.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),e.next=8,Ej({prompt:"none",responseMode:"query",state:rz});case 8:o=e.sent,i.src=o;case 10:case"end":return e.stop()}}),e)})))},tz=function(e){return TM(void 0,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d,h,m;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(sz),o=new URL(window.location.href).searchParams.get(PM),l=window.parent.parent,null===c||!c.includes(rz)&&!c.includes(iz)){n.next=48;break}if(null===(u=new URL(window.location.href).searchParams.get("code"))||0===u.length){n.next=32;break}if(!c.includes(iz)){n.next=15;break}return s={data:{code:u,sessionState:null!=o?o:"",state:c},type:Hj},sessionStorage.setItem(cz,"false"),l.postMessage(s,l.origin),bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,bz.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),Qj!==t.Storage.LocalStorage&&Qj!==t.Storage.SessionStorage){n.next=23;break}if(n.t0=e,!n.t0){n.next=21;break}return n.next=21,e(d);case 21:n.next=25;break;case 23:h={data:null!=d?d:"",type:Uj},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(h);case 25:return bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,bz.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(iz)){n.next=40;break}return m={type:kj},window.parent.parent.postMessage(m,l.origin),bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,bz.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return bz.setPromptNoneRequestSent(!1),n.next=43,Pj();case 43:return l.location.href=n.sent,window.location.href="about:blank",n.next=47,bz.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",ez),c.style.display="none",o=!1,c.onload=function(){var t,e,n,r,i=null==(c=document.getElementById(ez))?void 0:c.contentDocument,a=null==i?void 0:i.createElement("iframe");a&&(a.setAttribute("id","opIFrame"),a.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",nz),l.style.display="none"),a&&(null===(e=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(a)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),o=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),Pj=t,Qj=e,Dj=n,l=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 10:if(!1!==o){r.next=15;break}return r.next=13,l();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:Oj,receivePromptNoneResponse:tz,reset:_j});case 16:case"end":return r.stop()}}),r)})))}),yz={exports:{}},Xz=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}},fz=Xz,Iz=Object.prototype.toString;function Gz(t){return Array.isArray(t)}function Vz(t){return void 0===t}function Wz(t){return"[object ArrayBuffer]"===Iz.call(t)}function vz(t){return null!==t&&"object"===o(t)}function gz(t){if("[object Object]"!==Iz.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function Sz(t){return"[object Function]"===Iz.call(t)}function Yz(t,e){if(null!=t)if("object"!==o(t)&&(t=[t]),Gz(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}var Rz={isArray:Gz,isArrayBuffer:Wz,isBuffer:function(t){return null!==t&&!Vz(t)&&null!==t.constructor&&!Vz(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"[object FormData]"===Iz.call(t)},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&Wz(t.buffer)},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:vz,isPlainObject:gz,isUndefined:Vz,isDate:function(t){return"[object Date]"===Iz.call(t)},isFile:function(t){return"[object File]"===Iz.call(t)},isBlob:function(t){return"[object Blob]"===Iz.call(t)},isFunction:Sz,isStream:function(t){return vz(t)&&Sz(t.pipe)},isURLSearchParams:function(t){return"[object URLSearchParams]"===Iz.call(t)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Yz,merge:function t(){var e={};function n(n,r){gz(e[r])&&gz(n)?e[r]=t(e[r],n):gz(n)?e[r]=t({},n):Gz(n)?e[r]=n.slice():e[r]=n}for(var r=0,i=arguments.length;r<i;r++)Yz(arguments[r],n);return e},extend:function(t,e,n){return Yz(e,(function(e,r){t[r]=n&&"function"==typeof e?fz(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}},Kz=Rz;function Lz(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Jz=function(t,e,n){if(!e)return t;var r;if(n)r=n(e);else if(Kz.isURLSearchParams(e))r=e.toString();else{var i=[];Kz.forEach(e,(function(t,e){null!=t&&(Kz.isArray(t)?e+="[]":t=[t],Kz.forEach(t,(function(t){Kz.isDate(t)?t=t.toISOString():Kz.isObject(t)&&(t=JSON.stringify(t)),i.push(Lz(e)+"="+Lz(t))})))})),r=i.join("&")}if(r){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+r}return t},Nz=Rz;function xz(){this.handlers=[]}xz.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},xz.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},xz.prototype.forEach=function(t){Nz.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var Hz=xz,kz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Cz(){throw new Error("setTimeout has not been defined")}function Uz(){throw new Error("clearTimeout has not been defined")}var Tz=Cz,wz=Uz;function Fz(t){if(Tz===setTimeout)return setTimeout(t,0);if((Tz===Cz||!Tz)&&setTimeout)return Tz=setTimeout,setTimeout(t,0);try{return Tz(t,0)}catch(e){try{return Tz.call(null,t,0)}catch(e){return Tz.call(this,t,0)}}}"function"==typeof kz.setTimeout&&(Tz=setTimeout),"function"==typeof kz.clearTimeout&&(wz=clearTimeout);var Mz,jz=[],zz=!1,Pz=-1;function Bz(){zz&&Mz&&(zz=!1,Mz.length?jz=Mz.concat(jz):Pz=-1,jz.length&&Qz())}function Qz(){if(!zz){var t=Fz(Bz);zz=!0;for(var e=jz.length;e;){for(Mz=jz,jz=[];++Pz<e;)Mz&&Mz[Pz].run();Pz=-1,e=jz.length}Mz=null,zz=!1,function(t){if(wz===clearTimeout)return clearTimeout(t);if((wz===Uz||!wz)&&clearTimeout)return wz=clearTimeout,clearTimeout(t);try{wz(t)}catch(e){try{return wz.call(null,t)}catch(e){return wz.call(this,t)}}}(t)}}function Dz(t,e){this.fun=t,this.array=e}Dz.prototype.run=function(){this.fun.apply(null,this.array)};function Ez(){}var Oz=Ez,Az=Ez,_z=Ez,qz=Ez,$z=Ez,tP=Ez,eP=Ez;var nP=kz.performance||{},rP=nP.now||nP.mozNow||nP.msNow||nP.oNow||nP.webkitNow||function(){return(new Date).getTime()};var iP=new Date;var cP={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];jz.push(new Dz(t,e)),1!==jz.length||zz||Fz(Qz)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Oz,addListener:Az,once:_z,off:qz,removeListener:$z,removeAllListeners:tP,emit:eP,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*rP.call(nP),n=Math.floor(e),r=Math.floor(e%1*1e9);return t&&(n-=t[0],(r-=t[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-iP)/1e3}},aP=cP,oP=Rz,lP=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},t},uP={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},sP=lP,dP=function(t,e,n,r,i){var c=new Error(t);return sP(c,e,n,r,i)},hP=dP,mP=Rz,pP=mP.isStandardBrowserEnv()?{write:function(t,e,n,r,i,c){var a=[];a.push(t+"="+encodeURIComponent(e)),mP.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),mP.isString(r)&&a.push("path="+r),mP.isString(i)&&a.push("domain="+i),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},bP=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},ZP=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t},yP=Rz,XP=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],fP=Rz,IP=fP.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=fP.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0};function GP(t){this.message=t}GP.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},GP.prototype.__CANCEL__=!0;var VP=GP,WP=Rz,vP=function(t,e,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?e(hP("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)},gP=pP,SP=Jz,YP=function(t,e){return t&&!bP(e)?ZP(t,e):e},RP=function(t){var e,n,r,i={};return t?(yP.forEach(t.split("\n"),(function(t){if(r=t.indexOf(":"),e=yP.trim(t.substr(0,r)).toLowerCase(),n=yP.trim(t.substr(r+1)),e){if(i[e]&&XP.indexOf(e)>=0)return;i[e]="set-cookie"===e?(i[e]?i[e]:[]).concat([n]):i[e]?i[e]+", "+n:n}})),i):i},KP=IP,LP=dP,JP=uP,NP=VP,xP=function(t){return new Promise((function(e,n){var r,i=t.data,c=t.headers,a=t.responseType;function o(){t.cancelToken&&t.cancelToken.unsubscribe(r),t.signal&&t.signal.removeEventListener("abort",r)}WP.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var u=t.auth.username||"",s=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+s)}var d=YP(t.baseURL,t.url);function h(){if(l){var r="getAllResponseHeaders"in l?RP(l.getAllResponseHeaders()):null,i={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:t,request:l};vP((function(t){e(t),o()}),(function(t){n(t),o()}),i),l=null}}if(l.open(t.method.toUpperCase(),SP(d,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,"onloadend"in l?l.onloadend=h:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(h)},l.onabort=function(){l&&(n(LP("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(LP("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",r=t.transitional||JP;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(LP(e,t,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},WP.isStandardBrowserEnv()){var m=(t.withCredentials||KP(d))&&t.xsrfCookieName?gP.read(t.xsrfCookieName):void 0;m&&(c[t.xsrfHeaderName]=m)}"setRequestHeader"in l&&WP.forEach(c,(function(t,e){void 0===i&&"content-type"===e.toLowerCase()?delete c[e]:l.setRequestHeader(e,t)})),WP.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),a&&"json"!==a&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(r=function(t){l&&(n(!t||t&&t.type?new NP("canceled"):t),l.abort(),l=null)},t.cancelToken&&t.cancelToken.subscribe(r),t.signal&&(t.signal.aborted?r():t.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},HP=Rz,kP=function(t,e){oP.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))},CP=lP,UP={"Content-Type":"application/x-www-form-urlencoded"};function TP(t,e){!HP.isUndefined(t)&&HP.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var wP,FP={transitional:uP,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==aP&&"[object process]"===Object.prototype.toString.call(aP))&&(wP=xP),wP),transformRequest:[function(t,e){return kP(e,"Accept"),kP(e,"Content-Type"),HP.isFormData(t)||HP.isArrayBuffer(t)||HP.isBuffer(t)||HP.isStream(t)||HP.isFile(t)||HP.isBlob(t)?t:HP.isArrayBufferView(t)?t.buffer:HP.isURLSearchParams(t)?(TP(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):HP.isObject(t)||e&&"application/json"===e["Content-Type"]?(TP(e,"application/json"),function(t,e,n){if(HP.isString(t))try{return(e||JSON.parse)(t),HP.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||FP.transitional,n=e&&e.silentJSONParsing,r=e&&e.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&HP.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(i){if("SyntaxError"===t.name)throw CP(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};HP.forEach(["delete","get","head"],(function(t){FP.headers[t]={}})),HP.forEach(["post","put","patch"],(function(t){FP.headers[t]=HP.merge(UP)}));var MP=FP,jP=Rz,zP=MP,PP=function(t){return!(!t||!t.__CANCEL__)},BP=Rz,QP=function(t,e,n){var r=this||zP;return jP.forEach(n,(function(n){t=n.call(r,t,e)})),t},DP=PP,EP=MP,OP=VP;function AP(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new OP("canceled")}var _P=Rz,qP=function(t,e){e=e||{};var n={};function r(t,e){return _P.isPlainObject(t)&&_P.isPlainObject(e)?_P.merge(t,e):_P.isPlainObject(e)?_P.merge({},e):_P.isArray(e)?e.slice():e}function i(n){return _P.isUndefined(e[n])?_P.isUndefined(t[n])?void 0:r(void 0,t[n]):r(t[n],e[n])}function c(t){if(!_P.isUndefined(e[t]))return r(void 0,e[t])}function a(n){return _P.isUndefined(e[n])?_P.isUndefined(t[n])?void 0:r(void 0,t[n]):r(void 0,e[n])}function o(n){return n in e?r(t[n],e[n]):n in t?r(void 0,t[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return _P.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=l[t]||i,r=e(t);_P.isUndefined(r)&&e!==o||(n[t]=r)})),n},$P="0.26.1",tB=$P,eB={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){eB[t]=function(n){return o(n)===t||"a"+(e<1?"n ":" ")+t}}));var nB={};eB.transitional=function(t,e,n){function r(t,e){return"[Axios v"+tB+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,i,c){if(!1===t)throw new Error(r(i," has been removed"+(e?" in "+e:"")));return e&&!nB[i]&&(nB[i]=!0,console.warn(r(i," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,i,c)}};var rB={assertOptions:function(t,e,n){if("object"!==o(t))throw new TypeError("options must be an object");for(var r=Object.keys(t),i=r.length;i-- >0;){var c=r[i],a=e[c];if(a){var l=t[c],u=void 0===l||a(l,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:eB},iB=Rz,cB=Jz,aB=Hz,oB=function(t){return AP(t),t.headers=t.headers||{},t.data=QP.call(t,t.data,t.headers,t.transformRequest),t.headers=BP.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),BP.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||EP.adapter)(t).then((function(e){return AP(t),e.data=QP.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return DP(e)||(AP(t),e&&e.response&&(e.response.data=QP.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},lB=qP,uB=rB,sB=uB.validators;function dB(t){this.defaults=t,this.interceptors={request:new aB,response:new aB}}dB.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=lB(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=e.transitional;void 0!==n&&uB.assertOptions(n,{silentJSONParsing:sB.transitional(sB.boolean),forcedJSONParsing:sB.transitional(sB.boolean),clarifyTimeoutError:sB.transitional(sB.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(t){a.push(t.fulfilled,t.rejected)})),!i){var o=[oB,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(a),c=Promise.resolve(e);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=e;r.length;){var u=r.shift(),s=r.shift();try{l=u(l)}catch(t){s(t);break}}try{c=oB(l)}catch(t){return Promise.reject(t)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},dB.prototype.getUri=function(t){return t=lB(this.defaults,t),cB(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},iB.forEach(["delete","get","head","options"],(function(t){dB.prototype[t]=function(e,n){return this.request(lB(n||{},{method:t,url:e,data:(n||{}).data}))}})),iB.forEach(["post","put","patch"],(function(t){dB.prototype[t]=function(e,n,r){return this.request(lB(r||{},{method:t,url:e,data:n}))}}));var hB=dB,mB=VP;function pB(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,r=n._listeners.length;for(e=0;e<r;e++)n._listeners[e](t);n._listeners=null}})),this.promise.then=function(t){var e,r=new Promise((function(t){n.subscribe(t),e=t})).then(t);return r.cancel=function(){n.unsubscribe(e)},r},t((function(t){n.reason||(n.reason=new mB(t),e(n.reason))}))}pB.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},pB.prototype.subscribe=function(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]},pB.prototype.unsubscribe=function(t){if(this._listeners){var e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}},pB.source=function(){var t,e=new pB((function(e){t=e}));return{token:e,cancel:t}};var bB=pB,ZB=Rz,yB=Rz,XB=Xz,fB=hB,IB=qP;var GB=function t(e){var n=new fB(e),r=XB(fB.prototype.request,n);return yB.extend(r,fB.prototype,n),yB.extend(r,n),r.create=function(n){return t(IB(e,n))},r}(MP);GB.Axios=fB,GB.Cancel=VP,GB.CancelToken=bB,GB.isCancel=PP,GB.VERSION=$P,GB.all=function(t){return Promise.all(t)},GB.spread=function(t){return function(e){return t.apply(null,e)}},GB.isAxiosError=function(t){return ZB.isObject(t)&&!0===t.isAxiosError},yz.exports=GB,yz.exports.default=GB;var VB,WB=yz.exports;var vB=VB=function(){function t(){s(this,t),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return h(t,[{key:"requestHandler",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,r=new FormData,Object.keys(n).forEach((function(t){r.append(t,n[t])})),t.data=r),t.startTimeInMs=(new Date).getTime(),VB.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 6:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw VB.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return VB.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:VB.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){VB.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){VB.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:VB.DEFAULT_HANDLER_DISABLE_TIMEOUT;VB.isHandlerEnabled=!1,setTimeout((function(){VB.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=WB.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new VB),this.axiosInstance.interceptors.request.use((function(e){return TM(t,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=WB.all,this.axiosInstance.spread=WB.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),t}();vB.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,vB=VB=function(t,e,n,r){var i,c=arguments.length,a=c<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===("undefined"==typeof Reflect?"undefined":o(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var l=t.length-1;l>=0;l--)(i=t[l])&&(a=(c<3?i(a):c>3?i(e,n,a):i(e,n))||a);return c>3&&a&&Object.defineProperty(e,n,a),a}([function(t){}],vB);var gB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),SB=function(){function t(){s(this,t),this._data=new Map}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return TM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),YB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),RB=[],KB=[],LB="undefined"!=typeof Uint8Array?Uint8Array:Array,JB=!1;function NB(){JB=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)RB[e]=t[e],KB[t.charCodeAt(e)]=e;KB["-".charCodeAt(0)]=62,KB["_".charCodeAt(0)]=63}function xB(t,e,n){for(var r,i,c=[],a=e;a<n;a+=3)r=(t[a]<<16)+(t[a+1]<<8)+t[a+2],c.push(RB[(i=r)>>18&63]+RB[i>>12&63]+RB[i>>6&63]+RB[63&i]);return c.join("")}function HB(t){var e;JB||NB();for(var n=t.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(xB(t,o,o+a>l?l:o+a));return 1===r?(e=t[n-1],i+=RB[e>>2],i+=RB[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=RB[e>>10],i+=RB[e>>4&63],i+=RB[e<<2&63],i+="="),c.push(i),c.join("")}function kB(t,e,n,r,i){var c,a,o=8*i-r-1,l=(1<<o)-1,u=l>>1,s=-7,d=n?i-1:0,h=n?-1:1,m=t[e+d];for(d+=h,c=m&(1<<-s)-1,m>>=-s,s+=o;s>0;c=256*c+t[e+d],d+=h,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=r;s>0;a=256*a+t[e+d],d+=h,s-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(m?-1:1);a+=Math.pow(2,r),c-=u}return(m?-1:1)*a*Math.pow(2,c-r)}function CB(t,e,n,r,i,c){var a,o,l,u=8*c-i-1,s=(1<<u)-1,d=s>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:c-1,p=r?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=s):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+d>=1?h/l:h*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=s?(o=0,a=s):a+d>=1?(o=(e*l-1)*Math.pow(2,i),a+=d):(o=e*Math.pow(2,d-1)*Math.pow(2,i),a=0));i>=8;t[n+m]=255&o,m+=p,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;t[n+m]=255&a,m+=p,a/=256,u-=8);t[n+m-p]|=128*b}var UB={}.toString,TB=Array.isArray||function(t){return"[object Array]"==UB.call(t)};jB.TYPED_ARRAY_SUPPORT=void 0===kz.TYPED_ARRAY_SUPPORT||kz.TYPED_ARRAY_SUPPORT;var wB=FB();function FB(){return jB.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function MB(t,e){if(FB()<e)throw new RangeError("Invalid typed array length");return jB.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=jB.prototype:(null===t&&(t=new jB(e)),t.length=e),t}function jB(t,e,n){if(!(jB.TYPED_ARRAY_SUPPORT||this instanceof jB))return new jB(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return BB(this,t)}return zB(this,t,e,n)}function zB(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);jB.TYPED_ARRAY_SUPPORT?(t=e).__proto__=jB.prototype:t=QB(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!jB.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|OB(e,n),i=(t=MB(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(EB(e)){var n=0|DB(e.length);return 0===(t=MB(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?MB(t,0):QB(t,e);if("Buffer"===e.type&&TB(e.data))return QB(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function PB(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function BB(t,e){if(PB(e),t=MB(t,e<0?0:0|DB(e)),!jB.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function QB(t,e){var n=e.length<0?0:0|DB(e.length);t=MB(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function DB(t){if(t>=FB())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+FB().toString(16)+" bytes");return 0|t}function EB(t){return!(null==t||!t._isBuffer)}function OB(t,e){if(EB(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return VQ(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return WQ(t).length;default:if(r)return VQ(t).length;e=(""+e).toLowerCase(),r=!0}}function AB(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return dQ(this,e,n);case"utf8":case"utf-8":return oQ(this,e,n);case"ascii":return uQ(this,e,n);case"latin1":case"binary":return sQ(this,e,n);case"base64":return aQ(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return hQ(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function _B(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function qB(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=jB.from(e,r)),EB(e))return 0===e.length?-1:$B(t,e,n,r,i);if("number"==typeof e)return e&=255,jB.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):$B(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function $B(t,e,n,r,i){var c,a=1,o=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var s=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===s?0:c-s)){if(-1===s&&(s=c),c-s+1===l)return s*a}else-1!==s&&(c-=c-s),s=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var d=!0,h=0;h<l;h++)if(u(t,c+h)!==u(e,h)){d=!1;break}if(d)return c}return-1}function tQ(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var a=0;a<r;++a){var o=parseInt(e.substr(2*a,2),16);if(isNaN(o))return a;t[n+a]=o}return a}function eQ(t,e,n,r){return vQ(VQ(e,t.length-n),t,n,r)}function nQ(t,e,n,r){return vQ(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function rQ(t,e,n,r){return nQ(t,e,n,r)}function iQ(t,e,n,r){return vQ(WQ(e),t,n,r)}function cQ(t,e,n,r){return vQ(function(t,e){for(var n,r,i,c=[],a=0;a<t.length&&!((e-=2)<0);++a)r=(n=t.charCodeAt(a))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function aQ(t,e,n){return 0===e&&n===t.length?HB(t):HB(t.slice(e,n))}function oQ(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,a,o,l,u=t[i],s=null,d=u>239?4:u>223?3:u>191?2:1;if(i+d<=n)switch(d){case 1:u<128&&(s=u);break;case 2:128==(192&(c=t[i+1]))&&(l=(31&u)<<6|63&c)>127&&(s=l);break;case 3:c=t[i+1],a=t[i+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(s=l);break;case 4:c=t[i+1],a=t[i+2],o=t[i+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(s=l)}null===s?(s=65533,d=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=d}return function(t){var e=t.length;if(e<=lQ)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=lQ));return n}(r)}jB.poolSize=8192,jB._augment=function(t){return t.__proto__=jB.prototype,t},jB.from=function(t,e,n){return zB(null,t,e,n)},jB.TYPED_ARRAY_SUPPORT&&(jB.prototype.__proto__=Uint8Array.prototype,jB.__proto__=Uint8Array),jB.alloc=function(t,e,n){return function(t,e,n,r){return PB(e),e<=0?MB(t,e):void 0!==n?"string"==typeof r?MB(t,e).fill(n,r):MB(t,e).fill(n):MB(t,e)}(null,t,e,n)},jB.allocUnsafe=function(t){return BB(null,t)},jB.allocUnsafeSlow=function(t){return BB(null,t)},jB.isBuffer=gQ,jB.compare=function(t,e){if(!EB(t)||!EB(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},jB.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},jB.concat=function(t,e){if(!TB(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return jB.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=jB.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!EB(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},jB.byteLength=OB,jB.prototype._isBuffer=!0,jB.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)_B(this,e,e+1);return this},jB.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)_B(this,e,e+3),_B(this,e+1,e+2);return this},jB.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)_B(this,e,e+7),_B(this,e+1,e+6),_B(this,e+2,e+5),_B(this,e+3,e+4);return this},jB.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?oQ(this,0,t):AB.apply(this,arguments)},jB.prototype.equals=function(t){if(!EB(t))throw new TypeError("Argument must be a Buffer");return this===t||0===jB.compare(this,t)},jB.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},jB.prototype.compare=function(t,e,n,r,i){if(!EB(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0),o=Math.min(c,a),l=this.slice(r,i),u=t.slice(e,n),s=0;s<o;++s)if(l[s]!==u[s]){c=l[s],a=u[s];break}return c<a?-1:a<c?1:0},jB.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},jB.prototype.indexOf=function(t,e,n){return qB(this,t,e,n,!0)},jB.prototype.lastIndexOf=function(t,e,n){return qB(this,t,e,n,!1)},jB.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return tQ(this,t,e,n);case"utf8":case"utf-8":return eQ(this,t,e,n);case"ascii":return nQ(this,t,e,n);case"latin1":case"binary":return rQ(this,t,e,n);case"base64":return iQ(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return cQ(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},jB.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var lQ=4096;function uQ(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function sQ(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function dQ(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=GQ(t[c]);return i}function hQ(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function mQ(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function pQ(t,e,n,r,i,c){if(!EB(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function bQ(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function ZQ(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function yQ(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function XQ(t,e,n,r,i){return i||yQ(t,0,n,4),CB(t,e,n,r,23,4),n+4}function fQ(t,e,n,r,i){return i||yQ(t,0,n,8),CB(t,e,n,r,52,8),n+8}jB.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),jB.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=jB.prototype;else{var i=e-t;n=new jB(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},jB.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},jB.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},jB.prototype.readUInt8=function(t,e){return e||mQ(t,1,this.length),this[t]},jB.prototype.readUInt16LE=function(t,e){return e||mQ(t,2,this.length),this[t]|this[t+1]<<8},jB.prototype.readUInt16BE=function(t,e){return e||mQ(t,2,this.length),this[t]<<8|this[t+1]},jB.prototype.readUInt32LE=function(t,e){return e||mQ(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},jB.prototype.readUInt32BE=function(t,e){return e||mQ(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},jB.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},jB.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},jB.prototype.readInt8=function(t,e){return e||mQ(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},jB.prototype.readInt16LE=function(t,e){e||mQ(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},jB.prototype.readInt16BE=function(t,e){e||mQ(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},jB.prototype.readInt32LE=function(t,e){return e||mQ(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},jB.prototype.readInt32BE=function(t,e){return e||mQ(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},jB.prototype.readFloatLE=function(t,e){return e||mQ(t,4,this.length),kB(this,t,!0,23,4)},jB.prototype.readFloatBE=function(t,e){return e||mQ(t,4,this.length),kB(this,t,!1,23,4)},jB.prototype.readDoubleLE=function(t,e){return e||mQ(t,8,this.length),kB(this,t,!0,52,8)},jB.prototype.readDoubleBE=function(t,e){return e||mQ(t,8,this.length),kB(this,t,!1,52,8)},jB.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||pQ(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},jB.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||pQ(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},jB.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,1,255,0),jB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},jB.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,65535,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):bQ(this,t,e,!0),e+2},jB.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,65535,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):bQ(this,t,e,!1),e+2},jB.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,4294967295,0),jB.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):ZQ(this,t,e,!0),e+4},jB.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,4294967295,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ZQ(this,t,e,!1),e+4},jB.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);pQ(this,t,e,n,i-1,-i)}var c=0,a=1,o=0;for(this[e]=255&t;++c<n&&(a*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},jB.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);pQ(this,t,e,n,i-1,-i)}var c=n-1,a=1,o=0;for(this[e+c]=255&t;--c>=0&&(a*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},jB.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,1,127,-128),jB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},jB.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,32767,-32768),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):bQ(this,t,e,!0),e+2},jB.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,32767,-32768),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):bQ(this,t,e,!1),e+2},jB.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,2147483647,-2147483648),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):ZQ(this,t,e,!0),e+4},jB.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ZQ(this,t,e,!1),e+4},jB.prototype.writeFloatLE=function(t,e,n){return XQ(this,t,e,!0,n)},jB.prototype.writeFloatBE=function(t,e,n){return XQ(this,t,e,!1,n)},jB.prototype.writeDoubleLE=function(t,e,n){return fQ(this,t,e,!0,n)},jB.prototype.writeDoubleBE=function(t,e,n){return fQ(this,t,e,!1,n)},jB.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!jB.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},jB.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!jB.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var a=EB(t)?t:VQ(new jB(t,r).toString()),o=a.length;for(c=0;c<n-e;++c)this[c+e]=a[c%o]}return this};var IQ=/[^+\/0-9A-Za-z-_]/g;function GQ(t){return t<16?"0"+t.toString(16):t.toString(16)}function VQ(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function WQ(t){return function(t){var e,n,r,i,c,a;JB||NB();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,a=new LB(3*o/4-c),r=c>0?o-4:o;var l=0;for(e=0,n=0;e<r;e+=4,n+=3)i=KB[t.charCodeAt(e)]<<18|KB[t.charCodeAt(e+1)]<<12|KB[t.charCodeAt(e+2)]<<6|KB[t.charCodeAt(e+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=KB[t.charCodeAt(e)]<<2|KB[t.charCodeAt(e+1)]>>4,a[l++]=255&i):1===c&&(i=KB[t.charCodeAt(e)]<<10|KB[t.charCodeAt(e+1)]<<4|KB[t.charCodeAt(e+2)]>>2,a[l++]=i>>8&255,a[l++]=255&i),a}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(IQ,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function vQ(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function gQ(t){return null!=t&&(!!t._isBuffer||SQ(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&SQ(t.slice(0,0))}(t))}function SQ(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var YQ=Object.freeze({__proto__:null,Buffer:jB,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),jB.alloc(+t)},isBuffer:gQ,kMaxLength:wB}),RQ={exports:{}},KQ={},LQ={};Object.defineProperty(LQ,"__esModule",{value:!0}),LQ.default=function(t){var e=t.length,n=e%4;if(!n)return t;var r=e,i=4-n,c=e+i,a=jB.alloc(c);for(a.write(t);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(KQ,"__esModule",{value:!0});var JQ=LQ;function NQ(t,e){return void 0===e&&(e="utf8"),jB.isBuffer(t)?HQ(t.toString("base64")):HQ(jB.from(t,e).toString("base64"))}function xQ(t){return t=t.toString(),JQ.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function HQ(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var kQ,CQ=NQ;CQ.encode=NQ,CQ.decode=function(t,e){return void 0===e&&(e="utf8"),jB.from(xQ(t),"base64").toString(e)},CQ.toBase64=xQ,CQ.fromBase64=HQ,CQ.toBuffer=function(t){return jB.from(xQ(t),"base64")},KQ.default=CQ,(kQ=RQ).exports=KQ.default,kQ.exports.default=kQ.exports;var UQ=RQ.exports,TQ={exports:{}};!function(t){!function(e,n){var r={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,r,i,c){for(var a,o,l,u,s,d,h,m,p,b,Z,y,X;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],s=n[4],d=n[5],h=n[6],m=n[7],b=0;b<16;b++)Z=i+4*b,t[b]=(255&r[Z])<<24|(255&r[Z+1])<<16|(255&r[Z+2])<<8|255&r[Z+3];for(b=16;b<64;b++)y=((p=t[b-2])>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,X=((p=t[b-15])>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,t[b]=(y+t[b-7]|0)+(X+t[b-16]|0);for(b=0;b<64;b++)y=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&d^~s&h)|0)+(m+(e[b]+t[b]|0)|0)|0,X=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,m=h,h=d,d=s,s=u+y|0,u=l,l=o,o=a,a=y+X|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=s,n[5]+=d,n[6]+=h,n[7]+=m,i+=64,c-=64}return i}var r=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,r=this.bufferLength,i=e/536870912|0,c=e<<3,a=e%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=i>>>24&255,this.buffer[a-7]=i>>>16&255,this.buffer[a-6]=i>>>8&255,this.buffer[a-5]=i>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=r;var i=function(){function t(t){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;this.inner.update(e);for(n=0;n<e.length;n++)e[n]^=106;this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new r).update(t),n=e.digest();return e.clean(),n}function a(t,e){var n=new i(t).update(e),r=n.digest();return n.clean(),r}function o(t,e,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");e.reset(),i>1&&e.update(t),n&&e.update(n),e.update(r),e.finish(t),r[0]++}t.HMAC=i,t.hash=c,t.default=c,t.hmac=a;var l=new Uint8Array(t.digestLength);function u(t,e,n,r){void 0===e&&(e=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=a(e,t),s=new i(u),d=new Uint8Array(s.digestLength),h=d.length,m=new Uint8Array(r),p=0;p<r;p++)h===d.length&&(o(d,s,n,c),h=0),m[p]=d[h++];return s.clean(),d.fill(0),c.fill(0),m}function s(t,e,n,r){for(var c=new i(t),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),s=new Uint8Array(r),d=0;d*a<r;d++){var h=d+1;o[0]=h>>>24&255,o[1]=h>>>16&255,o[2]=h>>>8&255,o[3]=h>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var m=0;m<a;m++)l[m]=u[m];for(m=2;m<=n;m++){c.reset(),c.update(u).finish(u);for(var p=0;p<a;p++)l[p]^=u[p]}for(m=0;m<a&&d*a+m<r;m++)s[d*a+m]=l[m]}for(d=0;d<a;d++)l[d]=u[d]=0;for(d=0;d<4;d++)o[d]=0;return c.clean(),s}t.hkdf=u,t.pbkdf2=s}(r);var i=r.default;for(var c in r)i[c]=r[c];t.exports=i}()}(TQ);var wQ=n(TQ.exports),FQ=crypto,MQ=function(t){return t instanceof CryptoKey},jQ=new TextEncoder,zQ=new TextDecoder;function PQ(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce((function(t,e){return t+e.length}),0),i=new Uint8Array(r),c=0;return e.forEach((function(t){i.set(t,c),c+=t.length})),i}var BQ=function(t){var e=t;e instanceof Uint8Array&&(e=zQ.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(t){for(var e=atob(t),n=new Uint8Array(e.length),r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}(e)}catch(t){throw new TypeError("The input to be decoded is not correctly encoded.")}},QQ=function(t){p(n,t);var e=V(n);function n(t){var r,i;return s(this,n),(r=e.call(this,t)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,I(r),r.constructor),r}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(f(Error)),DQ=function(t){p(n,t);var e=V(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return s(this,n),(r=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(QQ),EQ=function(t){p(n,t);var e=V(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return s(this,n),(r=e.call(this,t)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(QQ),OQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(QQ),AQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(QQ),_Q=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(QQ),qQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(QQ),$Q=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(QQ),tD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",t.message="no applicable key found in the JSON Web Key Set",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(QQ),eD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",t.message="multiple matching keys found in the JSON Web Key Set",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(QQ),nD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(QQ);function rD(){return"function"==typeof WebSocketPair}function iD(){try{return void 0!==aP.versions.node}catch(t){return!1}}function cD(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(e," must be ").concat(t))}function aD(t,e){return t.name===e}function oD(t){return parseInt(t.name.slice(4),10)}function lD(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function uD(t,e){if(e.length&&!e.some((function(e){return t.usages.includes(e)}))){var n="CryptoKey does not support this operation, its usages must include ";if(e.length>2){var r=e.pop();n+="one of ".concat(e.join(", "),", or ").concat(r,".")}else 2===e.length?n+="one of ".concat(e[0]," or ").concat(e[1],"."):n+="".concat(e[0],".");throw new TypeError(n)}}var sD=function(t){for(var e="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var c=r.pop();e+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?e+="one of type ".concat(r[0]," or ").concat(r[1],"."):e+="of type ".concat(r[0],".");return null==t?e+=" Received ".concat(t):"function"==typeof t&&t.name?e+=" Received function ".concat(t.name):"object"===o(t)&&null!=t&&t.constructor&&t.constructor.name&&(e+=" Received an instance of ".concat(t.constructor.name)),e},dD=function(t){return MQ(t)},hD=["CryptoKey"],mD=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r,i=e.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,a=Y(i);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(r&&0!==r.size)for(var u=0,s=l;u<s.length;u++){var d=s[u];if(r.has(d))return!1;r.add(d)}else r=new Set(l)}}catch(t){a.e(t)}finally{a.f()}return!0};function pD(t){if("object"!==o(e=t)||null===e||"[object Object]"!==Object.prototype.toString.call(t))return!1;var e;if(null===Object.getPrototypeOf(t))return!0;for(var n=t;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(t)===n}var bD=function(t,e){if(t.startsWith("RS")||t.startsWith("PS")){var n=e.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}};function ZD(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new AQ("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.slice(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":e={name:"ECDSA",namedCurve:"P-256"},n=t.d?["sign"]:["verify"];break;case"ES384":e={name:"ECDSA",namedCurve:"P-384"},n=t.d?["sign"]:["verify"];break;case"ES512":e={name:"ECDSA",namedCurve:"P-521"},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(rD()||iD())&&"OKP":if("EdDSA"!==t.alg)throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(t.crv){case"Ed25519":e={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=t.d?["sign"]:["verify"];break;case iD()&&"Ed448":e={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=t.d?["sign"]:["verify"];break;default:throw new AQ('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new AQ('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}var yD=function(){var t=u(a().mark((function t(e){var n,r,i,o,l,u,s,d,h;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=ZD(e),l=o.algorithm,u=o.keyUsages,s=[l,null!==(r=e.ext)&&void 0!==r&&r,null!==(i=e.key_ops)&&void 0!==i?i:u],"PBKDF2"!==l.name){t.next=4;break}return t.abrupt("return",(d=FQ.subtle).importKey.apply(d,["raw",BQ(e.k)].concat(s)));case 4:return delete(h=c({},e)).alg,t.abrupt("return",(n=FQ.subtle).importKey.apply(n,["jwk",h].concat(s)));case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function XD(t,e,n){return fD.apply(this,arguments)}function fD(){return(fD=u(a().mark((function t(e,n,r){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(pD(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:t.t0=e.kty,t.next="oct"===t.t0?8:"RSA"===t.t0?14:"EC"===t.t0||"OKP"===t.t0?16:17;break;case 8:if("string"==typeof e.k&&e.k){t.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==e.ext),!r){t.next=13;break}return t.abrupt("return",yD(c(c({},e),{},{alg:n,ext:!1})));case 13:return t.abrupt("return",BQ(e.k));case 14:if(void 0===e.oth){t.next=16;break}throw new AQ('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return t.abrupt("return",yD(c(c({},e),{},{alg:n})));case 17:throw new AQ('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var ID=function(t,e,n){t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?function(t){if(!(t instanceof Uint8Array)){if(!dD(t))throw new TypeError(sD.apply(void 0,[t].concat(v(hD),["Uint8Array"])));if("secret"!==t.type)throw new TypeError("".concat(hD.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(e):function(t,e){if(!dD(t))throw new TypeError(sD.apply(void 0,[t].concat(v(hD))));if("secret"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===e&&"public"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===e&&"public"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(t.algorithm&&"verify"===e&&"private"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(t.algorithm&&"encrypt"===e&&"private"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(e,n)};function GD(t,e,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(v(Object.entries(n)),v(e.entries()))):e;var a,o=Y(r.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new AQ('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){o.e(t)}finally{o.f()}return new Set(r.crit)}var VD=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)};function WD(t,e){var n="SHA-".concat(t.slice(-3));switch(t){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:t.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:e.namedCurve};case(rD()||iD())&&"EdDSA":var r=e.namedCurve;return{name:r,namedCurve:r};default:throw new AQ("alg ".concat(t," is not supported either by JOSE or your javascript runtime"))}}function vD(t,e,n){if(MQ(e))return function(t,e){switch(e){case"HS256":case"HS384":case"HS512":if(!aD(t.algorithm,"HMAC"))throw cD("HMAC");var n=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==n)throw cD("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!aD(t.algorithm,"RSASSA-PKCS1-v1_5"))throw cD("RSASSA-PKCS1-v1_5");var r=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==r)throw cD("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!aD(t.algorithm,"RSA-PSS"))throw cD("RSA-PSS");var i=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==i)throw cD("SHA-".concat(i),"algorithm.hash");break;case iD()&&"EdDSA":if("NODE-ED25519"!==t.algorithm.name&&"NODE-ED448"!==t.algorithm.name)throw cD("NODE-ED25519 or NODE-ED448");break;case rD()&&"EdDSA":if(!aD(t.algorithm,"NODE-ED25519"))throw cD("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!aD(t.algorithm,"ECDSA"))throw cD("ECDSA");var c=lD(e);if(t.algorithm.namedCurve!==c)throw cD(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];uD(t,o)}(e,t,n),e;if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(sD.apply(void 0,[e].concat(v(hD))));return FQ.subtle.importKey("raw",e,{hash:"SHA-".concat(t.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(sD.apply(void 0,[e].concat(v(hD),["Uint8Array"])))}var gD=function(){var t=u(a().mark((function t(e,n,r,i){var c,o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,vD(e,n,"verify");case 2:return c=t.sent,bD(e,c),o=WD(e,c.algorithm),t.prev=5,t.next=8,FQ.subtle.verify(o,c,r,i);case 8:return t.abrupt("return",t.sent);case 11:return t.prev=11,t.t0=t.catch(5),t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[5,11]])})));return function(e,n,r,i){return t.apply(this,arguments)}}();function SD(t,e,n){return YD.apply(this,arguments)}function YD(){return YD=u(a().mark((function t(e,n,r){var i,o,l,u,s,d,h,m,p,b,Z,y,X;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(pD(e)){t.next=2;break}throw new _Q("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new _Q('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new _Q("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new _Q("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new _Q("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||pD(e.header)){t.next=12;break}throw new _Q("JWS Unprotected Header incorrect type");case 12:if(o={},!e.protected){t.next=22;break}l=BQ(e.protected),t.prev=15,o=JSON.parse(zQ.decode(l)),t.next=22;break;case 19:throw t.prev=19,t.t0=t.catch(15),new _Q("JWS Protected Header is invalid");case 22:if(mD(o,e.header)){t.next=24;break}throw new _Q("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(u=c(c({},o),e.header),s=GD(_Q,new Map([["b64",!0]]),null==r?void 0:r.crit,o,u),d=!0,!s.has("b64")){t.next=31;break}if("boolean"==typeof(d=o.b64)){t.next=31;break}throw new _Q('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(h=u.alg)&&h){t.next=34;break}throw new _Q('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&VD("algorithms",r.algorithms))||m.has(h)){t.next=37;break}throw new OQ('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){t.next=42;break}if("string"==typeof e.payload){t.next=40;break}throw new _Q("JWS Payload must be a string");case 40:t.next=44;break;case 42:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=44;break}throw new _Q("JWS Payload must be a string or an Uint8Array instance");case 44:if(p=!1,"function"!=typeof n){t.next=50;break}return t.next=48,n(o,e);case 48:n=t.sent,p=!0;case 50:return ID(h,n,"verify"),b=PQ(jQ.encode(null!==(i=e.protected)&&void 0!==i?i:""),jQ.encode("."),"string"==typeof e.payload?jQ.encode(e.payload):e.payload),Z=BQ(e.signature),t.next=55,gD(h,n,Z,b);case 55:if(t.sent){t.next=58;break}throw new nD;case 58:if(y=d?BQ(e.payload):"string"==typeof e.payload?jQ.encode(e.payload):e.payload,X={payload:y},void 0!==e.protected&&(X.protectedHeader=o),void 0!==e.header&&(X.unprotectedHeader=e.header),!p){t.next=64;break}return t.abrupt("return",c(c({},X),{},{key:n}));case 64:return t.abrupt("return",X);case 65:case"end":return t.stop()}}),t,null,[[15,19]])}))),YD.apply(this,arguments)}function RD(t,e,n){return KD.apply(this,arguments)}function KD(){return KD=u(a().mark((function t(e,n,r){var i,o,l,u,s,d;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=zQ.decode(e)),"string"==typeof e){t.next=3;break}throw new _Q("Compact JWS must be a string or Uint8Array");case 3:if(i=e.split("."),o=i[0],l=i[1],u=i[2],3===i.length){t.next=6;break}throw new _Q("Invalid Compact JWS");case 6:return t.next=8,SD({payload:l,protected:o,signature:u},n,r);case 8:if(s=t.sent,d={payload:s.payload,protectedHeader:s.protectedHeader},"function"!=typeof n){t.next=12;break}return t.abrupt("return",c(c({},d),{},{key:s.key}));case 12:return t.abrupt("return",d);case 13:case"end":return t.stop()}}),t)}))),KD.apply(this,arguments)}var LD=function(t){return Math.floor(t.getTime()/1e3)},JD=86400,ND=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,xD=function(t){var e=ND.exec(t);if(!e)throw new TypeError("Invalid time period format");var n=parseFloat(e[1]);switch(e[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(n*JD);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},HD=function(t){return t.toLowerCase().replace(/^application\//,"")},kD=function(t,e){return"string"==typeof t?e.includes(t):!!Array.isArray(t)&&e.some(Set.prototype.has.bind(new Set(t)))},CD=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof t.typ||HD(t.typ)!==HD(i)))throw new DQ('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(zQ.decode(e))}catch(t){}if(!pD(n))throw new qQ("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new DQ('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new DQ('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!kD(n.aud,"string"==typeof u?[u]:u))throw new DQ('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":l=xD(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var s=r.currentDate,d=LD(s||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new DQ('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new DQ('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>d+l)throw new DQ('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new DQ('"exp" claim must be a number',"exp","invalid");if(n.exp<=d-l)throw new EQ('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var h=d-n.iat,m="number"==typeof r.maxTokenAge?r.maxTokenAge:xD(r.maxTokenAge);if(h-l>m)throw new EQ('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(h<0-l)throw new DQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function UD(){return UD=u(a().mark((function t(e,n,r){var i,o,l,u;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,RD(e,n,r);case 2:if(o=t.sent,!(null===(i=o.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==o.protectedHeader.b64){t.next=5;break}throw new qQ("JWTs MUST NOT use unencoded payload");case 5:if(l=CD(o.protectedHeader,o.payload,r),u={payload:l,protectedHeader:o.protectedHeader},"function"!=typeof n){t.next=9;break}return t.abrupt("return",c(c({},u),{},{key:o.key}));case 9:return t.abrupt("return",u);case 10:case"end":return t.stop()}}),t)}))),UD.apply(this,arguments)}function TD(t){switch("string"==typeof t&&t.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new AQ('Unsupported "alg" value for a JSON Web Key Set')}}function wD(t){return pD(t)}var FD=function(){function t(e){if(s(this,t),this._cached=new WeakMap,!function(t){return t&&"object"===o(t)&&Array.isArray(t.keys)&&t.keys.every(wD)}(e))throw new $Q("JSON Web Key Set malformed");var n;this._jwks=(n=e,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var e;return h(t,[{key:"getKey",value:(e=u(a().mark((function t(e,n){var r,i,o,l,u,s,d,h,m;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=c(c({},e),n.header),i=r.alg,o=r.kid,l=TD(i),u=this._jwks.keys.filter((function(t){var e=l===t.kty;if(e&&"string"==typeof o&&(e=o===t.kid),e&&"string"==typeof t.alg&&(e=i===t.alg),e&&"string"==typeof t.use&&(e="sig"===t.use),e&&Array.isArray(t.key_ops)&&(e=t.key_ops.includes("verify")),e&&"EdDSA"===i&&(e="Ed25519"===t.crv||"Ed448"===t.crv),e)switch(i){case"ES256":e="P-256"===t.crv;break;case"ES256K":e="secp256k1"===t.crv;break;case"ES384":e="P-384"===t.crv;break;case"ES512":e="P-521"===t.crv}return e})),s=u[0],0!==(d=u.length)){t.next=8;break}throw new tD;case 8:if(1===d){t.next=10;break}throw new eD;case 10:if(void 0!==(h=this._cached.get(s)||this._cached.set(s,{}).get(s))[i]){t.next=18;break}return t.next=14,XD(c(c({},s),{},{ext:!0}),i);case 14:if(!((m=t.sent)instanceof Uint8Array||"public"!==m.type)){t.next=17;break}throw new $Q("JSON Web Key Set members must be public keys");case 17:h[i]=m;case 18:return t.abrupt("return",h[i]);case 19:case"end":return t.stop()}}),t,this)}))),function(t,n){return e.apply(this,arguments)})}]),t}();var MD={exports:{}},jD={exports:{}},zD=r(YQ);!function(t,e){var n=zD,r=n.Buffer;function i(t,e){for(var n in t)e[n]=t[n]}function c(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=n:(i(n,e),e.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},c.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},c.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},c.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}}(jD,jD.exports);var PD=65536,BD=4294967295;var QD=jD.exports.Buffer,DD=e.crypto||e.msCrypto;DD&&DD.getRandomValues?MD.exports=function(t,e){if(t>BD)throw new RangeError("requested too many random bytes");var n=QD.allocUnsafe(t);if(t>0)if(t>PD)for(var r=0;r<t;r+=PD)DD.getRandomValues(n.slice(r,r+PD));else DD.getRandomValues(n);if("function"==typeof e)return aP.nextTick((function(){e(null,n)}));return n}:MD.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var ED=MD.exports,OD=function(){function t(){s(this,t)}return h(t,[{key:"base64URLEncode",value:function(t){return UQ.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(t){return UQ.decode(t).toString()}},{key:"hashSha256",value:function(t){return jB.from(wQ((new TextEncoder).encode(t)))}},{key:"generateRandomBytes",value:function(t){return ED(t)}},{key:"verifyJwt",value:function(t,e,n,r,i,c,a){return function(t,e,n){return UD.apply(this,arguments)}(t,(o={keys:[e]},FD.prototype.getKey.bind(new FD(o))),{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),t}(),AD=function(e){switch(e){case t.Storage.LocalStorage:return new gB;case t.Storage.SessionStorage:return new YB;case t.Storage.BrowserMemory:return new SB;default:return new YB}},_D=function(e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U,T,w,F,M,j,z,P,B,Q,D;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return c=AD(e.storage),o=new OD,l=new ej(c,o),r.next=5,l.initialize(e);case 5:return u=new mz(l),s=l.getDataLayer(),r.next=9,Zz((function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(i=e.storage)&&void 0!==i?i:t.Storage.SessionStorage,(function(t){return s.setSessionDataParameter(PM,null!=t?t:"")}));case 9:if(d=r.sent,h=n(l,u),m=!1,p=vB.getInstance(),b=!0,X=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=Object.assign({attachToken:!0},t)).attachToken){e.next=23;break}if(!n.shouldAttachIDPAccessToken){e.next=14;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=8,h.getIDPAccessToken();case 8:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5),e.next=23;break;case 14:return e.t6=Object,e.t7=Object.assign({},t.headers),e.t8="Bearer ",e.next=19,h.getAccessToken();case 19:e.t9=e.sent,e.t10=e.t8.concat.call(e.t8,e.t9),e.t11={Authorization:e.t10},t.headers=e.t6.assign.call(e.t6,e.t7,e.t11);case 23:case"end":return e.stop()}}),e)})))},r.t0=null==p?void 0:p.init,!r.t0){r.next=19;break}return r.next=19,p.init(!0,X);case 19:return f=function(t){(null==p?void 0:p.setHttpRequestStartCallback)&&p.setHttpRequestStartCallback(t)},I=function(t){(null==p?void 0:p.setHttpRequestSuccessCallback)&&p.setHttpRequestSuccessCallback(t)},G=function(t){(null==p?void 0:p.setHttpRequestFinishCallback)&&p.setHttpRequestFinishCallback(t)},V=function(t){Z=t},W=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.httpRequest(p,t,b,Z,y);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},v=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.httpRequestAll(t,p,b,Z,y);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},g=function(){return p},S=function(){return h.enableHttpHandler(p),b=!0,!0},Y=function(){return h.disableHttpHandler(p),b=!1,!0},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getOIDCServiceEndpoints();case 2:return e=t.sent,t.next=5,s.getConfigData();case 5:n=t.sent,h.initializeSessionManger(n,e,(function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",l.getAuthorizationURL(t));case 1:case"end":return e.stop()}}),e)})))}),d);case 7:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d.receivePromptNoneResponse((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.setSessionDataParameter(PM,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(n,r,i,c){return TM(void 0,void 0,void 0,a().mark((function o(){var u,s,d,m,p,b,Z;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,h.handleSignIn(K,R);case 2:if(!(m=o.sent)){o.next=7;break}return o.abrupt("return",m);case 7:if((null==e?void 0:e.responseMode)===t.ResponseMode.formPost&&r?(p=r,b=null!=i?i:"",Z=null!=c?c:""):(p=null!==(u=new URL(window.location.href).searchParams.get(zM))&&void 0!==u?u:"",b=null!==(s=new URL(window.location.href).searchParams.get(PM))&&void 0!==s?s:"",Z=null!==(d=new URL(window.location.href).searchParams.get(DM))&&void 0!==d?d:"",bz.removeAuthorizationCode()),!p||!Z){o.next=10;break}return o.abrupt("return",C(p,b,Z));case 10:return o.abrupt("return",l.getAuthorizationURL(n).then((function(n){return TM(void 0,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e.storage!==t.Storage.BrowserMemory||!e.enablePKCE){r.next=8;break}return i=OM.extractPKCEKeyFromStateParam(Z),r.t0=bz,r.t1=i,r.next=6,l.getPKCECode(Z);case 6:r.t2=r.sent,r.t0.setPKCE.call(r.t0,r.t1,r.t2);case 8:return location.href=n,r.next=11,bz.waitTillPageRedirect();case 11:return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return r.stop()}}),r)})))})));case 11:case"end":return o.stop()}}),o)})))},J=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.isAuthenticated();case 2:if(t.t0=t.sent,!t.t0){t.next=5;break}t.t0=!m;case 5:if(!t.t0){t.next=11;break}return t.next=8,l.signOut();case 8:location.href=t.sent,t.next=18;break;case 11:return location.href=bz.getSignOutURL(),t.next=14,s.removeOIDCProviderMetaData();case 14:return t.next=16,s.removeTemporaryData();case 16:return t.next=18,s.removeSessionData();case 18:return u.clearRefreshTokenTimeout(),t.next=21,bz.waitTillPageRedirect();case 21:return t.abrupt("return",!0);case 22:case"end":return t.stop()}}),t)})))},N=function(t){t.preventSignOutURLUpdate&&(m=!0)},x=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.requestCustomGrant(t,N);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},H=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,h.refreshAccessToken(N);case 3:return t.abrupt("return",t.sent);case 6:return t.prev=6,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 9:case"end":return t.stop()}}),t,null,[[0,6]])})))},k=function(){return l.revokeAccessToken().then((function(){return d.reset(),u.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},C=function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,h.requestAccessToken(t,e,R,void 0,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r)})))},U=function(){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.getConfigData();case 2:return n=e.sent,e.next=5,l.getAuthorizationURL({prompt:"none",state:iz});case 5:if(r=e.sent,(i=new URL(r)).searchParams.set("response_mode","query"),c=i.toString(),n.storage!==t.Storage.BrowserMemory||!n.enablePKCE){e.next=17;break}return o=i.searchParams.get(DM),e.t0=bz,e.t1=OM.extractPKCEKeyFromStateParam(null!=o?o:""),e.next=15,l.getPKCECode(null!=o?o:"");case 15:e.t2=e.sent,e.t0.setPKCE.call(e.t0,e.t1,e.t2);case 17:return e.abrupt("return",c);case 18:case"end":return e.stop()}}),e)})))},T=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,h.trySignInSilently(U,C,d);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},w=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},F=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},M=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getCryptoHelper());case 1:case"end":return t.stop()}}),t)})))},j=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getIDToken());case 1:case"end":return t.stop()}}),t)})))},z=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},P=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},B=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getDataLayer());case 1:case"end":return t.stop()}}),t)})))},Q=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},D=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.getConfigData();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),e.next=7,l.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(d.reset(),R());case 8:case"end":return e.stop()}}),e)})))},r.abrupt("return",{disableHttpHandler:Y,enableHttpHandler:S,getAccessToken:P,getBasicUserInfo:w,getCryptoHelper:M,getDataLayer:B,getDecodedIDToken:F,getHttpClient:g,getIDToken:j,getOIDCServiceEndpoints:z,httpRequest:W,httpRequestAll:v,isAuthenticated:Q,refreshAccessToken:H,requestCustomGrant:x,revokeAccessToken:k,setHttpRequestErrorCallback:V,setHttpRequestFinishCallback:G,setHttpRequestStartCallback:f,setHttpRequestSuccessCallback:I,signIn:L,signOut:J,trySignInSilently:T,updateConfig:D});case 49:case"end":return r.stop()}}),r)})))},qD=function(e){switch(e){case t.Storage.LocalStorage:return new gB;case t.Storage.SessionStorage:return new YB;case t.Storage.BrowserMemory:return new SB;default:return new YB}},$D=function(e,n,r){return TM(void 0,void 0,void 0,a().mark((function i(){var c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U,T,w,F,M,j,z,P,B,Q,D,E,O,A;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return l=null!==(c=null==e?void 0:e.requestTimeout)&&void 0!==c?c:6e4,u=!0,s=!1,d=qD(e.storage),h=new OD,m=new ej(d,h),i.next=8,m.initialize(e);case 8:return p=new mz(m),i.next=11,Zz((function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:dj},t.prev=1,t.next=4,X(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",bz.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),e.storage,(function(t){return g(t)}));case 11:return b=i.sent,Z=r(m,p),y=new n,X=function(t){var e=new MessageChannel;return y.postMessage(t,[e.port2]),new Promise((function(t,n){var r=setTimeout((function(){n(new EM("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+l/1e3+" since dispatching the request"))}),l);return e.port1.onmessage=function(e){var i=e.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),t(c)}else n(i.error?JSON.parse(i.error):null)}}))},f=function(t){return X({data:t,type:pj}).then((function(e){return t.preventSignOutURLUpdate&&(s=!0),Promise.resolve(e)})).catch((function(t){return Promise.reject(t)}))},I=function(t){return X({data:t,type:hj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u){e.next=5;break}if("function"!=typeof o.requestErrorCallback){e.next=4;break}return e.next=4,o.requestErrorCallback(t);case 4:"function"==typeof o.requestFinishCallback&&o.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},G=function(t){return X({data:t,type:mj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u){e.next=5;break}if("function"!=typeof o.requestErrorCallback){e.next=4;break}return e.next=4,o.requestErrorCallback(t);case 4:"function"==typeof o.requestFinishCallback&&o.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},V=function(){return X({type:Wj}).then((function(){return u=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},W=function(){return X({type:vj}).then((function(){return u=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},v=function(){return o||(o={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),y.onmessage=function(t){var e=t.data;switch(e.type){case Xj:(null==o?void 0:o.requestFinishCallback)&&(null==o||o.requestFinishCallback());break;case Zj:(null==o?void 0:o.requestStartCallback)&&(null==o||o.requestStartCallback());break;case yj:(null==o?void 0:o.requestSuccessCallback)&&(null==o||o.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},X({data:e,type:sj}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},g=function(t){return X({data:t,type:Lj})},S=function(){return X({type:Jj})},Y=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,U();case 2:return e=t.sent,t.next=5,T();case 5:n=t.sent,Z.initializeSessionManger(n,e,(function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,w();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L(t);case 2:return e.abrupt("return",e.sent.authorizationURL);case 3:case"end":return e.stop()}}),e)})))}),b);case 7:case"end":return t.stop()}}),t)})))},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n,r,i,c,o,l,u;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T();case 2:return n=t.sent,r={data:{prompt:"none",state:iz},type:gj},t.next=6,X(r);case 6:return i=t.sent,c=OM.extractPKCEKeyFromStateParam(null!==(e=new URL(i.authorizationURL).searchParams.get(DM))&&void 0!==e?e:""),i.pkce&&n.enablePKCE&&bz.setPKCE(c,i.pkce),o=i.authorizationURL,(l=new URL(o)).searchParams.set("response_mode","query"),u=l.toString(),t.abrupt("return",u);case 14:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Z.trySignInSilently(R,J,b);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T();case 2:return n=e.sent,r={data:t,type:gj},e.abrupt("return",X(r).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&n.enablePKCE&&(i=OM.extractPKCEKeyFromStateParam(null!==(r=new URL(t.authorizationURL).searchParams.get(DM))&&void 0!==r?r:""),bz.setPKCE(i,t.pkce)),e.abrupt("return",Promise.resolve(t));case 2:case"end":return e.stop()}}),e)})))})));case 5:case"end":return e.stop()}}),e)})))},J=function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,T();case 2:return i=r.sent,c=OM.extractPKCEKeyFromStateParam(n),o={data:{code:t,pkce:i.enablePKCE?bz.getPKCE(c):void 0,sessionState:e,state:n},type:Sj},i.enablePKCE&&bz.removePKCE(c),r.abrupt("return",X(o).then((function(t){return X({type:Rj}).then((function(e){return bz.setSignOutURL(e),i.enableOIDCSessionManagement&&Y(),S(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 7:case"end":return r.stop()}}),r)})))},N=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b.receivePromptNoneResponse((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",g(t));case 1:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},x=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,P();case 2:if(!t.sent){t.next=7;break}return t.next=5,S();case 5:return e.enableOIDCSessionManagement&&Y(),t.abrupt("return",w());case 7:case"end":return t.stop()}}),t)})))},H=function(n,r,i,c){return TM(void 0,void 0,void 0,a().mark((function o(){var l,u,s,d,h,m,p;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Z.handleSignIn(N,Y,x);case 2:if(!(d=o.sent)){o.next=7;break}return o.abrupt("return",d);case 7:if((null==e?void 0:e.responseMode)===t.ResponseMode.formPost&&r?(h=r,m=null!=i?i:"",p=null!=c?c:""):(h=null!==(l=new URL(window.location.href).searchParams.get(zM))&&void 0!==l?l:"",m=null!==(u=new URL(window.location.href).searchParams.get(PM))&&void 0!==u?u:"",p=null!==(s=new URL(window.location.href).searchParams.get(DM))&&void 0!==s?s:"",bz.removeAuthorizationCode()),!h||!p){o.next=10;break}return o.abrupt("return",J(h,m,p));case 10:return o.abrupt("return",L(n).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return location.href=t.authorizationURL,e.next=3,bz.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 11:case"end":return o.stop()}}),o)})))},k=function(){return P().then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||s){e.next=5;break}return n={type:dj},e.abrupt("return",X(n).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,bz.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=bz.getSignOutURL(),e.next=8,bz.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},C=function(){return X({type:bj}).then((function(t){return b.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},U=function(){return X({type:fj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},T=function(){return X({type:Cj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},w=function(){return X({type:Ij}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},F=function(){return X({type:Gj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},M=function(){return X({type:"get-decoded-idp-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},j=function(){return X({type:Vj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},z=function(){return X({type:xj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},P=function(){return X({type:Yj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},B=function(){return X({type:Kj})},Q=function(t){t&&"function"==typeof t&&(o.requestSuccessCallback=t)},D=function(t){t&&"function"==typeof t&&(o.requestErrorCallback=t)},E=function(t){t&&"function"==typeof t&&(o.requestStartCallback=t)},O=function(t){t&&"function"==typeof t&&(o.requestFinishCallback=t)},A=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),c={data:i,type:Nj},e.next=8,X(c);case 8:i.enableOIDCSessionManagement&&r&&(b.reset(),Y());case 9:case"end":return e.stop()}}),e)})))},i.abrupt("return",{disableHttpHandler:W,enableHttpHandler:V,getBasicUserInfo:w,getCryptoHelper:j,getDecodedIDPIDToken:M,getDecodedIDToken:F,getIDToken:z,getOIDCServiceEndpoints:U,httpRequest:I,httpRequestAll:G,initialize:v,isAuthenticated:P,refreshAccessToken:B,requestCustomGrant:f,revokeAccessToken:C,setHttpRequestErrorCallback:D,setHttpRequestFinishCallback:O,setHttpRequestStartCallback:E,setHttpRequestSuccessCallback:Q,signIn:H,signOut:k,trySignInSilently:K,updateConfig:A});case 48:case"end":return i.stop()}}),i)})))},tE={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:t.Storage.SessionStorage},eE="primaryInstance",nE=function(){function e(t){s(this,e),this._authHelper=hz,this._worker=uj,this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=t}return h(e,[{key:"instantiateAuthHelper",value:function(t){this._authHelper=t||hz}},{key:"instantiateWorker",value:function(t){this._worker=t||uj}},{key:"_isInitialized",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 4:if(this._initialized){t.next=11;break}return 1e4===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}},{key:"initialize",value:function(e,n,r){var i;return TM(this,void 0,void 0,a().mark((function c(){var o,l,u,s=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(this._storage=null!==(i=e.storage)&&void 0!==i?i:t.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,n&&this.instantiateAuthHelper(n),r&&this.instantiateWorker(r),this._storage===t.Storage.WebWorker){c.next=17;break}if(this._client){c.next=12;break}return o=e,l=Object.assign({},tE),c.next=11,_D(Object.assign(Object.assign({},l),o),(function(t,e){return new s._authHelper(t,e)}));case 11:this._client=c.sent;case 12:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),c.abrupt("return",Promise.resolve(!0));case 17:if(this._client){c.next=23;break}return u=e,c.next=21,$D(Object.assign(Object.assign({},tE),u),this._worker,(function(t,e){return new s._authHelper(t,e)}));case 21:return this._client=c.sent,c.abrupt("return",this._client.initialize().then((function(){return s._onInitialize&&s._onInitialize(!0),s._initialized=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)})));case 23:return c.abrupt("return",Promise.resolve(!0));case 24:case"end":return c.stop()}}),c,this)})))}},{key:"getBasicUserInfo",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getBasicUserInfo());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"signIn",value:function(t,e,n,r){var i;return TM(this,void 0,void 0,a().mark((function c(){var o=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(bz.canContinueSignIn(Boolean(null==t?void 0:t.callOnlyOnRedirect),e)){c.next=4;break}return c.abrupt("return");case 4:return null==t||delete t.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(t,e,n,r).then((function(t){return o._onSignInCallback&&(t.allowedScopes||t.displayName||t.email||t.username)&&o._onSignInCallback(t),t})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var n=this;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(!bz.wasSignInCalled()){e.next=4;break}return e.abrupt("return");case 4:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.trySignInSilently().then((function(t){if(n._onSignInCallback&&t){var e=t;(e.allowedScopes||e.displayName||e.email||e.username)&&n._onSignInCallback(e)}return t})));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"signOut",value:function(){var t,e;return TM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(t=this._client)||void 0===t?void 0:t.signOut();case 4:if(n.t1=e=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==e;case 8:if(!n.t0){n.next=12;break}n.t2=e,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequest",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequest(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequestAll",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequestAll(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"requestCustomGrant",value:function(t){var e,n;return TM(this,void 0,void 0,a().mark((function r(){var i,c;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!t.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(t.id){r.next=9;break}return r.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-RCG-NF01","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(e=this._client)||void 0===e?void 0:e.requestCustomGrant(t);case 11:return i=r.sent,(c=this._onCustomGrant.get(t.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(t.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}},{key:"revokeAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.next=4,null===(t=this._client)||void 0===t?void 0:t.revokeAccessToken();case 4:if(n=e.sent,e.t0=this._onEndUserSession,!e.t0){e.next=9;break}return e.next=9,this._onEndUserSession(n);case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getOIDCServiceEndpoints());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==t.Storage.WebWorker)return this._client.getHttpClient();throw new EM("SPA-AUTH_CLIENT-GHC-IV01","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new EM("SPA-AUTH_CLIENT-GHC-NF02","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}},{key:"getDecodedIDToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getDecodedIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getCryptoHelper());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getIDToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getIDPAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GIAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getDataLayer",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GDL-IV01","The data layer cannot be returned.","The data layer cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getDataLayer());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"refreshAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.refreshAccessToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.isAuthenticated());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"on",value:function(e,n,r){var i,c,o,l;return TM(this,void 0,void 0,a().mark((function u(){var s;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){a.next=35;break}a.t0=e,a.next=a.t0===t.Hooks.SignIn?6:a.t0===t.Hooks.SignOut?8:a.t0===t.Hooks.RevokeAccessToken?14:a.t0===t.Hooks.Initialize?16:a.t0===t.Hooks.HttpRequestError?18:a.t0===t.Hooks.HttpRequestFinish?20:a.t0===t.Hooks.HttpRequestStart?22:a.t0===t.Hooks.HttpRequestSuccess?24:a.t0===t.Hooks.CustomGrant?26:a.t0===t.Hooks.SignOutFailed?28:32;break;case 6:return this._onSignInCallback=n,a.abrupt("break",33);case 8:return this._onSignOutCallback=n,a.next=11,bz.isSignOutSuccessful();case 11:if(!a.sent){a.next=13;break}this._onSignOutCallback();case 13:return a.abrupt("break",33);case 14:return this._onEndUserSession=n,a.abrupt("break",33);case 16:return this._onInitialize=n,a.abrupt("break",33);case 18:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),a.abrupt("break",33);case 20:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),a.abrupt("break",33);case 22:return null===(o=this._client)||void 0===o||o.setHttpRequestStartCallback(n),a.abrupt("break",33);case 24:return null===(l=this._client)||void 0===l||l.setHttpRequestSuccessCallback(n),a.abrupt("break",33);case 26:return r&&this._onCustomGrant.set(r,n),a.abrupt("break",33);case 28:return this._onSignOutFailedCallback=n,(s=bz.didSignOutFail())&&this._onSignOutFailedCallback(s),a.abrupt("break",33);case 32:throw new EM("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 33:a.next=36;break;case 35:throw new EM("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 36:case"end":return a.stop()}}),u,this)})))}},{key:"enableHttpHandler",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.enableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"disableHttpHandler",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.disableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(e){return TM(this,void 0,void 0,a().mark((function n(){var r,i;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==t.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(e);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(e);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(t){var n,r;return t&&(null===(n=this._instances)||void 0===n?void 0:n.get(t))?this._instances.get(t):!t&&(null===(r=this._instances)||void 0===r?void 0:r.get(eE))?this._instances.get(eE):t?(this._instances.set(t,new e(t)),this._instances.get(t)):(this._instances.set(eE,new e(eE)),this._instances.get(eE))}}]),e}();nE._instances=new Map;var rE=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).onmessage=function(){return null},t}return h(n)}(f(Worker)),iE=function(t,e){return TM(void 0,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=new SB,i=new OD,c=new ej(r,i),n.next=5,c.initialize(t);case 5:if(o=new mz(c),l=e(c,o),u=c.getDataLayer(),s=vB.getInstance(),d=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=Object.assign({attachToken:!0},t)).attachToken){e.next=23;break}if(!n.shouldAttachIDPAccessToken){e.next=14;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=8,l.getIDPAccessToken();case 8:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5),e.next=23;break;case 14:return e.t6=Object,e.t7=Object.assign({},t.headers),e.t8="Bearer ",e.next=19,l.getAccessToken();case 19:e.t9=e.sent,e.t10=e.t8.concat.call(e.t8,e.t9),e.t11={Authorization:e.t10},t.headers=e.t6.assign.call(e.t6,e.t7,e.t11);case 23:case"end":return e.stop()}}),e)})))},n.t0=null==s?void 0:s.init,!n.t0){n.next=14;break}return n.next=14,s.init(!0,d);case 14:return h=function(t){(null==s?void 0:s.setHttpRequestStartCallback)&&s.setHttpRequestStartCallback(t)},m=function(t){(null==s?void 0:s.setHttpRequestSuccessCallback)&&s.setHttpRequestSuccessCallback(t)},p=function(t){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(t)},b=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.httpRequest(s,t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},Z=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.httpRequestAll(t,s);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},y=function(){l.enableHttpHandler(s)},X=function(){l.disableHttpHandler(s)},f=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getAuthorizationURL(t).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new URL(t),i=null!==(n=r.searchParams.get(DM))&&void 0!==n?n:"",e.next=4,c.getPKCECode(i);case 4:return o=e.sent,e.abrupt("return",{authorizationURL:t,pkce:o});case 6:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 1:case"end":return e.stop()}}),e)})))},I=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))},G=function(t,e,n,r){return TM(void 0,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.requestAccessToken(t,e,void 0,n,r);case 2:return i.abrupt("return",i.sent);case 3:case"end":return i.stop()}}),i)})))},V=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o.clearRefreshTokenTimeout(),t.next=3,c.signOut();case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))},W=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c.getSignOutURL();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},v=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.requestCustomGrant(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},g=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,l.refreshAccessToken();case 3:return t.abrupt("return",t.sent);case 6:return t.prev=6,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 9:case"end":return t.stop()}}),t,null,[[0,6]])})))},S=function(){return c.revokeAccessToken().then((function(){return o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},Y=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getCryptoHelper());case 1:case"end":return t.stop()}}),t)})))},L=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getDecodedIDPIDToken());case 1:case"end":return t.stop()}}),t)})))},J=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getIDToken());case 1:case"end":return t.stop()}}),t)})))},N=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},x=function(){return l.getAccessToken()},H=function(){return l.isAuthenticated()},k=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u.setSessionDataParameter(PM,t);case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))},C=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.updateConfig(t);case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))},U=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",u.getConfigData());case 1:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:X,enableHttpHandler:y,getAccessToken:x,getAuthorizationURL:f,getBasicUserInfo:Y,getConfigData:U,getCryptoHelper:K,getDecodedIDPIDToken:L,getDecodedIDToken:R,getIDToken:J,getOIDCServiceEndpoints:N,getSignOutURL:W,httpRequest:b,httpRequestAll:Z,isAuthenticated:H,refreshAccessToken:g,requestAccessToken:G,requestCustomGrant:v,revokeAccessToken:S,setHttpRequestFinishCallback:p,setHttpRequestStartCallback:h,setHttpRequestSuccessCallback:m,setSessionState:k,signOut:V,startAutoRefreshToken:I,updateConfig:C});case 41:case"end":return n.stop()}}),n)})))};return t.AUTHORIZATION_CODE=zM,t.AsgardeoAuthClient=ej,t.AsgardeoAuthException=EM,t.AsgardeoSPAClient=nE,t.AuthenticationHelper=hz,t.AuthenticationUtils=OM,t.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",t.CLIENT_ID_TAG="{{clientID}}",t.CLIENT_SECRET_TAG="{{clientSecret}}",t.CryptoHelper=_M,t.DataLayer=$M,t.MainThreadClient=_D,t.NBF_CLAIM="nbf",t.OIDC_SCOPE="openid",t.PKCE_CODE_VERIFIER="pkce_code_verifier",t.PKCE_SEPARATOR="#",t.REFRESH_TOKEN_TIMER=MM,t.SCOPE_TAG="{{scope}}",t.SESSION_STATE=PM,t.SIGN_OUT_SUCCESS_PARAM=QM,t.SIGN_OUT_URL=BM,t.SPAHelper=mz,t.SPAUtils=bz,t.STATE=DM,t.SUPPORTED_SIGNATURE_ALGORITHMS=jM,t.TOKEN_TAG="{{token}}",t.USERNAME_TAG="{{username}}",t.WebWorkerClass=rE,t.WebWorkerClient=$D,t.workerReceiver=function(t){var e,n=self;n.onmessage=function(n){var o=n.data,l=n.ports;return TM(void 0,void 0,void 0,a().mark((function n(){var u,s,d,h,m,p;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m=l[0],o.type===sj||e){n.next=4;break}return m.postMessage(pz.generateFailureMessage(new EM("SPA-CLIENT_WORKER-ONMSG-NF01","The web worker has not been initialized yet.","The initialize method needs to be called before the specified operation can be carried out."))),n.abrupt("return");case 4:n.t0=o.type,n.next=n.t0===sj?7:n.t0===gj?22:n.t0===Sj?24:n.t0===hj?26:n.t0===mj?28:n.t0===dj?30:n.t0===pj?44:n.t0===bj?46:n.t0===fj?48:n.t0===Ij?62:n.t0===Gj?76:n.t0===Vj?90:n.t0===xj?104:n.t0===Wj?118:n.t0===vj?121:n.t0===Yj?124:n.t0===Rj?138:n.t0===Kj?152:n.t0===Jj?166:n.t0===Lj?168:n.t0===Nj?182:n.t0===Cj?196:210;break;case 7:return n.prev=7,p=Object.assign({},o.data),n.next=11,iE(p,t);case 11:(e=n.sent).setHttpRequestFinishCallback(c),e.setHttpRequestStartCallback(r),e.setHttpRequestSuccessCallback(i),m.postMessage(pz.generateSuccessMessage()),n.next=21;break;case 18:n.prev=18,n.t1=n.catch(7),m.postMessage(pz.generateFailureMessage(n.t1));case 21:return n.abrupt("break",211);case 22:return e.getAuthorizationURL(null==o?void 0:o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 24:return e.requestAccessToken(null===(u=null==o?void 0:o.data)||void 0===u?void 0:u.code,null===(s=null==o?void 0:o.data)||void 0===s?void 0:s.sessionState,null===(d=null==o?void 0:o.data)||void 0===d?void 0:d.pkce,null===(h=null==o?void 0:o.data)||void 0===h?void 0:h.state).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 26:return e.httpRequest(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 28:return e.httpRequestAll(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 30:return n.prev=30,n.t2=m,n.t3=pz,n.next=35,e.signOut();case 35:n.t4=n.sent,n.t5=n.t3.generateSuccessMessage.call(n.t3,n.t4),n.t2.postMessage.call(n.t2,n.t5),n.next=43;break;case 40:n.prev=40,n.t6=n.catch(30),m.postMessage(pz.generateFailureMessage(n.t6));case 43:return n.abrupt("break",211);case 44:return e.requestCustomGrant(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 46:return e.revokeAccessToken().then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 48:return n.prev=48,n.t7=m,n.t8=pz,n.next=53,e.getOIDCServiceEndpoints();case 53:n.t9=n.sent,n.t10=n.t8.generateSuccessMessage.call(n.t8,n.t9),n.t7.postMessage.call(n.t7,n.t10),n.next=61;break;case 58:n.prev=58,n.t11=n.catch(48),m.postMessage(pz.generateFailureMessage(n.t11));case 61:return n.abrupt("break",211);case 62:return n.prev=62,n.t12=m,n.t13=pz,n.next=67,e.getBasicUserInfo();case 67:n.t14=n.sent,n.t15=n.t13.generateSuccessMessage.call(n.t13,n.t14),n.t12.postMessage.call(n.t12,n.t15),n.next=75;break;case 72:n.prev=72,n.t16=n.catch(62),m.postMessage(pz.generateFailureMessage(n.t16));case 75:return n.abrupt("break",211);case 76:return n.prev=76,n.t17=m,n.t18=pz,n.next=81,e.getDecodedIDToken();case 81:n.t19=n.sent,n.t20=n.t18.generateSuccessMessage.call(n.t18,n.t19),n.t17.postMessage.call(n.t17,n.t20),n.next=89;break;case 86:n.prev=86,n.t21=n.catch(76),m.postMessage(pz.generateFailureMessage(n.t21));case 89:return n.abrupt("break",211);case 90:return n.prev=90,n.t22=m,n.t23=pz,n.next=95,e.getCryptoHelper();case 95:n.t24=n.sent,n.t25=n.t23.generateSuccessMessage.call(n.t23,n.t24),n.t22.postMessage.call(n.t22,n.t25),n.next=103;break;case 100:n.prev=100,n.t26=n.catch(90),m.postMessage(pz.generateFailureMessage(n.t26));case 103:return n.abrupt("break",211);case 104:return n.prev=104,n.t27=m,n.t28=pz,n.next=109,e.getIDToken();case 109:n.t29=n.sent,n.t30=n.t28.generateSuccessMessage.call(n.t28,n.t29),n.t27.postMessage.call(n.t27,n.t30),n.next=117;break;case 114:n.prev=114,n.t31=n.catch(104),m.postMessage(pz.generateFailureMessage(n.t31));case 117:return n.abrupt("break",211);case 118:return e.enableHttpHandler(),m.postMessage(pz.generateSuccessMessage()),n.abrupt("break",211);case 121:return e.disableHttpHandler(),m.postMessage(pz.generateSuccessMessage()),n.abrupt("break",211);case 124:return n.prev=124,n.t32=m,n.t33=pz,n.next=129,e.isAuthenticated();case 129:n.t34=n.sent,n.t35=n.t33.generateSuccessMessage.call(n.t33,n.t34),n.t32.postMessage.call(n.t32,n.t35),n.next=137;break;case 134:n.prev=134,n.t36=n.catch(124),m.postMessage(pz.generateFailureMessage(n.t36));case 137:return n.abrupt("break",211);case 138:return n.prev=138,n.t37=m,n.t38=pz,n.next=143,e.getSignOutURL();case 143:n.t39=n.sent,n.t40=n.t38.generateSuccessMessage.call(n.t38,n.t39),n.t37.postMessage.call(n.t37,n.t40),n.next=151;break;case 148:n.prev=148,n.t41=n.catch(138),m.postMessage(pz.generateFailureMessage(n.t41));case 151:return n.abrupt("break",211);case 152:return n.prev=152,n.t42=m,n.t43=pz,n.next=157,e.refreshAccessToken();case 157:n.t44=n.sent,n.t45=n.t43.generateSuccessMessage.call(n.t43,n.t44),n.t42.postMessage.call(n.t42,n.t45),n.next=165;break;case 162:n.prev=162,n.t46=n.catch(152),m.postMessage(pz.generateFailureMessage(n.t46));case 165:return n.abrupt("break",211);case 166:try{m.postMessage(pz.generateSuccessMessage(e.startAutoRefreshToken()))}catch(t){m.postMessage(pz.generateFailureMessage(t))}return n.abrupt("break",211);case 168:return n.prev=168,n.t47=m,n.t48=pz,n.next=173,e.setSessionState(null==o?void 0:o.data);case 173:n.t49=n.sent,n.t50=n.t48.generateSuccessMessage.call(n.t48,n.t49),n.t47.postMessage.call(n.t47,n.t50),n.next=181;break;case 178:n.prev=178,n.t51=n.catch(168),m.postMessage(pz.generateFailureMessage(n.t51));case 181:return n.abrupt("break",211);case 182:return n.prev=182,n.t52=m,n.t53=pz,n.next=187,e.updateConfig(null==o?void 0:o.data);case 187:n.t54=n.sent,n.t55=n.t53.generateSuccessMessage.call(n.t53,n.t54),n.t52.postMessage.call(n.t52,n.t55),n.next=195;break;case 192:n.prev=192,n.t56=n.catch(182),m.postMessage(pz.generateFailureMessage(n.t56));case 195:return n.abrupt("break",211);case 196:return n.prev=196,n.t57=m,n.t58=pz,n.next=201,e.getConfigData();case 201:n.t59=n.sent,n.t60=n.t58.generateSuccessMessage.call(n.t58,n.t59),n.t57.postMessage.call(n.t57,n.t60),n.next=209;break;case 206:n.prev=206,n.t61=n.catch(196),m.postMessage(pz.generateFailureMessage(n.t61));case 209:return n.abrupt("break",211);case 210:null==m||m.postMessage(pz.generateFailureMessage(new EM("SPA-CLIENT_WORKER-ONMSG-IV02","The message type is invalid.","The message type provided, ".concat(o.type,", is invalid."))));case 211:case"end":return n.stop()}}),n,null,[[7,18],[30,40],[48,58],[62,72],[76,86],[90,100],[104,114],[124,134],[138,148],[152,162],[168,178],[182,192],[196,206]])})))};var r=function(){n.postMessage({type:Zj})},i=function(t){n.postMessage({data:JSON.stringify(null!=t?t:""),type:yj})},c=function(){n.postMessage({type:Xj})}},Object.defineProperty(t,"__esModule",{value:!0}),t}({});
1
+ var AsgardeoAuth=function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function r(t){if(t.__esModule)return t;var e=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(t).forEach((function(n){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})})),e}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){m(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function a(){a=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",c=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,r){var i=e&&e.prototype instanceof h?e:h,c=Object.create(i.prototype),a=new v(r||[]);return c._invoke=function(t,e,n){var r="suspendedStart";return function(i,c){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw c;return S()}for(n.method=i,n.arg=c;;){var a=n.delegate;if(a){var o=G(a,n);if(o){if(o===d)continue;return o}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=s(t,e,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===d)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(t,n,a),c}function s(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=u;var d={};function h(){}function m(){}function p(){}var b={};l(b,i,(function(){return this}));var Z=Object.getPrototypeOf,y=Z&&Z(Z(g([])));y&&y!==e&&n.call(y,i)&&(b=y);var X=p.prototype=h.prototype=Object.create(b);function f(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(i,c,a,o){var l=s(t[i],t,c);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==typeof d&&n.call(d,"__await")?e.resolve(d.__await).then((function(t){r("next",t,a,o)}),(function(t){r("throw",t,a,o)})):e.resolve(d).then((function(t){u.value=t,a(u)}),(function(t){return r("throw",t,a,o)}))}o(l.arg)}var i;this._invoke=function(t,n){function c(){return new e((function(e,i){r(t,n,e,i)}))}return i=i?i.then(c,c):c()}}function G(t,e){var n=t.iterator[e.method];if(void 0===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,G(t,e),"throw"===e.method))return d;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var r=s(n,t.iterator,e.arg);if("throw"===r.type)return e.method="throw",e.arg=r.arg,e.delegate=null,d;var i=r.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function W(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function v(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function g(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,c=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return c.next=c}}return{next:S}}function S(){return{value:void 0,done:!0}}return m.prototype=p,l(X,"constructor",p),l(p,"constructor",m),m.displayName=l(p,o,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===m||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,p):(t.__proto__=p,l(t,o,"GeneratorFunction")),t.prototype=Object.create(X),t},t.awrap=function(t){return{__await:t}},f(I.prototype),l(I.prototype,c,(function(){return this})),t.AsyncIterator=I,t.async=function(e,n,r,i,c){void 0===c&&(c=Promise);var a=new I(u(e,n,r,i),c);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},f(X),l(X,o,"Generator"),l(X,i,(function(){return this})),l(X,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},t.values=g,v.prototype={constructor:v,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(W),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var c=this.tryEntries[i],a=c.completion;if("root"===c.tryLoc)return r("end");if(c.tryLoc<=this.prev){var o=n.call(c,"catchLoc"),l=n.call(c,"finallyLoc");if(o&&l){if(this.prev<c.catchLoc)return r(c.catchLoc,!0);if(this.prev<c.finallyLoc)return r(c.finallyLoc)}else if(o){if(this.prev<c.catchLoc)return r(c.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<c.finallyLoc)return r(c.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var c=i;break}}c&&("break"===t||"continue"===t)&&c.tryLoc<=e&&e<=c.finallyLoc&&(c=null);var a=c?c.completion:{};return a.type=t,a.arg=e,c?(this.method="next",this.next=c.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),W(n),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;W(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:g(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},t}function o(t){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o(t)}function l(t,e,n,r,i,c,a){try{var o=t[c](a),l=o.value}catch(t){return void n(t)}o.done?e(l):Promise.resolve(l).then(r,i)}function u(t){return function(){var e=this,n=arguments;return new Promise((function(r,i){var c=t.apply(e,n);function a(t){l(c,r,i,a,o,"next",t)}function o(t){l(c,r,i,a,o,"throw",t)}a(void 0)}))}}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function h(t,e,n){return e&&d(t.prototype,e),n&&d(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function m(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function p(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Z(t,e)}function b(t){return b=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}function Z(t,e){return Z=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},Z(t,e)}function y(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}function X(t,e,n){return X=y()?Reflect.construct.bind():function(t,e,n){var r=[null];r.push.apply(r,e);var i=new(Function.bind.apply(t,r));return n&&Z(i,n.prototype),i},X.apply(null,arguments)}function f(t){var e="function"==typeof Map?new Map:void 0;return f=function(t){if(null===t||(n=t,-1===Function.toString.call(n).indexOf("[native code]")))return t;var n;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return X(t,arguments,b(this).constructor)}return r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),Z(r,t)},f(t)}function I(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function G(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return I(t)}function V(t){var e=y();return function(){var n,r=b(t);if(e){var i=b(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return G(this,n)}}function W(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==n)return;var r,i,c=[],a=!0,o=!1;try{for(n=n.call(t);!(a=(r=n.next()).done)&&(c.push(r.value),!e||c.length!==e);a=!0);}catch(t){o=!0,i=t}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return c}(t,e)||g(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function v(t){return function(t){if(Array.isArray(t))return S(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||g(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(t,e){if(t){if("string"==typeof t)return S(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(t,e):void 0}}function S(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Y(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=g(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,a=!0,o=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){o=!0,c=t},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var R=function(t){return t&&t.Math==Math&&t},K=R("object"==("undefined"==typeof globalThis?"undefined":o(globalThis))&&globalThis)||R("object"==("undefined"==typeof window?"undefined":o(window))&&window)||R("object"==("undefined"==typeof self?"undefined":o(self))&&self)||R("object"==o(e)&&e)||function(){return this}()||Function("return this")(),L={},J=function(t){try{return!!t()}catch(t){return!0}},N=!J((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),x=!J((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),H=x,k=Function.prototype.call,C=H?k.bind(k):function(){return k.apply(k,arguments)},U={},T={}.propertyIsEnumerable,w=Object.getOwnPropertyDescriptor,F=w&&!T.call({1:2},1);U.f=F?function(t){var e=w(this,t);return!!e&&e.enumerable}:T;var M,j,z=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},P=x,B=Function.prototype,Q=B.bind,D=B.call,E=P&&Q.bind(D,D),O=P?function(t){return t&&E(t)}:function(t){return t&&function(){return D.apply(t,arguments)}},A=O,_=A({}.toString),q=A("".slice),$=function(t){return q(_(t),8,-1)},tt=J,et=$,nt=Object,rt=O("".split),it=tt((function(){return!nt("z").propertyIsEnumerable(0)}))?function(t){return"String"==et(t)?rt(t,""):nt(t)}:nt,ct=TypeError,at=function(t){if(null==t)throw ct("Can't call method on "+t);return t},ot=it,lt=at,ut=function(t){return ot(lt(t))},st=function(t){return"function"==typeof t},dt=st,ht=function(t){return"object"==o(t)?null!==t:dt(t)},mt=K,pt=st,bt=function(t){return pt(t)?t:void 0},Zt=function(t,e){return arguments.length<2?bt(mt[t]):mt[t]&&mt[t][e]},yt=O({}.isPrototypeOf),Xt=Zt("navigator","userAgent")||"",ft=K,It=Xt,Gt=ft.process,Vt=ft.Deno,Wt=Gt&&Gt.versions||Vt&&Vt.version,vt=Wt&&Wt.v8;vt&&(j=(M=vt.split("."))[0]>0&&M[0]<4?1:+(M[0]+M[1])),!j&&It&&(!(M=It.match(/Edge\/(\d+)/))||M[1]>=74)&&(M=It.match(/Chrome\/(\d+)/))&&(j=+M[1]);var gt=j,St=gt,Yt=J,Rt=!!Object.getOwnPropertySymbols&&!Yt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&St&&St<41})),Kt=Rt&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Lt=Zt,Jt=st,Nt=yt,xt=Object,Ht=Kt?function(t){return"symbol"==o(t)}:function(t){var e=Lt("Symbol");return Jt(e)&&Nt(e.prototype,xt(t))},kt=String,Ct=function(t){try{return kt(t)}catch(t){return"Object"}},Ut=st,Tt=Ct,wt=TypeError,Ft=function(t){if(Ut(t))return t;throw wt(Tt(t)+" is not a function")},Mt=Ft,jt=function(t,e){var n=t[e];return null==n?void 0:Mt(n)},zt=C,Pt=st,Bt=ht,Qt=TypeError,Dt=function(t,e){var n,r;if("string"===e&&Pt(n=t.toString)&&!Bt(r=zt(n,t)))return r;if(Pt(n=t.valueOf)&&!Bt(r=zt(n,t)))return r;if("string"!==e&&Pt(n=t.toString)&&!Bt(r=zt(n,t)))return r;throw Qt("Can't convert object to primitive value")},Et={exports:{}},Ot=K,At=Object.defineProperty,_t=function(t,e){try{At(Ot,t,{value:e,configurable:!0,writable:!0})}catch(n){Ot[t]=e}return e},qt=_t,$t="__core-js_shared__",te=K[$t]||qt($t,{}),ee=te;(Et.exports=function(t,e){return ee[t]||(ee[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.8",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.8/LICENSE",source:"https://github.com/zloirock/core-js"});var ne=at,re=Object,ie=function(t){return re(ne(t))},ce=ie,ae=O({}.hasOwnProperty),oe=Object.hasOwn||function(t,e){return ae(ce(t),e)},le=O,ue=0,se=Math.random(),de=le(1..toString),he=function(t){return"Symbol("+(void 0===t?"":t)+")_"+de(++ue+se,36)},me=K,pe=Et.exports,be=oe,Ze=he,ye=Rt,Xe=Kt,fe=pe("wks"),Ie=me.Symbol,Ge=Ie&&Ie.for,Ve=Xe?Ie:Ie&&Ie.withoutSetter||Ze,We=function(t){if(!be(fe,t)||!ye&&"string"!=typeof fe[t]){var e="Symbol."+t;ye&&be(Ie,t)?fe[t]=Ie[t]:fe[t]=Xe&&Ge?Ge(e):Ve(e)}return fe[t]},ve=C,ge=ht,Se=Ht,Ye=jt,Re=Dt,Ke=TypeError,Le=We("toPrimitive"),Je=function(t,e){if(!ge(t)||Se(t))return t;var n,r=Ye(t,Le);if(r){if(void 0===e&&(e="default"),n=ve(r,t,e),!ge(n)||Se(n))return n;throw Ke("Can't convert object to primitive value")}return void 0===e&&(e="number"),Re(t,e)},Ne=Je,xe=Ht,He=function(t){var e=Ne(t,"string");return xe(e)?e:e+""},ke=ht,Ce=K.document,Ue=ke(Ce)&&ke(Ce.createElement),Te=function(t){return Ue?Ce.createElement(t):{}},we=Te,Fe=!N&&!J((function(){return 7!=Object.defineProperty(we("div"),"a",{get:function(){return 7}}).a})),Me=N,je=C,ze=U,Pe=z,Be=ut,Qe=He,De=oe,Ee=Fe,Oe=Object.getOwnPropertyDescriptor;L.f=Me?Oe:function(t,e){if(t=Be(t),e=Qe(e),Ee)try{return Oe(t,e)}catch(t){}if(De(t,e))return Pe(!je(ze.f,t,e),t[e])};var Ae={},_e=N&&J((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),qe=ht,$e=String,tn=TypeError,en=function(t){if(qe(t))return t;throw tn($e(t)+" is not an object")},nn=N,rn=Fe,cn=_e,an=en,on=He,ln=TypeError,un=Object.defineProperty,sn=Object.getOwnPropertyDescriptor,dn="enumerable",hn="configurable",mn="writable";Ae.f=nn?cn?function(t,e,n){if(an(t),e=on(e),an(n),"function"==typeof t&&"prototype"===e&&"value"in n&&mn in n&&!n.writable){var r=sn(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:hn in n?n.configurable:r.configurable,enumerable:dn in n?n.enumerable:r.enumerable,writable:!1})}return un(t,e,n)}:un:function(t,e,n){if(an(t),e=on(e),an(n),rn)try{return un(t,e,n)}catch(t){}if("get"in n||"set"in n)throw ln("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var pn=Ae,bn=z,Zn=N?function(t,e,n){return pn.f(t,e,bn(1,n))}:function(t,e,n){return t[e]=n,t},yn={exports:{}},Xn=N,fn=oe,In=Function.prototype,Gn=Xn&&Object.getOwnPropertyDescriptor,Vn=fn(In,"name"),Wn={EXISTS:Vn,PROPER:Vn&&"something"===function(){}.name,CONFIGURABLE:Vn&&(!Xn||Xn&&Gn(In,"name").configurable)},vn=st,gn=te,Sn=O(Function.toString);vn(gn.inspectSource)||(gn.inspectSource=function(t){return Sn(t)});var Yn,Rn,Kn,Ln=gn.inspectSource,Jn=st,Nn=Ln,xn=K.WeakMap,Hn=Jn(xn)&&/native code/.test(Nn(xn)),kn=Et.exports,Cn=he,Un=kn("keys"),Tn=function(t){return Un[t]||(Un[t]=Cn(t))},wn={},Fn=Hn,Mn=K,jn=O,zn=ht,Pn=Zn,Bn=oe,Qn=te,Dn=Tn,En=wn,On="Object already initialized",An=Mn.TypeError,_n=Mn.WeakMap;if(Fn||Qn.state){var qn=Qn.state||(Qn.state=new _n),$n=jn(qn.get),tr=jn(qn.has),er=jn(qn.set);Yn=function(t,e){if(tr(qn,t))throw new An(On);return e.facade=t,er(qn,t,e),e},Rn=function(t){return $n(qn,t)||{}},Kn=function(t){return tr(qn,t)}}else{var nr=Dn("state");En[nr]=!0,Yn=function(t,e){if(Bn(t,nr))throw new An(On);return e.facade=t,Pn(t,nr,e),e},Rn=function(t){return Bn(t,nr)?t[nr]:{}},Kn=function(t){return Bn(t,nr)}}var rr={set:Yn,get:Rn,has:Kn,enforce:function(t){return Kn(t)?Rn(t):Yn(t,{})},getterFor:function(t){return function(e){var n;if(!zn(e)||(n=Rn(e)).type!==t)throw An("Incompatible receiver, "+t+" required");return n}}},ir=J,cr=st,ar=oe,or=N,lr=Wn.CONFIGURABLE,ur=Ln,sr=rr.enforce,dr=rr.get,hr=Object.defineProperty,mr=or&&!ir((function(){return 8!==hr((function(){}),"length",{value:8}).length})),pr=String(String).split("String"),br=yn.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!ar(t,"name")||lr&&t.name!==e)&&hr(t,"name",{value:e,configurable:!0}),mr&&n&&ar(n,"arity")&&t.length!==n.arity&&hr(t,"length",{value:n.arity});try{n&&ar(n,"constructor")&&n.constructor?or&&hr(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var r=sr(t);return ar(r,"source")||(r.source=pr.join("string"==typeof e?e:"")),t};Function.prototype.toString=br((function(){return cr(this)&&dr(this).source||ur(this)}),"toString");var Zr=st,yr=Zn,Xr=yn.exports,fr=_t,Ir=function(t,e,n,r){r||(r={});var i=r.enumerable,c=void 0!==r.name?r.name:e;return Zr(n)&&Xr(n,c,r),r.global?i?t[e]=n:fr(e,n):(r.unsafe?t[e]&&(i=!0):delete t[e],i?t[e]=n:yr(t,e,n)),t},Gr={},Vr=Math.ceil,Wr=Math.floor,vr=Math.trunc||function(t){var e=+t;return(e>0?Wr:Vr)(e)},gr=vr,Sr=function(t){var e=+t;return e!=e||0===e?0:gr(e)},Yr=Sr,Rr=Math.max,Kr=Math.min,Lr=function(t,e){var n=Yr(t);return n<0?Rr(n+e,0):Kr(n,e)},Jr=Sr,Nr=Math.min,xr=function(t){return t>0?Nr(Jr(t),9007199254740991):0},Hr=xr,kr=function(t){return Hr(t.length)},Cr=ut,Ur=Lr,Tr=kr,wr=function(t){return function(e,n,r){var i,c=Cr(e),a=Tr(c),o=Ur(r,a);if(t&&n!=n){for(;a>o;)if((i=c[o++])!=i)return!0}else for(;a>o;o++)if((t||o in c)&&c[o]===n)return t||o||0;return!t&&-1}},Fr={includes:wr(!0),indexOf:wr(!1)},Mr=oe,jr=ut,zr=Fr.indexOf,Pr=wn,Br=O([].push),Qr=function(t,e){var n,r=jr(t),i=0,c=[];for(n in r)!Mr(Pr,n)&&Mr(r,n)&&Br(c,n);for(;e.length>i;)Mr(r,n=e[i++])&&(~zr(c,n)||Br(c,n));return c},Dr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Er=Qr,Or=Dr.concat("length","prototype");Gr.f=Object.getOwnPropertyNames||function(t){return Er(t,Or)};var Ar={};Ar.f=Object.getOwnPropertySymbols;var _r=Zt,qr=Gr,$r=Ar,ti=en,ei=O([].concat),ni=_r("Reflect","ownKeys")||function(t){var e=qr.f(ti(t)),n=$r.f;return n?ei(e,n(t)):e},ri=oe,ii=ni,ci=L,ai=Ae,oi=function(t,e,n){for(var r=ii(e),i=ai.f,c=ci.f,a=0;a<r.length;a++){var o=r[a];ri(t,o)||n&&ri(n,o)||i(t,o,c(e,o))}},li=J,ui=st,si=/#|\.prototype\./,di=function(t,e){var n=mi[hi(t)];return n==bi||n!=pi&&(ui(e)?li(e):!!e)},hi=di.normalize=function(t){return String(t).replace(si,".").toLowerCase()},mi=di.data={},pi=di.NATIVE="N",bi=di.POLYFILL="P",Zi=di,yi=K,Xi=L.f,fi=Zn,Ii=Ir,Gi=_t,Vi=oi,Wi=Zi,vi=function(t,e){var n,r,i,c,a,l=t.target,u=t.global,s=t.stat;if(n=u?yi:s?yi[l]||Gi(l,{}):(yi[l]||{}).prototype)for(r in e){if(c=e[r],i=t.dontCallGetSet?(a=Xi(n,r))&&a.value:n[r],!Wi(u?r:l+(s?".":"#")+r,t.forced)&&void 0!==i){if(o(c)==o(i))continue;Vi(c,i)}(t.sham||i&&i.sham)&&fi(c,"sham",!0),Ii(n,r,c,t)}},gi={};gi[We("toStringTag")]="z";var Si="[object z]"===String(gi),Yi=Si,Ri=st,Ki=$,Li=We("toStringTag"),Ji=Object,Ni="Arguments"==Ki(function(){return arguments}()),xi=Yi?Ki:function(t){var e,n,r;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Ji(t),Li))?n:Ni?Ki(e):"Object"==(r=Ki(e))&&Ri(e.callee)?"Arguments":r},Hi=xi,ki=String,Ci=function(t){if("Symbol"===Hi(t))throw TypeError("Cannot convert a Symbol value to a string");return ki(t)},Ui={},Ti=Qr,wi=Dr,Fi=Object.keys||function(t){return Ti(t,wi)},Mi=N,ji=_e,zi=Ae,Pi=en,Bi=ut,Qi=Fi;Ui.f=Mi&&!ji?Object.defineProperties:function(t,e){Pi(t);for(var n,r=Bi(e),i=Qi(e),c=i.length,a=0;c>a;)zi.f(t,n=i[a++],r[n]);return t};var Di,Ei=Zt("document","documentElement"),Oi=en,Ai=Ui,_i=Dr,qi=wn,$i=Ei,tc=Te,ec=Tn("IE_PROTO"),nc=function(){},rc=function(t){return"<script>"+t+"</"+"script>"},ic=function(t){t.write(rc("")),t.close();var e=t.parentWindow.Object;return t=null,e},cc=function(){try{Di=new ActiveXObject("htmlfile")}catch(t){}var t,e;cc="undefined"!=typeof document?document.domain&&Di?ic(Di):((e=tc("iframe")).style.display="none",$i.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(rc("document.F=Object")),t.close(),t.F):ic(Di);for(var n=_i.length;n--;)delete cc.prototype[_i[n]];return cc()};qi[ec]=!0;var ac=Object.create||function(t,e){var n;return null!==t?(nc.prototype=Oi(t),n=new nc,nc.prototype=null,n[ec]=t):n=cc(),void 0===e?n:Ai.f(n,e)},oc={},lc=He,uc=Ae,sc=z,dc=function(t,e,n){var r=lc(e);r in t?uc.f(t,r,sc(0,n)):t[r]=n},hc=Lr,mc=kr,pc=dc,bc=Array,Zc=Math.max,yc=function(t,e,n){for(var r=mc(t),i=hc(e,r),c=hc(void 0===n?r:n,r),a=bc(Zc(c-i,0)),o=0;i<c;i++,o++)pc(a,o,t[i]);return a.length=o,a},Xc=$,fc=ut,Ic=Gr.f,Gc=yc,Vc="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];oc.f=function(t){return Vc&&"Window"==Xc(t)?function(t){try{return Ic(t)}catch(t){return Gc(Vc)}}(t):Ic(fc(t))};var Wc={},vc=We;Wc.f=vc;var gc=K,Sc=oe,Yc=Wc,Rc=Ae.f,Kc=function(t){var e=gc.Symbol||(gc.Symbol={});Sc(e,t)||Rc(e,t,{value:Yc.f(t)})},Lc=C,Jc=Zt,Nc=We,xc=Ir,Hc=function(){var t=Jc("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,r=Nc("toPrimitive");e&&!e[r]&&xc(e,r,(function(t){return Lc(n,this)}),{arity:1})},kc=Ae.f,Cc=oe,Uc=We("toStringTag"),Tc=function(t,e,n){t&&!n&&(t=t.prototype),t&&!Cc(t,Uc)&&kc(t,Uc,{configurable:!0,value:e})},wc=Ft,Fc=x,Mc=O(O.bind),jc=function(t,e){return wc(t),void 0===e?t:Fc?Mc(t,e):function(){return t.apply(e,arguments)}},zc=$,Pc=Array.isArray||function(t){return"Array"==zc(t)},Bc=O,Qc=J,Dc=st,Ec=xi,Oc=Ln,Ac=function(){},_c=[],qc=Zt("Reflect","construct"),$c=/^\s*(?:class|function)\b/,ta=Bc($c.exec),ea=!$c.exec(Ac),na=function(t){if(!Dc(t))return!1;try{return qc(Ac,_c,t),!0}catch(t){return!1}},ra=function(t){if(!Dc(t))return!1;switch(Ec(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ea||!!ta($c,Oc(t))}catch(t){return!0}};ra.sham=!0;var ia=!qc||Qc((function(){var t;return na(na.call)||!na(Object)||!na((function(){t=!0}))||t}))?ra:na,ca=Pc,aa=ia,oa=ht,la=We("species"),ua=Array,sa=function(t){var e;return ca(t)&&(e=t.constructor,(aa(e)&&(e===ua||ca(e.prototype))||oa(e)&&null===(e=e[la]))&&(e=void 0)),void 0===e?ua:e},da=function(t,e){return new(sa(t))(0===e?0:e)},ha=jc,ma=it,pa=ie,ba=kr,Za=da,ya=O([].push),Xa=function(t){var e=1==t,n=2==t,r=3==t,i=4==t,c=6==t,a=7==t,o=5==t||c;return function(l,u,s,d){for(var h,m,p=pa(l),b=ma(p),Z=ha(u,s),y=ba(b),X=0,f=d||Za,I=e?f(l,y):n||a?f(l,0):void 0;y>X;X++)if((o||X in b)&&(m=Z(h=b[X],X,p),t))if(e)I[X]=m;else if(m)switch(t){case 3:return!0;case 5:return h;case 6:return X;case 2:ya(I,h)}else switch(t){case 4:return!1;case 7:ya(I,h)}return c?-1:r||i?i:I}},fa={forEach:Xa(0),map:Xa(1),filter:Xa(2),some:Xa(3),every:Xa(4),find:Xa(5),findIndex:Xa(6),filterReject:Xa(7)},Ia=vi,Ga=K,Va=C,Wa=O,va=N,ga=Rt,Sa=J,Ya=oe,Ra=yt,Ka=en,La=ut,Ja=He,Na=Ci,xa=z,Ha=ac,ka=Fi,Ca=Gr,Ua=oc,Ta=Ar,wa=L,Fa=Ae,Ma=Ui,ja=U,za=Ir,Pa=Et.exports,Ba=wn,Qa=he,Da=We,Ea=Wc,Oa=Kc,Aa=Hc,_a=Tc,qa=rr,$a=fa.forEach,to=Tn("hidden"),eo="Symbol",no=qa.set,ro=qa.getterFor(eo),io=Object.prototype,co=Ga.Symbol,ao=co&&co.prototype,oo=Ga.TypeError,lo=Ga.QObject,uo=wa.f,so=Fa.f,ho=Ua.f,mo=ja.f,po=Wa([].push),bo=Pa("symbols"),Zo=Pa("op-symbols"),yo=Pa("wks"),Xo=!lo||!lo.prototype||!lo.prototype.findChild,fo=va&&Sa((function(){return 7!=Ha(so({},"a",{get:function(){return so(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=uo(io,e);r&&delete io[e],so(t,e,n),r&&t!==io&&so(io,e,r)}:so,Io=function(t,e){var n=bo[t]=Ha(ao);return no(n,{type:eo,tag:t,description:e}),va||(n.description=e),n},Go=function(t,e,n){t===io&&Go(Zo,e,n),Ka(t);var r=Ja(e);return Ka(n),Ya(bo,r)?(n.enumerable?(Ya(t,to)&&t[to][r]&&(t[to][r]=!1),n=Ha(n,{enumerable:xa(0,!1)})):(Ya(t,to)||so(t,to,xa(1,{})),t[to][r]=!0),fo(t,r,n)):so(t,r,n)},Vo=function(t,e){Ka(t);var n=La(e),r=ka(n).concat(So(n));return $a(r,(function(e){va&&!Va(Wo,n,e)||Go(t,e,n[e])})),t},Wo=function(t){var e=Ja(t),n=Va(mo,this,e);return!(this===io&&Ya(bo,e)&&!Ya(Zo,e))&&(!(n||!Ya(this,e)||!Ya(bo,e)||Ya(this,to)&&this[to][e])||n)},vo=function(t,e){var n=La(t),r=Ja(e);if(n!==io||!Ya(bo,r)||Ya(Zo,r)){var i=uo(n,r);return!i||!Ya(bo,r)||Ya(n,to)&&n[to][r]||(i.enumerable=!0),i}},go=function(t){var e=ho(La(t)),n=[];return $a(e,(function(t){Ya(bo,t)||Ya(Ba,t)||po(n,t)})),n},So=function(t){var e=t===io,n=ho(e?Zo:La(t)),r=[];return $a(n,(function(t){!Ya(bo,t)||e&&!Ya(io,t)||po(r,bo[t])})),r};ga||(co=function(){if(Ra(ao,this))throw oo("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Na(arguments[0]):void 0,e=Qa(t),n=function t(n){this===io&&Va(t,Zo,n),Ya(this,to)&&Ya(this[to],e)&&(this[to][e]=!1),fo(this,e,xa(1,n))};return va&&Xo&&fo(io,e,{configurable:!0,set:n}),Io(e,t)},za(ao=co.prototype,"toString",(function(){return ro(this).tag})),za(co,"withoutSetter",(function(t){return Io(Qa(t),t)})),ja.f=Wo,Fa.f=Go,Ma.f=Vo,wa.f=vo,Ca.f=Ua.f=go,Ta.f=So,Ea.f=function(t){return Io(Da(t),t)},va&&(so(ao,"description",{configurable:!0,get:function(){return ro(this).description}}),za(io,"propertyIsEnumerable",Wo,{unsafe:!0}))),Ia({global:!0,constructor:!0,wrap:!0,forced:!ga,sham:!ga},{Symbol:co}),$a(ka(yo),(function(t){Oa(t)})),Ia({target:eo,stat:!0,forced:!ga},{useSetter:function(){Xo=!0},useSimple:function(){Xo=!1}}),Ia({target:"Object",stat:!0,forced:!ga,sham:!va},{create:function(t,e){return void 0===e?Ha(t):Vo(Ha(t),e)},defineProperty:Go,defineProperties:Vo,getOwnPropertyDescriptor:vo}),Ia({target:"Object",stat:!0,forced:!ga},{getOwnPropertyNames:go}),Aa(),_a(co,eo),Ba[to]=!0;var Yo=Rt&&!!Symbol.for&&!!Symbol.keyFor,Ro=vi,Ko=Zt,Lo=oe,Jo=Ci,No=Et.exports,xo=Yo,Ho=No("string-to-symbol-registry"),ko=No("symbol-to-string-registry");Ro({target:"Symbol",stat:!0,forced:!xo},{for:function(t){var e=Jo(t);if(Lo(Ho,e))return Ho[e];var n=Ko("Symbol")(e);return Ho[e]=n,ko[n]=e,n}});var Co=vi,Uo=oe,To=Ht,wo=Ct,Fo=Yo,Mo=(0,Et.exports)("symbol-to-string-registry");Co({target:"Symbol",stat:!0,forced:!Fo},{keyFor:function(t){if(!To(t))throw TypeError(wo(t)+" is not a symbol");if(Uo(Mo,t))return Mo[t]}});var jo=x,zo=Function.prototype,Po=zo.apply,Bo=zo.call,Qo="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(jo?Bo.bind(Po):function(){return Bo.apply(Po,arguments)}),Do=O([].slice),Eo=vi,Oo=Zt,Ao=Qo,_o=C,qo=O,$o=J,tl=Pc,el=st,nl=ht,rl=Ht,il=Do,cl=Rt,al=Oo("JSON","stringify"),ol=qo(/./.exec),ll=qo("".charAt),ul=qo("".charCodeAt),sl=qo("".replace),dl=qo(1..toString),hl=/[\uD800-\uDFFF]/g,ml=/^[\uD800-\uDBFF]$/,pl=/^[\uDC00-\uDFFF]$/,bl=!cl||$o((function(){var t=Oo("Symbol")();return"[null]"!=al([t])||"{}"!=al({a:t})||"{}"!=al(Object(t))})),Zl=$o((function(){return'"\\udf06\\ud834"'!==al("\udf06\ud834")||'"\\udead"'!==al("\udead")})),yl=function(t,e){var n=il(arguments),r=e;if((nl(e)||void 0!==t)&&!rl(t))return tl(e)||(e=function(t,e){if(el(r)&&(e=_o(r,this,t,e)),!rl(e))return e}),n[1]=e,Ao(al,null,n)},Xl=function(t,e,n){var r=ll(n,e-1),i=ll(n,e+1);return ol(ml,t)&&!ol(pl,i)||ol(pl,t)&&!ol(ml,r)?"\\u"+dl(ul(t,0),16):t};al&&Eo({target:"JSON",stat:!0,arity:3,forced:bl||Zl},{stringify:function(t,e,n){var r=il(arguments),i=Ao(bl?yl:al,null,r);return Zl&&"string"==typeof i?sl(i,hl,Xl):i}});var fl=Ar,Il=ie;vi({target:"Object",stat:!0,forced:!Rt||J((function(){fl.f(1)}))},{getOwnPropertySymbols:function(t){var e=fl.f;return e?e(Il(t)):[]}});var Gl=vi,Vl=N,Wl=K,vl=O,gl=oe,Sl=st,Yl=yt,Rl=Ci,Kl=Ae.f,Ll=oi,Jl=Wl.Symbol,Nl=Jl&&Jl.prototype;if(Vl&&Sl(Jl)&&(!("description"in Nl)||void 0!==Jl().description)){var xl={},Hl=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Rl(arguments[0]),e=Yl(Nl,this)?new Jl(t):void 0===t?Jl():Jl(t);return""===t&&(xl[e]=!0),e};Ll(Hl,Jl),Hl.prototype=Nl,Nl.constructor=Hl;var kl="Symbol(test)"==String(Jl("test")),Cl=vl(Nl.toString),Ul=vl(Nl.valueOf),Tl=/^Symbol\((.*)\)[^)]+$/,wl=vl("".replace),Fl=vl("".slice);Kl(Nl,"description",{configurable:!0,get:function(){var t=Ul(this),e=Cl(t);if(gl(xl,t))return"";var n=kl?Fl(e,7,-1):wl(e,Tl,"$1");return""===n?void 0:n}}),Gl({global:!0,constructor:!0,forced:!0},{Symbol:Hl})}Kc("asyncIterator"),Kc("hasInstance"),Kc("isConcatSpreadable"),Kc("iterator"),Kc("match"),Kc("matchAll"),Kc("replace"),Kc("search"),Kc("species"),Kc("split");var Ml=Hc;Kc("toPrimitive"),Ml();var jl=Zt,zl=Tc;Kc("toStringTag"),zl(jl("Symbol"),"Symbol"),Kc("unscopables");var Pl=TypeError,Bl=function(t){if(t>9007199254740991)throw Pl("Maximum allowed index exceeded");return t},Ql=J,Dl=gt,El=We("species"),Ol=function(t){return Dl>=51||!Ql((function(){var e=[];return(e.constructor={})[El]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},Al=vi,_l=J,ql=Pc,$l=ht,tu=ie,eu=kr,nu=Bl,ru=dc,iu=da,cu=Ol,au=gt,ou=We("isConcatSpreadable"),lu=au>=51||!_l((function(){var t=[];return t[ou]=!1,t.concat()[0]!==t})),uu=cu("concat"),su=function(t){if(!$l(t))return!1;var e=t[ou];return void 0!==e?!!e:ql(t)};Al({target:"Array",proto:!0,arity:1,forced:!lu||!uu},{concat:function(t){var e,n,r,i,c,a=tu(this),o=iu(a,0),l=0;for(e=-1,r=arguments.length;e<r;e++)if(su(c=-1===e?a:arguments[e]))for(i=eu(c),nu(l+i),n=0;n<i;n++,l++)n in c&&ru(o,l,c[n]);else nu(l+1),ru(o,l++,c);return o.length=l,o}});var du=Ct,hu=TypeError,mu=function(t,e){if(!delete t[e])throw hu("Cannot delete property "+du(e)+" of "+du(t))},pu=ie,bu=Lr,Zu=kr,yu=mu,Xu=Math.min,fu=[].copyWithin||function(t,e){var n=pu(this),r=Zu(n),i=bu(t,r),c=bu(e,r),a=arguments.length>2?arguments[2]:void 0,o=Xu((void 0===a?r:bu(a,r))-c,r-i),l=1;for(c<i&&i<c+o&&(l=-1,c+=o-1,i+=o-1);o-- >0;)c in n?n[i]=n[c]:yu(n,i),i+=l,c+=l;return n},Iu=We,Gu=ac,Vu=Ae.f,Wu=Iu("unscopables"),vu=Array.prototype;null==vu[Wu]&&Vu(vu,Wu,{configurable:!0,value:Gu(null)});var gu=function(t){vu[Wu][t]=!0},Su=gu;vi({target:"Array",proto:!0},{copyWithin:fu}),Su("copyWithin");var Yu=ie,Ru=Lr,Ku=kr,Lu=function(t){for(var e=Yu(this),n=Ku(e),r=arguments.length,i=Ru(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:Ru(c,n);a>i;)e[i++]=t;return e},Ju=gu;vi({target:"Array",proto:!0},{fill:Lu}),Ju("fill");var Nu=fa.filter;vi({target:"Array",proto:!0,forced:!Ol("filter")},{filter:function(t){return Nu(this,t,arguments.length>1?arguments[1]:void 0)}});var xu=vi,Hu=fa.find,ku=gu,Cu="find",Uu=!0;Cu in[]&&Array(1).find((function(){Uu=!1})),xu({target:"Array",proto:!0,forced:Uu},{find:function(t){return Hu(this,t,arguments.length>1?arguments[1]:void 0)}}),ku(Cu);var Tu=vi,wu=fa.findIndex,Fu=gu,Mu="findIndex",ju=!0;Mu in[]&&Array(1).findIndex((function(){ju=!1})),Tu({target:"Array",proto:!0,forced:ju},{findIndex:function(t){return wu(this,t,arguments.length>1?arguments[1]:void 0)}}),Fu(Mu);var zu=Pc,Pu=kr,Bu=Bl,Qu=jc,Du=function t(e,n,r,i,c,a,o,l){for(var u,s=c,d=0,h=!!o&&Qu(o,l);d<i;)d in r&&(u=h?h(r[d],d,n):r[d],a>0&&zu(u)?s=t(e,n,u,Pu(u),s,a-1)-1:(Bu(s+1),e[s]=u),s++),d++;return s},Eu=Du,Ou=ie,Au=kr,_u=Sr,qu=da;vi({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=Ou(this),n=Au(e),r=qu(e,0);return r.length=Eu(r,e,e,n,0,void 0===t?1:_u(t)),r}});var $u=Du,ts=Ft,es=ie,ns=kr,rs=da;vi({target:"Array",proto:!0},{flatMap:function(t){var e,n=es(this),r=ns(n);return ts(t),(e=rs(n,0)).length=$u(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var is=C,cs=en,as=jt,os=function(t,e,n){var r,i;cs(t);try{if(!(r=as(t,"return"))){if("throw"===e)throw n;return n}r=is(r,t)}catch(t){i=!0,r=t}if("throw"===e)throw n;if(i)throw r;return cs(r),n},ls=en,us=os,ss={},ds=ss,hs=We("iterator"),ms=Array.prototype,ps=function(t){return void 0!==t&&(ds.Array===t||ms[hs]===t)},bs=xi,Zs=jt,ys=ss,Xs=We("iterator"),fs=function(t){if(null!=t)return Zs(t,Xs)||Zs(t,"@@iterator")||ys[bs(t)]},Is=C,Gs=Ft,Vs=en,Ws=Ct,vs=fs,gs=TypeError,Ss=function(t,e){var n=arguments.length<2?vs(t):e;if(Gs(n))return Vs(Is(n,t));throw gs(Ws(t)+" is not iterable")},Ys=jc,Rs=C,Ks=ie,Ls=function(t,e,n,r){try{return r?e(ls(n)[0],n[1]):e(n)}catch(e){us(t,"throw",e)}},Js=ps,Ns=ia,xs=kr,Hs=dc,ks=Ss,Cs=fs,Us=Array,Ts=function(t){var e=Ks(t),n=Ns(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Ys(i,r>2?arguments[2]:void 0));var a,o,l,u,s,d,h=Cs(e),m=0;if(!h||this===Us&&Js(h))for(a=xs(e),o=n?new this(a):Us(a);a>m;m++)d=c?i(e[m],m):e[m],Hs(o,m,d);else for(s=(u=ks(e,h)).next,o=n?new this:[];!(l=Rs(s,u)).done;m++)d=c?Ls(u,i,[l.value,m],!0):l.value,Hs(o,m,d);return o.length=m,o},ws=We("iterator"),Fs=!1;try{var Ms=0,js={next:function(){return{done:!!Ms++}},return:function(){Fs=!0}};js[ws]=function(){return this},Array.from(js,(function(){throw 2}))}catch(t){}var zs=function(t,e){if(!e&&!Fs)return!1;var n=!1;try{var r={};r[ws]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},Ps=Ts;vi({target:"Array",stat:!0,forced:!zs((function(t){Array.from(t)}))},{from:Ps});var Bs=Fr.includes,Qs=gu;vi({target:"Array",proto:!0,forced:J((function(){return!Array(1).includes()}))},{includes:function(t){return Bs(this,t,arguments.length>1?arguments[1]:void 0)}}),Qs("includes");var Ds,Es,Os,As=!J((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),_s=oe,qs=st,$s=ie,td=As,ed=Tn("IE_PROTO"),nd=Object,rd=nd.prototype,id=td?nd.getPrototypeOf:function(t){var e=$s(t);if(_s(e,ed))return e[ed];var n=e.constructor;return qs(n)&&e instanceof n?n.prototype:e instanceof nd?rd:null},cd=J,ad=st,od=id,ld=Ir,ud=We("iterator"),sd=!1;[].keys&&("next"in(Os=[].keys())?(Es=od(od(Os)))!==Object.prototype&&(Ds=Es):sd=!0);var dd=null==Ds||cd((function(){var t={};return Ds[ud].call(t)!==t}));dd&&(Ds={}),ad(Ds[ud])||ld(Ds,ud,(function(){return this}));var hd={IteratorPrototype:Ds,BUGGY_SAFARI_ITERATORS:sd},md=hd.IteratorPrototype,pd=ac,bd=z,Zd=Tc,yd=ss,Xd=function(){return this},fd=function(t,e,n,r){var i=e+" Iterator";return t.prototype=pd(md,{next:bd(+!r,n)}),Zd(t,i,!1),yd[i]=Xd,t},Id=st,Gd=String,Vd=TypeError,Wd=function(t){if("object"==o(t)||Id(t))return t;throw Vd("Can't set "+Gd(t)+" as a prototype")},vd=O,gd=en,Sd=Wd,Yd=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=vd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return gd(n),Sd(r),e?t(n,r):n.__proto__=r,n}}():void 0),Rd=vi,Kd=C,Ld=st,Jd=fd,Nd=id,xd=Yd,Hd=Tc,kd=Zn,Cd=Ir,Ud=ss,Td=Wn.PROPER,wd=Wn.CONFIGURABLE,Fd=hd.IteratorPrototype,Md=hd.BUGGY_SAFARI_ITERATORS,jd=We("iterator"),zd="keys",Pd="values",Bd="entries",Qd=function(){return this},Dd=function(t,e,n,r,i,c,a){Jd(n,e,r);var o,l,u,s=function(t){if(t===i&&b)return b;if(!Md&&t in m)return m[t];switch(t){case zd:case Pd:case Bd:return function(){return new n(this,t)}}return function(){return new n(this)}},d=e+" Iterator",h=!1,m=t.prototype,p=m[jd]||m["@@iterator"]||i&&m[i],b=!Md&&p||s(i),Z="Array"==e&&m.entries||p;if(Z&&(o=Nd(Z.call(new t)))!==Object.prototype&&o.next&&(Nd(o)!==Fd&&(xd?xd(o,Fd):Ld(o[jd])||Cd(o,jd,Qd)),Hd(o,d,!0)),Td&&i==Pd&&p&&p.name!==Pd&&(wd?kd(m,"name",Pd):(h=!0,b=function(){return Kd(p,this)})),i)if(l={values:s(Pd),keys:c?b:s(zd),entries:s(Bd)},a)for(u in l)(Md||h||!(u in m))&&Cd(m,u,l[u]);else Rd({target:e,proto:!0,forced:Md||h},l);return m[jd]!==b&&Cd(m,jd,b,{name:i}),Ud[e]=b,l},Ed=ut,Od=gu,Ad=ss,_d=rr,qd=Ae.f,$d=Dd,th=N,eh="Array Iterator",nh=_d.set,rh=_d.getterFor(eh),ih=$d(Array,"Array",(function(t,e){nh(this,{type:eh,target:Ed(t),index:0,kind:e})}),(function(){var t=rh(this),e=t.target,n=t.kind,r=t.index++;return!e||r>=e.length?(t.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:e[r],done:!1}:{value:[r,e[r]],done:!1}}),"values"),ch=Ad.Arguments=Ad.Array;if(Od("keys"),Od("values"),Od("entries"),th&&"values"!==ch.name)try{qd(ch,"name",{value:"values"})}catch(t){}var ah=J,oh=function(t,e){var n=[][t];return!!n&&ah((function(){n.call(null,e||function(){return 1},1)}))},lh=vi,uh=it,sh=ut,dh=oh,hh=O([].join),mh=uh!=Object,ph=dh("join",",");lh({target:"Array",proto:!0,forced:mh||!ph},{join:function(t){return hh(sh(this),void 0===t?",":t)}});var bh=fa.map;vi({target:"Array",proto:!0,forced:!Ol("map")},{map:function(t){return bh(this,t,arguments.length>1?arguments[1]:void 0)}});var Zh=ia,yh=dc,Xh=Array;vi({target:"Array",stat:!0,forced:J((function(){function t(){}return!(Xh.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(Zh(this)?this:Xh)(e);e>t;)yh(n,t,arguments[t++]);return n.length=e,n}});var fh=vi,Ih=Pc,Gh=ia,Vh=ht,Wh=Lr,vh=kr,gh=ut,Sh=dc,Yh=We,Rh=Do,Kh=Ol("slice"),Lh=Yh("species"),Jh=Array,Nh=Math.max;fh({target:"Array",proto:!0,forced:!Kh},{slice:function(t,e){var n,r,i,c=gh(this),a=vh(c),o=Wh(t,a),l=Wh(void 0===e?a:e,a);if(Ih(c)&&(n=c.constructor,(Gh(n)&&(n===Jh||Ih(n.prototype))||Vh(n)&&null===(n=n[Lh]))&&(n=void 0),n===Jh||void 0===n))return Rh(c,o,l);for(r=new(void 0===n?Jh:n)(Nh(l-o,0)),i=0;o<l;o++,i++)o in c&&Sh(r,i,c[o]);return r.length=i,r}});var xh=yc,Hh=Math.floor,kh=function(t,e){for(var n,r,i=t.length,c=1;c<i;){for(r=c,n=t[c];r&&e(t[r-1],n)>0;)t[r]=t[--r];r!==c++&&(t[r]=n)}return t},Ch=function(t,e,n,r){for(var i=e.length,c=n.length,a=0,o=0;a<i||o<c;)t[a+o]=a<i&&o<c?r(e[a],n[o])<=0?e[a++]:n[o++]:a<i?e[a++]:n[o++];return t},Uh=function t(e,n){var r=e.length,i=Hh(r/2);return r<8?kh(e,n):Ch(e,t(xh(e,0,i),n),t(xh(e,i),n),n)},Th=Xt.match(/firefox\/(\d+)/i),wh=!!Th&&+Th[1],Fh=/MSIE|Trident/.test(Xt),Mh=Xt.match(/AppleWebKit\/(\d+)\./),jh=!!Mh&&+Mh[1],zh=vi,Ph=O,Bh=Ft,Qh=ie,Dh=kr,Eh=mu,Oh=Ci,Ah=J,_h=Uh,qh=oh,$h=wh,tm=Fh,em=gt,nm=jh,rm=[],im=Ph(rm.sort),cm=Ph(rm.push),am=Ah((function(){rm.sort(void 0)})),om=Ah((function(){rm.sort(null)})),lm=qh("sort"),um=!Ah((function(){if(em)return em<70;if(!($h&&$h>3)){if(tm)return!0;if(nm)return nm<603;var t,e,n,r,i="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)rm.push({k:e+r,v:n})}for(rm.sort((function(t,e){return e.v-t.v})),r=0;r<rm.length;r++)e=rm[r].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));zh({target:"Array",proto:!0,forced:am||!om||!lm||!um},{sort:function(t){void 0!==t&&Bh(t);var e=Qh(this);if(um)return void 0===t?im(e):im(e,t);var n,r,i=[],c=Dh(e);for(r=0;r<c;r++)r in e&&cm(i,e[r]);for(_h(i,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:Oh(e)>Oh(n)?1:-1}}(t)),n=i.length,r=0;r<n;)e[r]=i[r++];for(;r<c;)Eh(e,r++);return e}});var sm=Zt,dm=Ae,hm=N,mm=We("species"),pm=function(t){var e=sm(t),n=dm.f;hm&&e&&!e[mm]&&n(e,mm,{configurable:!0,get:function(){return this}})};pm("Array");var bm=vi,Zm=ie,ym=Lr,Xm=Sr,fm=kr,Im=Bl,Gm=da,Vm=dc,Wm=mu,vm=Ol("splice"),gm=Math.max,Sm=Math.min;bm({target:"Array",proto:!0,forced:!vm},{splice:function(t,e){var n,r,i,c,a,o,l=Zm(this),u=fm(l),s=ym(t,u),d=arguments.length;for(0===d?n=r=0:1===d?(n=0,r=u-s):(n=d-2,r=Sm(gm(Xm(e),0),u-s)),Im(u+n-r),i=Gm(l,r),c=0;c<r;c++)(a=s+c)in l&&Vm(i,c,l[a]);if(i.length=r,n<r){for(c=s;c<u-r;c++)o=c+n,(a=c+r)in l?l[o]=l[a]:Wm(l,o);for(c=u;c>u-r+n;c--)Wm(l,c-1)}else if(n>r)for(c=u-r;c>s;c--)o=c+n-1,(a=c+r-1)in l?l[o]=l[a]:Wm(l,o);for(c=0;c<n;c++)l[c+s]=arguments[c+2];return l.length=u-r+n,i}}),gu("flat"),gu("flatMap");var Ym="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Rm=Ir,Km=function(t,e,n){for(var r in e)Rm(t,r,e[r],n);return t},Lm=yt,Jm=TypeError,Nm=function(t,e){if(Lm(e,t))return t;throw Jm("Incorrect invocation")},xm=Sr,Hm=xr,km=RangeError,Cm=function(t){if(void 0===t)return 0;var e=xm(t),n=Hm(e);if(e!==n)throw km("Wrong length or index");return n},Um=Array,Tm=Math.abs,wm=Math.pow,Fm=Math.floor,Mm=Math.log,jm=Math.LN2,zm={pack:function(t,e,n){var r,i,c,a=Um(n),o=8*n-e-1,l=(1<<o)-1,u=l>>1,s=23===e?wm(2,-24)-wm(2,-77):0,d=t<0||0===t&&1/t<0?1:0,h=0;for((t=Tm(t))!=t||t===1/0?(i=t!=t?1:0,r=l):(r=Fm(Mm(t)/jm),t*(c=wm(2,-r))<1&&(r--,c*=2),(t+=r+u>=1?s/c:s*wm(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(t*c-1)*wm(2,e),r+=u):(i=t*wm(2,u-1)*wm(2,e),r=0));e>=8;)a[h++]=255&i,i/=256,e-=8;for(r=r<<e|i,o+=e;o>0;)a[h++]=255&r,r/=256,o-=8;return a[--h]|=128*d,a},unpack:function(t,e){var n,r=t.length,i=8*r-e-1,c=(1<<i)-1,a=c>>1,o=i-7,l=r-1,u=t[l--],s=127&u;for(u>>=7;o>0;)s=256*s+t[l--],o-=8;for(n=s&(1<<-o)-1,s>>=-o,o+=e;o>0;)n=256*n+t[l--],o-=8;if(0===s)s=1-a;else{if(s===c)return n?NaN:u?-1/0:1/0;n+=wm(2,e),s-=a}return(u?-1:1)*n*wm(2,s-e)}},Pm=K,Bm=O,Qm=N,Dm=Ym,Em=Wn,Om=Zn,Am=Km,_m=J,qm=Nm,$m=Sr,tp=xr,ep=Cm,np=zm,rp=id,ip=Yd,cp=Gr.f,ap=Ae.f,op=Lu,lp=yc,up=Tc,sp=Em.PROPER,dp=Em.CONFIGURABLE,hp=rr.get,mp=rr.set,pp="ArrayBuffer",bp="DataView",Zp="Wrong index",yp=Pm.ArrayBuffer,Xp=yp,fp=Xp&&Xp.prototype,Ip=Pm.DataView,Gp=Ip&&Ip.prototype,Vp=Object.prototype,Wp=Pm.Array,vp=Pm.RangeError,gp=Bm(op),Sp=Bm([].reverse),Yp=np.pack,Rp=np.unpack,Kp=function(t){return[255&t]},Lp=function(t){return[255&t,t>>8&255]},Jp=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},Np=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},xp=function(t){return Yp(t,23,4)},Hp=function(t){return Yp(t,52,8)},kp=function(t,e){ap(t.prototype,e,{get:function(){return hp(this)[e]}})},Cp=function(t,e,n,r){var i=ep(n),c=hp(t);if(i+e>c.byteLength)throw vp(Zp);var a=hp(c.buffer).bytes,o=i+c.byteOffset,l=lp(a,o,o+e);return r?l:Sp(l)},Up=function(t,e,n,r,i,c){var a=ep(n),o=hp(t);if(a+e>o.byteLength)throw vp(Zp);for(var l=hp(o.buffer).bytes,u=a+o.byteOffset,s=r(+i),d=0;d<e;d++)l[u+d]=s[c?d:e-d-1]};if(Dm){var Tp=sp&&yp.name!==pp;if(_m((function(){yp(1)}))&&_m((function(){new yp(-1)}))&&!_m((function(){return new yp,new yp(1.5),new yp(NaN),Tp&&!dp})))Tp&&dp&&Om(yp,"name",pp);else{(Xp=function(t){return qm(this,fp),new yp(ep(t))}).prototype=fp;for(var wp,Fp=cp(yp),Mp=0;Fp.length>Mp;)(wp=Fp[Mp++])in Xp||Om(Xp,wp,yp[wp]);fp.constructor=Xp}ip&&rp(Gp)!==Vp&&ip(Gp,Vp);var jp=new Ip(new Xp(2)),zp=Bm(Gp.setInt8);jp.setInt8(0,2147483648),jp.setInt8(1,2147483649),!jp.getInt8(0)&&jp.getInt8(1)||Am(Gp,{setInt8:function(t,e){zp(this,t,e<<24>>24)},setUint8:function(t,e){zp(this,t,e<<24>>24)}},{unsafe:!0})}else Xp=function(t){qm(this,fp);var e=ep(t);mp(this,{bytes:gp(Wp(e),0),byteLength:e}),Qm||(this.byteLength=e)},fp=Xp.prototype,Ip=function(t,e,n){qm(this,Gp),qm(t,fp);var r=hp(t).byteLength,i=$m(e);if(i<0||i>r)throw vp("Wrong offset");if(i+(n=void 0===n?r-i:tp(n))>r)throw vp("Wrong length");mp(this,{buffer:t,byteLength:n,byteOffset:i}),Qm||(this.buffer=t,this.byteLength=n,this.byteOffset=i)},Gp=Ip.prototype,Qm&&(kp(Xp,"byteLength"),kp(Ip,"buffer"),kp(Ip,"byteLength"),kp(Ip,"byteOffset")),Am(Gp,{getInt8:function(t){return Cp(this,1,t)[0]<<24>>24},getUint8:function(t){return Cp(this,1,t)[0]},getInt16:function(t){var e=Cp(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Cp(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return Np(Cp(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return Np(Cp(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Rp(Cp(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Rp(Cp(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){Up(this,1,t,Kp,e)},setUint8:function(t,e){Up(this,1,t,Kp,e)},setInt16:function(t,e){Up(this,2,t,Lp,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){Up(this,2,t,Lp,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){Up(this,4,t,Jp,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){Up(this,4,t,Jp,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){Up(this,4,t,xp,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){Up(this,8,t,Hp,e,arguments.length>2?arguments[2]:void 0)}});up(Xp,pp),up(Ip,bp);var Pp={ArrayBuffer:Xp,DataView:Ip},Bp=pm,Qp="ArrayBuffer",Dp=Pp.ArrayBuffer;vi({global:!0,constructor:!0,forced:K.ArrayBuffer!==Dp},{ArrayBuffer:Dp}),Bp(Qp);var Ep=en,Op=Dt,Ap=TypeError,_p=oe,qp=Ir,$p=function(t){if(Ep(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw Ap("Incorrect hint");return Op(this,t)},tb=We("toPrimitive"),eb=Date.prototype;_p(eb,tb)||qp(eb,tb,$p);var nb=st,rb=ht,ib=Ae,cb=id,ab=We,ob=yn.exports,lb=ab("hasInstance"),ub=Function.prototype;lb in ub||ib.f(ub,lb,{value:ob((function(t){if(!nb(this)||!rb(t))return!1;var e=this.prototype;if(!rb(e))return t instanceof this;for(;t=cb(t);)if(e===t)return!0;return!1}),lb)});var sb=N,db=Wn.EXISTS,hb=O,mb=Ae.f,pb=Function.prototype,bb=hb(pb.toString),Zb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,yb=hb(Zb.exec);sb&&!db&&mb(pb,"name",{configurable:!0,get:function(){try{return yb(Zb,bb(this))[1]}catch(t){return""}}}),vi({global:!0},{globalThis:K}),Tc(K.JSON,"JSON",!0);var Xb={exports:{}},fb=J((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),Ib=J,Gb=ht,Vb=$,Wb=fb,vb=Object.isExtensible,gb=Ib((function(){vb(1)}))||Wb?function(t){return!!Gb(t)&&((!Wb||"ArrayBuffer"!=Vb(t))&&(!vb||vb(t)))}:vb,Sb=!J((function(){return Object.isExtensible(Object.preventExtensions({}))})),Yb=vi,Rb=O,Kb=wn,Lb=ht,Jb=oe,Nb=Ae.f,xb=Gr,Hb=oc,kb=gb,Cb=Sb,Ub=!1,Tb=he("meta"),wb=0,Fb=function(t){Nb(t,Tb,{value:{objectID:"O"+wb++,weakData:{}}})},Mb=Xb.exports={enable:function(){Mb.enable=function(){},Ub=!0;var t=xb.f,e=Rb([].splice),n={};n[Tb]=1,t(n).length&&(xb.f=function(n){for(var r=t(n),i=0,c=r.length;i<c;i++)if(r[i]===Tb){e(r,i,1);break}return r},Yb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Hb.f}))},fastKey:function(t,e){if(!Lb(t))return"symbol"==o(t)?t:("string"==typeof t?"S":"P")+t;if(!Jb(t,Tb)){if(!kb(t))return"F";if(!e)return"E";Fb(t)}return t[Tb].objectID},getWeakData:function(t,e){if(!Jb(t,Tb)){if(!kb(t))return!0;if(!e)return!1;Fb(t)}return t[Tb].weakData},onFreeze:function(t){return Cb&&Ub&&kb(t)&&!Jb(t,Tb)&&Fb(t),t}};Kb[Tb]=!0;var jb=jc,zb=C,Pb=en,Bb=Ct,Qb=ps,Db=kr,Eb=yt,Ob=Ss,Ab=fs,_b=os,qb=TypeError,$b=function(t,e){this.stopped=t,this.result=e},tZ=$b.prototype,eZ=function(t,e,n){var r,i,c,a,l,u,s,d=n&&n.that,h=!(!n||!n.AS_ENTRIES),m=!(!n||!n.IS_ITERATOR),p=!(!n||!n.INTERRUPTED),b=jb(e,d),Z=function(t){return r&&_b(r,"normal",t),new $b(!0,t)},y=function(t){return h?(Pb(t),p?b(t[0],t[1],Z):b(t[0],t[1])):p?b(t,Z):b(t)};if(m)r=t;else{if(!(i=Ab(t)))throw qb(Bb(t)+" is not iterable");if(Qb(i)){for(c=0,a=Db(t);a>c;c++)if((l=y(t[c]))&&Eb(tZ,l))return l;return new $b(!1)}r=Ob(t,i)}for(u=r.next;!(s=zb(u,r)).done;){try{l=y(s.value)}catch(t){_b(r,"throw",t)}if("object"==o(l)&&l&&Eb(tZ,l))return l}return new $b(!1)},nZ=st,rZ=ht,iZ=Yd,cZ=function(t,e,n){var r,i;return iZ&&nZ(r=e.constructor)&&r!==n&&rZ(i=r.prototype)&&i!==n.prototype&&iZ(t,i),t},aZ=vi,oZ=K,lZ=O,uZ=Zi,sZ=Ir,dZ=Xb.exports,hZ=eZ,mZ=Nm,pZ=st,bZ=ht,ZZ=J,yZ=zs,XZ=Tc,fZ=cZ,IZ=function(t,e,n){var r=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),c=r?"set":"add",a=oZ[t],o=a&&a.prototype,l=a,u={},s=function(t){var e=lZ(o[t]);sZ(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!bZ(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return i&&!bZ(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!bZ(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(uZ(t,!pZ(a)||!(i||o.forEach&&!ZZ((function(){(new a).entries().next()})))))l=n.getConstructor(e,t,r,c),dZ.enable();else if(uZ(t,!0)){var d=new l,h=d[c](i?{}:-0,1)!=d,m=ZZ((function(){d.has(1)})),p=yZ((function(t){new a(t)})),b=!i&&ZZ((function(){for(var t=new a,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((l=e((function(t,e){mZ(t,o);var n=fZ(new a,t,l);return null!=e&&hZ(e,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=l),(m||b)&&(s("delete"),s("has"),r&&s("get")),(b||h)&&s(c),i&&o.clear&&delete o.clear}return u[t]=l,aZ({global:!0,constructor:!0,forced:l!=a},u),XZ(l,t),i||n.setStrong(l,t,r),l},GZ=Ae.f,VZ=ac,WZ=Km,vZ=jc,gZ=Nm,SZ=eZ,YZ=Dd,RZ=pm,KZ=N,LZ=Xb.exports.fastKey,JZ=rr.set,NZ=rr.getterFor,xZ={getConstructor:function(t,e,n,r){var i=t((function(t,i){gZ(t,c),JZ(t,{type:e,index:VZ(null),first:void 0,last:void 0,size:0}),KZ||(t.size=0),null!=i&&SZ(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=NZ(e),o=function(t,e,n){var r,i,c=a(t),o=l(t,e);return o?o.value=n:(c.last=o={index:i=LZ(e,!0),key:e,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),KZ?c.size++:t.size++,"F"!==i&&(c.index[i]=o)),t},l=function(t,e){var n,r=a(t),i=LZ(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return WZ(c,{clear:function(){for(var t=a(this),e=t.index,n=t.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete e[n.index],n=n.next;t.first=t.last=void 0,KZ?t.size=0:this.size=0},delete:function(t){var e=this,n=a(e),r=l(e,t);if(r){var i=r.next,c=r.previous;delete n.index[r.index],r.removed=!0,c&&(c.next=i),i&&(i.previous=c),n.first==r&&(n.first=i),n.last==r&&(n.last=c),KZ?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=a(this),r=vZ(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:n.first;)for(r(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!l(this,t)}}),WZ(c,n?{get:function(t){var e=l(this,t);return e&&e.value},set:function(t,e){return o(this,0===t?0:t,e)}}:{add:function(t){return o(this,t=0===t?0:t,t)}}),KZ&&GZ(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(t,e,n){var r=e+" Iterator",i=NZ(e),c=NZ(r);YZ(t,e,(function(t,e){JZ(this,{type:r,target:t,state:i(t),kind:e,last:void 0})}),(function(){for(var t=c(this),e=t.kind,n=t.last;n&&n.removed;)n=n.previous;return t.target&&(t.last=n=n?n.next:t.state.first)?"keys"==e?{value:n.key,done:!1}:"values"==e?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(t.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),RZ(e)}};IZ("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),xZ);var HZ=Math.log,kZ=Math.log1p||function(t){var e=+t;return e>-1e-8&&e<1e-8?e-e*e/2:HZ(1+e)},CZ=vi,UZ=kZ,TZ=Math.acosh,wZ=Math.log,FZ=Math.sqrt,MZ=Math.LN2;CZ({target:"Math",stat:!0,forced:!TZ||710!=Math.floor(TZ(Number.MAX_VALUE))||TZ(1/0)!=1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?wZ(e)+MZ:UZ(e-1+FZ(e-1)*FZ(e+1))}});var jZ=vi,zZ=Math.asinh,PZ=Math.log,BZ=Math.sqrt;jZ({target:"Math",stat:!0,forced:!(zZ&&1/zZ(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!=n?n<0?-t(-n):PZ(n+BZ(n*n+1)):n}});var QZ=vi,DZ=Math.atanh,EZ=Math.log;QZ({target:"Math",stat:!0,forced:!(DZ&&1/DZ(-0)<0)},{atanh:function(t){var e=+t;return 0==e?e:EZ((1+e)/(1-e))/2}});var OZ=Math.sign||function(t){var e=+t;return 0==e||e!=e?e:e<0?-1:1},AZ=vi,_Z=OZ,qZ=Math.abs,$Z=Math.pow;AZ({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return _Z(e)*$Z(qZ(e),1/3)}});var ty=vi,ey=Math.floor,ny=Math.log,ry=Math.LOG2E;ty({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-ey(ny(e+.5)*ry):32}});var iy=Math.expm1,cy=Math.exp,ay=!iy||iy(10)>22025.465794806718||iy(10)<22025.465794806718||-2e-17!=iy(-2e-17)?function(t){var e=+t;return 0==e?e:e>-1e-6&&e<1e-6?e+e*e/2:cy(e)-1}:iy,oy=vi,ly=ay,uy=Math.cosh,sy=Math.abs,dy=Math.E;oy({target:"Math",stat:!0,forced:!uy||uy(710)===1/0},{cosh:function(t){var e=ly(sy(t)-1)+1;return(e+1/(e*dy*dy))*(dy/2)}});var hy=ay;vi({target:"Math",stat:!0,forced:hy!=Math.expm1},{expm1:hy});var my=OZ,py=Math.abs,by=Math.pow,Zy=by(2,-52),yy=by(2,-23),Xy=by(2,127)*(2-yy),fy=by(2,-126),Iy=Math.fround||function(t){var e,n,r=+t,i=py(r),c=my(r);return i<fy?c*function(t){return t+1/Zy-1/Zy}(i/fy/yy)*fy*yy:(n=(e=(1+yy/Zy)*i)-(e-i))>Xy||n!=n?c*(1/0):c*n};vi({target:"Math",stat:!0},{fround:Iy});var Gy=vi,Vy=Math.hypot,Wy=Math.abs,vy=Math.sqrt;Gy({target:"Math",stat:!0,arity:2,forced:!!Vy&&Vy(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,r,i=0,c=0,a=arguments.length,o=0;c<a;)o<(n=Wy(arguments[c++]))?(i=i*(r=o/n)*r+1,o=n):i+=n>0?(r=n/o)*r:n;return o===1/0?1/0:o*vy(i)}});var gy=vi,Sy=J,Yy=Math.imul;gy({target:"Math",stat:!0,forced:Sy((function(){return-5!=Yy(4294967295,5)||2!=Yy.length}))},{imul:function(t,e){var n=65535,r=+t,i=+e,c=n&r,a=n&i;return 0|c*a+((n&r>>>16)*a+c*(n&i>>>16)<<16>>>0)}});var Ry=Math.log,Ky=Math.LOG10E;vi({target:"Math",stat:!0},{log10:Math.log10||function(t){return Ry(t)*Ky}}),vi({target:"Math",stat:!0},{log1p:kZ});var Ly=vi,Jy=Math.log,Ny=Math.LN2;Ly({target:"Math",stat:!0},{log2:function(t){return Jy(t)/Ny}}),vi({target:"Math",stat:!0},{sign:OZ});var xy=vi,Hy=J,ky=ay,Cy=Math.abs,Uy=Math.exp,Ty=Math.E;xy({target:"Math",stat:!0,forced:Hy((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return Cy(e)<1?(ky(e)-ky(-e))/2:(Uy(e-1)-Uy(-e-1))*(Ty/2)}});var wy=vi,Fy=ay,My=Math.exp;wy({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=Fy(e),r=Fy(-e);return n==1/0?1:r==1/0?-1:(n-r)/(My(e)+My(-e))}}),Tc(Math,"Math",!0),vi({target:"Math",stat:!0},{trunc:vr});var jy=O(1..valueOf),zy="\t\n\v\f\r                 \u2028\u2029\ufeff",Py=at,By=Ci,Qy=O("".replace),Dy="[\t\n\v\f\r                 \u2028\u2029\ufeff]",Ey=RegExp("^"+Dy+Dy+"*"),Oy=RegExp(Dy+Dy+"*$"),Ay=function(t){return function(e){var n=By(Py(e));return 1&t&&(n=Qy(n,Ey,"")),2&t&&(n=Qy(n,Oy,"")),n}},_y={start:Ay(1),end:Ay(2),trim:Ay(3)},qy=N,$y=K,tX=O,eX=Zi,nX=Ir,rX=oe,iX=cZ,cX=yt,aX=Ht,oX=Je,lX=J,uX=Gr.f,sX=L.f,dX=Ae.f,hX=jy,mX=_y.trim,pX="Number",bX=$y.Number,ZX=bX.prototype,yX=$y.TypeError,XX=tX("".slice),fX=tX("".charCodeAt),IX=function(t){var e=oX(t,"number");return"bigint"==typeof e?e:GX(e)},GX=function(t){var e,n,r,i,c,a,o,l,u=oX(t,"number");if(aX(u))throw yX("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=mX(u),43===(e=fX(u,0))||45===e){if(88===(n=fX(u,2))||120===n)return NaN}else if(48===e){switch(fX(u,1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+u}for(a=(c=XX(u,2)).length,o=0;o<a;o++)if((l=fX(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(eX(pX,!bX(" 0o1")||!bX("0b1")||bX("+0x1"))){for(var VX,WX=function(t){var e=arguments.length<1?0:bX(IX(t)),n=this;return cX(ZX,n)&&lX((function(){hX(n)}))?iX(Object(e),n,WX):e},vX=qy?uX(bX):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),gX=0;vX.length>gX;gX++)rX(bX,VX=vX[gX])&&!rX(WX,VX)&&dX(WX,VX,sX(bX,VX));WX.prototype=ZX,ZX.constructor=WX,nX($y,pX,WX,{constructor:!0})}vi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var SX=K.isFinite;vi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&SX(t)}});var YX=ht,RX=Math.floor,KX=Number.isInteger||function(t){return!YX(t)&&isFinite(t)&&RX(t)===t};vi({target:"Number",stat:!0},{isInteger:KX}),vi({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var LX=vi,JX=KX,NX=Math.abs;LX({target:"Number",stat:!0},{isSafeInteger:function(t){return JX(t)&&NX(t)<=9007199254740991}}),vi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),vi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var xX=K,HX=J,kX=Ci,CX=_y.trim,UX=O("".charAt),TX=xX.parseFloat,wX=xX.Symbol,FX=wX&&wX.iterator,MX=1/TX("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||FX&&!HX((function(){TX(Object(FX))}))?function(t){var e=CX(kX(t)),n=TX(e);return 0===n&&"-"==UX(e,0)?-0:n}:TX;vi({target:"Number",stat:!0,forced:Number.parseFloat!=MX},{parseFloat:MX});var jX=K,zX=J,PX=O,BX=Ci,QX=_y.trim,DX=zy,EX=jX.parseInt,OX=jX.Symbol,AX=OX&&OX.iterator,_X=/^[+-]?0x/i,qX=PX(_X.exec),$X=8!==EX(DX+"08")||22!==EX(DX+"0x16")||AX&&!zX((function(){EX(Object(AX))}))?function(t,e){var n=QX(BX(t));return EX(n,e>>>0||(qX(_X,n)?16:10))}:EX,tf=$X;vi({target:"Number",stat:!0,forced:Number.parseInt!=tf},{parseInt:tf});var ef=Sr,nf=Ci,rf=at,cf=RangeError,af=function(t){var e=nf(rf(this)),n="",r=ef(t);if(r<0||r==1/0)throw cf("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(e+=e))1&r&&(n+=e);return n},of=vi,lf=O,uf=Sr,sf=jy,df=af,hf=J,mf=RangeError,pf=String,bf=Math.floor,Zf=lf(df),yf=lf("".slice),Xf=lf(1..toFixed),ff=function t(e,n,r){return 0===n?r:n%2==1?t(e,n-1,r*e):t(e*e,n/2,r)},If=function(t,e,n){for(var r=-1,i=n;++r<6;)i+=e*t[r],t[r]=i%1e7,i=bf(i/1e7)},Gf=function(t,e){for(var n=6,r=0;--n>=0;)r+=t[n],t[n]=bf(r/e),r=r%e*1e7},Vf=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var r=pf(t[e]);n=""===n?r:n+Zf("0",7-r.length)+r}return n};of({target:"Number",proto:!0,forced:hf((function(){return"0.000"!==Xf(8e-5,3)||"1"!==Xf(.9,0)||"1.25"!==Xf(1.255,2)||"1000000000000000128"!==Xf(0xde0b6b3a7640080,0)}))||!hf((function(){Xf({})}))},{toFixed:function(t){var e,n,r,i,c=sf(this),a=uf(t),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw mf("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return pf(c);if(c<0&&(l="-",c=-c),c>1e-21)if(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(c*ff(2,69,1))-69,n=e<0?c*ff(2,-e,1):c/ff(2,e,1),n*=4503599627370496,(e=52-e)>0){for(If(o,0,n),r=a;r>=7;)If(o,1e7,0),r-=7;for(If(o,ff(10,r,1),0),r=e-1;r>=23;)Gf(o,1<<23),r-=23;Gf(o,1<<r),If(o,1,1),Gf(o,2),u=Vf(o)}else If(o,0,n),If(o,1<<-e,0),u=Vf(o)+Zf("0",a);return u=a>0?l+((i=u.length)<=a?"0."+Zf("0",a-i)+u:yf(u,0,i-a)+"."+yf(u,i-a)):l+u}});var Wf=N,vf=O,gf=C,Sf=J,Yf=Fi,Rf=Ar,Kf=U,Lf=ie,Jf=it,Nf=Object.assign,xf=Object.defineProperty,Hf=vf([].concat),kf=!Nf||Sf((function(){if(Wf&&1!==Nf({b:1},Nf(xf({},"a",{enumerable:!0,get:function(){xf(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),r="abcdefghijklmnopqrst";return t[n]=7,r.split("").forEach((function(t){e[t]=t})),7!=Nf({},t)[n]||Yf(Nf({},e)).join("")!=r}))?function(t,e){for(var n=Lf(t),r=arguments.length,i=1,c=Rf.f,a=Kf.f;r>i;)for(var o,l=Jf(arguments[i++]),u=c?Hf(Yf(l),c(l)):Yf(l),s=u.length,d=0;s>d;)o=u[d++],Wf&&!gf(a,l,o)||(n[o]=l[o]);return n}:Nf,Cf=kf;vi({target:"Object",stat:!0,arity:2,forced:Object.assign!==Cf},{assign:Cf});var Uf=K,Tf=jh,wf=!J((function(){if(!(Tf&&Tf<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete Uf[t]}})),Ff=Ft,Mf=ie,jf=Ae;N&&vi({target:"Object",proto:!0,forced:wf},{__defineGetter__:function(t,e){jf.f(Mf(this),t,{get:Ff(e),enumerable:!0,configurable:!0})}});var zf=Ft,Pf=ie,Bf=Ae;N&&vi({target:"Object",proto:!0,forced:wf},{__defineSetter__:function(t,e){Bf.f(Pf(this),t,{set:zf(e),enumerable:!0,configurable:!0})}});var Qf=N,Df=O,Ef=Fi,Of=ut,Af=Df(U.f),_f=Df([].push),qf=function(t){return function(e){for(var n,r=Of(e),i=Ef(r),c=i.length,a=0,o=[];c>a;)n=i[a++],Qf&&!Af(r,n)||_f(o,t?[n,r[n]]:r[n]);return o}},$f={entries:qf(!0),values:qf(!1)},tI=$f.entries;vi({target:"Object",stat:!0},{entries:function(t){return tI(t)}});var eI=vi,nI=Sb,rI=J,iI=ht,cI=Xb.exports.onFreeze,aI=Object.freeze;eI({target:"Object",stat:!0,forced:rI((function(){aI(1)})),sham:!nI},{freeze:function(t){return aI&&iI(t)?aI(cI(t)):t}});var oI=eZ,lI=dc;vi({target:"Object",stat:!0},{fromEntries:function(t){var e={};return oI(t,(function(t,n){lI(e,t,n)}),{AS_ENTRIES:!0}),e}});var uI=vi,sI=J,dI=ut,hI=L.f,mI=N,pI=sI((function(){hI(1)}));uI({target:"Object",stat:!0,forced:!mI||pI,sham:!mI},{getOwnPropertyDescriptor:function(t,e){return hI(dI(t),e)}});var bI=ni,ZI=ut,yI=L,XI=dc;vi({target:"Object",stat:!0,sham:!N},{getOwnPropertyDescriptors:function(t){for(var e,n,r=ZI(t),i=yI.f,c=bI(r),a={},o=0;c.length>o;)void 0!==(n=i(r,e=c[o++]))&&XI(a,e,n);return a}});var fI=vi,II=J,GI=oc.f;fI({target:"Object",stat:!0,forced:II((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:GI});var VI=ie,WI=id,vI=As;vi({target:"Object",stat:!0,forced:J((function(){WI(1)})),sham:!vI},{getPrototypeOf:function(t){return WI(VI(t))}});var gI=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};vi({target:"Object",stat:!0},{is:gI});var SI=gb;vi({target:"Object",stat:!0,forced:Object.isExtensible!==SI},{isExtensible:SI});var YI=vi,RI=J,KI=ht,LI=$,JI=fb,NI=Object.isFrozen;YI({target:"Object",stat:!0,forced:RI((function(){NI(1)}))||JI},{isFrozen:function(t){return!KI(t)||(!(!JI||"ArrayBuffer"!=LI(t))||!!NI&&NI(t))}});var xI=vi,HI=J,kI=ht,CI=$,UI=fb,TI=Object.isSealed;xI({target:"Object",stat:!0,forced:HI((function(){TI(1)}))||UI},{isSealed:function(t){return!kI(t)||(!(!UI||"ArrayBuffer"!=CI(t))||!!TI&&TI(t))}});var wI=ie,FI=Fi;vi({target:"Object",stat:!0,forced:J((function(){FI(1)}))},{keys:function(t){return FI(wI(t))}});var MI=vi,jI=N,zI=wf,PI=ie,BI=He,QI=id,DI=L.f;jI&&MI({target:"Object",proto:!0,forced:zI},{__lookupGetter__:function(t){var e,n=PI(this),r=BI(t);do{if(e=DI(n,r))return e.get}while(n=QI(n))}});var EI=vi,OI=N,AI=wf,_I=ie,qI=He,$I=id,tG=L.f;OI&&EI({target:"Object",proto:!0,forced:AI},{__lookupSetter__:function(t){var e,n=_I(this),r=qI(t);do{if(e=tG(n,r))return e.set}while(n=$I(n))}});var eG=vi,nG=ht,rG=Xb.exports.onFreeze,iG=Sb,cG=J,aG=Object.preventExtensions;eG({target:"Object",stat:!0,forced:cG((function(){aG(1)})),sham:!iG},{preventExtensions:function(t){return aG&&nG(t)?aG(rG(t)):t}});var oG=vi,lG=ht,uG=Xb.exports.onFreeze,sG=Sb,dG=J,hG=Object.seal;oG({target:"Object",stat:!0,forced:dG((function(){hG(1)})),sham:!sG},{seal:function(t){return hG&&lG(t)?hG(uG(t)):t}});var mG=xi,pG=Si?{}.toString:function(){return"[object "+mG(this)+"]"};Si||Ir(Object.prototype,"toString",pG,{unsafe:!0});var bG=$f.values;vi({target:"Object",stat:!0},{values:function(t){return bG(t)}});var ZG,yG,XG,fG,IG="process"==$(K.process),GG=ia,VG=Ct,WG=TypeError,vG=function(t){if(GG(t))return t;throw WG(VG(t)+" is not a constructor")},gG=en,SG=vG,YG=We("species"),RG=function(t,e){var n,r=gG(t).constructor;return void 0===r||null==(n=gG(r)[YG])?e:SG(n)},KG=TypeError,LG=function(t,e){if(t<e)throw KG("Not enough arguments");return t},JG=/(?:ipad|iphone|ipod).*applewebkit/i.test(Xt),NG=K,xG=Qo,HG=jc,kG=st,CG=oe,UG=J,TG=Ei,wG=Do,FG=Te,MG=LG,jG=JG,zG=IG,PG=NG.setImmediate,BG=NG.clearImmediate,QG=NG.process,DG=NG.Dispatch,EG=NG.Function,OG=NG.MessageChannel,AG=NG.String,_G=0,qG={},$G="onreadystatechange";try{ZG=NG.location}catch(t){}var tV=function(t){if(CG(qG,t)){var e=qG[t];delete qG[t],e()}},eV=function(t){return function(){tV(t)}},nV=function(t){tV(t.data)},rV=function(t){NG.postMessage(AG(t),ZG.protocol+"//"+ZG.host)};PG&&BG||(PG=function(t){MG(arguments.length,1);var e=kG(t)?t:EG(t),n=wG(arguments,1);return qG[++_G]=function(){xG(e,void 0,n)},yG(_G),_G},BG=function(t){delete qG[t]},zG?yG=function(t){QG.nextTick(eV(t))}:DG&&DG.now?yG=function(t){DG.now(eV(t))}:OG&&!jG?(fG=(XG=new OG).port2,XG.port1.onmessage=nV,yG=HG(fG.postMessage,fG)):NG.addEventListener&&kG(NG.postMessage)&&!NG.importScripts&&ZG&&"file:"!==ZG.protocol&&!UG(rV)?(yG=rV,NG.addEventListener("message",nV,!1)):yG=$G in FG("script")?function(t){TG.appendChild(FG("script")).onreadystatechange=function(){TG.removeChild(this),tV(t)}}:function(t){setTimeout(eV(t),0)});var iV,cV,aV,oV,lV,uV,sV,dV,hV={set:PG,clear:BG},mV=K,pV=/ipad|iphone|ipod/i.test(Xt)&&void 0!==mV.Pebble,bV=/web0s(?!.*chrome)/i.test(Xt),ZV=K,yV=jc,XV=L.f,fV=hV.set,IV=JG,GV=pV,VV=bV,WV=IG,vV=ZV.MutationObserver||ZV.WebKitMutationObserver,gV=ZV.document,SV=ZV.process,YV=ZV.Promise,RV=XV(ZV,"queueMicrotask"),KV=RV&&RV.value;KV||(iV=function(){var t,e;for(WV&&(t=SV.domain)&&t.exit();cV;){e=cV.fn,cV=cV.next;try{e()}catch(t){throw cV?oV():aV=void 0,t}}aV=void 0,t&&t.enter()},IV||WV||VV||!vV||!gV?!GV&&YV&&YV.resolve?((sV=YV.resolve(void 0)).constructor=YV,dV=yV(sV.then,sV),oV=function(){dV(iV)}):WV?oV=function(){SV.nextTick(iV)}:(fV=yV(fV,ZV),oV=function(){fV(iV)}):(lV=!0,uV=gV.createTextNode(""),new vV(iV).observe(uV,{characterData:!0}),oV=function(){uV.data=lV=!lV}));var LV=KV||function(t){var e={fn:t,next:void 0};aV&&(aV.next=e),cV||(cV=e,oV()),aV=e},JV=K,NV=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},xV=function(){this.head=null,this.tail=null};xV.prototype={add:function(t){var e={item:t,next:null};this.head?this.tail.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}};var HV=xV,kV=K.Promise,CV="object"==("undefined"==typeof window?"undefined":o(window))&&"object"!=("undefined"==typeof Deno?"undefined":o(Deno)),UV=K,TV=kV,wV=st,FV=Zi,MV=Ln,jV=We,zV=CV,PV=gt;TV&&TV.prototype;var BV=jV("species"),QV=!1,DV=wV(UV.PromiseRejectionEvent),EV=FV("Promise",(function(){var t=MV(TV),e=t!==String(TV);if(!e&&66===PV)return!0;if(PV>=51&&/native code/.test(t))return!1;var n=new TV((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))};return(n.constructor={})[BV]=r,!(QV=n.then((function(){}))instanceof r)||!e&&zV&&!DV})),OV={CONSTRUCTOR:EV,REJECTION_EVENT:DV,SUBCLASSING:QV},AV={},_V=Ft,qV=function(t){var e,n;this.promise=new t((function(t,r){if(void 0!==e||void 0!==n)throw TypeError("Bad Promise constructor");e=t,n=r})),this.resolve=_V(e),this.reject=_V(n)};AV.f=function(t){return new qV(t)};var $V,tW,eW,nW=vi,rW=IG,iW=K,cW=C,aW=Ir,oW=Yd,lW=Tc,uW=pm,sW=Ft,dW=st,hW=ht,mW=Nm,pW=RG,bW=hV.set,ZW=LV,yW=function(t,e){var n=JV.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))},XW=NV,fW=HV,IW=rr,GW=kV,VW=AV,WW="Promise",vW=OV.CONSTRUCTOR,gW=OV.REJECTION_EVENT,SW=OV.SUBCLASSING,YW=IW.getterFor(WW),RW=IW.set,KW=GW&&GW.prototype,LW=GW,JW=KW,NW=iW.TypeError,xW=iW.document,HW=iW.process,kW=VW.f,CW=kW,UW=!!(xW&&xW.createEvent&&iW.dispatchEvent),TW="unhandledrejection",wW=function(t){var e;return!(!hW(t)||!dW(e=t.then))&&e},FW=function(t,e){var n,r,i,c=e.value,a=1==e.state,o=a?t.ok:t.fail,l=t.resolve,u=t.reject,s=t.domain;try{o?(a||(2===e.rejection&&BW(e),e.rejection=1),!0===o?n=c:(s&&s.enter(),n=o(c),s&&(s.exit(),i=!0)),n===t.promise?u(NW("Promise-chain cycle")):(r=wW(n))?cW(r,n,l,u):l(n)):u(c)}catch(t){s&&!i&&s.exit(),u(t)}},MW=function(t,e){t.notified||(t.notified=!0,ZW((function(){for(var n,r=t.reactions;n=r.get();)FW(n,t);t.notified=!1,e&&!t.rejection&&zW(t)})))},jW=function(t,e,n){var r,i;UW?((r=xW.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),iW.dispatchEvent(r)):r={promise:e,reason:n},!gW&&(i=iW["on"+t])?i(r):t===TW&&yW("Unhandled promise rejection",n)},zW=function(t){cW(bW,iW,(function(){var e,n=t.facade,r=t.value;if(PW(t)&&(e=XW((function(){rW?HW.emit("unhandledRejection",r,n):jW(TW,n,r)})),t.rejection=rW||PW(t)?2:1,e.error))throw e.value}))},PW=function(t){return 1!==t.rejection&&!t.parent},BW=function(t){cW(bW,iW,(function(){var e=t.facade;rW?HW.emit("rejectionHandled",e):jW("rejectionhandled",e,t.value)}))},QW=function(t,e,n){return function(r){t(e,r,n)}},DW=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,MW(t,!0))},EW=function t(e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===n)throw NW("Promise can't be resolved itself");var i=wW(n);i?ZW((function(){var r={done:!1};try{cW(i,n,QW(t,r,e),QW(DW,r,e))}catch(t){DW(r,t,e)}})):(e.value=n,e.state=1,MW(e,!1))}catch(t){DW({done:!1},t,e)}}};if(vW&&(JW=(LW=function(t){mW(this,JW),sW(t),cW($V,this);var e=YW(this);try{t(QW(EW,e),QW(DW,e))}catch(t){DW(e,t)}}).prototype,($V=function(t){RW(this,{type:WW,done:!1,notified:!1,parent:!1,reactions:new fW,rejection:!1,state:0,value:void 0})}).prototype=aW(JW,"then",(function(t,e){var n=YW(this),r=kW(pW(this,LW));return n.parent=!0,r.ok=!dW(t)||t,r.fail=dW(e)&&e,r.domain=rW?HW.domain:void 0,0==n.state?n.reactions.add(r):ZW((function(){FW(r,n)})),r.promise})),tW=function(){var t=new $V,e=YW(t);this.promise=t,this.resolve=QW(EW,e),this.reject=QW(DW,e)},VW.f=kW=function(t){return t===LW||undefined===t?new tW(t):CW(t)},dW(GW)&&KW!==Object.prototype)){eW=KW.then,SW||aW(KW,"then",(function(t,e){var n=this;return new LW((function(t,e){cW(eW,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete KW.constructor}catch(t){}oW&&oW(KW,JW)}nW({global:!0,constructor:!0,wrap:!0,forced:vW},{Promise:LW}),lW(LW,WW,!1),uW(WW);var OW=kV,AW=OV.CONSTRUCTOR||!zs((function(t){OW.all(t).then(void 0,(function(){}))})),_W=C,qW=Ft,$W=AV,tv=NV,ev=eZ;vi({target:"Promise",stat:!0,forced:AW},{all:function(t){var e=this,n=$W.f(e),r=n.resolve,i=n.reject,c=tv((function(){var n=qW(e.resolve),c=[],a=0,o=1;ev(t,(function(t){var l=a++,u=!1;o++,_W(n,e,t).then((function(t){u||(u=!0,c[l]=t,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise}});var nv=vi,rv=OV.CONSTRUCTOR,iv=kV,cv=Zt,av=st,ov=Ir,lv=iv&&iv.prototype;if(nv({target:"Promise",proto:!0,forced:rv,real:!0},{catch:function(t){return this.then(void 0,t)}}),av(iv)){var uv=cv("Promise").prototype.catch;lv.catch!==uv&&ov(lv,"catch",uv,{unsafe:!0})}var sv=C,dv=Ft,hv=AV,mv=NV,pv=eZ;vi({target:"Promise",stat:!0,forced:AW},{race:function(t){var e=this,n=hv.f(e),r=n.reject,i=mv((function(){var i=dv(e.resolve);pv(t,(function(t){sv(i,e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var bv=C,Zv=AV;vi({target:"Promise",stat:!0,forced:OV.CONSTRUCTOR},{reject:function(t){var e=Zv.f(this);return bv(e.reject,void 0,t),e.promise}});var yv=en,Xv=ht,fv=AV,Iv=function(t,e){if(yv(t),Xv(e)&&e.constructor===t)return e;var n=fv.f(t);return(0,n.resolve)(e),n.promise},Gv=vi,Vv=OV.CONSTRUCTOR,Wv=Iv;Zt("Promise"),Gv({target:"Promise",stat:!0,forced:Vv},{resolve:function(t){return Wv(this,t)}});var vv=C,gv=Ft,Sv=AV,Yv=NV,Rv=eZ;vi({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=Sv.f(e),r=n.resolve,i=n.reject,c=Yv((function(){var n=gv(e.resolve),i=[],c=0,a=1;Rv(t,(function(t){var o=c++,l=!1;a++,vv(n,e,t).then((function(t){l||(l=!0,i[o]={status:"fulfilled",value:t},--a||r(i))}),(function(t){l||(l=!0,i[o]={status:"rejected",reason:t},--a||r(i))}))})),--a||r(i)}));return c.error&&i(c.value),n.promise}});var Kv=vi,Lv=kV,Jv=J,Nv=Zt,xv=st,Hv=RG,kv=Iv,Cv=Ir,Uv=Lv&&Lv.prototype;if(Kv({target:"Promise",proto:!0,real:!0,forced:!!Lv&&Jv((function(){Uv.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=Hv(this,Nv("Promise")),n=xv(t);return this.then(n?function(n){return kv(e,t()).then((function(){return n}))}:t,n?function(n){return kv(e,t()).then((function(){throw n}))}:t)}}),xv(Lv)){var Tv=Nv("Promise").prototype.finally;Uv.finally!==Tv&&Cv(Uv,"finally",Tv,{unsafe:!0})}var wv=Qo,Fv=Ft,Mv=en;vi({target:"Reflect",stat:!0,forced:!J((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return wv(Fv(t),e,Mv(n))}});var jv=O,zv=Ft,Pv=ht,Bv=oe,Qv=Do,Dv=x,Ev=Function,Ov=jv([].concat),Av=jv([].join),_v={},qv=function(t,e,n){if(!Bv(_v,e)){for(var r=[],i=0;i<e;i++)r[i]="a["+i+"]";_v[e]=Ev("C,a","return new C("+Av(r,",")+")")}return _v[e](t,n)},$v=Dv?Ev.bind:function(t){var e=zv(this),n=e.prototype,r=Qv(arguments,1),i=function(){var n=Ov(r,Qv(arguments));return this instanceof i?qv(e,n.length,n):e.apply(t,n)};return Pv(n)&&(i.prototype=n),i},tg=vi,eg=Qo,ng=$v,rg=vG,ig=en,cg=ht,ag=ac,og=J,lg=Zt("Reflect","construct"),ug=Object.prototype,sg=[].push,dg=og((function(){function t(){}return!(lg((function(){}),[],t)instanceof t)})),hg=!og((function(){lg((function(){}))})),mg=dg||hg;tg({target:"Reflect",stat:!0,forced:mg,sham:mg},{construct:function(t,e){rg(t),ig(e);var n=arguments.length<3?t:rg(arguments[2]);if(hg&&!dg)return lg(t,e,n);if(t==n){switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3])}var r=[null];return eg(sg,r,e),new(eg(ng,t,r))}var i=n.prototype,c=ag(cg(i)?i:ug),a=eg(t,c,e);return cg(a)?a:c}});var pg=N,bg=en,Zg=He,yg=Ae;vi({target:"Reflect",stat:!0,forced:J((function(){Reflect.defineProperty(yg.f({},1,{value:1}),1,{value:2})})),sham:!pg},{defineProperty:function(t,e,n){bg(t);var r=Zg(e);bg(n);try{return yg.f(t,r,n),!0}catch(t){return!1}}});var Xg=vi,fg=en,Ig=L.f;Xg({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=Ig(fg(t),e);return!(n&&!n.configurable)&&delete t[e]}});var Gg=oe,Vg=function(t){return void 0!==t&&(Gg(t,"value")||Gg(t,"writable"))},Wg=C,vg=ht,gg=en,Sg=Vg,Yg=L,Rg=id;vi({target:"Reflect",stat:!0},{get:function t(e,n){var r,i,c=arguments.length<3?e:arguments[2];return gg(e)===c?e[n]:(r=Yg.f(e,n))?Sg(r)?r.value:void 0===r.get?void 0:Wg(r.get,c):vg(i=Rg(e))?t(i,n,c):void 0}});var Kg=en,Lg=L;vi({target:"Reflect",stat:!0,sham:!N},{getOwnPropertyDescriptor:function(t,e){return Lg.f(Kg(t),e)}});var Jg=en,Ng=id;vi({target:"Reflect",stat:!0,sham:!As},{getPrototypeOf:function(t){return Ng(Jg(t))}}),vi({target:"Reflect",stat:!0},{has:function(t,e){return e in t}});var xg=en,Hg=gb;vi({target:"Reflect",stat:!0},{isExtensible:function(t){return xg(t),Hg(t)}}),vi({target:"Reflect",stat:!0},{ownKeys:ni});var kg=Zt,Cg=en;vi({target:"Reflect",stat:!0,sham:!Sb},{preventExtensions:function(t){Cg(t);try{var e=kg("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Ug=vi,Tg=C,wg=en,Fg=ht,Mg=Vg,jg=Ae,zg=L,Pg=id,Bg=z;var Qg=J((function(){var t=function(){},e=jg.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Ug({target:"Reflect",stat:!0,forced:Qg},{set:function t(e,n,r){var i,c,a,o=arguments.length<4?e:arguments[3],l=zg.f(wg(e),n);if(!l){if(Fg(c=Pg(e)))return t(c,n,r,o);l=Bg(0)}if(Mg(l)){if(!1===l.writable||!Fg(o))return!1;if(i=zg.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,jg.f(o,n,i)}else jg.f(o,n,Bg(0,r))}else{if(void 0===(a=l.set))return!1;Tg(a,o,r)}return!0}});var Dg=en,Eg=Wd,Og=Yd;Og&&vi({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){Dg(t),Eg(e);try{return Og(t,e),!0}catch(t){return!1}}});var Ag=ht,_g=$,qg=We("match"),$g=function(t){var e;return Ag(t)&&(void 0!==(e=t[qg])?!!e:"RegExp"==_g(t))},tS=en,eS=function(){var t=tS(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e},nS=C,rS=oe,iS=yt,cS=eS,aS=RegExp.prototype,oS=function(t){var e=t.flags;return void 0!==e||"flags"in aS||rS(t,"flags")||!iS(aS,t)?e:nS(cS,t)},lS=J,uS=K.RegExp,sS=lS((function(){var t=uS("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),dS=sS||lS((function(){return!uS("a","y").sticky})),hS=sS||lS((function(){var t=uS("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),mS={BROKEN_CARET:hS,MISSED_STICKY:dS,UNSUPPORTED_Y:sS},pS=Ae.f,bS=J,ZS=K.RegExp,yS=bS((function(){var t=ZS(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),XS=J,fS=K.RegExp,IS=XS((function(){var t=fS("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),GS=N,VS=K,WS=O,vS=Zi,gS=cZ,SS=Zn,YS=Gr.f,RS=yt,KS=$g,LS=Ci,JS=oS,NS=mS,xS=function(t,e,n){n in t||pS(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})},HS=Ir,kS=J,CS=oe,US=rr.enforce,TS=pm,wS=yS,FS=IS,MS=We("match"),jS=VS.RegExp,zS=jS.prototype,PS=VS.SyntaxError,BS=WS(zS.exec),QS=WS("".charAt),DS=WS("".replace),ES=WS("".indexOf),OS=WS("".slice),AS=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,_S=/a/g,qS=/a/g,$S=new jS(_S)!==_S,tY=NS.MISSED_STICKY,eY=NS.UNSUPPORTED_Y,nY=GS&&(!$S||tY||wS||FS||kS((function(){return qS[MS]=!1,jS(_S)!=_S||jS(qS)==qS||"/a/i"!=jS(_S,"i")})));if(vS("RegExp",nY)){for(var rY=function(t,e){var n,r,i,c,a,o,l=RS(zS,this),u=KS(t),s=void 0===e,d=[],h=t;if(!l&&u&&s&&t.constructor===rY)return t;if((u||RS(zS,t))&&(t=t.source,s&&(e=JS(h))),t=void 0===t?"":LS(t),e=void 0===e?"":LS(e),h=t,wS&&"dotAll"in _S&&(r=!!e&&ES(e,"s")>-1)&&(e=DS(e,/s/g,"")),n=e,tY&&"sticky"in _S&&(i=!!e&&ES(e,"y")>-1)&&eY&&(e=DS(e,/y/g,"")),FS&&(c=function(t){for(var e,n=t.length,r=0,i="",c=[],a={},o=!1,l=!1,u=0,s="";r<=n;r++){if("\\"===(e=QS(t,r)))e+=QS(t,++r);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:BS(AS,OS(t,r+1))&&(r+=2,l=!0),i+=e,u++;continue;case">"===e&&l:if(""===s||CS(a,s))throw new PS("Invalid capture group name");a[s]=!0,c[c.length]=[s,u],l=!1,s="";continue}l?s+=e:i+=e}return[i,c]}(t),t=c[0],d=c[1]),a=gS(jS(t,e),l?this:zS,rY),(r||i||d.length)&&(o=US(a),r&&(o.dotAll=!0,o.raw=rY(function(t){for(var e,n=t.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(e=QS(t,r))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),i+=e):i+="[\\s\\S]":i+=e+QS(t,++r);return i}(t),n)),i&&(o.sticky=!0),d.length&&(o.groups=d)),t!==h)try{SS(a,"source",""===h?"(?:)":h)}catch(t){}return a},iY=YS(jS),cY=0;iY.length>cY;)xS(rY,jS,iY[cY++]);zS.constructor=rY,rY.prototype=zS,HS(VS,"RegExp",rY,{constructor:!0})}TS("RegExp");var aY=C,oY=O,lY=Ci,uY=eS,sY=mS,dY=Et.exports,hY=ac,mY=rr.get,pY=yS,bY=IS,ZY=dY("native-string-replace",String.prototype.replace),yY=RegExp.prototype.exec,XY=yY,fY=oY("".charAt),IY=oY("".indexOf),GY=oY("".replace),VY=oY("".slice),WY=function(){var t=/a/,e=/b*/g;return aY(yY,t,"a"),aY(yY,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),vY=sY.BROKEN_CARET,gY=void 0!==/()??/.exec("")[1];(WY||gY||vY||pY||bY)&&(XY=function(t){var e,n,r,i,c,a,o,l=this,u=mY(l),s=lY(t),d=u.raw;if(d)return d.lastIndex=l.lastIndex,e=aY(XY,d,s),l.lastIndex=d.lastIndex,e;var h=u.groups,m=vY&&l.sticky,p=aY(uY,l),b=l.source,Z=0,y=s;if(m&&(p=GY(p,"y",""),-1===IY(p,"g")&&(p+="g"),y=VY(s,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==fY(s,l.lastIndex-1))&&(b="(?: "+b+")",y=" "+y,Z++),n=new RegExp("^(?:"+b+")",p)),gY&&(n=new RegExp("^"+b+"$(?!\\s)",p)),WY&&(r=l.lastIndex),i=aY(yY,m?n:l,y),m?i?(i.input=VY(i.input,Z),i[0]=VY(i[0],Z),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:WY&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),gY&&i&&i.length>1&&aY(ZY,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&h)for(i.groups=a=hY(null),c=0;c<h.length;c++)a[(o=h[c])[0]]=i[o[1]];return i});var SY=XY;vi({target:"RegExp",proto:!0,forced:/./.exec!==SY},{exec:SY});var YY=yn.exports,RY=Ae,KY=function(t,e,n){return n.get&&YY(n.get,e,{getter:!0}),n.set&&YY(n.set,e,{setter:!0}),RY.f(t,e,n)},LY=N,JY=KY,NY=eS,xY=J,HY=RegExp.prototype;LY&&xY((function(){return"sy"!==Object.getOwnPropertyDescriptor(HY,"flags").get.call({dotAll:!0,sticky:!0})}))&&JY(HY,"flags",{configurable:!0,get:NY});var kY=N,CY=mS.MISSED_STICKY,UY=$,TY=KY,wY=rr.get,FY=RegExp.prototype,MY=TypeError;kY&&CY&&TY(FY,"sticky",{configurable:!0,get:function(){if(this!==FY){if("RegExp"===UY(this))return!!wY(this).sticky;throw MY("Incompatible receiver, RegExp required")}}});var jY,zY,PY=vi,BY=C,QY=O,DY=st,EY=ht,OY=(jY=!1,(zY=/[ac]/).exec=function(){return jY=!0,/./.exec.apply(this,arguments)},!0===zY.test("abc")&&jY),AY=TypeError,_Y=QY(/./.test);PY({target:"RegExp",proto:!0,forced:!OY},{test:function(t){var e=this.exec;if(!DY(e))return _Y(this,t);var n=BY(e,this,t);if(null!==n&&!EY(n))throw new AY("RegExp exec method returned something other than an Object or null");return!!n}});var qY=Wn.PROPER,$Y=Ir,tR=en,eR=Ci,nR=J,rR=oS,iR="toString",cR=RegExp.prototype.toString,aR=nR((function(){return"/a/b"!=cR.call({source:"a",flags:"b"})})),oR=qY&&cR.name!=iR;(aR||oR)&&$Y(RegExp.prototype,iR,(function(){var t=tR(this);return"/"+eR(t.source)+"/"+eR(rR(t))}),{unsafe:!0}),IZ("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),xZ);var lR=O,uR=Sr,sR=Ci,dR=at,hR=lR("".charAt),mR=lR("".charCodeAt),pR=lR("".slice),bR=function(t){return function(e,n){var r,i,c=sR(dR(e)),a=uR(n),o=c.length;return a<0||a>=o?t?"":void 0:(r=mR(c,a))<55296||r>56319||a+1===o||(i=mR(c,a+1))<56320||i>57343?t?hR(c,a):r:t?pR(c,a,a+2):i-56320+(r-55296<<10)+65536}},ZR={codeAt:bR(!1),charAt:bR(!0)},yR=ZR.codeAt;vi({target:"String",proto:!0},{codePointAt:function(t){return yR(this,t)}});var XR,fR=$g,IR=TypeError,GR=function(t){if(fR(t))throw IR("The method doesn't accept regular expressions");return t},VR=We("match"),WR=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[VR]=!1,"/./"[t](e)}catch(t){}}return!1},vR=vi,gR=O,SR=L.f,YR=xr,RR=Ci,KR=GR,LR=at,JR=WR,NR=gR("".endsWith),xR=gR("".slice),HR=Math.min,kR=JR("endsWith");vR({target:"String",proto:!0,forced:!!(kR||(XR=SR(String.prototype,"endsWith"),!XR||XR.writable))&&!kR},{endsWith:function(t){var e=RR(LR(this));KR(t);var n=arguments.length>1?arguments[1]:void 0,r=e.length,i=void 0===n?r:HR(YR(n),r),c=RR(t);return NR?NR(e,c,i):xR(e,i-c.length,i)===c}});var CR=vi,UR=O,TR=Lr,wR=RangeError,FR=String.fromCharCode,MR=String.fromCodePoint,jR=UR([].join);CR({target:"String",stat:!0,arity:1,forced:!!MR&&1!=MR.length},{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,i=0;r>i;){if(e=+arguments[i++],TR(e,1114111)!==e)throw wR(e+" is not a valid code point");n[i]=e<65536?FR(e):FR(55296+((e-=65536)>>10),e%1024+56320)}return jR(n,"")}});var zR=vi,PR=GR,BR=at,QR=Ci,DR=WR,ER=O("".indexOf);zR({target:"String",proto:!0,forced:!DR("includes")},{includes:function(t){return!!~ER(QR(BR(this)),QR(PR(t)),arguments.length>1?arguments[1]:void 0)}});var OR=ZR.charAt,AR=Ci,_R=rr,qR=Dd,$R="String Iterator",tK=_R.set,eK=_R.getterFor($R);qR(String,"String",(function(t){tK(this,{type:$R,string:AR(t),index:0})}),(function(){var t,e=eK(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=OR(n,r),e.index+=t.length,{value:t,done:!1})}));var nK=O,rK=Ir,iK=SY,cK=J,aK=We,oK=Zn,lK=aK("species"),uK=RegExp.prototype,sK=function(t,e,n,r){var i=aK(t),c=!cK((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),a=c&&!cK((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[lK]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](""),!e}));if(!c||!a||n){var o=nK(/./[i]),l=e(i,""[t],(function(t,e,n,r,i){var a=nK(t),l=e.exec;return l===iK||l===uK.exec?c&&!i?{done:!0,value:o(e,n,r)}:{done:!0,value:a(n,e,r)}:{done:!1}}));rK(String.prototype,t,l[0]),rK(uK,i,l[1])}r&&oK(uK[i],"sham",!0)},dK=ZR.charAt,hK=function(t,e,n){return e+(n?dK(t,e).length:1)},mK=C,pK=en,bK=st,ZK=$,yK=SY,XK=TypeError,fK=function(t,e){var n=t.exec;if(bK(n)){var r=mK(n,t,e);return null!==r&&pK(r),r}if("RegExp"===ZK(t))return mK(yK,t,e);throw XK("RegExp#exec called on incompatible receiver")},IK=C,GK=en,VK=xr,WK=Ci,vK=at,gK=jt,SK=hK,YK=fK;sK("match",(function(t,e,n){return[function(e){var n=vK(this),r=null==e?void 0:gK(e,t);return r?IK(r,e,n):new RegExp(e)[t](WK(n))},function(t){var r=GK(this),i=WK(t),c=n(e,r,i);if(c.done)return c.value;if(!r.global)return YK(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=YK(r,i));){var s=WK(o[0]);l[u]=s,""===s&&(r.lastIndex=SK(i,VK(r.lastIndex),a)),u++}return 0===u?null:l}]}));var RK=vi,KK=C,LK=O,JK=fd,NK=at,xK=xr,HK=Ci,kK=en,CK=$g,UK=oS,TK=jt,wK=Ir,FK=J,MK=RG,jK=hK,zK=fK,PK=rr,BK=We("matchAll"),QK="RegExp String",DK="RegExp String Iterator",EK=PK.set,OK=PK.getterFor(DK),AK=RegExp.prototype,_K=TypeError,qK=LK("".indexOf),$K=LK("".matchAll),tL=!!$K&&!FK((function(){$K("a",/./)})),eL=JK((function(t,e,n,r){EK(this,{type:DK,regexp:t,string:e,global:n,unicode:r,done:!1})}),QK,(function(){var t=OK(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,r=zK(e,n);return null===r?{value:void 0,done:t.done=!0}:t.global?(""===HK(r[0])&&(e.lastIndex=jK(n,xK(e.lastIndex),t.unicode)),{value:r,done:!1}):(t.done=!0,{value:r,done:!1})})),nL=function(t){var e,n,r,i=kK(this),c=HK(t),a=MK(i,RegExp),o=HK(UK(i));return e=new a(a===RegExp?i.source:i,o),n=!!~qK(o,"g"),r=!!~qK(o,"u"),e.lastIndex=xK(i.lastIndex),new eL(e,c,n,r)};RK({target:"String",proto:!0,forced:tL},{matchAll:function(t){var e,n,r,i=NK(this);if(null!=t){if(CK(t)&&(e=HK(NK(UK(t))),!~qK(e,"g")))throw _K("`.matchAll` does not allow non-global regexes");if(tL)return $K(i,t);if(r=TK(t,BK))return KK(r,t,i)}else if(tL)return $K(i,t);return n=HK(i),new RegExp(t,"g")[BK](n)}}),BK in AK||wK(AK,BK,nL);var rL=O,iL=xr,cL=Ci,aL=at,oL=rL(af),lL=rL("".slice),uL=Math.ceil,sL=function(t){return function(e,n,r){var i,c,a=cL(aL(e)),o=iL(n),l=a.length,u=void 0===r?" ":cL(r);return o<=l||""==u?a:((c=oL(u,uL((i=o-l)/u.length))).length>i&&(c=lL(c,0,i)),t?a+c:c+a)}},dL={start:sL(!1),end:sL(!0)},hL=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Xt),mL=dL.end;vi({target:"String",proto:!0,forced:hL},{padEnd:function(t){return mL(this,t,arguments.length>1?arguments[1]:void 0)}});var pL=dL.start;vi({target:"String",proto:!0,forced:hL},{padStart:function(t){return pL(this,t,arguments.length>1?arguments[1]:void 0)}});var bL=vi,ZL=O,yL=ut,XL=ie,fL=Ci,IL=kr,GL=ZL([].push),VL=ZL([].join);bL({target:"String",stat:!0},{raw:function(t){for(var e=yL(XL(t).raw),n=IL(e),r=arguments.length,i=[],c=0;n>c;){if(GL(i,fL(e[c++])),c===n)return VL(i,"");c<r&&GL(i,fL(arguments[c]))}}}),vi({target:"String",proto:!0},{repeat:af});var WL=O,vL=ie,gL=Math.floor,SL=WL("".charAt),YL=WL("".replace),RL=WL("".slice),KL=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,LL=/\$([$&'`]|\d{1,2})/g,JL=Qo,NL=C,xL=O,HL=sK,kL=J,CL=en,UL=st,TL=Sr,wL=xr,FL=Ci,ML=at,jL=hK,zL=jt,PL=function(t,e,n,r,i,c){var a=n+t.length,o=r.length,l=LL;return void 0!==i&&(i=vL(i),l=KL),YL(c,l,(function(c,l){var u;switch(SL(l,0)){case"$":return"$";case"&":return t;case"`":return RL(e,0,n);case"'":return RL(e,a);case"<":u=i[RL(l,1,-1)];break;default:var s=+l;if(0===s)return c;if(s>o){var d=gL(s/10);return 0===d?c:d<=o?void 0===r[d-1]?SL(l,1):r[d-1]+SL(l,1):c}u=r[s-1]}return void 0===u?"":u}))},BL=fK,QL=We("replace"),DL=Math.max,EL=Math.min,OL=xL([].concat),AL=xL([].push),_L=xL("".indexOf),qL=xL("".slice),$L="$0"==="a".replace(/./,"$0"),tJ=!!/./[QL]&&""===/./[QL]("a","$0"),eJ=!kL((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));HL("replace",(function(t,e,n){var r=tJ?"$":"$0";return[function(t,n){var r=ML(this),i=null==t?void 0:zL(t,QL);return i?NL(i,t,r,n):NL(e,FL(r),t,n)},function(t,i){var c=CL(this),a=FL(t);if("string"==typeof i&&-1===_L(i,r)&&-1===_L(i,"$<")){var o=n(e,c,a,i);if(o.done)return o.value}var l=UL(i);l||(i=FL(i));var u=c.global;if(u){var s=c.unicode;c.lastIndex=0}for(var d=[];;){var h=BL(c,a);if(null===h)break;if(AL(d,h),!u)break;""===FL(h[0])&&(c.lastIndex=jL(a,wL(c.lastIndex),s))}for(var m,p="",b=0,Z=0;Z<d.length;Z++){for(var y=FL((h=d[Z])[0]),X=DL(EL(TL(h.index),a.length),0),f=[],I=1;I<h.length;I++)AL(f,void 0===(m=h[I])?m:String(m));var G=h.groups;if(l){var V=OL([y],f,X,a);void 0!==G&&AL(V,G);var W=FL(JL(i,void 0,V))}else W=PL(y,a,X,f,G,i);X>=b&&(p+=qL(a,b,X)+W,b=X+y.length)}return p+qL(a,b)}]}),!eJ||!$L||tJ);var nJ=C,rJ=en,iJ=at,cJ=gI,aJ=Ci,oJ=jt,lJ=fK;sK("search",(function(t,e,n){return[function(e){var n=iJ(this),r=null==e?void 0:oJ(e,t);return r?nJ(r,e,n):new RegExp(e)[t](aJ(n))},function(t){var r=rJ(this),i=aJ(t),c=n(e,r,i);if(c.done)return c.value;var a=r.lastIndex;cJ(a,0)||(r.lastIndex=0);var o=lJ(r,i);return cJ(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var uJ=Qo,sJ=C,dJ=O,hJ=sK,mJ=$g,pJ=en,bJ=at,ZJ=RG,yJ=hK,XJ=xr,fJ=Ci,IJ=jt,GJ=yc,VJ=fK,WJ=SY,vJ=J,gJ=mS.UNSUPPORTED_Y,SJ=4294967295,YJ=Math.min,RJ=[].push,KJ=dJ(/./.exec),LJ=dJ(RJ),JJ=dJ("".slice),NJ=!vJ((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));hJ("split",(function(t,e,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var r=fJ(bJ(this)),i=void 0===n?SJ:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!mJ(t))return sJ(e,r,t,i);for(var c,a,o,l=[],u=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),s=0,d=new RegExp(t.source,u+"g");(c=sJ(WJ,d,r))&&!((a=d.lastIndex)>s&&(LJ(l,JJ(r,s,c.index)),c.length>1&&c.index<r.length&&uJ(RJ,l,GJ(c,1)),o=c[0].length,s=a,l.length>=i));)d.lastIndex===c.index&&d.lastIndex++;return s===r.length?!o&&KJ(d,"")||LJ(l,""):LJ(l,JJ(r,s)),l.length>i?GJ(l,0,i):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:sJ(e,this,t,n)}:e,[function(e,n){var i=bJ(this),c=null==e?void 0:IJ(e,t);return c?sJ(c,e,i,n):sJ(r,fJ(i),e,n)},function(t,i){var c=pJ(this),a=fJ(t),o=n(r,c,a,i,r!==e);if(o.done)return o.value;var l=ZJ(c,RegExp),u=c.unicode,s=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(gJ?"g":"y"),d=new l(gJ?"^(?:"+c.source+")":c,s),h=void 0===i?SJ:i>>>0;if(0===h)return[];if(0===a.length)return null===VJ(d,a)?[a]:[];for(var m=0,p=0,b=[];p<a.length;){d.lastIndex=gJ?0:p;var Z,y=VJ(d,gJ?JJ(a,p):a);if(null===y||(Z=YJ(XJ(d.lastIndex+(gJ?p:0)),a.length))===m)p=yJ(a,p,u);else{if(LJ(b,JJ(a,m,p)),b.length===h)return b;for(var X=1;X<=y.length-1;X++)if(LJ(b,y[X]),b.length===h)return b;p=m=Z}}return LJ(b,JJ(a,m)),b}]}),!NJ,gJ);var xJ=vi,HJ=O,kJ=L.f,CJ=xr,UJ=Ci,TJ=GR,wJ=at,FJ=WR,MJ=HJ("".startsWith),jJ=HJ("".slice),zJ=Math.min,PJ=FJ("startsWith"),BJ=!PJ&&!!function(){var t=kJ(String.prototype,"startsWith");return t&&!t.writable}();xJ({target:"String",proto:!0,forced:!BJ&&!PJ},{startsWith:function(t){var e=UJ(wJ(this));TJ(t);var n=CJ(zJ(arguments.length>1?arguments[1]:void 0,e.length)),r=UJ(t);return MJ?MJ(e,r,n):jJ(e,n,n+r.length)===r}});var QJ=Wn.PROPER,DJ=J,EJ=zy,OJ=function(t){return DJ((function(){return!!EJ[t]()||"​…᠎"!=="​…᠎"[t]()||QJ&&EJ[t].name!==t}))},AJ=_y.trim;vi({target:"String",proto:!0,forced:OJ("trim")},{trim:function(){return AJ(this)}});var _J=_y.end,qJ=OJ("trimEnd")?function(){return _J(this)}:"".trimEnd;vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==qJ},{trimRight:qJ});vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==qJ},{trimEnd:qJ});var $J=_y.start,tN=OJ("trimStart")?function(){return $J(this)}:"".trimStart;vi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==tN},{trimLeft:tN});vi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==tN},{trimStart:tN});var eN=at,nN=Ci,rN=/"/g,iN=O("".replace),cN=function(t,e,n,r){var i=nN(eN(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+iN(nN(r),rN,"&quot;")+'"'),c+">"+i+"</"+e+">"},aN=J,oN=function(t){return aN((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))},lN=cN;vi({target:"String",proto:!0,forced:oN("anchor")},{anchor:function(t){return lN(this,"a","name",t)}});var uN=cN;vi({target:"String",proto:!0,forced:oN("big")},{big:function(){return uN(this,"big","","")}});var sN=cN;vi({target:"String",proto:!0,forced:oN("blink")},{blink:function(){return sN(this,"blink","","")}});var dN=cN;vi({target:"String",proto:!0,forced:oN("bold")},{bold:function(){return dN(this,"b","","")}});var hN=cN;vi({target:"String",proto:!0,forced:oN("fixed")},{fixed:function(){return hN(this,"tt","","")}});var mN=cN;vi({target:"String",proto:!0,forced:oN("fontcolor")},{fontcolor:function(t){return mN(this,"font","color",t)}});var pN=cN;vi({target:"String",proto:!0,forced:oN("fontsize")},{fontsize:function(t){return pN(this,"font","size",t)}});var bN=cN;vi({target:"String",proto:!0,forced:oN("italics")},{italics:function(){return bN(this,"i","","")}});var ZN=cN;vi({target:"String",proto:!0,forced:oN("link")},{link:function(t){return ZN(this,"a","href",t)}});var yN=cN;vi({target:"String",proto:!0,forced:oN("small")},{small:function(){return yN(this,"small","","")}});var XN=cN;vi({target:"String",proto:!0,forced:oN("strike")},{strike:function(){return XN(this,"strike","","")}});var fN=cN;vi({target:"String",proto:!0,forced:oN("sub")},{sub:function(){return fN(this,"sub","","")}});var IN=cN;vi({target:"String",proto:!0,forced:oN("sup")},{sup:function(){return IN(this,"sup","","")}});var GN,VN,WN,vN={exports:{}},gN=Ym,SN=N,YN=K,RN=st,KN=ht,LN=oe,JN=xi,NN=Ct,xN=Zn,HN=Ir,kN=Ae.f,CN=yt,UN=id,TN=Yd,wN=We,FN=he,MN=YN.Int8Array,jN=MN&&MN.prototype,zN=YN.Uint8ClampedArray,PN=zN&&zN.prototype,BN=MN&&UN(MN),QN=jN&&UN(jN),DN=Object.prototype,EN=YN.TypeError,ON=wN("toStringTag"),AN=FN("TYPED_ARRAY_TAG"),_N=FN("TYPED_ARRAY_CONSTRUCTOR"),qN=gN&&!!TN&&"Opera"!==JN(YN.opera),$N=!1,tx={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},ex={BigInt64Array:8,BigUint64Array:8},nx=function(t){if(!KN(t))return!1;var e=JN(t);return LN(tx,e)||LN(ex,e)};for(GN in tx)(WN=(VN=YN[GN])&&VN.prototype)?xN(WN,_N,VN):qN=!1;for(GN in ex)(WN=(VN=YN[GN])&&VN.prototype)&&xN(WN,_N,VN);if((!qN||!RN(BN)||BN===Function.prototype)&&(BN=function(){throw EN("Incorrect invocation")},qN))for(GN in tx)YN[GN]&&TN(YN[GN],BN);if((!qN||!QN||QN===DN)&&(QN=BN.prototype,qN))for(GN in tx)YN[GN]&&TN(YN[GN].prototype,QN);if(qN&&UN(PN)!==QN&&TN(PN,QN),SN&&!LN(QN,ON))for(GN in $N=!0,kN(QN,ON,{get:function(){return KN(this)?this[AN]:void 0}}),tx)YN[GN]&&xN(YN[GN],AN,GN);var rx={NATIVE_ARRAY_BUFFER_VIEWS:qN,TYPED_ARRAY_CONSTRUCTOR:_N,TYPED_ARRAY_TAG:$N&&AN,aTypedArray:function(t){if(nx(t))return t;throw EN("Target is not a typed array")},aTypedArrayConstructor:function(t){if(RN(t)&&(!TN||CN(BN,t)))return t;throw EN(NN(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,r){if(SN){if(n)for(var i in tx){var c=YN[i];if(c&&LN(c.prototype,t))try{delete c.prototype[t]}catch(n){try{c.prototype[t]=e}catch(t){}}}QN[t]&&!n||HN(QN,t,n?e:qN&&jN[t]||e,r)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(SN){if(TN){if(n)for(r in tx)if((i=YN[r])&&LN(i,t))try{delete i[t]}catch(t){}if(BN[t]&&!n)return;try{return HN(BN,t,n?e:qN&&BN[t]||e)}catch(t){}}for(r in tx)!(i=YN[r])||i[t]&&!n||HN(i,t,e)}},isView:function(t){if(!KN(t))return!1;var e=JN(t);return"DataView"===e||LN(tx,e)||LN(ex,e)},isTypedArray:nx,TypedArray:BN,TypedArrayPrototype:QN},ix=K,cx=J,ax=zs,ox=rx.NATIVE_ARRAY_BUFFER_VIEWS,lx=ix.ArrayBuffer,ux=ix.Int8Array,sx=!ox||!cx((function(){ux(1)}))||!cx((function(){new ux(-1)}))||!ax((function(t){new ux,new ux(null),new ux(1.5),new ux(t)}),!0)||cx((function(){return 1!==new ux(new lx(2),1,void 0).length})),dx=Sr,hx=RangeError,mx=function(t){var e=dx(t);if(e<0)throw hx("The argument can't be less than 0");return e},px=RangeError,bx=function(t,e){var n=mx(t);if(n%e)throw px("Wrong offset");return n},Zx=jc,yx=C,Xx=vG,fx=ie,Ix=kr,Gx=Ss,Vx=fs,Wx=ps,vx=rx.aTypedArrayConstructor,gx=function(t){var e,n,r,i,c,a,o=Xx(this),l=fx(t),u=arguments.length,s=u>1?arguments[1]:void 0,d=void 0!==s,h=Vx(l);if(h&&!Wx(h))for(a=(c=Gx(l,h)).next,l=[];!(i=yx(a,c)).done;)l.push(i.value);for(d&&u>2&&(s=Zx(s,arguments[2])),n=Ix(l),r=new(vx(o))(n),e=0;n>e;e++)r[e]=d?s(l[e],e):l[e];return r},Sx=vi,Yx=K,Rx=C,Kx=N,Lx=sx,Jx=rx,Nx=Pp,xx=Nm,Hx=z,kx=Zn,Cx=KX,Ux=xr,Tx=Cm,wx=bx,Fx=He,Mx=oe,jx=xi,zx=ht,Px=Ht,Bx=ac,Qx=yt,Dx=Yd,Ex=Gr.f,Ox=gx,Ax=fa.forEach,_x=pm,qx=Ae,$x=L,tH=cZ,eH=rr.get,nH=rr.set,rH=qx.f,iH=$x.f,cH=Math.round,aH=Yx.RangeError,oH=Nx.ArrayBuffer,lH=oH.prototype,uH=Nx.DataView,sH=Jx.NATIVE_ARRAY_BUFFER_VIEWS,dH=Jx.TYPED_ARRAY_CONSTRUCTOR,hH=Jx.TYPED_ARRAY_TAG,mH=Jx.TypedArray,pH=Jx.TypedArrayPrototype,bH=Jx.aTypedArrayConstructor,ZH=Jx.isTypedArray,yH="BYTES_PER_ELEMENT",XH="Wrong length",fH=function(t,e){bH(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},IH=function(t,e){rH(t,e,{get:function(){return eH(this)[e]}})},GH=function(t){var e;return Qx(lH,t)||"ArrayBuffer"==(e=jx(t))||"SharedArrayBuffer"==e},VH=function(t,e){return ZH(t)&&!Px(e)&&e in t&&Cx(+e)&&e>=0},WH=function(t,e){return e=Fx(e),VH(t,e)?Hx(2,t[e]):iH(t,e)},vH=function(t,e,n){return e=Fx(e),!(VH(t,e)&&zx(n)&&Mx(n,"value"))||Mx(n,"get")||Mx(n,"set")||n.configurable||Mx(n,"writable")&&!n.writable||Mx(n,"enumerable")&&!n.enumerable?rH(t,e,n):(t[e]=n.value,t)};Kx?(sH||($x.f=WH,qx.f=vH,IH(pH,"buffer"),IH(pH,"byteOffset"),IH(pH,"byteLength"),IH(pH,"length")),Sx({target:"Object",stat:!0,forced:!sH},{getOwnPropertyDescriptor:WH,defineProperty:vH}),vN.exports=function(t,e,n){var r=t.match(/\d+$/)[0]/8,i=t+(n?"Clamped":"")+"Array",c="get"+t,a="set"+t,o=Yx[i],l=o,u=l&&l.prototype,s={},d=function(t,e){rH(t,e,{get:function(){return function(t,e){var n=eH(t);return n.view[c](e*r+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var c=eH(t);n&&(i=(i=cH(i))<0?0:i>255?255:255&i),c.view[a](e*r+c.byteOffset,i,!0)}(this,e,t)},enumerable:!0})};sH?Lx&&(l=e((function(t,e,n,i){return xx(t,u),tH(zx(e)?GH(e)?void 0!==i?new o(e,wx(n,r),i):void 0!==n?new o(e,wx(n,r)):new o(e):ZH(e)?fH(l,e):Rx(Ox,l,e):new o(Tx(e)),t,l)})),Dx&&Dx(l,mH),Ax(Ex(o),(function(t){t in l||kx(l,t,o[t])})),l.prototype=u):(l=e((function(t,e,n,i){xx(t,u);var c,a,o,s=0,h=0;if(zx(e)){if(!GH(e))return ZH(e)?fH(l,e):Rx(Ox,l,e);c=e,h=wx(n,r);var m=e.byteLength;if(void 0===i){if(m%r)throw aH(XH);if((a=m-h)<0)throw aH(XH)}else if((a=Ux(i)*r)+h>m)throw aH(XH);o=a/r}else o=Tx(e),c=new oH(a=o*r);for(nH(t,{buffer:c,byteOffset:h,byteLength:a,length:o,view:new uH(c)});s<o;)d(t,s++)})),Dx&&Dx(l,mH),u=l.prototype=Bx(pH)),u.constructor!==l&&kx(u,"constructor",l),kx(u,dH,l),hH&&kx(u,hH,i);var h=l!=o;s[i]=l,Sx({global:!0,constructor:!0,forced:h,sham:!sH},s),yH in l||kx(l,yH,r),yH in u||kx(u,yH,r),_x(i)}):vN.exports=function(){},(0,vN.exports)("Float32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Float64",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Int32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}}),!0),(0,vN.exports)("Uint16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,vN.exports)("Uint32",(function(t){return function(e,n,r){return t(this,e,n,r)}}));var gH=rx,SH=O(fu),YH=gH.aTypedArray;(0,gH.exportTypedArrayMethod)("copyWithin",(function(t,e){return SH(YH(this),t,e,arguments.length>2?arguments[2]:void 0)}));var RH=fa.every,KH=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("every",(function(t){return RH(KH(this),t,arguments.length>1?arguments[1]:void 0)}));var LH=Je,JH=TypeError,NH=Lu,xH=function(t){var e=LH(t,"number");if("number"==typeof e)throw JH("Can't convert number to bigint");return BigInt(e)},HH=xi,kH=C,CH=J,UH=rx.aTypedArray,TH=rx.exportTypedArrayMethod,wH=O("".slice);TH("fill",(function(t){var e=arguments.length;UH(this);var n="Big"===wH(HH(this),0,3)?xH(t):+t;return kH(NH,this,n,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}),CH((function(){var t=0;return new Int8Array(2).fill({valueOf:function(){return t++}}),1!==t})));var FH=kr,MH=RG,jH=rx.TYPED_ARRAY_CONSTRUCTOR,zH=rx.aTypedArrayConstructor,PH=function(t){return zH(MH(t,t[jH]))},BH=function(t,e){for(var n=0,r=FH(e),i=new t(r);r>n;)i[n]=e[n++];return i},QH=PH,DH=fa.filter,EH=function(t,e){return BH(QH(t),e)},OH=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("filter",(function(t){var e=DH(OH(this),t,arguments.length>1?arguments[1]:void 0);return EH(this,e)}));var AH=fa.find,_H=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("find",(function(t){return AH(_H(this),t,arguments.length>1?arguments[1]:void 0)}));var qH=fa.findIndex,$H=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("findIndex",(function(t){return qH($H(this),t,arguments.length>1?arguments[1]:void 0)}));var tk=fa.forEach,ek=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("forEach",(function(t){tk(ek(this),t,arguments.length>1?arguments[1]:void 0)})),(0,rx.exportTypedArrayStaticMethod)("from",gx,sx);var nk=Fr.includes,rk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("includes",(function(t){return nk(rk(this),t,arguments.length>1?arguments[1]:void 0)}));var ik=Fr.indexOf,ck=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("indexOf",(function(t){return ik(ck(this),t,arguments.length>1?arguments[1]:void 0)}));var ak=K,ok=J,lk=O,uk=rx,sk=ih,dk=We("iterator"),hk=ak.Uint8Array,mk=lk(sk.values),pk=lk(sk.keys),bk=lk(sk.entries),Zk=uk.aTypedArray,yk=uk.exportTypedArrayMethod,Xk=hk&&hk.prototype,fk=!ok((function(){Xk[dk].call([1])})),Ik=!!Xk&&Xk.values&&Xk[dk]===Xk.values&&"values"===Xk.values.name,Gk=function(){return mk(Zk(this))};yk("entries",(function(){return bk(Zk(this))}),fk),yk("keys",(function(){return pk(Zk(this))}),fk),yk("values",Gk,fk||!Ik,{name:"values"}),yk(dk,Gk,fk||!Ik,{name:"values"});var Vk=rx.aTypedArray,Wk=rx.exportTypedArrayMethod,vk=O([].join);Wk("join",(function(t){return vk(Vk(this),t)}));var gk=Qo,Sk=ut,Yk=Sr,Rk=kr,Kk=oh,Lk=Math.min,Jk=[].lastIndexOf,Nk=!!Jk&&1/[1].lastIndexOf(1,-0)<0,xk=Kk("lastIndexOf"),Hk=Nk||!xk?function(t){if(Nk)return gk(Jk,this,arguments)||0;var e=Sk(this),n=Rk(e),r=n-1;for(arguments.length>1&&(r=Lk(r,Yk(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}:Jk,kk=Qo,Ck=Hk,Uk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return kk(Ck,Uk(this),e>1?[t,arguments[1]]:[t])}));var Tk=fa.map,wk=PH,Fk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("map",(function(t){return Tk(Fk(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(wk(t))(e)}))}));var Mk=rx.aTypedArrayConstructor;(0,rx.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(Mk(this))(e);e>t;)n[t]=arguments[t++];return n}),sx);var jk=Ft,zk=ie,Pk=it,Bk=kr,Qk=TypeError,Dk=function(t){return function(e,n,r,i){jk(n);var c=zk(e),a=Pk(c),o=Bk(c),l=t?o-1:0,u=t?-1:1;if(r<2)for(;;){if(l in a){i=a[l],l+=u;break}if(l+=u,t?l<0:o<=l)throw Qk("Reduce of empty array with no initial value")}for(;t?l>=0:o>l;l+=u)l in a&&(i=n(i,a[l],l,c));return i}},Ek={left:Dk(!1),right:Dk(!0)},Ok=Ek.left,Ak=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return Ok(Ak(this),t,e,e>1?arguments[1]:void 0)}));var _k=Ek.right,qk=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return _k(qk(this),t,e,e>1?arguments[1]:void 0)}));var $k=rx.aTypedArray,tC=rx.exportTypedArrayMethod,eC=Math.floor;tC("reverse",(function(){for(var t,e=this,n=$k(e).length,r=eC(n/2),i=0;i<r;)t=e[i],e[i++]=e[--n],e[n]=t;return e}));var nC=K,rC=C,iC=rx,cC=kr,aC=bx,oC=ie,lC=J,uC=nC.RangeError,sC=nC.Int8Array,dC=sC&&sC.prototype,hC=dC&&dC.set,mC=iC.aTypedArray,pC=iC.exportTypedArrayMethod,bC=!lC((function(){var t=new Uint8ClampedArray(2);return rC(hC,t,{length:1,0:3},1),3!==t[1]})),ZC=bC&&iC.NATIVE_ARRAY_BUFFER_VIEWS&&lC((function(){var t=new sC(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));pC("set",(function(t){mC(this);var e=aC(arguments.length>1?arguments[1]:void 0,1),n=oC(t);if(bC)return rC(hC,this,n,e);var r=this.length,i=cC(n),c=0;if(i+e>r)throw uC("Wrong length");for(;c<i;)this[e+c]=n[c++]}),!bC||ZC);var yC=PH,XC=Do,fC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("slice",(function(t,e){for(var n=XC(fC(this),t,e),r=yC(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),J((function(){new Int8Array(1).slice()})));var IC=fa.some,GC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("some",(function(t){return IC(GC(this),t,arguments.length>1?arguments[1]:void 0)}));var VC=O,WC=J,vC=Ft,gC=Uh,SC=wh,YC=Fh,RC=gt,KC=jh,LC=rx.aTypedArray,JC=rx.exportTypedArrayMethod,NC=K.Uint16Array,xC=NC&&VC(NC.prototype.sort),HC=!(!xC||WC((function(){xC(new NC(2),null)}))&&WC((function(){xC(new NC(2),{})}))),kC=!!xC&&!WC((function(){if(RC)return RC<74;if(SC)return SC<67;if(YC)return!0;if(KC)return KC<602;var t,e,n=new NC(516),r=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(xC(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));JC("sort",(function(t){return void 0!==t&&vC(t),kC?xC(this,t):gC(LC(this),function(t){return function(e,n){return void 0!==t?+t(e,n)||0:n!=n?-1:e!=e?1:0===e&&0===n?1/e>0&&1/n<0?1:-1:e>n}}(t))}),!kC||HC);var CC=xr,UC=Lr,TC=PH,wC=rx.aTypedArray;(0,rx.exportTypedArrayMethod)("subarray",(function(t,e){var n=wC(this),r=n.length,i=UC(t,r);return new(TC(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,CC((void 0===e?r:UC(e,r))-i))}));var FC=Qo,MC=rx,jC=J,zC=Do,PC=K.Int8Array,BC=MC.aTypedArray,QC=MC.exportTypedArrayMethod,DC=[].toLocaleString,EC=!!PC&&jC((function(){DC.call(new PC(1))}));QC("toLocaleString",(function(){return FC(DC,EC?zC(BC(this)):BC(this),zC(arguments))}),jC((function(){return[1,2].toLocaleString()!=new PC([1,2]).toLocaleString()}))||!jC((function(){PC.prototype.toLocaleString.call([1,2])})));var OC=rx.exportTypedArrayMethod,AC=J,_C=O,qC=K.Uint8Array,$C=qC&&qC.prototype||{},tU=[].toString,eU=_C([].join);AC((function(){tU.call({})}))&&(tU=function(){return eU(this)});var nU=$C.toString!=tU;OC("toString",tU,nU);var rU=O,iU=Km,cU=Xb.exports.getWeakData,aU=en,oU=ht,lU=Nm,uU=eZ,sU=oe,dU=rr.set,hU=rr.getterFor,mU=fa.find,pU=fa.findIndex,bU=rU([].splice),ZU=0,yU=function(t){return t.frozen||(t.frozen=new XU)},XU=function(){this.entries=[]},fU=function(t,e){return mU(t.entries,(function(t){return t[0]===e}))};XU.prototype={get:function(t){var e=fU(this,t);if(e)return e[1]},has:function(t){return!!fU(this,t)},set:function(t,e){var n=fU(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=pU(this.entries,(function(e){return e[0]===t}));return~e&&bU(this.entries,e,1),!!~e}};var IU,GU={getConstructor:function(t,e,n,r){var i=t((function(t,i){lU(t,c),dU(t,{type:e,id:ZU++,frozen:void 0}),null!=i&&uU(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=hU(e),o=function(t,e,n){var r=a(t),i=cU(aU(e),!0);return!0===i?yU(r).set(e,n):i[r.id]=n,t};return iU(c,{delete:function(t){var e=a(this);if(!oU(t))return!1;var n=cU(t);return!0===n?yU(e).delete(t):n&&sU(n,e.id)&&delete n[e.id]},has:function(t){var e=a(this);if(!oU(t))return!1;var n=cU(t);return!0===n?yU(e).has(t):n&&sU(n,e.id)}}),iU(c,n?{get:function(t){var e=a(this);if(oU(t)){var n=cU(t);return!0===n?yU(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return o(this,t,e)}}:{add:function(t){return o(this,t,!0)}}),i}},VU=K,WU=O,vU=Km,gU=Xb.exports,SU=IZ,YU=GU,RU=ht,KU=gb,LU=rr.enforce,JU=Hn,NU=!VU.ActiveXObject&&"ActiveXObject"in VU,xU=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},HU=SU("WeakMap",xU,YU);if(JU&&NU){IU=YU.getConstructor(xU,"WeakMap",!0),gU.enable();var kU=HU.prototype,CU=WU(kU.delete),UU=WU(kU.has),TU=WU(kU.get),wU=WU(kU.set);vU(kU,{delete:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),CU(this,t)||e.frozen.delete(t)}return CU(this,t)},has:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),UU(this,t)||e.frozen.has(t)}return UU(this,t)},get:function(t){if(RU(t)&&!KU(t)){var e=LU(this);return e.frozen||(e.frozen=new IU),UU(this,t)?TU(this,t):e.frozen.get(t)}return TU(this,t)},set:function(t,e){if(RU(t)&&!KU(t)){var n=LU(this);n.frozen||(n.frozen=new IU),UU(this,t)?wU(this,t,e):n.frozen.set(t,e)}else wU(this,t,e);return this}})}IZ("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),GU);var FU={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},MU=Te("span").classList,jU=MU&&MU.constructor&&MU.constructor.prototype,zU=jU===Object.prototype?void 0:jU,PU=fa.forEach,BU=oh("forEach")?[].forEach:function(t){return PU(this,t,arguments.length>1?arguments[1]:void 0)},QU=K,DU=FU,EU=zU,OU=BU,AU=Zn,_U=function(t){if(t&&t.forEach!==OU)try{AU(t,"forEach",OU)}catch(e){t.forEach=OU}};for(var qU in DU)DU[qU]&&_U(QU[qU]&&QU[qU].prototype);_U(EU);var $U=K,tT=FU,eT=zU,nT=ih,rT=Zn,iT=We,cT=iT("iterator"),aT=iT("toStringTag"),oT=nT.values,lT=function(t,e){if(t){if(t[cT]!==oT)try{rT(t,cT,oT)}catch(e){t[cT]=oT}if(t[aT]||rT(t,aT,e),tT[e])for(var n in nT)if(t[n]!==nT[n])try{rT(t,n,nT[n])}catch(e){t[n]=nT[n]}}};for(var uT in tT)lT($U[uT]&&$U[uT].prototype,uT);lT(eT,"DOMTokenList");var sT=hV.clear;vi({global:!0,bind:!0,enumerable:!0,forced:K.clearImmediate!==sT},{clearImmediate:sT});var dT=hV.set;vi({global:!0,bind:!0,enumerable:!0,forced:K.setImmediate!==dT},{setImmediate:dT});var hT=vi,mT=LV,pT=Ft,bT=LG,ZT=IG,yT=K.process;hT({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(t){bT(arguments.length,1),pT(t);var e=ZT&&yT.domain;mT(e?e.bind(t):t)}});var XT=J,fT=We("iterator"),IT=!XT((function(){var t=new URL("b?a=1&b=2&c=3","http://a"),e=t.searchParams,n="";return t.pathname="c%20d",e.forEach((function(t,r){e.delete("b"),n+=r+t})),!e.sort||"http://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[fT]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==n||"x"!==new URL("http://x",void 0).host})),GT=O,VT=2147483647,WT=/[^\0-\u007E]/,vT=/[.\u3002\uFF0E\uFF61]/g,gT="Overflow: input needs wider integers to process",ST=RangeError,YT=GT(vT.exec),RT=Math.floor,KT=String.fromCharCode,LT=GT("".charCodeAt),JT=GT([].join),NT=GT([].push),xT=GT("".replace),HT=GT("".split),kT=GT("".toLowerCase),CT=function(t){return t+22+75*(t<26)},UT=function(t,e,n){var r=0;for(t=n?RT(t/700):t>>1,t+=RT(t/e);t>455;)t=RT(t/35),r+=36;return RT(r+36*t/(t+38))},TT=function(t){var e=[];t=function(t){for(var e=[],n=0,r=t.length;n<r;){var i=LT(t,n++);if(i>=55296&&i<=56319&&n<r){var c=LT(t,n++);56320==(64512&c)?NT(e,((1023&i)<<10)+(1023&c)+65536):(NT(e,i),n--)}else NT(e,i)}return e}(t);var n,r,i=t.length,c=128,a=0,o=72;for(n=0;n<t.length;n++)(r=t[n])<128&&NT(e,KT(r));var l=e.length,u=l;for(l&&NT(e,"-");u<i;){var s=VT;for(n=0;n<t.length;n++)(r=t[n])>=c&&r<s&&(s=r);var d=u+1;if(s-c>RT((VT-a)/d))throw ST(gT);for(a+=(s-c)*d,c=s,n=0;n<t.length;n++){if((r=t[n])<c&&++a>VT)throw ST(gT);if(r==c){for(var h=a,m=36;;){var p=m<=o?1:m>=o+26?26:m-o;if(h<p)break;var b=h-p,Z=36-p;NT(e,KT(CT(p+b%Z))),h=RT(b/Z),m+=36}NT(e,KT(CT(h))),o=UT(a,d,u==l),a=0,u++}}a++,c++}return JT(e,"")},wT=vi,FT=K,MT=C,jT=O,zT=N,PT=IT,BT=Ir,QT=Km,DT=Tc,ET=fd,OT=rr,AT=Nm,_T=st,qT=oe,$T=jc,tw=xi,ew=en,nw=ht,rw=Ci,iw=ac,cw=z,aw=Ss,ow=fs,lw=LG,uw=Uh,sw=We("iterator"),dw="URLSearchParams",hw="URLSearchParamsIterator",mw=OT.set,pw=OT.getterFor(dw),bw=OT.getterFor(hw),Zw=Object.getOwnPropertyDescriptor,yw=function(t){if(!zT)return FT[t];var e=Zw(FT,t);return e&&e.value},Xw=yw("fetch"),fw=yw("Request"),Iw=yw("Headers"),Gw=fw&&fw.prototype,Vw=Iw&&Iw.prototype,Ww=FT.RegExp,vw=FT.TypeError,gw=FT.decodeURIComponent,Sw=FT.encodeURIComponent,Yw=jT("".charAt),Rw=jT([].join),Kw=jT([].push),Lw=jT("".replace),Jw=jT([].shift),Nw=jT([].splice),xw=jT("".split),Hw=jT("".slice),kw=/\+/g,Cw=Array(4),Uw=function(t){return Cw[t-1]||(Cw[t-1]=Ww("((?:%[\\da-f]{2}){"+t+"})","gi"))},Tw=function(t){try{return gw(t)}catch(e){return t}},ww=function(t){var e=Lw(t,kw," "),n=4;try{return gw(e)}catch(t){for(;n;)e=Lw(e,Uw(n--),Tw);return e}},Fw=/[!'()~]|%20/g,Mw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},jw=function(t){return Mw[t]},zw=function(t){return Lw(Sw(t),Fw,jw)},Pw=ET((function(t,e){mw(this,{type:hw,iterator:aw(pw(t).entries),kind:e})}),"Iterator",(function(){var t=bw(this),e=t.kind,n=t.iterator.next(),r=n.value;return n.done||(n.value="keys"===e?r.key:"values"===e?r.value:[r.key,r.value]),n}),!0),Bw=function(t){this.entries=[],this.url=null,void 0!==t&&(nw(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Yw(t,0)?Hw(t,1):t:rw(t)))};Bw.prototype={type:dw,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,r,i,c,a,o,l=ow(t);if(l)for(n=(e=aw(t,l)).next;!(r=MT(n,e)).done;){if(c=(i=aw(ew(r.value))).next,(a=MT(c,i)).done||(o=MT(c,i)).done||!MT(c,i).done)throw vw("Expected sequence with length 2");Kw(this.entries,{key:rw(a.value),value:rw(o.value)})}else for(var u in t)qT(t,u)&&Kw(this.entries,{key:u,value:rw(t[u])})},parseQuery:function(t){if(t)for(var e,n,r=xw(t,"&"),i=0;i<r.length;)(e=r[i++]).length&&(n=xw(e,"="),Kw(this.entries,{key:ww(Jw(n)),value:ww(Rw(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],r=0;r<e.length;)t=e[r++],Kw(n,zw(t.key)+"="+zw(t.value));return Rw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var Qw=function(){AT(this,Dw);var t=arguments.length>0?arguments[0]:void 0;mw(this,new Bw(t))},Dw=Qw.prototype;if(QT(Dw,{append:function(t,e){lw(arguments.length,2);var n=pw(this);Kw(n.entries,{key:rw(t),value:rw(e)}),n.updateURL()},delete:function(t){lw(arguments.length,1);for(var e=pw(this),n=e.entries,r=rw(t),i=0;i<n.length;)n[i].key===r?Nw(n,i,1):i++;e.updateURL()},get:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=0;r<e.length;r++)if(e[r].key===n)return e[r].value;return null},getAll:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=[],i=0;i<e.length;i++)e[i].key===n&&Kw(r,e[i].value);return r},has:function(t){lw(arguments.length,1);for(var e=pw(this).entries,n=rw(t),r=0;r<e.length;)if(e[r++].key===n)return!0;return!1},set:function(t,e){lw(arguments.length,1);for(var n,r=pw(this),i=r.entries,c=!1,a=rw(t),o=rw(e),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?Nw(i,l--,1):(c=!0,n.value=o));c||Kw(i,{key:a,value:o}),r.updateURL()},sort:function(){var t=pw(this);uw(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=pw(this).entries,r=$T(t,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((e=n[i++]).value,e.key,this)},keys:function(){return new Pw(this,"keys")},values:function(){return new Pw(this,"values")},entries:function(){return new Pw(this,"entries")}},{enumerable:!0}),BT(Dw,sw,Dw.entries,{name:"entries"}),BT(Dw,"toString",(function(){return pw(this).serialize()}),{enumerable:!0}),DT(Qw,dw),wT({global:!0,constructor:!0,forced:!PT},{URLSearchParams:Qw}),!PT&&_T(Iw)){var Ew=jT(Vw.has),Ow=jT(Vw.set),Aw=function(t){if(nw(t)){var e,n=t.body;if(tw(n)===dw)return e=t.headers?new Iw(t.headers):new Iw,Ew(e,"content-type")||Ow(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),iw(t,{body:cw(0,rw(n)),headers:cw(0,e)})}return t};if(_T(Xw)&&wT({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return Xw(t,arguments.length>1?Aw(arguments[1]):{})}}),_T(fw)){var _w=function(t){return AT(this,Gw),new fw(t,arguments.length>1?Aw(arguments[1]):{})};Gw.constructor=_w,_w.prototype=Gw,wT({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:_w})}}var qw,$w=vi,tF=N,eF=IT,nF=K,rF=jc,iF=O,cF=Ir,aF=KY,oF=Nm,lF=oe,uF=kf,sF=Ts,dF=yc,hF=ZR.codeAt,mF=function(t){var e,n,r=[],i=HT(xT(kT(t),vT,"."),".");for(e=0;e<i.length;e++)n=i[e],NT(r,YT(WT,n)?"xn--"+TT(n):n);return JT(r,".")},pF=Ci,bF=Tc,ZF=LG,yF={URLSearchParams:Qw,getState:pw},XF=rr,fF=XF.set,IF=XF.getterFor("URL"),GF=yF.URLSearchParams,VF=yF.getState,WF=nF.URL,vF=nF.TypeError,gF=nF.parseInt,SF=Math.floor,YF=Math.pow,RF=iF("".charAt),KF=iF(/./.exec),LF=iF([].join),JF=iF(1..toString),NF=iF([].pop),xF=iF([].push),HF=iF("".replace),kF=iF([].shift),CF=iF("".split),UF=iF("".slice),TF=iF("".toLowerCase),wF=iF([].unshift),FF="Invalid scheme",MF="Invalid host",jF="Invalid port",zF=/[a-z]/i,PF=/[\d+-.a-z]/i,BF=/\d/,QF=/^0x/i,DF=/^[0-7]+$/,EF=/^\d+$/,OF=/^[\da-f]+$/i,AF=/[\0\t\n\r #%/:<>?@[\\\]^|]/,_F=/[\0\t\n\r #/:<>?@[\\\]^|]/,qF=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,$F=/[\t\n\r]/g,tM=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)wF(e,t%256),t=SF(t/256);return LF(e,".")}if("object"==o(t)){for(e="",r=function(t){for(var e=null,n=1,r=null,i=0,c=0;c<8;c++)0!==t[c]?(i>n&&(e=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(e=r,n=i),e}(t),n=0;n<8;n++)i&&0===t[n]||(i&&(i=!1),r===n?(e+=n?":":"::",i=!0):(e+=JF(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},eM={},nM=uF({},eM,{" ":1,'"':1,"<":1,">":1,"`":1}),rM=uF({},nM,{"#":1,"?":1,"{":1,"}":1}),iM=uF({},rM,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),cM=function(t,e){var n=hF(t,0);return n>32&&n<127&&!lF(e,t)?t:encodeURIComponent(t)},aM={ftp:21,file:null,http:80,https:443,ws:80,wss:443},oM=function(t,e){var n;return 2==t.length&&KF(zF,RF(t,0))&&(":"==(n=RF(t,1))||!e&&"|"==n)},lM=function(t){var e;return t.length>1&&oM(UF(t,0,2))&&(2==t.length||"/"===(e=RF(t,2))||"\\"===e||"?"===e||"#"===e)},uM=function(t){return"."===t||"%2e"===TF(t)},sM={},dM={},hM={},mM={},pM={},bM={},ZM={},yM={},XM={},fM={},IM={},GM={},VM={},WM={},vM={},gM={},SM={},YM={},RM={},KM={},LM={},JM=function t(e,n,r){var i,c,a,o=pF(e);if(n){if(c=this.parse(o))throw vF(c);this.searchParams=null}else{if(void 0!==r&&(i=new t(r,!0)),c=this.parse(o,null,i))throw vF(c);(a=VF(new GF)).bindURL(this),this.searchParams=a}};JM.prototype={type:"URL",parse:function(t,e,n){var r,i,c,a,o,l=this,u=e||sM,s=0,d="",h=!1,m=!1,p=!1;for(t=pF(t),e||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=HF(t,qF,"")),t=HF(t,$F,""),r=sF(t);s<=r.length;){switch(i=r[s],u){case sM:if(!i||!KF(zF,i)){if(e)return FF;u=hM;continue}d+=TF(i),u=dM;break;case dM:if(i&&(KF(PF,i)||"+"==i||"-"==i||"."==i))d+=TF(i);else{if(":"!=i){if(e)return FF;d="",u=hM,s=0;continue}if(e&&(l.isSpecial()!=lF(aM,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,e)return void(l.isSpecial()&&aM[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?u=WM:l.isSpecial()&&n&&n.scheme==l.scheme?u=mM:l.isSpecial()?u=yM:"/"==r[s+1]?(u=pM,s++):(l.cannotBeABaseURL=!0,xF(l.path,""),u=RM)}break;case hM:if(!n||n.cannotBeABaseURL&&"#"!=i)return FF;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=dF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=LM;break}u="file"==n.scheme?WM:bM;continue;case mM:if("/"!=i||"/"!=r[s+1]){u=bM;continue}u=XM,s++;break;case pM:if("/"==i){u=fM;break}u=YM;continue;case bM:if(l.scheme=n.scheme,i==qw)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=ZM;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query="",u=KM;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.path.length--,u=YM;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=dF(n.path),l.query=n.query,l.fragment="",u=LM}break;case ZM:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=YM;continue}u=fM}else u=XM;break;case yM:if(u=XM,"/"!=i||"/"!=RF(d,s+1))continue;s++;break;case XM:if("/"!=i&&"\\"!=i){u=fM;continue}break;case fM:if("@"==i){h&&(d="%40"+d),h=!0,c=sF(d);for(var b=0;b<c.length;b++){var Z=c[b];if(":"!=Z||p){var y=cM(Z,iM);p?l.password+=y:l.username+=y}else p=!0}d=""}else if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(h&&""==d)return"Invalid authority";s-=sF(d).length+1,d="",u=IM}else d+=i;break;case IM:case GM:if(e&&"file"==l.scheme){u=gM;continue}if(":"!=i||m){if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==d)return MF;if(e&&""==d&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(d))return a;if(d="",u=SM,e)return;continue}"["==i?m=!0:"]"==i&&(m=!1),d+=i}else{if(""==d)return MF;if(a=l.parseHost(d))return a;if(d="",u=VM,e==GM)return}break;case VM:if(!KF(BF,i)){if(i==qw||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||e){if(""!=d){var X=gF(d,10);if(X>65535)return jF;l.port=l.isSpecial()&&X===aM[l.scheme]?null:X,d=""}if(e)return;u=SM;continue}return jF}d+=i;break;case WM:if(l.scheme="file","/"==i||"\\"==i)u=vM;else{if(!n||"file"!=n.scheme){u=YM;continue}if(i==qw)l.host=n.host,l.path=dF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=dF(n.path),l.query="",u=KM;else{if("#"!=i){lM(LF(dF(r,s),""))||(l.host=n.host,l.path=dF(n.path),l.shortenPath()),u=YM;continue}l.host=n.host,l.path=dF(n.path),l.query=n.query,l.fragment="",u=LM}}break;case vM:if("/"==i||"\\"==i){u=gM;break}n&&"file"==n.scheme&&!lM(LF(dF(r,s),""))&&(oM(n.path[0],!0)?xF(l.path,n.path[0]):l.host=n.host),u=YM;continue;case gM:if(i==qw||"/"==i||"\\"==i||"?"==i||"#"==i){if(!e&&oM(d))u=YM;else if(""==d){if(l.host="",e)return;u=SM}else{if(a=l.parseHost(d))return a;if("localhost"==l.host&&(l.host=""),e)return;d="",u=SM}continue}d+=i;break;case SM:if(l.isSpecial()){if(u=YM,"/"!=i&&"\\"!=i)continue}else if(e||"?"!=i)if(e||"#"!=i){if(i!=qw&&(u=YM,"/"!=i))continue}else l.fragment="",u=LM;else l.query="",u=KM;break;case YM:if(i==qw||"/"==i||"\\"==i&&l.isSpecial()||!e&&("?"==i||"#"==i)){if(".."===(o=TF(o=d))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||xF(l.path,"")):uM(d)?"/"==i||"\\"==i&&l.isSpecial()||xF(l.path,""):("file"==l.scheme&&!l.path.length&&oM(d)&&(l.host&&(l.host=""),d=RF(d,0)+":"),xF(l.path,d)),d="","file"==l.scheme&&(i==qw||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)kF(l.path);"?"==i?(l.query="",u=KM):"#"==i&&(l.fragment="",u=LM)}else d+=cM(i,rM);break;case RM:"?"==i?(l.query="",u=KM):"#"==i?(l.fragment="",u=LM):i!=qw&&(l.path[0]+=cM(i,eM));break;case KM:e||"#"!=i?i!=qw&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":cM(i,eM)):(l.fragment="",u=LM);break;case LM:i!=qw&&(l.fragment+=cM(i,nM))}s++}},parseHost:function(t){var e,n,r;if("["==RF(t,0)){if("]"!=RF(t,t.length-1))return MF;if(e=function(t){var e,n,r,i,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,s=null,d=0,h=function(){return RF(t,d)};if(":"==h()){if(":"!=RF(t,1))return;d+=2,s=++u}for(;h();){if(8==u)return;if(":"!=h()){for(e=n=0;n<4&&KF(OF,h());)e=16*e+gF(h(),16),d++,n++;if("."==h()){if(0==n)return;if(d-=n,u>6)return;for(r=0;h();){if(i=null,r>0){if(!("."==h()&&r<4))return;d++}if(!KF(BF,h()))return;for(;KF(BF,h());){if(c=gF(h(),10),null===i)i=c;else{if(0==i)return;i=10*i+c}if(i>255)return;d++}l[u]=256*l[u]+i,2!=++r&&4!=r||u++}if(4!=r)return;break}if(":"==h()){if(d++,!h())return}else if(h())return;l[u++]=e}else{if(null!==s)return;d++,s=++u}}if(null!==s)for(a=u-s,u=7;0!=u&&a>0;)o=l[u],l[u--]=l[s+a-1],l[s+--a]=o;else if(8!=u)return;return l}(UF(t,1,-1)),!e)return MF;this.host=e}else if(this.isSpecial()){if(t=mF(t),KF(AF,t))return MF;if(e=function(t){var e,n,r,i,c,a,o,l=CF(t,".");if(l.length&&""==l[l.length-1]&&l.length--,(e=l.length)>4)return t;for(n=[],r=0;r<e;r++){if(""==(i=l[r]))return t;if(c=10,i.length>1&&"0"==RF(i,0)&&(c=KF(QF,i)?16:8,i=UF(i,8==c?1:2)),""===i)a=0;else{if(!KF(10==c?EF:8==c?DF:OF,i))return t;a=gF(i,c)}xF(n,a)}for(r=0;r<e;r++)if(a=n[r],r==e-1){if(a>=YF(256,5-e))return null}else if(a>255)return null;for(o=NF(n),r=0;r<n.length;r++)o+=n[r]*YF(256,3-r);return o}(t),null===e)return MF;this.host=e}else{if(KF(_F,t))return MF;for(e="",n=sF(t),r=0;r<n.length;r++)e+=cM(n[r],eM);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return lF(aM,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&oM(t[0],!0)||t.length--},serialize:function(){var t=this,e=t.scheme,n=t.username,r=t.password,i=t.host,c=t.port,a=t.path,o=t.query,l=t.fragment,u=e+":";return null!==i?(u+="//",t.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=tM(i),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+LF(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(t){var e=this.parse(t);if(e)throw vF(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new NM(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+tM(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(pF(t)+":",sM)},getUsername:function(){return this.username},setUsername:function(t){var e=sF(pF(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=cM(e[n],iM)}},getPassword:function(){return this.password},setPassword:function(t){var e=sF(pF(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=cM(e[n],iM)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?tM(t):tM(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,IM)},getHostname:function(){var t=this.host;return null===t?"":tM(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,GM)},getPort:function(){var t=this.port;return null===t?"":pF(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=pF(t))?this.port=null:this.parse(t,VM))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+LF(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,SM))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=pF(t))?this.query=null:("?"==RF(t,0)&&(t=UF(t,1)),this.query="",this.parse(t,KM)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=pF(t))?("#"==RF(t,0)&&(t=UF(t,1)),this.fragment="",this.parse(t,LM)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var NM=function(t){var e=oF(this,xM),n=ZF(arguments.length,1)>1?arguments[1]:void 0,r=fF(e,new JM(t,!1,n));tF||(e.href=r.serialize(),e.origin=r.getOrigin(),e.protocol=r.getProtocol(),e.username=r.getUsername(),e.password=r.getPassword(),e.host=r.getHost(),e.hostname=r.getHostname(),e.port=r.getPort(),e.pathname=r.getPathname(),e.search=r.getSearch(),e.searchParams=r.getSearchParams(),e.hash=r.getHash())},xM=NM.prototype,HM=function(t,e){return{get:function(){return IF(this)[t]()},set:e&&function(t){return IF(this)[e](t)},configurable:!0,enumerable:!0}};if(tF&&(aF(xM,"href",HM("serialize","setHref")),aF(xM,"origin",HM("getOrigin")),aF(xM,"protocol",HM("getProtocol","setProtocol")),aF(xM,"username",HM("getUsername","setUsername")),aF(xM,"password",HM("getPassword","setPassword")),aF(xM,"host",HM("getHost","setHost")),aF(xM,"hostname",HM("getHostname","setHostname")),aF(xM,"port",HM("getPort","setPort")),aF(xM,"pathname",HM("getPathname","setPathname")),aF(xM,"search",HM("getSearch","setSearch")),aF(xM,"searchParams",HM("getSearchParams")),aF(xM,"hash",HM("getHash","setHash"))),cF(xM,"toJSON",(function(){return IF(this).serialize()}),{enumerable:!0}),cF(xM,"toString",(function(){return IF(this).serialize()}),{enumerable:!0}),WF){var kM=WF.createObjectURL,CM=WF.revokeObjectURL;kM&&cF(NM,"createObjectURL",rF(kM,WF)),CM&&cF(NM,"revokeObjectURL",rF(CM,WF))}bF(NM,"URL"),$w({global:!0,constructor:!0,forced:!eF,sham:!tF},{URL:NM});var UM=C;function TM(t,e,n,r){return new(n||(n=Promise))((function(i,c){function a(t){try{l(r.next(t))}catch(t){c(t)}}function o(t){try{l(r.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((r=r.apply(t,e||[])).next())}))}function wM(t,e,n,r){return new(n||(n=Promise))((function(i,c){function a(t){try{l(r.next(t))}catch(t){c(t)}}function o(t){try{l(r.throw(t))}catch(t){c(t)}}function l(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,o)}l((r=r.apply(t,e||[])).next())}))}vi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return UM(URL.prototype.toString,this)}}),t.ResponseMode=void 0,function(t){t.formPost="form_post",t.query="query"}(t.ResponseMode||(t.ResponseMode={}));t.Stores=void 0,function(t){t.ConfigData="config_data",t.OIDCProviderMetaData="oidc_provider_meta_data",t.SessionData="session_data",t.TemporaryData="temporary_data"}(t.Stores||(t.Stores={}));var FM,MM="refresh_token_timer",jM=["RS256","RS512","RS384","PS256"],zM="code",PM="session_state",BM="sign_out_url",QM="sign_out_success",DM="state";!function(t){t.Include="include",t.SameOrigin="same-origin",t.Omit="omit"}(FM||(FM={}));var EM=h((function t(e,n,r){s(this,t),this.message=r,this.name=n,this.code=e,Object.setPrototypeOf(this,(this instanceof t?this.constructor:void 0).prototype)})),OM=function(){function t(){s(this,t)}return h(t,null,[{key:"filterClaimsFromIDTokenPayload",value:function(t){var e=Object.assign({},t);null==e||delete e.iss,null==e||delete e.aud,null==e||delete e.exp,null==e||delete e.iat,null==e||delete e.acr,null==e||delete e.amr,null==e||delete e.azp,null==e||delete e.auth_time,null==e||delete e.nonce,null==e||delete e.c_hash,null==e||delete e.at_hash,null==e||delete e.nbf,null==e||delete e.isk,null==e||delete e.sid;var n={};return Object.entries(e).forEach((function(t){var e=W(t,2),r=e[0],i=e[1],c=r.split("_").map((function(t,e){return 0===e?t:[t[0].toUpperCase()].concat(v(t.slice(1))).join("")})).join("");n[c]=i})),n}},{key:"getTokenRequestHeaders",value:function(){return{Accept:"application/json","Content-Type":"application/x-www-form-urlencoded"}}},{key:"generateStateParamForRequestCorrelation",value:function(t,e){var n=parseInt(t.split("#")[1]);return e?"".concat(e,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(t){return"pkce_code_verifier#".concat(parseInt(t.split("request_")[1]))}}]),t}();OM.getTenantDomainFromIdTokenPayload=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=t.sub.split(e);return n.length>2?n[n.length-1]:""};var AM=function(){function t(e,n){var r=this;s(this,t),this._dataLayer=e,this._config=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._cryptoHelper=n}return h(t,[{key:"resolveEndpoints",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={},e.next=3,this._config();case 3:return r=e.sent,e.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));n[e]=(null==r?void 0:r.endpoints)?r.endpoints[t]:""})),Object.assign(Object.assign({},t),n)));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return wM(this,void 0,void 0,a().mark((function t(){var e,n,r;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:if(n=t.sent,r=["authorization_endpoint","end_session_endpoint","jwks_uri","check_session_iframe","revocation_endpoint","token_endpoint","issuer","userinfo_endpoint"],n.endpoints&&Object.keys(null==n?void 0:n.endpoints).every((function(t){var e=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));return r.includes(e)}))){t.next=7;break}throw new EM("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return t.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),Object.assign({},e)));case 8:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return wM(this,void 0,void 0,a().mark((function t(){var e,n,r,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={},t.next=3,this._config();case 3:if(n=t.sent,r=n.baseUrl){t.next=7;break}throw new EM("JS-AUTH_HELPER_REBO-NF01","Base URL not defined.","Base URL is not defined in AuthClient config.");case 7:return n.endpoints&&Object.keys(n.endpoints).forEach((function(t){var r=t.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())}));e[r]=(null==n?void 0:n.endpoints)?n.endpoints[t]:""})),i={authorization_endpoint:"".concat(r).concat("/oauth2/authorize"),end_session_endpoint:"".concat(r).concat("/oidc/logout"),issuer:"".concat(r).concat("/oauth2/token"),jwks_uri:"".concat(r).concat("/oauth2/jwks"),check_session_iframe:"".concat(r).concat("/oidc/checksession"),revocation_endpoint:"".concat(r).concat("/oauth2/revoke"),token_endpoint:"".concat(r).concat("/oauth2/token"),userinfo_endpoint:"".concat(r).concat("/oauth2/userinfo")},t.abrupt("return",Object.assign(Object.assign({},i),e));case 10:case"end":return t.stop()}}),t,this)})))}},{key:"validateIdToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c,o,l,u;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=e.sent.jwks_uri,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new EM("JS_AUTH_HELPER-VIT-NF01","JWKS endpoint not found.","No JWKS endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the JWKS endpoint passed to the SDK is empty.");case 8:return e.prev=8,e.next=11,fetch(n,{credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin});case 11:i=e.sent,e.next=17;break;case 14:throw e.prev=14,e.t0=e.catch(8),new EM("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=e.t0?e.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){e.next=24;break}return e.t1=EM,e.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),e.next=22,i.json();case 22:throw e.t3=e.sent,new e.t1("JS-AUTH_HELPER-VIT-HE03",e.t2,e.t3);case 24:return e.next=26,this._oidcProviderMetaData();case 26:return c=e.sent.issuer,e.next=29,i.json();case 29:return o=e.sent,l=o.keys,e.next=33,this._cryptoHelper.getJWKForTheIdToken(t.split(".")[0],l);case 33:return u=e.sent,e.t4=this._cryptoHelper,e.t5=t,e.t6=u,e.next=39,this._config();case 39:return e.t7=e.sent.clientID,e.t8=null!=c?c:"",e.t9=this._cryptoHelper.decodeIDToken(t).sub,e.next=44,this._config();case 44:return e.t10=e.sent.clockTolerance,e.abrupt("return",e.t4.isValidIdToken.call(e.t4,e.t5,e.t6,e.t7,e.t8,e.t9,e.t10));case 46:case"end":return e.stop()}}),e,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(t){var e,n,r,i,c=this._cryptoHelper.decodeIDToken(t),a=OM.getTenantDomainFromIdTokenPayload(c),o=null!==(e=null==c?void 0:c.username)&&void 0!==e?e:"",l=null!==(n=c.given_name)&&void 0!==n?n:"",u=null!==(r=c.family_name)&&void 0!==r?r:"",s=l&&u?"".concat(l," ").concat(u):l||u||"",d=null!==(i=c.preferred_username)&&void 0!==i?i:s;return Object.assign({displayName:d,tenantDomain:a,username:o},OM.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return i="openid",r.next=3,this._config();case 3:return c=r.sent,r.next=6,this._dataLayer.getSessionData(e);case 6:return o=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),t.replace("{{token}}",o.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(o.id_token).username).replace("{{scope}}",i).replace("{{clientID}}",c.clientID).replace("{{clientSecret}}",null!==(n=c.clientSecret)&&void 0!==n?n:"")));case 8:case"end":return r.stop()}}),r,this)})))}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.removeTemporaryData(t);case 2:return e.next=4,this._dataLayer.removeSessionData(t);case 4:case"end":return e.stop()}}),e,this)})))}},{key:"handleTokenResponse",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i,c=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===t.status&&t.ok){n.next=7;break}return n.t0=EM,n.t1="Invalid response status received for token request (".concat(t.statusText,")."),n.next=5,t.json();case 5:throw n.t2=n.sent,new n.t0("JS-AUTH_HELPER-HTR-NE01",n.t1,n.t2);case 7:return n.next=9,t.json();case 9:return(r=n.sent).created_at=(new Date).getTime(),n.next=13,this._config();case 13:if(!n.sent.validateIDToken){n.next=15;break}return n.abrupt("return",this.validateIdToken(r.id_token).then((function(){return wM(c,void 0,void 0,a().mark((function t(){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setSessionData(r,e);case 2:return n={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},t.abrupt("return",Promise.resolve(n));case 4:case"end":return t.stop()}}),t,this)})))})));case 15:return i={accessToken:r.access_token,createdAt:r.created_at,expiresIn:r.expires_in,idToken:r.id_token,refreshToken:r.refresh_token,scope:r.scope,tokenType:r.token_type},n.next=18,this._dataLayer.setSessionData(r,e);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(t){var e;return wM(this,void 0,void 0,a().mark((function n(){var r,i,c;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(t);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(t){t.startsWith("pkce_code_verifier")&&i.push(t)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(e=null==c?void 0:c.split("#")[1])&&void 0!==e?e:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),t}(),_M=function(){function t(e){s(this,t),this._cryptoUtils=e}return h(t,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(t){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(t))}},{key:"getJWKForTheIdToken",value:function(t,e){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(t)),i=Y(e);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(t){i.e(t)}finally{i.f()}throw new EM("JS-CRYPTO_UTIL-GJFTIT-IV01","kid not found.","Failed to find the 'kid' specified in the id_token. 'kid' found in the header : "+r.kid+", Expected values: "+e.map((function(t){return t.kid})).join(", "))}},{key:"isValidIdToken",value:function(t,e,n,r,i,c){return this._cryptoUtils.verifyJwt(t,e,jM,n,r,i,c).then((function(t){return t?Promise.resolve(!0):Promise.reject(new EM("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(t){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==t?void 0:t.code)&&"nbf"===(null==t?void 0:t.claim)?Promise.reject(new EM("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new EM("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(t){try{var e=this._cryptoUtils.base64URLDecode(t.split(".")[1]);return JSON.parse(e)}catch(t){throw new EM("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",t)}}}]),t}(),qM=function(){function t(e,n){var r=this;s(this,t),this._cryptoUtils=n,this._cryptoHelper=new _M(n),this._authenticationHelper=new AM(e,this._cryptoHelper),this._dataLayer=e,this._config=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getConfigData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))},this._oidcProviderMetaData=function(){return wM(r,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}}return h(t,[{key:"getAuthorizationURL",value:function(t,e){var n,r,i;return wM(this,void 0,void 0,a().mark((function c(){var o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,v,g,S,R;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return o=c.sent,c.next=5,this._config();case 5:if(l=c.sent,o&&0!==o.trim().length){c.next=8;break}throw new EM("JS-AUTH_CORE-GAU-NF01","No authorization endpoint found.","No authorization endpoint was found in the OIDC provider meta data from the well-known endpoint or the authorization endpoint passed to the SDK is empty.");case 8:return u=new URL(o),(s=new Map).set("response_type","code"),s.set("client_id",l.clientID),d="openid",l.scope&&l.scope.length>0&&(l.scope.includes("openid")||l.scope.push("openid"),d=l.scope.join(" ")),s.set("scope",d),s.set("redirect_uri",l.signInRedirectURL),l.responseMode&&s.set("response_mode",l.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(e);case 14:if(h=c.sent,!l.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),p=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(h,m,e);case 19:s.set("code_challenge_method","S256"),s.set("code_challenge",p);case 21:if(l.prompt&&s.set("prompt",l.prompt),b=t)for(Z=0,y=Object.entries(b);Z<y.length;Z++)X=W(y[Z],2),f=X[0],I=X[1],""!=f&&""!=I&&"state"!==f&&(G=f.replace(/[A-Z]/g,(function(t){return"_".concat(t.toLowerCase())})),s.set(G,I.toString()));s.set("state",OM.generateStateParamForRequestCorrelation(h,b?null===(i=b.state)||void 0===i?void 0:i.toString():"")),V=Y(s.entries());try{for(V.s();!(v=V.n()).done;)g=W(v.value,2),S=g[0],R=g[1],u.searchParams.append(S,R)}catch(t){V.e(t)}finally{V.f()}return c.abrupt("return",u.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(t,e,n,r){return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u,s;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:return c=i.sent.token_endpoint,i.next=5,this._config();case 5:if(o=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new EM("JS-AUTH_CORE-RAT1-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:if(i.t0=e,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",e,r);case 12:if((l=[]).push("client_id=".concat(o.clientID)),o.clientSecret&&o.clientSecret.trim().length>0&&l.push("client_secret=".concat(o.clientSecret)),u=t,l.push("code=".concat(u)),l.push("grant_type=authorization_code"),l.push("redirect_uri=".concat(o.signInRedirectURL)),i.t1=o.enablePKCE,!i.t1){i.next=29;break}return i.t2=l,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(n),r);case 24:return i.t4=i.sent,i.t5=i.t3.concat.call(i.t3,i.t4),i.t2.push.call(i.t2,i.t5),i.next=29,this._dataLayer.removeTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:l.join("&"),credentials:o.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 32:s=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new EM("JS-AUTH_CORE-RAT1-NE02","Requesting access token failed",null!=i.t6?i.t6:"The request to get the access token from the server failed.");case 38:if(s.ok){i.next=45;break}return i.t7=EM,i.t8="Requesting access token failed with ".concat(s.statusText),i.next=43,s.json();case 43:throw i.t9=i.sent,new i.t7("JS-AUTH_CORE-RAT1-HE03",i.t8,i.t9);case 45:return i.next=47,this._authenticationHelper.handleTokenResponse(s,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent.token_endpoint,e.next=5,this._config();case 5:return r=e.sent,e.next=8,this._dataLayer.getSessionData(t);case 8:if((i=e.sent).refresh_token){e.next=11;break}throw new EM("JS-AUTH_CORE-RAT2-NF01","No refresh token found.","There was no refresh token found. Asgardeo doesn't return a refresh token if the refresh token grant is not enabled.");case 11:if(n&&0!==n.trim().length){e.next=13;break}throw new EM("JS-AUTH_CORE-RAT2-NF02","No refresh token endpoint found.","No refresh token endpoint was in the OIDC provider meta data returned by the well-known endpoint or the refresh token endpoint passed to the SDK is empty.");case 13:return(c=[]).push("client_id=".concat(r.clientID)),c.push("refresh_token=".concat(i.refresh_token)),c.push("grant_type=refresh_token"),r.clientSecret&&r.clientSecret.trim().length>0&&c.push("client_secret=".concat(r.clientSecret)),e.prev=15,e.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 18:o=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),new EM("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=e.t0?e.t0:"The request to refresh the access token failed.");case 24:if(o.ok){e.next=31;break}return e.t1=EM,e.t2="Refreshing access token failed with ".concat(o.statusText),e.next=29,o.json();case 29:throw e.t3=e.sent,new e.t1("JS-AUTH_CORE-RAT2-HE04",e.t2,e.t3);case 31:return e.abrupt("return",this._authenticationHelper.handleTokenResponse(o,t));case 32:case"end":return e.stop()}}),e,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i,c;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._oidcProviderMetaData();case 2:return n=e.sent.revocation_endpoint,e.next=5,this._config();case 5:if(r=e.sent,n&&0!==n.trim().length){e.next=8;break}throw new EM("JS-AUTH_CORE-RAT3-NF01","No revoke access token endpoint found.","No revoke access token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the revoke access token endpoint passed to the SDK is empty.");case 8:return(i=[]).push("client_id=".concat(r.clientID)),e.t0=i,e.t1="token=",e.next=14,this._dataLayer.getSessionData(t);case 14:return e.t2=e.sent.access_token,e.t3=e.t1.concat.call(e.t1,e.t2),e.t0.push.call(e.t0,e.t3),i.push("token_type_hint=access_token"),e.prev=18,e.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(OM.getTokenRequestHeaders()),method:"POST"});case 21:c=e.sent,e.next=27;break;case 24:throw e.prev=24,e.t4=e.catch(18),new EM("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=e.t4?e.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){e.next=34;break}return e.t5=EM,e.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),e.next=32,c.json();case 32:throw e.t7=e.sent,new e.t5("JS-AUTH_CORE-RAT3-HE03",e.t6,e.t7);case 34:return e.abrupt("return",(this._authenticationHelper.clearUserSessionData(t),Promise.resolve(c)));case 35:case"end":return e.stop()}}),e,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._oidcProviderMetaData();case 2:return r=n.sent,n.next=5,this._config();case 5:if(i=n.sent,(c=t.tokenEndpoint&&0!==t.tokenEndpoint.trim().length?t.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new EM("JS-AUTH_CORE-RCG-NF01","Token endpoint not found.","No token endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the token endpoint passed to the SDK is empty.");case 8:return n.next=10,Promise.all(Object.entries(t.data).map((function(t){var n=W(t,2),r=n[0],i=n[1];return wM(d,void 0,void 0,a().mark((function t(){var n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,e);case 2:return n=t.sent,t.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return t.stop()}}),t,this)})))})));case 10:if(o=n.sent,l=Object.assign({},OM.getTokenRequestHeaders()),n.t0=t.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},l),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(e);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},l=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return u={body:o.join("&"),credentials:i.sendCookiesInRequests?FM.Include:FM.SameOrigin,headers:new Headers(l),method:"POST"},n.prev=24,n.next=27,fetch(c,u);case 27:s=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new EM("JS-AUTH_CORE-RCG-NE02","The custom grant request failed.",null!=n.t7?n.t7:"The request sent to get the custom grant failed.");case 33:if(200===s.status&&s.ok){n.next=40;break}return n.t8=EM,n.t9="Invalid response status received for the custom grant request. (".concat(s.statusText,")"),n.next=38,s.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!t.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(s,e),n.next=49;break;case 44:return n.t12=Promise,n.next=47,s.json();case 47:n.t13=n.sent,n.t11=n.t12.resolve.call(n.t12,n.t13);case 49:return n.abrupt("return",n.t11);case 50:case"end":return n.stop()}}),n,this,[[24,30]])})))}},{key:"getBasicUserInfo",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return n=e.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},e.abrupt("return",(Object.keys(r).forEach((function(t){void 0!==r[t]&&""!==r[t]&&null!==r[t]||delete r[t]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getDecodedIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return n=e.sent.id_token,e.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._cryptoHelper);case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData(t);case 2:return e.abrupt("return",e.sent.id_token);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCProviderMetaData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._config();case 2:if(n=e.sent,e.t0=!t,!e.t0){e.next=8;break}return e.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:e.t0=e.sent;case 8:if(!e.t0){e.next=10;break}return e.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){e.next=36;break}return e.prev=12,e.next=15,fetch(r);case 15:if(200===(i=e.sent).status&&i.ok){e.next=18;break}throw new Error;case 18:e.next=23;break;case 20:throw e.prev=20,e.t1=e.catch(12),new EM("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return e.t2=this._dataLayer,e.t3=this._authenticationHelper,e.next=27,i.json();case 27:return e.t4=e.sent,e.next=30,e.t3.resolveEndpoints.call(e.t3,e.t4);case 30:return e.t5=e.sent,e.next=33,e.t2.setOIDCProviderMetaData.call(e.t2,e.t5);case 33:return e.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return e.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){e.next=52;break}return e.prev=37,e.t6=this._dataLayer,e.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return e.t7=e.sent,e.next=44,e.t6.setOIDCProviderMetaData.call(e.t6,e.t7);case 44:e.next=49;break;case 46:throw e.prev=46,e.t8=e.catch(37),new EM("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=e.t8?e.t8:"Resolving endpoints by base url failed.");case 49:return e.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return e.abrupt("return",Promise.resolve());case 52:return e.prev=52,e.t9=this._dataLayer,e.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return e.t10=e.sent,e.next=59,e.t9.setOIDCProviderMetaData.call(e.t9,e.t10);case 59:e.next=64;break;case 61:throw e.prev=61,e.t11=e.catch(52),new EM("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=e.t11?e.t11:"Resolving endpoints by explicitly failed.");case 64:return e.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return e.abrupt("return",Promise.resolve());case 67:case"end":return e.stop()}}),e,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var t,e,n,r,i,c,o,l,u,s;return wM(this,void 0,void 0,a().mark((function d(){var h;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._oidcProviderMetaData();case 2:return h=a.sent,a.abrupt("return",{authorizationEndpoint:null!==(t=h.authorization_endpoint)&&void 0!==t?t:"",checkSessionIframe:null!==(e=h.check_session_iframe)&&void 0!==e?e:"",endSessionEndpoint:null!==(n=h.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=h.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=h.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=h.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(o=h.registration_endpoint)&&void 0!==o?o:"",revocationEndpoint:null!==(l=h.revocation_endpoint)&&void 0!==l?l:"",tokenEndpoint:null!==(u=h.token_endpoint)&&void 0!==u?u:"",userinfoEndpoint:null!==(s=h.userinfo_endpoint)&&void 0!==s?s:""});case 4:case"end":return a.stop()}}),d,this)})))}},{key:"getSignOutURL",value:function(t){var e,n,r;return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=e=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===e;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=e.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(o=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new EM("JS-AUTH_CORE-GSOU-NF01","Sign-out endpoint not found.","No sign-out endpoint was found in the OIDC provider meta data returned by the well-known endpoint or the sign-out endpoint passed to the SDK is empty.");case 17:return i.next=19,this._dataLayer.getSessionData(t);case 19:if(i.t4=n=i.sent,i.t3=null===i.t4,i.t3){i.next=23;break}i.t3=void 0===n;case 23:if(!i.t3){i.next=27;break}i.t5=void 0,i.next=28;break;case 27:i.t5=n.id_token;case 28:if((l=i.t5)&&0!==l.trim().length){i.next=31;break}throw new EM("JS-AUTH_CORE-GSOU-NF02","ID token not found.","No ID token could be found. Either the session information is lost or you have not signed in.");case 31:if((u=null!==(r=null==o?void 0:o.signOutRedirectURL)&&void 0!==r?r:null==o?void 0:o.signInRedirectURL)&&0!==u.trim().length){i.next=34;break}throw new EM("JS-AUTH_CORE-GSOU-NF03","No sign-out redirect URL found.","The sign-out redirect URL cannot be found or the URL passed to the SDK is empty. No sign-in redirect URL has been found either. ");case 34:return i.abrupt("return","".concat(c,"?id_token_hint=").concat(l,"&post_logout_redirect_uri=").concat(u,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getSignOutURL(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessToken",value:function(t){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(t);case 2:if(n.t1=e=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===e;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=e.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Boolean,e.next=3,this.getAccessToken(t);case 3:return e.t1=e.sent,e.abrupt("return",(0,e.t0)(e.t1));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"getPKCECode",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(t),e);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(OM.extractPKCEKeyFromStateParam(e),t,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setConfigData(t);case 2:return e.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return e.stop()}}),e,this)})))}}]),t}(),$M=function(){function e(t,n){s(this,e),this._id=t,this._store=n}return h(e,[{key:"setDataInBulk",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),o=Object.assign(Object.assign({},c),e),l=JSON.stringify(o),r.next=17,this._store.setData(t,l);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(t,e,n){var r;return wM(this,void 0,void 0,a().mark((function i(){var c,o,l,u;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(t);case 2:if(i.t1=r=i.sent,i.t0=null!==i.t1,!i.t0){i.next=6;break}i.t0=void 0!==r;case 6:if(!i.t0){i.next=10;break}i.t2=r,i.next=11;break;case 10:i.t2=null;case 11:return c=i.t2,o=c&&JSON.parse(c),l=Object.assign(Object.assign({},o),m({},e,n)),u=JSON.stringify(l),i.next=17,this._store.setData(t,u);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(t);case 2:if(r.t1=n=r.sent,r.t0=null!==r.t1,!r.t0){r.next=6;break}r.t0=void 0!==n;case 6:if(!r.t0){r.next=10;break}r.t2=n,r.next=11;break;case 10:r.t2=null;case 11:return i=r.t2,c=i&&JSON.parse(i),delete(o=Object.assign({},c))[e],l=JSON.stringify(o),r.next=18,this._store.setData(t,l);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(t,e){return e?"".concat(t,"-").concat(this._id,"-").concat(e):"".concat(t,"-").concat(this._id)}},{key:"setConfigData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.TemporaryData,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t.Stores.SessionData,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setCustomData",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(t,n),e);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaData",value:function(){var e;return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 3:if(n.t2=e=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==e;case 7:if(!n.t1){n.next=11;break}n.t3=e,n.next=12;break;case 11:n.t3=null;case 12:return n.t4=n.t3,n.abrupt("return",n.t0.parse.call(n.t0,n.t4));case 14:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryData",value:function(e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t.Stores.TemporaryData,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionData",value:function(e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t.Stores.SessionData,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"getCustomData",value:function(t,e){var n;return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(t,e));case 3:if(r.t2=n=r.sent,r.t1=null!==r.t2,!r.t1){r.next=7;break}r.t1=void 0!==n;case 7:if(!r.t1){r.next=11;break}r.t3=n,r.next=12;break;case 11:r.t3=null;case 12:return r.t4=r.t3,r.abrupt("return",r.t0.parse.call(r.t0,r.t4));case 14:case"end":return r.stop()}}),r,this)})))}},{key:"removeConfigData",value:function(){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.ConfigData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._store.removeData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:case"end":return e.stop()}}),e,this)})))}},{key:"removeTemporaryData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(t.Stores.TemporaryData,e));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(t.Stores.SessionData,e));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(t.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[e]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(t.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[e]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(t.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[e]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.ConfigData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(e,n,r){return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(t.Stores.TemporaryData,r),e,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(e,n,r){return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(t.Stores.SessionData,r),e,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.ConfigData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(t.Stores.OIDCProviderMetaData),e);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(t.Stores.TemporaryData,n),e);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(t.Stores.SessionData,n),e);case 2:case"end":return r.stop()}}),r,this)})))}}]),e}(),tj={clockTolerance:300,enablePKCE:!0,responseMode:t.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},ej=function(){function t(e,n){s(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new $M("instance_".concat(t._instanceID),e),this._authenticationCore=new qM(this._dataLayer,n),t._authenticationCore=new qM(this._dataLayer,n)}return h(t,[{key:"initialize",value:function(t){var e,n,r;return wM(this,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},tj),t),{scope:[].concat(v(null!==(e=tj.scope)&&void 0!==e?e:[]),v(null!==(r=null===(n=t.scope)||void 0===n?void 0:n.filter((function(t){var e;return!(null===(e=null==tj?void 0:tj.scope)||void 0===e?void 0:e.includes(t))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"getAuthorizationURL",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){var r,i=this;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},t))||delete r.forceInit,n.next=4,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 4:if(!n.sent){n.next=8;break}n.t0=this._authenticationCore.getAuthorizationURL(r,e),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==t?void 0:t.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,e)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}},{key:"requestAccessToken",value:function(t,e,n,r){return wM(this,void 0,void 0,a().mark((function i(){var c=this;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 2:if(!i.sent){i.next=6;break}i.t0=this._authenticationCore.requestAccessToken(t,e,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(t,e,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.signOut(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getSignOutURL",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getSignOutURL(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getDecodedIDToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getIDToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getIDToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getBasicUserInfo",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getBasicUserInfo(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){return wM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getCryptoHelper());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(t){return this._authenticationCore.revokeAccessToken(t)}},{key:"refreshAccessToken",value:function(t){return this._authenticationCore.refreshAccessToken(t)}},{key:"getAccessToken",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getAccessToken(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"requestCustomGrant",value:function(t,e){return this._authenticationCore.requestCustomGrant(t,e)}},{key:"isAuthenticated",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.isAuthenticated(t));case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getPKCECode",value:function(t,e){return wM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(t,e));case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(t,e,n){return wM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(t,e,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.updateConfig(t);case 2:case"end":return e.stop()}}),e,this)})))}}],[{key:"isSignOutSuccessful",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}},{key:"didSignOutFail",value:function(t){var e=new URL(t),n=e.searchParams.get("state"),r=Boolean(e.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}},{key:"clearUserSessionData",value:function(t){return wM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationCore.clearUserSessionData(t);case 2:case"end":return e.stop()}}),e,this)})))}}]),t}();function nj(t,e,n){var r=void 0===e?null:e,i=function(t,e){var n=atob(t);if(e){for(var r=new Uint8Array(n.length),i=0,c=n.length;i<c;++i)r[i]=n.charCodeAt(i);return String.fromCharCode.apply(null,new Uint16Array(r.buffer))}return n}(t,void 0!==n&&n),c=i.indexOf("\n",10)+1,a=i.substring(c)+(r?"//# sourceMappingURL="+r:""),o=new Blob([a],{type:"application/javascript"});return URL.createObjectURL(o)}var rj,ij,cj,aj,oj,lj,uj=(rj="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKCl7cj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7dSh7fSwiIil9Y2F0Y2goZSl7dT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gYyhlLHQscixuKXt2YXIgYT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLGk9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbz1uZXcgUyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybiBUKCl9Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPWsobyxyKTtpZihzKXtpZihzPT09bCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciB1PWYoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixvKSxpfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZCgpe312YXIgdj17fTt1KHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1nJiZnKGcoRShbXSkpKTt5JiZ5IT09dCYmbi5jYWxsKHksaSkmJih2PXkpO3ZhciBtPWQucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gdyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gYihlLHQpe2Z1bmN0aW9uIHIoYSxpLG8scyl7dmFyIHU9ZihlW2FdLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxvKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxvLHMpfSkpfXModS5hcmcpfXZhciBhO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsYSl7cihlLG4sdCxhKX0pKX1yZXR1cm4gYT1hP2EudGhlbihpLGkpOmkoKX19ZnVuY3Rpb24gayhlLHQpe3ZhciByPWUuaXRlcmF0b3JbdC5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dC5tZXRob2Qpe2lmKGUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLGsoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpKXJldHVybiBsO3QubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBsfXZhciBuPWYocixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW4uYXJnLHQuZGVsZWdhdGU9bnVsbCxsO3ZhciBhPW4uYXJnO3JldHVybiBhP2EuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWEudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGwpOmE6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsbCl9ZnVuY3Rpb24geChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBTKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG4uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1kLHUobSwiY29uc3RydWN0b3IiLGQpLHUoZCwiY29uc3RydWN0b3IiLHApLHAuZGlzcGxheU5hbWU9dShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCx1KGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSx3KGIucHJvdG90eXBlKSx1KGIucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPWIsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBiKGModCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sdyhtKSx1KG0scywiR2VuZXJhdG9yIiksdShtLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShtLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUUsUy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9bi5jYWxsKGksImNhdGNoTG9jIiksdT1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJnUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxsKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGx9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxsfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO18ocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxsfX0sZX1mdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2EobyxuLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe2EobyxuLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZzKGUucHJvdG90eXBlLHQpLHImJnMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LGwoZSl9ZnVuY3Rpb24gaChlLHQpe3JldHVybiBoPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0saChlLHQpfWZ1bmN0aW9uIHAoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiBkPXAoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmaChhLHIucHJvdG90eXBlKSxhfSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB2KGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIHY9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGQoZSxhcmd1bWVudHMsbCh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGgobixlKX0sdihlKX1mdW5jdGlvbiBnKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZyhlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWwoZSk7aWYodCl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLHIpfX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8ayhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGsoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4geChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1rKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIEUoZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGEsaSl7ZnVuY3Rpb24gbyhlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/YShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiByP3Q6bmV3IHIoKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9dmFyIFQ7IWZ1bmN0aW9uKGUpe2UuZm9ybVBvc3Q9ImZvcm1fcG9zdCIsZS5xdWVyeT0icXVlcnkifShUfHwoVD17fSkpO3ZhciBBOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0oQXx8KEE9e30pKTt2YXIgUixDPSJyZWZyZXNoX3Rva2VuX3RpbWVyIixQPVsiUlMyNTYiLCJSUzUxMiIsIlJTMzg0IiwiUFMyNTYiXSxEPSJzaWduX291dF91cmwiLE89InNpZ25fb3V0X3N1Y2Nlc3MiOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFJ8fChSPXt9KSk7dmFyIEk9dSgoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD13KGUsMiksbj10WzBdLGE9dFsxXSxpPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3JbaV09YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7TC5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBVLEgsTT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXt2YXIgYT10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1ufXJldHVybiB1KGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIGE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChhLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoYS5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO25bdF09KG51bGw9PWE/dm9pZCAwOmEuZW5kcG9pbnRzKT9hLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihuPWUuc2VudCxhPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sbi5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIGEuaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKG49ZS5zZW50LGE9bi5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiBuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxpPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGEsaSxvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChuLHtjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2lufSk7Y2FzZSAxMTppPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1pLnN0YXR1cyYmaS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoaS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixpLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGkuanNvbigpO2Nhc2UgMjk6cmV0dXJuIHM9dC5zZW50LHU9cy5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdSk7Y2FzZSAzMzpyZXR1cm4gYz10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9Yyx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGk9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksbz1MLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChpKSxzPW51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPWkuZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1pLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1pLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjpvLHVzZXJuYW1lOnN9LEwuZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKGkpKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT0ib3BlbmlkIixyLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89ci5zZW50LHIubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIHM9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksaT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLHMuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKHMuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGkpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShuPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09bj9uOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG89dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtuLm5leHQ9NzticmVha31yZXR1cm4gbi50MD1JLG4udDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksbi5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IG4udDI9bi5zZW50LG5ldyBuLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsbi50MSxuLnQyKTtjYXNlIDc6cmV0dXJuIG4ubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4oYT1uLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksbi5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIW4uc2VudC52YWxpZGF0ZUlEVG9rZW4pe24ubmV4dD0xNTticmVha31yZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oYS5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gRShvLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDI6cmV0dXJuIG49e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGk9e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LG4ubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDE4OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoaSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsaT1bXSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZpLnB1c2goZSl9KSksbz1pLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiB1KGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Xyh0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYobi5raWQ9PT1pLmtpZClyZXR1cm4gaX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEkoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LFAscixuLGEsaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBJKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBhPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPW4sdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBqKG4pLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBNKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB1KGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGwsaCxwLGQsdixnLHksbSxiLGsseCxTLEUsVCxBLFI7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBzPXIuc2VudCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYodT1yLnNlbnQscyYmMCE9PXMudHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiBjPW5ldyBVUkwocyksKGY9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGYuc2V0KCJjbGllbnRfaWQiLHUuY2xpZW50SUQpLGw9Im9wZW5pZCIsdS5zY29wZSYmdS5zY29wZS5sZW5ndGg+MCYmKHUuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHx1LnNjb3BlLnB1c2goIm9wZW5pZCIpLGw9dS5zY29wZS5qb2luKCIgIikpLGYuc2V0KCJzY29wZSIsbCksZi5zZXQoInJlZGlyZWN0X3VyaSIsdS5zaWduSW5SZWRpcmVjdFVSTCksdS5yZXNwb25zZU1vZGUmJmYuc2V0KCJyZXNwb25zZV9tb2RlIix1LnJlc3BvbnNlTW9kZSksci5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGg9ci5zZW50LCF1LmVuYWJsZVBLQ0Upe3IubmV4dD0yMTticmVha31yZXR1cm4gcD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlVmVyaWZpZXIoKSxkPW51bGw9PT0oYT10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmdldENvZGVDaGFsbGVuZ2UocCksci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGgscCx0KTtjYXNlIDE5OmYuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksZi5zZXQoImNvZGVfY2hhbGxlbmdlIixkKTtjYXNlIDIxOmlmKHUucHJvbXB0JiZmLnNldCgicHJvbXB0Iix1LnByb21wdCksdj1lKWZvcihnPTAseT1PYmplY3QuZW50cmllcyh2KTtnPHkubGVuZ3RoO2crKyltPXcoeVtnXSwyKSxiPW1bMF0saz1tWzFdLCIiIT1iJiYiIiE9ayYmInN0YXRlIiE9PWImJih4PWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGYuc2V0KHgsay50b1N0cmluZygpKSk7Zi5zZXQoInN0YXRlIixMLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihoLHY/bnVsbD09PShpPXYuc3RhdGUpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRvU3RyaW5nKCk6IiIpKSxTPV8oZi5lbnRyaWVzKCkpO3RyeXtmb3IoUy5zKCk7IShFPVMubigpKS5kb25lOylUPXcoRS52YWx1ZSwyKSxBPVRbMF0sUj1UWzFdLGMuc2VhcmNoUGFyYW1zLmFwcGVuZChBLFIpfWNhdGNoKGUpe1MuZShlKX1maW5hbGx5e1MuZigpfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjLnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGMsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1yLnNlbnQudG9rZW5fZW5kcG9pbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihyLnQwPXQsIXIudDApe3IubmV4dD0xMjticmVha31yZXR1cm4gci5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxhKTtjYXNlIDEyOmlmKCh1PVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQocy5jbGllbnRJRCkpLHMuY2xpZW50U2VjcmV0JiZzLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnUucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChzLmNsaWVudFNlY3JldCkpLGM9ZSx1LnB1c2goImNvZGU9Ii5jb25jYXQoYykpLHUucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSx1LnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChzLnNpZ25JblJlZGlyZWN0VVJMKSksci50MT1zLmVuYWJsZVBLQ0UsIXIudDEpe3IubmV4dD0yOTticmVha31yZXR1cm4gci50Mj11LHIudDM9ImNvZGVfdmVyaWZpZXI9IixyLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKG4pLGEpO2Nhc2UgMjQ6cmV0dXJuIHIudDQ9ci5zZW50LHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDIucHVzaC5jYWxsKHIudDIsci50NSksci5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShuKSxhKTtjYXNlIDI5OnJldHVybiByLnByZXY9Mjksci5uZXh0PTMyLGZldGNoKG8se2JvZHk6dS5qb2luKCImIiksY3JlZGVudGlhbHM6cy5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpmPXIuc2VudCxyLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyByLnByZXY9MzUsci50Nj1yLmNhdGNoKDI5KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9ci50Nj9yLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoZi5vayl7ci5uZXh0PTQ1O2JyZWFrfXJldHVybiByLnQ3PUksci50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoZi5zdGF0dXNUZXh0KSxyLm5leHQ9NDMsZi5qc29uKCk7Y2FzZSA0Mzp0aHJvdyByLnQ5PXIuc2VudCxuZXcgci50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsci50OCxyLnQ5KTtjYXNlIDQ1OnJldHVybiByLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShmLGEpO2Nhc2UgNDc6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBhPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChpPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYobiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KGEuY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoaS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxhLmNsaWVudFNlY3JldCYmYS5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoYS5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKG4se2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODpzPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYocy5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQocy5zdGF0dXNUZXh0KSx0Lm5leHQ9Mjkscy5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHMsZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG87cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihpPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoYS5jbGllbnRJRCkpLHQudDA9aSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksaS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChuLHtib2R5Omkuam9pbigiJiIpLGNyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1IuSW5jbHVkZTpSLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhMLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUksdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGw9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gYT1uLnNlbnQsbi5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9bi5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDphLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7bi5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIG4ubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49dyhlLDIpLGE9blswXSxpPW5bMV07cmV0dXJuIEUobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGksdCk7Y2FzZSAyOnJldHVybiBuPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQoYSwiPSIpLmNvbmNhdChuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYocz1uLnNlbnQsdT1PYmplY3QuYXNzaWduKHt9LEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxuLnQwPWUuYXR0YWNoVG9rZW4sIW4udDApe24ubmV4dD0yMzticmVha31yZXR1cm4gbi50MT1PYmplY3Qsbi50Mj1PYmplY3QuYXNzaWduKHt9LHUpLG4udDM9IkJlYXJlciAiLG4ubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpuLnQ0PW4uc2VudC5hY2Nlc3NfdG9rZW4sbi50NT1uLnQzLmNvbmNhdC5jYWxsKG4udDMsbi50NCksbi50Nj17QXV0aG9yaXphdGlvbjpuLnQ1fSx1PW4udDEuYXNzaWduLmNhbGwobi50MSxuLnQyLG4udDYpO2Nhc2UgMjM6cmV0dXJuIGM9e2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHUpLG1ldGhvZDoiUE9TVCJ9LG4ucHJldj0yNCxuLm5leHQ9MjcsZmV0Y2gobyxjKTtjYXNlIDI3OmY9bi5zZW50LG4ubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IG4ucHJldj0zMCxuLnQ3PW4uY2F0Y2goMjQpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9bi50Nz9uLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWYuc3RhdHVzJiZmLm9rKXtuLm5leHQ9NDA7YnJlYWt9cmV0dXJuIG4udDg9SSxuLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoZi5zdGF0dXNUZXh0LCIpIiksbi5uZXh0PTM4LGYuanNvbigpO2Nhc2UgMzg6dGhyb3cgbi50MTA9bi5zZW50LG5ldyBuLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLG4udDksbi50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe24ubmV4dD00NDticmVha31uLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGYsdCksbi5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIG4udDEyPVByb21pc2Usbi5uZXh0PTQ3LGYuanNvbigpO2Nhc2UgNDc6bi50MTM9bi5zZW50LG4udDExPW4udDEyLnJlc29sdmUuY2FsbChuLnQxMixuLnQxMyk7Y2FzZSA0OTpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsYT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09bj92b2lkIDA6bi5pZF90b2tlbiksaT17YWxsb3dlZFNjb3BlczpuLnNjb3BlLHNlc3Npb25TdGF0ZTpuLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1hW2VdJiYiIiE9PWFbZV0mJm51bGwhPT1hW2VdfHxkZWxldGUgYVtlXX0pKSxpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSxhKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldENyeXB0b0hlbHBlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50LmlkX3Rva2VuKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fY29uZmlnKCk7Y2FzZSAyOmlmKG49dC5zZW50LHQudDA9IWUsIXQudDApe3QubmV4dD04O2JyZWFrfXJldHVybiB0Lm5leHQ9Nyx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNzp0LnQwPXQuc2VudDtjYXNlIDg6aWYoIXQudDApe3QubmV4dD0xMDticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMTA6aWYoIShhPW4ud2VsbEtub3duRW5kcG9pbnQpKXt0Lm5leHQ9MzY7YnJlYWt9cmV0dXJuIHQucHJldj0xMix0Lm5leHQ9MTUsZmV0Y2goYSk7Y2FzZSAxNTppZigyMDA9PT0oaT10LnNlbnQpLnN0YXR1cyYmaS5vayl7dC5uZXh0PTE4O2JyZWFrfXRocm93IG5ldyBFcnJvcjtjYXNlIDE4OnQubmV4dD0yMzticmVhaztjYXNlIDIwOnRocm93IHQucHJldj0yMCx0LnQxPXQuY2F0Y2goMTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSEUwMSIsIkludmFsaWQgd2VsbC1rbm93biByZXNwb25zZSIsIlRoZSB3ZWxsIGtub3duIGVuZHBvaW50IHJlc3BvbnNlIGhhcyBiZWVuIGZhaWxlZCB3aXRoIGFuIGVycm9yLiIpO2Nhc2UgMjM6cmV0dXJuIHQudDI9dGhpcy5fZGF0YUxheWVyLHQudDM9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIsdC5uZXh0PTI3LGkuanNvbigpO2Nhc2UgMjc6cmV0dXJuIHQudDQ9dC5zZW50LHQubmV4dD0zMCx0LnQzLnJlc29sdmVFbmRwb2ludHMuY2FsbCh0LnQzLHQudDQpO2Nhc2UgMzA6cmV0dXJuIHQudDU9dC5zZW50LHQubmV4dD0zMyx0LnQyLnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Mix0LnQ1KTtjYXNlIDMzOnJldHVybiB0Lm5leHQ9MzUsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDM1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAzNjppZighbi5iYXNlVXJsKXt0Lm5leHQ9NTI7YnJlYWt9cmV0dXJuIHQucHJldj0zNyx0LnQ2PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NDEsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCgpO2Nhc2UgNDE6cmV0dXJuIHQudDc9dC5zZW50LHQubmV4dD00NCx0LnQ2LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50Nix0LnQ3KTtjYXNlIDQ0OnQubmV4dD00OTticmVhaztjYXNlIDQ2OnRocm93IHQucHJldj00Nix0LnQ4PXQuY2F0Y2goMzcpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMiIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50OD90LnQ4OiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGJhc2UgdXJsIGZhaWxlZC4iKTtjYXNlIDQ5OnJldHVybiB0Lm5leHQ9NTEsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDUxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA1MjpyZXR1cm4gdC5wcmV2PTUyLHQudDk9dGhpcy5fZGF0YUxheWVyLHQubmV4dD01Nix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSgpO2Nhc2UgNTY6cmV0dXJuIHQudDEwPXQuc2VudCx0Lm5leHQ9NTksdC50OS5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDksdC50MTApO2Nhc2UgNTk6dC5uZXh0PTY0O2JyZWFrO2Nhc2UgNjE6dGhyb3cgdC5wcmV2PTYxLHQudDExPXQuY2F0Y2goNTIpLG5ldyBJKCJKUy1BVVRIX0NPUkUtR09QTUQtSVYwMyIsIlJlc29sdmluZyBlbmRwb2ludHMgZmFpbGVkLiIsbnVsbCE9dC50MTE/dC50MTE6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgZXhwbGljaXRseSBmYWlsZWQuIik7Y2FzZSA2NDpyZXR1cm4gdC5uZXh0PTY2LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA2NjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNjc6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxMiwyMF0sWzM3LDQ2XSxbNTIsNjFdXSl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLGEsaSxvLHMsdSxjLGY7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBsKCl7dmFyIGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGg9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLHthdXRob3JpemF0aW9uRW5kcG9pbnQ6bnVsbCE9PShlPWguYXV0aG9yaXphdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWU/ZToiIixjaGVja1Nlc3Npb25JZnJhbWU6bnVsbCE9PSh0PWguY2hlY2tfc2Vzc2lvbl9pZnJhbWUpJiZ2b2lkIDAhPT10P3Q6IiIsZW5kU2Vzc2lvbkVuZHBvaW50Om51bGwhPT0obj1oLmVuZF9zZXNzaW9uX2VuZHBvaW50KSYmdm9pZCAwIT09bj9uOiIiLGludHJvc3BlY3Rpb25FbmRwb2ludDpudWxsIT09KGE9aC5pbnRyb3NwZWN0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09YT9hOiIiLGlzc3VlcjpudWxsIT09KGk9aC5pc3N1ZXIpJiZ2b2lkIDAhPT1pP2k6IiIsandrc1VyaTpudWxsIT09KG89aC5qd2tzX3VyaSkmJnZvaWQgMCE9PW8/bzoiIixyZWdpc3RyYXRpb25FbmRwb2ludDpudWxsIT09KHM9aC5yZWdpc3RyYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1zP3M6IiIscmV2b2NhdGlvbkVuZHBvaW50Om51bGwhPT0odT1oLnJldm9jYXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT11P3U6IiIsdG9rZW5FbmRwb2ludDpudWxsIT09KGM9aC50b2tlbl9lbmRwb2ludCkmJnZvaWQgMCE9PWM/YzoiIix1c2VyaW5mb0VuZHBvaW50Om51bGwhPT0oZj1oLnVzZXJpbmZvX2VuZHBvaW50KSYmdm9pZCAwIT09Zj9mOiIifSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuZW5kX3Nlc3Npb25fZW5kcG9pbnQ7Y2FzZSAxMTpyZXR1cm4gbz1yLnQyLHIubmV4dD0xNCx0aGlzLl9jb25maWcoKTtjYXNlIDE0OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0xNzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMSIsIlNpZ24tb3V0IGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBzaWduLW91dCBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBzaWduLW91dCBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDE3OnJldHVybiByLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTk6aWYoci50ND1uPXIuc2VudCxyLnQzPW51bGw9PT1yLnQ0LHIudDMpe3IubmV4dD0yMzticmVha31yLnQzPXZvaWQgMD09PW47Y2FzZSAyMzppZighci50Myl7ci5uZXh0PTI3O2JyZWFrfXIudDU9dm9pZCAwLHIubmV4dD0yODticmVhaztjYXNlIDI3OnIudDU9bi5pZF90b2tlbjtjYXNlIDI4OmlmKCh1PXIudDUpJiYwIT09dS50cmltKCkubGVuZ3RoKXtyLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDIiLCJJRCB0b2tlbiBub3QgZm91bmQuIiwiTm8gSUQgdG9rZW4gY291bGQgYmUgZm91bmQuIEVpdGhlciB0aGUgc2Vzc2lvbiBpbmZvcm1hdGlvbiBpcyBsb3N0IG9yIHlvdSBoYXZlIG5vdCBzaWduZWQgaW4uIik7Y2FzZSAzMTppZigoYz1udWxsIT09KGE9bnVsbD09cz92b2lkIDA6cy5zaWduT3V0UmVkaXJlY3RVUkwpJiZ2b2lkIDAhPT1hP2E6bnVsbD09cz92b2lkIDA6cy5zaWduSW5SZWRpcmVjdFVSTCkmJjAhPT1jLnRyaW0oKS5sZW5ndGgpe3IubmV4dD0zNDticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMyIsIk5vIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBmb3VuZC4iLCJUaGUgc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGNhbm5vdCBiZSBmb3VuZCBvciB0aGUgVVJMIHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiBObyBzaWduLWluIHJlZGlyZWN0IFVSTCBoYXMgYmVlbiBmb3VuZCBlaXRoZXIuICIpO2Nhc2UgMzQ6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLCIiLmNvbmNhdChvLCI/aWRfdG9rZW5faGludD0iKS5jb25jYXQodSwiJnBvc3RfbG9nb3V0X3JlZGlyZWN0X3VyaT0iKS5jb25jYXQoYywiJnN0YXRlPXNpZ25fb3V0X3N1Y2Nlc3MiKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToic2lnbk91dCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5nZXRTaWduT3V0VVJMKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmFjY2Vzc190b2tlbjtjYXNlIDExOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQyKTtjYXNlIDEyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9Qm9vbGVhbix0Lm5leHQ9Myx0aGlzLmdldEFjY2Vzc1Rva2VuKGUpO2Nhc2UgMzpyZXR1cm4gdC50MT10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsKDAsdC50MCkodC50MSkpO2Nhc2UgNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKGUpLHQpO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpLGUsbik7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0Q29uZmlnRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITApO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2lkPXQsdGhpcy5fc3RvcmU9cn1yZXR1cm4gdShlLFt7a2V5OiJzZXREYXRhSW5CdWxrIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKHIudDE9bj1yLnNlbnQsci50MD1udWxsIT09ci50MSwhci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9bixyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1yLnQyLG89aSYmSlNPTi5wYXJzZShpKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxvKSx0KSx1PUpTT04uc3RyaW5naWZ5KHMpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToic2V0VmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihyLnQxPWE9ci5zZW50LHIudDA9bnVsbCE9PXIudDEsIXIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwIT09YTtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPWEsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIG89ci50MixzPW8mJkpTT04ucGFyc2UobyksdT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scyksYyh7fSx0LG4pKSxmPUpTT04uc3RyaW5naWZ5KHUpLHIubmV4dD0xNyx0aGlzLl9zdG9yZS5zZXREYXRhKGUsZik7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVmFsdWUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHU7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoci50MT1uPXIuc2VudCxyLnQwPW51bGwhPT1yLnQxLCFyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMCE9PW47Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj1uLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9bnVsbDtjYXNlIDExOnJldHVybiBpPXIudDIsbz1pJiZKU09OLnBhcnNlKGkpLGRlbGV0ZShzPU9iamVjdC5hc3NpZ24oe30sbykpW3RdLHU9SlNPTi5zdHJpbmdpZnkocyksci5uZXh0PTE4LHRoaXMuX3N0b3JlLnNldERhdGEoZSx1KTtjYXNlIDE4OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJfcmVzb2x2ZUtleSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCwiLSIpLmNvbmNhdCh0KToiIi5jb25jYXQoZSwiLSIpLmNvbmNhdCh0aGlzLl9pZCl9fSx7a2V5OiJzZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0Q3VzdG9tRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoZSxuKSx0KTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRDdXN0b21EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoZSx0KSk7Y2FzZSAzOmlmKHIudDI9bj1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT1uO2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9bixyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsYSYmSlNPTi5wYXJzZShhKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixhJiZKU09OLnBhcnNlKGEpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuU2Vzc2lvbkRhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLEs9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpULnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IHEoImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgTih0aGlzLl9kYXRhTGF5ZXIsciksZS5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBOKHRoaXMuX2RhdGFMYXllcixyKX1yZXR1cm4gdShlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSyksZSkse3Njb3BlOltdLmNvbmNhdChiKG51bGwhPT0odD1LLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxiKG51bGwhPT0oYT1udWxsPT09KG49ZS5zY29wZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1LP3ZvaWQgMDpLLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1hP2E6W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfX0se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KGE9T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBhLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKGEsdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChhLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFyLnNlbnQpe3IubmV4dD02O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsbixhKSxyLm5leHQ9NzticmVhaztjYXNlIDY6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LG4sYSl9KSk7Y2FzZSA3OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0Q3J5cHRvSGVscGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRDcnlwdG9IZWxwZXIoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXZva2VBY2Nlc3NUb2tlbihlKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZWZyZXNoQWNjZXNzVG9rZW4oZSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEFjY2Vzc1Rva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RDdXN0b21HcmFudChlLHQpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuaXNBdXRoZW50aWNhdGVkKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRQS0NFQ29kZShlLHQpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnNldFBLQ0VDb2RlKGUsdCxuKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSxbe2tleToiaXNTaWduT3V0U3VjY2Vzc2Z1bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJiFufX0se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiZufX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5jbGVhclVzZXJTZXNzaW9uRGF0YShlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxCPSJpbml0IjshZnVuY3Rpb24oZSl7ZS5Mb2NhbFN0b3JhZ2U9ImxvY2FsU3RvcmFnZSIsZS5TZXNzaW9uU3RvcmFnZT0ic2Vzc2lvblN0b3JhZ2UiLGUuV2ViV29ya2VyPSJ3ZWJXb3JrZXIiLGUuQnJvd3Nlck1lbW9yeT0iYnJvd3Nlck1lbW9yeSJ9KFV8fChVPXt9KSksZnVuY3Rpb24oZSl7ZS5TaWduSW49InNpZ24taW4iLGUuU2lnbk91dD0ic2lnbi1vdXQiLGUuSW5pdGlhbGl6ZT0iaW5pdGlhbGl6ZSIsZS5IdHRwUmVxdWVzdFN0YXJ0PSJodHRwLXJlcXVlc3Qtc3RhcnQiLGUuSHR0cFJlcXVlc3RGaW5pc2g9Imh0dHAtcmVxdWVzdC1maW5pc2giLGUuSHR0cFJlcXVlc3RFcnJvcj0iaHR0cC1yZXF1ZXN0LWVycm9yIixlLkh0dHBSZXF1ZXN0U3VjY2Vzcz0iaHR0cC1yZXF1ZXN0LXN1Y2Nlc3MiLGUuUmV2b2tlQWNjZXNzVG9rZW49InJldm9rZS1hY2Nlc3MtdG9rZW4iLGUuQ3VzdG9tR3JhbnQ9ImN1c3RvbS1ncmFudCIsZS5TaWduT3V0RmFpbGVkPSJzaWduLW91dC1mYWlsZWQifShIfHwoSD17fSkpO3ZhciBGPSJwcm9tcHROb25lUmVxdWVzdFNlbnQiLFc9ImVycm9yIix6PSJlcnJvcl9kZXNjcmlwdGlvbiIsWT0iY3VzdG9tX2dyYW50X2NvbmZpZyIsRz0ic3RhdGUiLFY9IkFjY2VzcyB0b2tlbiBpcyBpbnZhbGlkIixYPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e307ZnVuY3Rpb24gJChlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiZGVmYXVsdCIpP2UuZGVmYXVsdDplfWZ1bmN0aW9uIFooZSl7aWYoZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLG4uZ2V0P246e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVbcl19fSl9KSksdH12YXIgUT17ZXhwb3J0czp7fX0sZWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sdGU9ZWUscmU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiBuZShlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX1mdW5jdGlvbiBhZShlKXtyZXR1cm4gdm9pZCAwPT09ZX1mdW5jdGlvbiBpZShlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09cmUuY2FsbChlKX1mdW5jdGlvbiBvZShlKXtyZXR1cm4gbnVsbCE9PWUmJiJvYmplY3QiPT09bihlKX1mdW5jdGlvbiBzZShlKXtpZigiW29iamVjdCBPYmplY3RdIiE9PXJlLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpO3JldHVybiBudWxsPT09dHx8dD09PU9iamVjdC5wcm90b3R5cGV9ZnVuY3Rpb24gdWUoZSl7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09PXJlLmNhbGwoZSl9ZnVuY3Rpb24gY2UoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09bihlKSYmKGU9W2VdKSxuZShlKSlmb3IodmFyIHI9MCxhPWUubGVuZ3RoO3I8YTtyKyspdC5jYWxsKG51bGwsZVtyXSxyLGUpO2Vsc2UgZm9yKHZhciBpIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsaSkmJnQuY2FsbChudWxsLGVbaV0saSxlKX12YXIgZmU9e2lzQXJyYXk6bmUsaXNBcnJheUJ1ZmZlcjppZSxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFhZShlKSYmbnVsbCE9PWUuY29uc3RydWN0b3ImJiFhZShlLmNvbnN0cnVjdG9yKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuY29uc3RydWN0b3IuaXNCdWZmZXImJmUuY29uc3RydWN0b3IuaXNCdWZmZXIoZSl9LGlzRm9ybURhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRm9ybURhdGFdIj09PXJlLmNhbGwoZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXImJmllKGUuYnVmZmVyKX0saXNTdHJpbmc6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlfSxpc051bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9LGlzT2JqZWN0Om9lLGlzUGxhaW5PYmplY3Q6c2UsaXNVbmRlZmluZWQ6YWUsaXNEYXRlOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IERhdGVdIj09PXJlLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1yZS5jYWxsKGUpfSxpc0Jsb2I6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQmxvYl0iPT09cmUuY2FsbChlKX0saXNGdW5jdGlvbjp1ZSxpc1N0cmVhbTpmdW5jdGlvbihlKXtyZXR1cm4gb2UoZSkmJnVlKGUucGlwZSl9LGlzVVJMU2VhcmNoUGFyYW1zOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IFVSTFNlYXJjaFBhcmFtc10iPT09cmUuY2FsbChlKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDpjZSxtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gcihyLG4pe3NlKHRbbl0pJiZzZShyKT90W25dPWUodFtuXSxyKTpzZShyKT90W25dPWUoe30scik6bmUocik/dFtuXT1yLnNsaWNlKCk6dFtuXT1yfWZvcih2YXIgbj0wLGE9YXJndW1lbnRzLmxlbmd0aDtuPGE7bisrKWNlKGFyZ3VtZW50c1tuXSxyKTtyZXR1cm4gdH0sZXh0ZW5kOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gY2UodCwoZnVuY3Rpb24odCxuKXtlW25dPXImJiJmdW5jdGlvbiI9PXR5cGVvZiB0P3RlKHQscik6dH0pKSxlfSx0cmltOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9LHN0cmlwQk9NOmZ1bmN0aW9uKGUpe3JldHVybiA2NTI3OT09PWUuY2hhckNvZGVBdCgwKSYmKGU9ZS5zbGljZSgxKSksZX19LGxlPWZlO2Z1bmN0aW9uIGhlKGUpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvJTNBL2dpLCI6IikucmVwbGFjZSgvJTI0L2csIiQiKS5yZXBsYWNlKC8lMkMvZ2ksIiwiKS5yZXBsYWNlKC8lMjAvZywiKyIpLnJlcGxhY2UoLyU1Qi9naSwiWyIpLnJlcGxhY2UoLyU1RC9naSwiXSIpfXZhciBwZT1mdW5jdGlvbihlLHQscil7aWYoIXQpcmV0dXJuIGU7dmFyIG47aWYociluPXIodCk7ZWxzZSBpZihsZS5pc1VSTFNlYXJjaFBhcmFtcyh0KSluPXQudG9TdHJpbmcoKTtlbHNle3ZhciBhPVtdO2xlLmZvckVhY2godCwoZnVuY3Rpb24oZSx0KXtudWxsIT1lJiYobGUuaXNBcnJheShlKT90Kz0iW10iOmU9W2VdLGxlLmZvckVhY2goZSwoZnVuY3Rpb24oZSl7bGUuaXNEYXRlKGUpP2U9ZS50b0lTT1N0cmluZygpOmxlLmlzT2JqZWN0KGUpJiYoZT1KU09OLnN0cmluZ2lmeShlKSksYS5wdXNoKGhlKHQpKyI9IitoZShlKSl9KSkpfSkpLG49YS5qb2luKCImIil9aWYobil7dmFyIGk9ZS5pbmRleE9mKCIjIik7LTEhPT1pJiYoZT1lLnNsaWNlKDAsaSkpLGUrPSgtMT09PWUuaW5kZXhPZigiPyIpPyI/IjoiJiIpK259cmV0dXJuIGV9LGRlPWZlO2Z1bmN0aW9uIHZlKCl7dGhpcy5oYW5kbGVycz1bXX12ZS5wcm90b3R5cGUudXNlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdGhpcy5oYW5kbGVycy5wdXNoKHtmdWxmaWxsZWQ6ZSxyZWplY3RlZDp0LHN5bmNocm9ub3VzOiEhciYmci5zeW5jaHJvbm91cyxydW5XaGVuOnI/ci5ydW5XaGVuOm51bGx9KSx0aGlzLmhhbmRsZXJzLmxlbmd0aC0xfSx2ZS5wcm90b3R5cGUuZWplY3Q9ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVyc1tlXSYmKHRoaXMuaGFuZGxlcnNbZV09bnVsbCl9LHZlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUpe2RlLmZvckVhY2godGhpcy5oYW5kbGVycywoZnVuY3Rpb24odCl7bnVsbCE9PXQmJmUodCl9KSl9O3ZhciBnZT12ZSx5ZT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9O2Z1bmN0aW9uIG1lKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gd2UoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfXZhciBiZT1tZSxrZT13ZTtmdW5jdGlvbiB4ZShlKXtpZihiZT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYmU9PT1tZXx8IWJlKSYmc2V0VGltZW91dClyZXR1cm4gYmU9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBiZShlLDApfWNhdGNoKHQpe3RyeXtyZXR1cm4gYmUuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGJlLmNhbGwodGhpcyxlLDApfX19ImZ1bmN0aW9uIj09dHlwZW9mIHllLnNldFRpbWVvdXQmJihiZT1zZXRUaW1lb3V0KSwiZnVuY3Rpb24iPT10eXBlb2YgeWUuY2xlYXJUaW1lb3V0JiYoa2U9Y2xlYXJUaW1lb3V0KTt2YXIgX2UsU2U9W10sRWU9ITEsVGU9LTE7ZnVuY3Rpb24gQWUoKXtFZSYmX2UmJihFZT0hMSxfZS5sZW5ndGg/U2U9X2UuY29uY2F0KFNlKTpUZT0tMSxTZS5sZW5ndGgmJlJlKCkpfWZ1bmN0aW9uIFJlKCl7aWYoIUVlKXt2YXIgZT14ZShBZSk7RWU9ITA7Zm9yKHZhciB0PVNlLmxlbmd0aDt0Oyl7Zm9yKF9lPVNlLFNlPVtdOysrVGU8dDspX2UmJl9lW1RlXS5ydW4oKTtUZT0tMSx0PVNlLmxlbmd0aH1fZT1udWxsLEVlPSExLGZ1bmN0aW9uKGUpe2lmKGtlPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKGtlPT09d2V8fCFrZSkmJmNsZWFyVGltZW91dClyZXR1cm4ga2U9Y2xlYXJUaW1lb3V0LGNsZWFyVGltZW91dChlKTt0cnl7a2UoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBrZS5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIGtlLmNhbGwodGhpcyxlKX19fShlKX19ZnVuY3Rpb24gQ2UoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1DZS5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX07ZnVuY3Rpb24gUGUoKXt9dmFyIERlPVBlLE9lPVBlLEllPVBlLExlPVBlLFVlPVBlLEhlPVBlLE1lPVBlO3ZhciBqZT15ZS5wZXJmb3JtYW5jZXx8e30sTmU9amUubm93fHxqZS5tb3pOb3d8fGplLm1zTm93fHxqZS5vTm93fHxqZS53ZWJraXROb3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9O3ZhciBxZT1uZXcgRGF0ZTt2YXIgS2U9e25leHRUaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXRbci0xXT1hcmd1bWVudHNbcl07U2UucHVzaChuZXcgQ2UoZSx0KSksMSE9PVNlLmxlbmd0aHx8RWV8fHhlKFJlKX0sdGl0bGU6ImJyb3dzZXIiLGJyb3dzZXI6ITAsZW52Ont9LGFyZ3Y6W10sdmVyc2lvbjoiIix2ZXJzaW9uczp7fSxvbjpEZSxhZGRMaXN0ZW5lcjpPZSxvbmNlOkllLG9mZjpMZSxyZW1vdmVMaXN0ZW5lcjpVZSxyZW1vdmVBbGxMaXN0ZW5lcnM6SGUsZW1pdDpNZSxiaW5kaW5nOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sY3dkOmZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxjaGRpcjpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1bWFzazpmdW5jdGlvbigpe3JldHVybiAwfSxocnRpbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9LjAwMSpOZS5jYWxsKGplKSxyPU1hdGguZmxvb3IodCksbj1NYXRoLmZsb29yKHQlMSoxZTkpO3JldHVybiBlJiYoci09ZVswXSwobi09ZVsxXSk8MCYmKHItLSxuKz0xZTkpKSxbcixuXX0scGxhdGZvcm06ImJyb3dzZXIiLHJlbGVhc2U6e30sY29uZmlnOnt9LHVwdGltZTpmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZS1xZSkvMWUzfX0sSmU9S2UsQmU9ZmUsRmU9ZnVuY3Rpb24oZSx0LHIsbixhKXtyZXR1cm4gZS5jb25maWc9dCxyJiYoZS5jb2RlPXIpLGUucmVxdWVzdD1uLGUucmVzcG9uc2U9YSxlLmlzQXhpb3NFcnJvcj0hMCxlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXNzYWdlOnRoaXMubWVzc2FnZSxuYW1lOnRoaXMubmFtZSxkZXNjcmlwdGlvbjp0aGlzLmRlc2NyaXB0aW9uLG51bWJlcjp0aGlzLm51bWJlcixmaWxlTmFtZTp0aGlzLmZpbGVOYW1lLGxpbmVOdW1iZXI6dGhpcy5saW5lTnVtYmVyLGNvbHVtbk51bWJlcjp0aGlzLmNvbHVtbk51bWJlcixzdGFjazp0aGlzLnN0YWNrLGNvbmZpZzp0aGlzLmNvbmZpZyxjb2RlOnRoaXMuY29kZSxzdGF0dXM6dGhpcy5yZXNwb25zZSYmdGhpcy5yZXNwb25zZS5zdGF0dXM/dGhpcy5yZXNwb25zZS5zdGF0dXM6bnVsbH19LGV9LFdlPXtzaWxlbnRKU09OUGFyc2luZzohMCxmb3JjZWRKU09OUGFyc2luZzohMCxjbGFyaWZ5VGltZW91dEVycm9yOiExfSx6ZT1GZSxZZT1mdW5jdGlvbihlLHQscixuLGEpe3ZhciBpPW5ldyBFcnJvcihlKTtyZXR1cm4gemUoaSx0LHIsbixhKX0sR2U9WWUsVmU9ZmUsWGU9VmUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKT97d3JpdGU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3ZhciBvPVtdO28ucHVzaChlKyI9IitlbmNvZGVVUklDb21wb25lbnQodCkpLFZlLmlzTnVtYmVyKHIpJiZvLnB1c2goImV4cGlyZXM9IituZXcgRGF0ZShyKS50b0dNVFN0cmluZygpKSxWZS5pc1N0cmluZyhuKSYmby5wdXNoKCJwYXRoPSIrbiksVmUuaXNTdHJpbmcoYSkmJm8ucHVzaCgiZG9tYWluPSIrYSksITA9PT1pJiZvLnB1c2goInNlY3VyZSIpLGRvY3VtZW50LmNvb2tpZT1vLmpvaW4oIjsgIil9LHJlYWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoIihefDtcXHMqKSgiK2UrIik9KFteO10qKSIpKTtyZXR1cm4gdD9kZWNvZGVVUklDb21wb25lbnQodFszXSk6bnVsbH0scmVtb3ZlOmZ1bmN0aW9uKGUpe3RoaXMud3JpdGUoZSwiIixEYXRlLm5vdygpLTg2NGU1KX19Ont3cml0ZTpmdW5jdGlvbigpe30scmVhZDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxyZW1vdmU6ZnVuY3Rpb24oKXt9fSwkZT1mdW5jdGlvbihlKXtyZXR1cm4vXihbYS16XVthLXpcZCtcLS5dKjopP1wvXC8vaS50ZXN0KGUpfSxaZT1mdW5jdGlvbihlLHQpe3JldHVybiB0P2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvIit0LnJlcGxhY2UoL15cLysvLCIiKTplfSxRZT1mZSxldD1bImFnZSIsImF1dGhvcml6YXRpb24iLCJjb250ZW50LWxlbmd0aCIsImNvbnRlbnQtdHlwZSIsImV0YWciLCJleHBpcmVzIiwiZnJvbSIsImhvc3QiLCJpZi1tb2RpZmllZC1zaW5jZSIsImlmLXVubW9kaWZpZWQtc2luY2UiLCJsYXN0LW1vZGlmaWVkIiwibG9jYXRpb24iLCJtYXgtZm9yd2FyZHMiLCJwcm94eS1hdXRob3JpemF0aW9uIiwicmVmZXJlciIsInJldHJ5LWFmdGVyIiwidXNlci1hZ2VudCJdLHR0PWZlLHJ0PXR0LmlzU3RhbmRhcmRCcm93c2VyRW52KCk/ZnVuY3Rpb24oKXt2YXIgZSx0PS8obXNpZXx0cmlkZW50KS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gbihlKXt2YXIgbj1lO3JldHVybiB0JiYoci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLG49ci5ocmVmKSxyLnNldEF0dHJpYnV0ZSgiaHJlZiIsbikse2hyZWY6ci5ocmVmLHByb3RvY29sOnIucHJvdG9jb2w/ci5wcm90b2NvbC5yZXBsYWNlKC86JC8sIiIpOiIiLGhvc3Q6ci5ob3N0LHNlYXJjaDpyLnNlYXJjaD9yLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCIiKToiIixoYXNoOnIuaGFzaD9yLmhhc2gucmVwbGFjZSgvXiMvLCIiKToiIixob3N0bmFtZTpyLmhvc3RuYW1lLHBvcnQ6ci5wb3J0LHBhdGhuYW1lOiIvIj09PXIucGF0aG5hbWUuY2hhckF0KDApP3IucGF0aG5hbWU6Ii8iK3IucGF0aG5hbWV9fXJldHVybiBlPW4od2luZG93LmxvY2F0aW9uLmhyZWYpLGZ1bmN0aW9uKHQpe3ZhciByPXR0LmlzU3RyaW5nKHQpP24odCk6dDtyZXR1cm4gci5wcm90b2NvbD09PWUucHJvdG9jb2wmJnIuaG9zdD09PWUuaG9zdH19KCk6ZnVuY3Rpb24oKXtyZXR1cm4hMH07ZnVuY3Rpb24gbnQoZSl7dGhpcy5tZXNzYWdlPWV9bnQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIkNhbmNlbCIrKHRoaXMubWVzc2FnZT8iOiAiK3RoaXMubWVzc2FnZToiIil9LG50LnByb3RvdHlwZS5fX0NBTkNFTF9fPSEwO3ZhciBhdD1udCxpdD1mZSxvdD1mdW5jdGlvbihlLHQscil7dmFyIG49ci5jb25maWcudmFsaWRhdGVTdGF0dXM7ci5zdGF0dXMmJm4mJiFuKHIuc3RhdHVzKT90KEdlKCJSZXF1ZXN0IGZhaWxlZCB3aXRoIHN0YXR1cyBjb2RlICIrci5zdGF0dXMsci5jb25maWcsbnVsbCxyLnJlcXVlc3QscikpOmUocil9LHN0PVhlLHV0PXBlLGN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJiEkZSh0KT9aZShlLHQpOnR9LGZ0PWZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhPXt9O3JldHVybiBlPyhRZS5mb3JFYWNoKGUuc3BsaXQoIlxuIiksKGZ1bmN0aW9uKGUpe2lmKG49ZS5pbmRleE9mKCI6IiksdD1RZS50cmltKGUuc3Vic3RyKDAsbikpLnRvTG93ZXJDYXNlKCkscj1RZS50cmltKGUuc3Vic3RyKG4rMSkpLHQpe2lmKGFbdF0mJmV0LmluZGV4T2YodCk+PTApcmV0dXJuO2FbdF09InNldC1jb29raWUiPT09dD8oYVt0XT9hW3RdOltdKS5jb25jYXQoW3JdKTphW3RdP2FbdF0rIiwgIityOnJ9fSkpLGEpOmF9LGx0PXJ0LGh0PVllLHB0PVdlLGR0PWF0LHZ0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCxyKXt2YXIgbixhPWUuZGF0YSxpPWUuaGVhZGVycyxvPWUucmVzcG9uc2VUeXBlO2Z1bmN0aW9uIHMoKXtlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnVuc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiZlLnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCJhYm9ydCIsbil9aXQuaXNGb3JtRGF0YShhKSYmZGVsZXRlIGlbIkNvbnRlbnQtVHlwZSJdO3ZhciB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLmF1dGgpe3ZhciBjPWUuYXV0aC51c2VybmFtZXx8IiIsZj1lLmF1dGgucGFzc3dvcmQ/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGUuYXV0aC5wYXNzd29yZCkpOiIiO2kuQXV0aG9yaXphdGlvbj0iQmFzaWMgIitidG9hKGMrIjoiK2YpfXZhciBsPWN0KGUuYmFzZVVSTCxlLnVybCk7ZnVuY3Rpb24gaCgpe2lmKHUpe3ZhciBuPSJnZXRBbGxSZXNwb25zZUhlYWRlcnMiaW4gdT9mdCh1LmdldEFsbFJlc3BvbnNlSGVhZGVycygpKTpudWxsLGE9e2RhdGE6byYmInRleHQiIT09byYmImpzb24iIT09bz91LnJlc3BvbnNlOnUucmVzcG9uc2VUZXh0LHN0YXR1czp1LnN0YXR1cyxzdGF0dXNUZXh0OnUuc3RhdHVzVGV4dCxoZWFkZXJzOm4sY29uZmlnOmUscmVxdWVzdDp1fTtvdCgoZnVuY3Rpb24oZSl7dChlKSxzKCl9KSwoZnVuY3Rpb24oZSl7cihlKSxzKCl9KSxhKSx1PW51bGx9fWlmKHUub3BlbihlLm1ldGhvZC50b1VwcGVyQ2FzZSgpLHV0KGwsZS5wYXJhbXMsZS5wYXJhbXNTZXJpYWxpemVyKSwhMCksdS50aW1lb3V0PWUudGltZW91dCwib25sb2FkZW5kImluIHU/dS5vbmxvYWRlbmQ9aDp1Lm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3UmJjQ9PT11LnJlYWR5U3RhdGUmJigwIT09dS5zdGF0dXN8fHUucmVzcG9uc2VVUkwmJjA9PT11LnJlc3BvbnNlVVJMLmluZGV4T2YoImZpbGU6IikpJiZzZXRUaW1lb3V0KGgpfSx1Lm9uYWJvcnQ9ZnVuY3Rpb24oKXt1JiYocihodCgiUmVxdWVzdCBhYm9ydGVkIixlLCJFQ09OTkFCT1JURUQiLHUpKSx1PW51bGwpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24oKXtyKGh0KCJOZXR3b3JrIEVycm9yIixlLG51bGwsdSkpLHU9bnVsbH0sdS5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXt2YXIgdD1lLnRpbWVvdXQ/InRpbWVvdXQgb2YgIitlLnRpbWVvdXQrIm1zIGV4Y2VlZGVkIjoidGltZW91dCBleGNlZWRlZCIsbj1lLnRyYW5zaXRpb25hbHx8cHQ7ZS50aW1lb3V0RXJyb3JNZXNzYWdlJiYodD1lLnRpbWVvdXRFcnJvck1lc3NhZ2UpLHIoaHQodCxlLG4uY2xhcmlmeVRpbWVvdXRFcnJvcj8iRVRJTUVET1VUIjoiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsfSxpdC5pc1N0YW5kYXJkQnJvd3NlckVudigpKXt2YXIgcD0oZS53aXRoQ3JlZGVudGlhbHN8fGx0KGwpKSYmZS54c3JmQ29va2llTmFtZT9zdC5yZWFkKGUueHNyZkNvb2tpZU5hbWUpOnZvaWQgMDtwJiYoaVtlLnhzcmZIZWFkZXJOYW1lXT1wKX0ic2V0UmVxdWVzdEhlYWRlciJpbiB1JiZpdC5mb3JFYWNoKGksKGZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09YSYmImNvbnRlbnQtdHlwZSI9PT10LnRvTG93ZXJDYXNlKCk/ZGVsZXRlIGlbdF06dS5zZXRSZXF1ZXN0SGVhZGVyKHQsZSl9KSksaXQuaXNVbmRlZmluZWQoZS53aXRoQ3JlZGVudGlhbHMpfHwodS53aXRoQ3JlZGVudGlhbHM9ISFlLndpdGhDcmVkZW50aWFscyksbyYmImpzb24iIT09byYmKHUucmVzcG9uc2VUeXBlPWUucmVzcG9uc2VUeXBlKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vbkRvd25sb2FkUHJvZ3Jlc3MmJnUuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25Eb3dubG9hZFByb2dyZXNzKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblVwbG9hZFByb2dyZXNzJiZ1LnVwbG9hZCYmdS51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3MiLGUub25VcGxvYWRQcm9ncmVzcyksKGUuY2FuY2VsVG9rZW58fGUuc2lnbmFsKSYmKG49ZnVuY3Rpb24oZSl7dSYmKHIoIWV8fGUmJmUudHlwZT9uZXcgZHQoImNhbmNlbGVkIik6ZSksdS5hYm9ydCgpLHU9bnVsbCl9LGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4uc3Vic2NyaWJlKG4pLGUuc2lnbmFsJiYoZS5zaWduYWwuYWJvcnRlZD9uKCk6ZS5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pKSksYXx8KGE9bnVsbCksdS5zZW5kKGEpfSkpfSxndD1mZSx5dD1mdW5jdGlvbihlLHQpe0JlLmZvckVhY2goZSwoZnVuY3Rpb24ocixuKXtuIT09dCYmbi50b1VwcGVyQ2FzZSgpPT09dC50b1VwcGVyQ2FzZSgpJiYoZVt0XT1yLGRlbGV0ZSBlW25dKX0pKX0sbXQ9RmUsd3Q9eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifTtmdW5jdGlvbiBidChlLHQpeyFndC5pc1VuZGVmaW5lZChlKSYmZ3QuaXNVbmRlZmluZWQoZVsiQ29udGVudC1UeXBlIl0pJiYoZVsiQ29udGVudC1UeXBlIl09dCl9dmFyIGt0LHh0PXt0cmFuc2l0aW9uYWw6V2UsYWRhcHRlcjooKCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3R8fHZvaWQgMCE9PUplJiYiW29iamVjdCBwcm9jZXNzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoSmUpKSYmKGt0PXZ0KSxrdCksdHJhbnNmb3JtUmVxdWVzdDpbZnVuY3Rpb24oZSx0KXtyZXR1cm4geXQodCwiQWNjZXB0IikseXQodCwiQ29udGVudC1UeXBlIiksZ3QuaXNGb3JtRGF0YShlKXx8Z3QuaXNBcnJheUJ1ZmZlcihlKXx8Z3QuaXNCdWZmZXIoZSl8fGd0LmlzU3RyZWFtKGUpfHxndC5pc0ZpbGUoZSl8fGd0LmlzQmxvYihlKT9lOmd0LmlzQXJyYXlCdWZmZXJWaWV3KGUpP2UuYnVmZmVyOmd0LmlzVVJMU2VhcmNoUGFyYW1zKGUpPyhidCh0LCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD11dGYtOCIpLGUudG9TdHJpbmcoKSk6Z3QuaXNPYmplY3QoZSl8fHQmJiJhcHBsaWNhdGlvbi9qc29uIj09PXRbIkNvbnRlbnQtVHlwZSJdPyhidCh0LCJhcHBsaWNhdGlvbi9qc29uIiksZnVuY3Rpb24oZSx0LHIpe2lmKGd0LmlzU3RyaW5nKGUpKXRyeXtyZXR1cm4odHx8SlNPTi5wYXJzZSkoZSksZ3QudHJpbShlKX1jYXRjaChlKXtpZigiU3ludGF4RXJyb3IiIT09ZS5uYW1lKXRocm93IGV9cmV0dXJuKHJ8fEpTT04uc3RyaW5naWZ5KShlKX0oZSkpOmV9XSx0cmFuc2Zvcm1SZXNwb25zZTpbZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy50cmFuc2l0aW9uYWx8fHh0LnRyYW5zaXRpb25hbCxyPXQmJnQuc2lsZW50SlNPTlBhcnNpbmcsbj10JiZ0LmZvcmNlZEpTT05QYXJzaW5nLGE9IXImJiJqc29uIj09PXRoaXMucmVzcG9uc2VUeXBlO2lmKGF8fG4mJmd0LmlzU3RyaW5nKGUpJiZlLmxlbmd0aCl0cnl7cmV0dXJuIEpTT04ucGFyc2UoZSl9Y2F0Y2goZSl7aWYoYSl7aWYoIlN5bnRheEVycm9yIj09PWUubmFtZSl0aHJvdyBtdChlLHRoaXMsIkVfSlNPTl9QQVJTRSIpO3Rocm93IGV9fXJldHVybiBlfV0sdGltZW91dDowLHhzcmZDb29raWVOYW1lOiJYU1JGLVRPS0VOIix4c3JmSGVhZGVyTmFtZToiWC1YU1JGLVRPS0VOIixtYXhDb250ZW50TGVuZ3RoOi0xLG1heEJvZHlMZW5ndGg6LTEsdmFsaWRhdGVTdGF0dXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGU+PTIwMCYmZTwzMDB9LGhlYWRlcnM6e2NvbW1vbjp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCB0ZXh0L3BsYWluLCAqLyoifX19O2d0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIl0sKGZ1bmN0aW9uKGUpe3h0LmhlYWRlcnNbZV09e319KSksZ3QuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXt4dC5oZWFkZXJzW2VdPWd0Lm1lcmdlKHd0KX0pKTt2YXIgX3Q9eHQsU3Q9ZmUsRXQ9X3QsVHQ9ZnVuY3Rpb24oZSl7cmV0dXJuISghZXx8IWUuX19DQU5DRUxfXyl9LEF0PWZlLFJ0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzfHxFdDtyZXR1cm4gU3QuZm9yRWFjaChyLChmdW5jdGlvbihyKXtlPXIuY2FsbChuLGUsdCl9KSksZX0sQ3Q9VHQsUHQ9X3QsRHQ9YXQ7ZnVuY3Rpb24gT3QoZSl7aWYoZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi50aHJvd0lmUmVxdWVzdGVkKCksZS5zaWduYWwmJmUuc2lnbmFsLmFib3J0ZWQpdGhyb3cgbmV3IER0KCJjYW5jZWxlZCIpfXZhciBJdD1mZSxMdD1mdW5jdGlvbihlLHQpe3Q9dHx8e307dmFyIHI9e307ZnVuY3Rpb24gbihlLHQpe3JldHVybiBJdC5pc1BsYWluT2JqZWN0KGUpJiZJdC5pc1BsYWluT2JqZWN0KHQpP0l0Lm1lcmdlKGUsdCk6SXQuaXNQbGFpbk9iamVjdCh0KT9JdC5tZXJnZSh7fSx0KTpJdC5pc0FycmF5KHQpP3Quc2xpY2UoKTp0fWZ1bmN0aW9uIGEocil7cmV0dXJuIEl0LmlzVW5kZWZpbmVkKHRbcl0pP0l0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKGVbcl0sdFtyXSl9ZnVuY3Rpb24gaShlKXtpZighSXQuaXNVbmRlZmluZWQodFtlXSkpcmV0dXJuIG4odm9pZCAwLHRbZV0pfWZ1bmN0aW9uIG8ocil7cmV0dXJuIEl0LmlzVW5kZWZpbmVkKHRbcl0pP0l0LmlzVW5kZWZpbmVkKGVbcl0pP3ZvaWQgMDpuKHZvaWQgMCxlW3JdKTpuKHZvaWQgMCx0W3JdKX1mdW5jdGlvbiBzKHIpe3JldHVybiByIGluIHQ/bihlW3JdLHRbcl0pOnIgaW4gZT9uKHZvaWQgMCxlW3JdKTp2b2lkIDB9dmFyIHU9e3VybDppLG1ldGhvZDppLGRhdGE6aSxiYXNlVVJMOm8sdHJhbnNmb3JtUmVxdWVzdDpvLHRyYW5zZm9ybVJlc3BvbnNlOm8scGFyYW1zU2VyaWFsaXplcjpvLHRpbWVvdXQ6byx0aW1lb3V0TWVzc2FnZTpvLHdpdGhDcmVkZW50aWFsczpvLGFkYXB0ZXI6byxyZXNwb25zZVR5cGU6byx4c3JmQ29va2llTmFtZTpvLHhzcmZIZWFkZXJOYW1lOm8sb25VcGxvYWRQcm9ncmVzczpvLG9uRG93bmxvYWRQcm9ncmVzczpvLGRlY29tcHJlc3M6byxtYXhDb250ZW50TGVuZ3RoOm8sbWF4Qm9keUxlbmd0aDpvLHRyYW5zcG9ydDpvLGh0dHBBZ2VudDpvLGh0dHBzQWdlbnQ6byxjYW5jZWxUb2tlbjpvLHNvY2tldFBhdGg6byxyZXNwb25zZUVuY29kaW5nOm8sdmFsaWRhdGVTdGF0dXM6c307cmV0dXJuIEl0LmZvckVhY2goT2JqZWN0LmtleXMoZSkuY29uY2F0KE9iamVjdC5rZXlzKHQpKSwoZnVuY3Rpb24oZSl7dmFyIHQ9dVtlXXx8YSxuPXQoZSk7SXQuaXNVbmRlZmluZWQobikmJnQhPT1zfHwocltlXT1uKX0pKSxyfSxVdD0iMC4yNi4xIixIdD1VdCxNdD17fTtbIm9iamVjdCIsImJvb2xlYW4iLCJudW1iZXIiLCJmdW5jdGlvbiIsInN0cmluZyIsInN5bWJvbCJdLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7TXRbZV09ZnVuY3Rpb24ocil7cmV0dXJuIG4ocik9PT1lfHwiYSIrKHQ8MT8ibiAiOiIgIikrZX19KSk7dmFyIGp0PXt9O010LnRyYW5zaXRpb25hbD1mdW5jdGlvbihlLHQscil7ZnVuY3Rpb24gbihlLHQpe3JldHVybiJbQXhpb3MgdiIrSHQrIl0gVHJhbnNpdGlvbmFsIG9wdGlvbiAnIitlKyInIit0KyhyPyIuICIrcjoiIil9cmV0dXJuIGZ1bmN0aW9uKHIsYSxpKXtpZighMT09PWUpdGhyb3cgbmV3IEVycm9yKG4oYSwiIGhhcyBiZWVuIHJlbW92ZWQiKyh0PyIgaW4gIit0OiIiKSkpO3JldHVybiB0JiYhanRbYV0mJihqdFthXT0hMCxjb25zb2xlLndhcm4obihhLCIgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSB2Iit0KyIgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmVhciBmdXR1cmUiKSkpLCFlfHxlKHIsYSxpKX19O3ZhciBOdD17YXNzZXJ0T3B0aW9uczpmdW5jdGlvbihlLHQscil7aWYoIm9iamVjdCIhPT1uKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QiKTtmb3IodmFyIGE9T2JqZWN0LmtleXMoZSksaT1hLmxlbmd0aDtpLS0gPjA7KXt2YXIgbz1hW2ldLHM9dFtvXTtpZihzKXt2YXIgdT1lW29dLGM9dm9pZCAwPT09dXx8cyh1LG8sZSk7aWYoITAhPT1jKXRocm93IG5ldyBUeXBlRXJyb3IoIm9wdGlvbiAiK28rIiBtdXN0IGJlICIrYyl9ZWxzZSBpZighMCE9PXIpdGhyb3cgRXJyb3IoIlVua25vd24gb3B0aW9uICIrbyl9fSx2YWxpZGF0b3JzOk10fSxxdD1mZSxLdD1wZSxKdD1nZSxCdD1mdW5jdGlvbihlKXtyZXR1cm4gT3QoZSksZS5oZWFkZXJzPWUuaGVhZGVyc3x8e30sZS5kYXRhPVJ0LmNhbGwoZSxlLmRhdGEsZS5oZWFkZXJzLGUudHJhbnNmb3JtUmVxdWVzdCksZS5oZWFkZXJzPUF0Lm1lcmdlKGUuaGVhZGVycy5jb21tb258fHt9LGUuaGVhZGVyc1tlLm1ldGhvZF18fHt9LGUuaGVhZGVycyksQXQuZm9yRWFjaChbImRlbGV0ZSIsImdldCIsImhlYWQiLCJwb3N0IiwicHV0IiwicGF0Y2giLCJjb21tb24iXSwoZnVuY3Rpb24odCl7ZGVsZXRlIGUuaGVhZGVyc1t0XX0pKSwoZS5hZGFwdGVyfHxQdC5hZGFwdGVyKShlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gT3QoZSksdC5kYXRhPVJ0LmNhbGwoZSx0LmRhdGEsdC5oZWFkZXJzLGUudHJhbnNmb3JtUmVzcG9uc2UpLHR9KSwoZnVuY3Rpb24odCl7cmV0dXJuIEN0KHQpfHwoT3QoZSksdCYmdC5yZXNwb25zZSYmKHQucmVzcG9uc2UuZGF0YT1SdC5jYWxsKGUsdC5yZXNwb25zZS5kYXRhLHQucmVzcG9uc2UuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSkpLFByb21pc2UucmVqZWN0KHQpfSkpfSxGdD1MdCxXdD1OdCx6dD1XdC52YWxpZGF0b3JzO2Z1bmN0aW9uIFl0KGUpe3RoaXMuZGVmYXVsdHM9ZSx0aGlzLmludGVyY2VwdG9ycz17cmVxdWVzdDpuZXcgSnQscmVzcG9uc2U6bmV3IEp0fX1ZdC5wcm90b3R5cGUucmVxdWVzdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZT8odD10fHx7fSkudXJsPWU6dD1lfHx7fSwodD1GdCh0aGlzLmRlZmF1bHRzLHQpKS5tZXRob2Q/dC5tZXRob2Q9dC5tZXRob2QudG9Mb3dlckNhc2UoKTp0aGlzLmRlZmF1bHRzLm1ldGhvZD90Lm1ldGhvZD10aGlzLmRlZmF1bHRzLm1ldGhvZC50b0xvd2VyQ2FzZSgpOnQubWV0aG9kPSJnZXQiO3ZhciByPXQudHJhbnNpdGlvbmFsO3ZvaWQgMCE9PXImJld0LmFzc2VydE9wdGlvbnMocix7c2lsZW50SlNPTlBhcnNpbmc6enQudHJhbnNpdGlvbmFsKHp0LmJvb2xlYW4pLGZvcmNlZEpTT05QYXJzaW5nOnp0LnRyYW5zaXRpb25hbCh6dC5ib29sZWFuKSxjbGFyaWZ5VGltZW91dEVycm9yOnp0LnRyYW5zaXRpb25hbCh6dC5ib29sZWFuKX0sITEpO3ZhciBuPVtdLGE9ITA7dGhpcy5pbnRlcmNlcHRvcnMucmVxdWVzdC5mb3JFYWNoKChmdW5jdGlvbihlKXsiZnVuY3Rpb24iPT10eXBlb2YgZS5ydW5XaGVuJiYhMT09PWUucnVuV2hlbih0KXx8KGE9YSYmZS5zeW5jaHJvbm91cyxuLnVuc2hpZnQoZS5mdWxmaWxsZWQsZS5yZWplY3RlZCkpfSkpO3ZhciBpLG89W107aWYodGhpcy5pbnRlcmNlcHRvcnMucmVzcG9uc2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7by5wdXNoKGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpfSkpLCFhKXt2YXIgcz1bQnQsdm9pZCAwXTtmb3IoQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkocyxuKSxzPXMuY29uY2F0KG8pLGk9UHJvbWlzZS5yZXNvbHZlKHQpO3MubGVuZ3RoOylpPWkudGhlbihzLnNoaWZ0KCkscy5zaGlmdCgpKTtyZXR1cm4gaX1mb3IodmFyIHU9dDtuLmxlbmd0aDspe3ZhciBjPW4uc2hpZnQoKSxmPW4uc2hpZnQoKTt0cnl7dT1jKHUpfWNhdGNoKGUpe2YoZSk7YnJlYWt9fXRyeXtpPUJ0KHUpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX1mb3IoO28ubGVuZ3RoOylpPWkudGhlbihvLnNoaWZ0KCksby5zaGlmdCgpKTtyZXR1cm4gaX0sWXQucHJvdG90eXBlLmdldFVyaT1mdW5jdGlvbihlKXtyZXR1cm4gZT1GdCh0aGlzLmRlZmF1bHRzLGUpLEt0KGUudXJsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplcikucmVwbGFjZSgvXlw/LywiIil9LHF0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwib3B0aW9ucyJdLChmdW5jdGlvbihlKXtZdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEZ0KHJ8fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOihyfHx7fSkuZGF0YX0pKX19KSkscXQuZm9yRWFjaChbInBvc3QiLCJwdXQiLCJwYXRjaCJdLChmdW5jdGlvbihlKXtZdC5wcm90b3R5cGVbZV09ZnVuY3Rpb24odCxyLG4pe3JldHVybiB0aGlzLnJlcXVlc3QoRnQobnx8e30se21ldGhvZDplLHVybDp0LGRhdGE6cn0pKX19KSk7dmFyIEd0PVl0LFZ0PWF0O2Z1bmN0aW9uIFh0KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoImV4ZWN1dG9yIG11c3QgYmUgYSBmdW5jdGlvbi4iKTt2YXIgdDt0aGlzLnByb21pc2U9bmV3IFByb21pc2UoKGZ1bmN0aW9uKGUpe3Q9ZX0pKTt2YXIgcj10aGlzO3RoaXMucHJvbWlzZS50aGVuKChmdW5jdGlvbihlKXtpZihyLl9saXN0ZW5lcnMpe3ZhciB0LG49ci5fbGlzdGVuZXJzLmxlbmd0aDtmb3IodD0wO3Q8bjt0Kyspci5fbGlzdGVuZXJzW3RdKGUpO3IuX2xpc3RlbmVycz1udWxsfX0pKSx0aGlzLnByb21pc2UudGhlbj1mdW5jdGlvbihlKXt2YXIgdCxuPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyLnN1YnNjcmliZShlKSx0PWV9KSkudGhlbihlKTtyZXR1cm4gbi5jYW5jZWw9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKHQpfSxufSxlKChmdW5jdGlvbihlKXtyLnJlYXNvbnx8KHIucmVhc29uPW5ldyBWdChlKSx0KHIucmVhc29uKSl9KSl9WHQucHJvdG90eXBlLnRocm93SWZSZXF1ZXN0ZWQ9ZnVuY3Rpb24oKXtpZih0aGlzLnJlYXNvbil0aHJvdyB0aGlzLnJlYXNvbn0sWHQucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihlKXt0aGlzLnJlYXNvbj9lKHRoaXMucmVhc29uKTp0aGlzLl9saXN0ZW5lcnM/dGhpcy5fbGlzdGVuZXJzLnB1c2goZSk6dGhpcy5fbGlzdGVuZXJzPVtlXX0sWHQucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2xpc3RlbmVycyl7dmFyIHQ9dGhpcy5fbGlzdGVuZXJzLmluZGV4T2YoZSk7LTEhPT10JiZ0aGlzLl9saXN0ZW5lcnMuc3BsaWNlKHQsMSl9fSxYdC5zb3VyY2U9ZnVuY3Rpb24oKXt2YXIgZSx0PW5ldyBYdCgoZnVuY3Rpb24odCl7ZT10fSkpO3JldHVybnt0b2tlbjp0LGNhbmNlbDplfX07dmFyICR0PVh0LFp0PWZlLFF0PWZlLGVyPWVlLHRyPUd0LHJyPUx0O3ZhciBucj1mdW5jdGlvbiBlKHQpe3ZhciByPW5ldyB0cih0KSxuPWVyKHRyLnByb3RvdHlwZS5yZXF1ZXN0LHIpO3JldHVybiBRdC5leHRlbmQobix0ci5wcm90b3R5cGUsciksUXQuZXh0ZW5kKG4sciksbi5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUocnIodCxyKSl9LG59KF90KTtuci5BeGlvcz10cixuci5DYW5jZWw9YXQsbnIuQ2FuY2VsVG9rZW49JHQsbnIuaXNDYW5jZWw9VHQsbnIuVkVSU0lPTj1VdCxuci5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSxuci5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSxuci5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIFp0LmlzT2JqZWN0KGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfSxRLmV4cG9ydHM9bnIsUS5leHBvcnRzLmRlZmF1bHQ9bnI7dmFyIGFyLGlyPVEuZXhwb3J0czt2YXIgb3I9YXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHUoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihuPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxhPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbihlKXthLmFwcGVuZChlLG5bZV0pfSkpLGUuZGF0YT1hKSxlLnN0YXJ0VGltZUluTXM9KG5ldyBEYXRlKS5nZXRUaW1lKCksYXIuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IGFyLmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhci5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6YXIuaXNIYW5kbGVyRW5hYmxlZD1lLHRoaXMuYXR0YWNoVG9rZW49dDtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImVuYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7YXIuaXNIYW5kbGVyRW5hYmxlZD0hMH19LHtrZXk6ImRpc2FibGVIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbigpe2FyLmlzSGFuZGxlckVuYWJsZWQ9ITF9fSx7a2V5OiJkaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTphci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUO2FyLmlzSGFuZGxlckVuYWJsZWQ9ITEsc2V0VGltZW91dCgoZnVuY3Rpb24oKXthci5pc0hhbmRsZXJFbmFibGVkPSEwfSksZSl9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9ZX19LHtrZXk6InNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZX19XSxbe2tleToiZ2V0SW5zdGFuY2UiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gdGhpcy5heGlvc0luc3RhbmNlfHwodGhpcy5heGlvc0luc3RhbmNlPWlyLmNyZWF0ZSh7d2l0aENyZWRlbnRpYWxzOiEwfSksdGhpcy5jbGllbnRJbnN0YW5jZXx8KHRoaXMuY2xpZW50SW5zdGFuY2U9bmV3IGFyKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gUyhlLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLmNsaWVudEluc3RhbmNlLnJlcXVlc3RIYW5kbGVyKHQpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKSx0aGlzLmF4aW9zSW5zdGFuY2UuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2Uuc3VjY2Vzc0hhbmRsZXIodCl9KSwoZnVuY3Rpb24odCl7cmV0dXJuIGUuY2xpZW50SW5zdGFuY2UuZXJyb3JIYW5kbGVyKHQpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5hbGw9aXIuYWxsLHRoaXMuYXhpb3NJbnN0YW5jZS5zcHJlYWQ9aXIuc3ByZWFkLHRoaXMuYXhpb3NJbnN0YW5jZS5pbml0PXRoaXMuY2xpZW50SW5zdGFuY2UuaW5pdCx0aGlzLmF4aW9zSW5zdGFuY2UuZW5hYmxlSGFuZGxlcj10aGlzLmNsaWVudEluc3RhbmNlLmVuYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZGlzYWJsZUhhbmRsZXIsdGhpcy5heGlvc0luc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcldpdGhUaW1lb3V0LHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2ssdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spLHRoaXMuYXhpb3NJbnN0YW5jZX19XSksZX0oKTtvci5ERUZBVUxUX0hBTkRMRVJfRElTQUJMRV9USU1FT1VUPTFlMyxvcj1hcj1mdW5jdGlvbihlLHQscixhKXt2YXIgaSxvPWFyZ3VtZW50cy5sZW5ndGgscz1vPDM/dDpudWxsPT09YT9hPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTphO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdD8idW5kZWZpbmVkIjpuKFJlZmxlY3QpKSYmImZ1bmN0aW9uIj09dHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUpcz1SZWZsZWN0LmRlY29yYXRlKGUsdCxyLGEpO2Vsc2UgZm9yKHZhciB1PWUubGVuZ3RoLTE7dT49MDt1LS0pKGk9ZVt1XSkmJihzPShvPDM/aShzKTpvPjM/aSh0LHIscyk6aSh0LHIpKXx8cyk7cmV0dXJuIG8+MyYmcyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixzKSxzfShbZnVuY3Rpb24oZSl7fV0sb3IpO3ZhciBzcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSksdGhpcy5fZGF0YT1uZXcgTWFwfXJldHVybiB1KGUsW3trZXk6InNldERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLnNldChlLHQpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIixudWxsIT09KG49bnVsbD09PSh0PXRoaXMuX2RhdGEpfHx2b2lkIDA9PT10P3ZvaWQgMDp0LmdldChlKSkmJnZvaWQgMCE9PW4/bjoie30iKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6dGhpcy5fZGF0YS5kZWxldGUoZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksdXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsbnVsbCxbe2tleToiZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJue2Jsb2I6KG51bGw9PWU/dm9pZCAwOmUuZGF0YSlpbnN0YW5jZW9mIEJsb2I/bnVsbD09ZT92b2lkIDA6ZS5kYXRhOm51bGwsZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITB9fX0se2tleToiZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUudG9KU09OKSYmZGVsZXRlIGUudG9KU09OLHtlcnJvcjpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHN1Y2Nlc3M6ITF9fX1dKSxlfSgpLGNyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6InJlbW92ZUF1dGhvcml6YXRpb25Db2RlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWxvY2F0aW9uLmhyZWY7aGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsZS5yZXBsYWNlKC9cP2NvZGU9LiokLywiIikpfX0se2tleToiZ2V0UEtDRSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIG51bGwhPT0odD1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGUpKSYmdm9pZCAwIT09dD90OiIifX0se2tleToic2V0UEtDRSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGUsdCl9fSx7a2V5OiJzZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKEQsZSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBudWxsIT09KGU9c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShEKSkmJnZvaWQgMCE9PWU/ZToiIn19LHtrZXk6InJlbW92ZVBLQ0UiLHZhbHVlOmZ1bmN0aW9uKGUpe3Nlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oZSl9fSx7a2V5OiJjYW5Db250aW51ZVNpZ25JbiIsdmFsdWU6ZnVuY3Rpb24odCxyKXtyZXR1cm4hKHQmJiFlLmhhc0Vycm9ySW5VUkwoKSYmIWUuaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMKCkmJiFyKX19LHtrZXk6ImlzSW5pdGlhbGl6ZWRTaWxlbnRTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGUuaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCgpfX0se2tleToid2FzU2lnbkluQ2FsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEoIWUuaGFzRXJyb3JJblVSTCgpJiYhZS5oYXNBdXRoU2VhcmNoUGFyYW1zSW5VUkwoKXx8dGhpcy5pc1NpbGVudFN0YXRlUHJlc2VudEluVVJMKCkpfX0se2tleToid2FzU2lsZW50U2lnbkluQ2FsbGVkIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oImluaXRpYWxpemVkLXNpbGVudC1zaWduLWluIiksdD1lP0pTT04ucGFyc2UoZSk6bnVsbDtyZXR1cm4gQm9vbGVhbih0KX19LHtrZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZighSi5pc1NpZ25PdXRTdWNjZXNzZnVsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSl7ZS5uZXh0PTY7YnJlYWt9cmV0dXJuIHQ9d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXSxoaXN0b3J5LnB1c2hTdGF0ZSh7fSxkb2N1bWVudC50aXRsZSx0KSxlLm5leHQ9NSxKLmNsZWFyVXNlclNlc3Npb25EYXRhKCk7Y2FzZSA1OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwhMCk7Y2FzZSA2OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfX0se2tleToiZGlkU2lnbk91dEZhaWwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoSi5kaWRTaWduT3V0RmFpbCh3aW5kb3cubG9jYXRpb24uaHJlZikpe3ZhciBlPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLHQ9ZS5zZWFyY2hQYXJhbXMuZ2V0KFcpLHI9ZS5zZWFyY2hQYXJhbXMuZ2V0KHopLG49d2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXTtyZXR1cm4gaGlzdG9yeS5wdXNoU3RhdGUoe30sZG9jdW1lbnQudGl0bGUsbikse2Rlc2NyaXB0aW9uOm51bGwhPXI/cjoiIixlcnJvcjpudWxsIT10P3Q6IiJ9fXJldHVybiExfX0se2tleToiaXNTaWxlbnRTdGF0ZVByZXNlbnRJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIik7cmV0dXJuIG51bGwhPT0oZT1udWxsPT10P3ZvaWQgMDp0LmluY2x1ZGVzKCJzaWduLWluLXNpbGVudGx5IikpJiZ2b2lkIDAhPT1lJiZlfX0se2tleToiaGFzQXV0aFNlYXJjaFBhcmFtc0luVVJMIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp3aW5kb3cubG9jYXRpb24uc2VhcmNoLHQ9L1s/Jl1jb2RlPVteJl0rLztyZXR1cm4gdC50ZXN0KGUpfX0se2tleToiaGFzRXJyb3JJblVSTCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06d2luZG93LmxvY2F0aW9uLmhyZWYsdD1uZXcgVVJMKGUpO3JldHVybiEhdC5zZWFyY2hQYXJhbXMuZ2V0KFcpJiZ0LnNlYXJjaFBhcmFtcy5nZXQoRykhPT1PfX0se2tleToiY2FuU2VuZFByb21wdE5vbmVSZXF1ZXN0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oRik7cmV0dXJuIShlP0pTT04ucGFyc2UoZSk6bnVsbCl9fSx7a2V5OiJzZXRQcm9tcHROb25lUmVxdWVzdFNlbnQiLHZhbHVlOmZ1bmN0aW9uKGUpe3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oRixKU09OLnN0cmluZ2lmeShlKSl9fSx7a2V5OiJ3YWl0VGlsbFBhZ2VSZWRpcmVjdCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1udWxsIT1lP2U6M2UzLHQubmV4dD0zLG5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtyZXR1cm4gc2V0VGltZW91dChlLDFlMypuKX0pKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9fV0pLGV9KCksZnI9W10sbHI9W10saHI9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXkscHI9ITE7ZnVuY3Rpb24gZHIoKXtwcj0hMDtmb3IodmFyIGU9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLHQ9MCxyPWUubGVuZ3RoO3Q8cjsrK3QpZnJbdF09ZVt0XSxscltlLmNoYXJDb2RlQXQodCldPXQ7bHJbIi0iLmNoYXJDb2RlQXQoMCldPTYyLGxyWyJfIi5jaGFyQ29kZUF0KDApXT02M31mdW5jdGlvbiB2cihlLHQscil7Zm9yKHZhciBuLGEsaT1bXSxvPXQ7bzxyO28rPTMpbj0oZVtvXTw8MTYpKyhlW28rMV08PDgpK2VbbysyXSxpLnB1c2goZnJbKGE9bik+PjE4JjYzXStmclthPj4xMiY2M10rZnJbYT4+NiY2M10rZnJbNjMmYV0pO3JldHVybiBpLmpvaW4oIiIpfWZ1bmN0aW9uIGdyKGUpe3ZhciB0O3ByfHxkcigpO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXIlMyxhPSIiLGk9W10sbz0xNjM4MyxzPTAsdT1yLW47czx1O3MrPW8paS5wdXNoKHZyKGUscyxzK28+dT91OnMrbykpO3JldHVybiAxPT09bj8odD1lW3ItMV0sYSs9ZnJbdD4+Ml0sYSs9ZnJbdDw8NCY2M10sYSs9Ij09Iik6Mj09PW4mJih0PShlW3ItMl08PDgpK2Vbci0xXSxhKz1mclt0Pj4xMF0sYSs9ZnJbdD4+NCY2M10sYSs9ZnJbdDw8MiY2M10sYSs9Ij0iKSxpLnB1c2goYSksaS5qb2luKCIiKX1mdW5jdGlvbiB5cihlLHQscixuLGEpe3ZhciBpLG8scz04KmEtbi0xLHU9KDE8PHMpLTEsYz11Pj4xLGY9LTcsbD1yP2EtMTowLGg9cj8tMToxLHA9ZVt0K2xdO2ZvcihsKz1oLGk9cCYoMTw8LWYpLTEscD4+PS1mLGYrPXM7Zj4wO2k9MjU2KmkrZVt0K2xdLGwrPWgsZi09OCk7Zm9yKG89aSYoMTw8LWYpLTEsaT4+PS1mLGYrPW47Zj4wO289MjU2Km8rZVt0K2xdLGwrPWgsZi09OCk7aWYoMD09PWkpaT0xLWM7ZWxzZXtpZihpPT09dSlyZXR1cm4gbz9OYU46MS8wKihwPy0xOjEpO28rPU1hdGgucG93KDIsbiksaS09Y31yZXR1cm4ocD8tMToxKSpvKk1hdGgucG93KDIsaS1uKX1mdW5jdGlvbiBtcihlLHQscixuLGEsaSl7dmFyIG8scyx1LGM9OCppLWEtMSxmPSgxPDxjKS0xLGw9Zj4+MSxoPTIzPT09YT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6aS0xLGQ9bj8xOi0xLHY9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PU1hdGguYWJzKHQpLGlzTmFOKHQpfHx0PT09MS8wPyhzPWlzTmFOKHQpPzE6MCxvPWYpOihvPU1hdGguZmxvb3IoTWF0aC5sb2codCkvTWF0aC5MTjIpLHQqKHU9TWF0aC5wb3coMiwtbykpPDEmJihvLS0sdSo9MiksKHQrPW8rbD49MT9oL3U6aCpNYXRoLnBvdygyLDEtbCkpKnU+PTImJihvKyssdS89MiksbytsPj1mPyhzPTAsbz1mKTpvK2w+PTE/KHM9KHQqdS0xKSpNYXRoLnBvdygyLGEpLG8rPWwpOihzPXQqTWF0aC5wb3coMixsLTEpKk1hdGgucG93KDIsYSksbz0wKSk7YT49ODtlW3IrcF09MjU1JnMscCs9ZCxzLz0yNTYsYS09OCk7Zm9yKG89bzw8YXxzLGMrPWE7Yz4wO2VbcitwXT0yNTUmbyxwKz1kLG8vPTI1NixjLT04KTtlW3IrcC1kXXw9MTI4KnZ9dmFyIHdyPXt9LnRvU3RyaW5nLGJyPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEFycmF5XSI9PXdyLmNhbGwoZSl9O1NyLlRZUEVEX0FSUkFZX1NVUFBPUlQ9dm9pZCAwPT09eWUuVFlQRURfQVJSQVlfU1VQUE9SVHx8eWUuVFlQRURfQVJSQVlfU1VQUE9SVDt2YXIga3I9eHIoKTtmdW5jdGlvbiB4cigpe3JldHVybiBTci5UWVBFRF9BUlJBWV9TVVBQT1JUPzIxNDc0ODM2NDc6MTA3Mzc0MTgyM31mdW5jdGlvbiBfcihlLHQpe2lmKHhyKCk8dCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgiKTtyZXR1cm4gU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8oZT1uZXcgVWludDhBcnJheSh0KSkuX19wcm90b19fPVNyLnByb3RvdHlwZToobnVsbD09PWUmJihlPW5ldyBTcih0KSksZS5sZW5ndGg9dCksZX1mdW5jdGlvbiBTcihlLHQscil7aWYoIShTci5UWVBFRF9BUlJBWV9TVVBQT1JUfHx0aGlzIGluc3RhbmNlb2YgU3IpKXJldHVybiBuZXcgU3IoZSx0LHIpO2lmKCJudW1iZXIiPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcigiSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmciKTtyZXR1cm4gQXIodGhpcyxlKX1yZXR1cm4gRXIodGhpcyxlLHQscil9ZnVuY3Rpb24gRXIoZSx0LHIsbil7aWYoIm51bWJlciI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ZnVuY3Rpb24oZSx0LHIsbil7aWYodC5ieXRlTGVuZ3RoLHI8MHx8dC5ieXRlTGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidvZmZzZXQnIGlzIG91dCBvZiBib3VuZHMiKTtpZih0LmJ5dGVMZW5ndGg8cisobnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIidsZW5ndGgnIGlzIG91dCBvZiBib3VuZHMiKTt0PXZvaWQgMD09PXImJnZvaWQgMD09PW4/bmV3IFVpbnQ4QXJyYXkodCk6dm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0LHIpOm5ldyBVaW50OEFycmF5KHQscixuKTtTci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPXQpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU6ZT1ScihlLHQpO3JldHVybiBlfShlLHQscixuKToic3RyaW5nIj09dHlwZW9mIHQ/ZnVuY3Rpb24oZSx0LHIpeyJzdHJpbmciPT10eXBlb2YgciYmIiIhPT1yfHwocj0idXRmOCIpO2lmKCFTci5pc0VuY29kaW5nKHIpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpO3ZhciBuPTB8RHIodCxyKSxhPShlPV9yKGUsbikpLndyaXRlKHQscik7YSE9PW4mJihlPWUuc2xpY2UoMCxhKSk7cmV0dXJuIGV9KGUsdCxyKTpmdW5jdGlvbihlLHQpe2lmKFByKHQpKXt2YXIgcj0wfENyKHQubGVuZ3RoKTtyZXR1cm4gMD09PShlPV9yKGUscikpLmxlbmd0aHx8dC5jb3B5KGUsMCwwLHIpLGV9aWYodCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmdC5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcnx8Imxlbmd0aCJpbiB0KXJldHVybiJudW1iZXIiIT10eXBlb2YgdC5sZW5ndGh8fChuPXQubGVuZ3RoKSE9bj9fcihlLDApOlJyKGUsdCk7aWYoIkJ1ZmZlciI9PT10LnR5cGUmJmJyKHQuZGF0YSkpcmV0dXJuIFJyKGUsdC5kYXRhKX12YXIgbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuIil9KGUsdCl9ZnVuY3Rpb24gVHIoZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJyk7aWYoZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKX1mdW5jdGlvbiBBcihlLHQpe2lmKFRyKHQpLGU9X3IoZSx0PDA/MDowfENyKHQpKSwhU3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IodmFyIHI9MDtyPHQ7KytyKWVbcl09MDtyZXR1cm4gZX1mdW5jdGlvbiBScihlLHQpe3ZhciByPXQubGVuZ3RoPDA/MDowfENyKHQubGVuZ3RoKTtlPV9yKGUscik7Zm9yKHZhciBuPTA7bjxyO24rPTEpZVtuXT0yNTUmdFtuXTtyZXR1cm4gZX1mdW5jdGlvbiBDcihlKXtpZihlPj14cigpKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtIHNpemU6IDB4Iit4cigpLnRvU3RyaW5nKDE2KSsiIGJ5dGVzIik7cmV0dXJuIDB8ZX1mdW5jdGlvbiBQcihlKXtyZXR1cm4hKG51bGw9PWV8fCFlLl9pc0J1ZmZlcil9ZnVuY3Rpb24gRHIoZSx0KXtpZihQcihlKSlyZXR1cm4gZS5sZW5ndGg7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyYmKEFycmF5QnVmZmVyLmlzVmlldyhlKXx8ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSlyZXR1cm4gZS5ieXRlTGVuZ3RoOyJzdHJpbmciIT10eXBlb2YgZSYmKGU9IiIrZSk7dmFyIHI9ZS5sZW5ndGg7aWYoMD09PXIpcmV0dXJuIDA7Zm9yKHZhciBuPSExOzspc3dpdGNoKHQpe2Nhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIHI7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlIHZvaWQgMDpyZXR1cm4gYW4oZSkubGVuZ3RoO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gMipyO2Nhc2UiaGV4IjpyZXR1cm4gcj4+PjE7Y2FzZSJiYXNlNjQiOnJldHVybiBvbihlKS5sZW5ndGg7ZGVmYXVsdDppZihuKXJldHVybiBhbihlKS5sZW5ndGg7dD0oIiIrdCkudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBPcihlLHQscil7dmFyIG49ITE7aWYoKHZvaWQgMD09PXR8fHQ8MCkmJih0PTApLHQ+dGhpcy5sZW5ndGgpcmV0dXJuIiI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm4iIjtpZigocj4+Pj0wKTw9KHQ+Pj49MCkpcmV0dXJuIiI7Zm9yKGV8fChlPSJ1dGY4Iik7Oylzd2l0Y2goZSl7Y2FzZSJoZXgiOnJldHVybiBZcih0aGlzLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gQnIodGhpcyx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBXcih0aGlzLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4genIodGhpcyx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gSnIodGhpcyx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gR3IodGhpcyx0LHIpO2RlZmF1bHQ6aWYobil0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK2UpO2U9KGUrIiIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gSXIoZSx0LHIpe3ZhciBuPWVbdF07ZVt0XT1lW3JdLGVbcl09bn1mdW5jdGlvbiBMcihlLHQscixuLGEpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4tMTtpZigic3RyaW5nIj09dHlwZW9mIHI/KG49cixyPTApOnI+MjE0NzQ4MzY0Nz9yPTIxNDc0ODM2NDc6cjwtMjE0NzQ4MzY0OCYmKHI9LTIxNDc0ODM2NDgpLHI9K3IsaXNOYU4ocikmJihyPWE/MDplLmxlbmd0aC0xKSxyPDAmJihyPWUubGVuZ3RoK3IpLHI+PWUubGVuZ3RoKXtpZihhKXJldHVybi0xO3I9ZS5sZW5ndGgtMX1lbHNlIGlmKHI8MCl7aWYoIWEpcmV0dXJuLTE7cj0wfWlmKCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9U3IuZnJvbSh0LG4pKSxQcih0KSlyZXR1cm4gMD09PXQubGVuZ3RoPy0xOlVyKGUsdCxyLG4sYSk7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0Jj0yNTUsU3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmImZ1bmN0aW9uIj09dHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2Y/YT9VaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZSx0LHIpOlVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoZSx0LHIpOlVyKGUsW3RdLHIsbixhKTt0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXIiKX1mdW5jdGlvbiBVcihlLHQscixuLGEpe3ZhciBpLG89MSxzPWUubGVuZ3RoLHU9dC5sZW5ndGg7aWYodm9pZCAwIT09biYmKCJ1Y3MyIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8InVjcy0yIj09PW58fCJ1dGYxNmxlIj09PW58fCJ1dGYtMTZsZSI9PT1uKSl7aWYoZS5sZW5ndGg8Mnx8dC5sZW5ndGg8MilyZXR1cm4tMTtvPTIscy89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gYyhlLHQpe3JldHVybiAxPT09bz9lW3RdOmUucmVhZFVJbnQxNkJFKHQqbyl9aWYoYSl7dmFyIGY9LTE7Zm9yKGk9cjtpPHM7aSsrKWlmKGMoZSxpKT09PWModCwtMT09PWY/MDppLWYpKXtpZigtMT09PWYmJihmPWkpLGktZisxPT09dSlyZXR1cm4gZipvfWVsc2UtMSE9PWYmJihpLT1pLWYpLGY9LTF9ZWxzZSBmb3Iocit1PnMmJihyPXMtdSksaT1yO2k+PTA7aS0tKXtmb3IodmFyIGw9ITAsaD0wO2g8dTtoKyspaWYoYyhlLGkraCkhPT1jKHQsaCkpe2w9ITE7YnJlYWt9aWYobClyZXR1cm4gaX1yZXR1cm4tMX1mdW5jdGlvbiBIcihlLHQscixuKXtyPU51bWJlcihyKXx8MDt2YXIgYT1lLmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5hJiYobj1hKTpuPWE7dmFyIGk9dC5sZW5ndGg7aWYoaSUyIT0wKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgaGV4IHN0cmluZyIpO24+aS8yJiYobj1pLzIpO2Zvcih2YXIgbz0wO288bjsrK28pe3ZhciBzPXBhcnNlSW50KHQuc3Vic3RyKDIqbywyKSwxNik7aWYoaXNOYU4ocykpcmV0dXJuIG87ZVtyK29dPXN9cmV0dXJuIG99ZnVuY3Rpb24gTXIoZSx0LHIsbil7cmV0dXJuIHNuKGFuKHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIGpyKGUsdCxyLG4pe3JldHVybiBzbihmdW5jdGlvbihlKXtmb3IodmFyIHQ9W10scj0wO3I8ZS5sZW5ndGg7KytyKXQucHVzaCgyNTUmZS5jaGFyQ29kZUF0KHIpKTtyZXR1cm4gdH0odCksZSxyLG4pfWZ1bmN0aW9uIE5yKGUsdCxyLG4pe3JldHVybiBqcihlLHQscixuKX1mdW5jdGlvbiBxcihlLHQscixuKXtyZXR1cm4gc24ob24odCksZSxyLG4pfWZ1bmN0aW9uIEtyKGUsdCxyLG4pe3JldHVybiBzbihmdW5jdGlvbihlLHQpe2Zvcih2YXIgcixuLGEsaT1bXSxvPTA7bzxlLmxlbmd0aCYmISgodC09Mik8MCk7KytvKW49KHI9ZS5jaGFyQ29kZUF0KG8pKT4+OCxhPXIlMjU2LGkucHVzaChhKSxpLnB1c2gobik7cmV0dXJuIGl9KHQsZS5sZW5ndGgtciksZSxyLG4pfWZ1bmN0aW9uIEpyKGUsdCxyKXtyZXR1cm4gMD09PXQmJnI9PT1lLmxlbmd0aD9ncihlKTpncihlLnNsaWNlKHQscikpfWZ1bmN0aW9uIEJyKGUsdCxyKXtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgbj1bXSxhPXQ7YTxyOyl7dmFyIGksbyxzLHUsYz1lW2FdLGY9bnVsbCxsPWM+MjM5PzQ6Yz4yMjM/MzpjPjE5MT8yOjE7aWYoYStsPD1yKXN3aXRjaChsKXtjYXNlIDE6YzwxMjgmJihmPWMpO2JyZWFrO2Nhc2UgMjoxMjg9PSgxOTImKGk9ZVthKzFdKSkmJih1PSgzMSZjKTw8Nnw2MyZpKT4xMjcmJihmPXUpO2JyZWFrO2Nhc2UgMzppPWVbYSsxXSxvPWVbYSsyXSwxMjg9PSgxOTImaSkmJjEyOD09KDE5MiZvKSYmKHU9KDE1JmMpPDwxMnwoNjMmaSk8PDZ8NjMmbyk+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYoZj11KTticmVhaztjYXNlIDQ6aT1lW2ErMV0sbz1lW2ErMl0scz1lW2ErM10sMTI4PT0oMTkyJmkpJiYxMjg9PSgxOTImbykmJjEyOD09KDE5MiZzKSYmKHU9KDE1JmMpPDwxOHwoNjMmaSk8PDEyfCg2MyZvKTw8Nnw2MyZzKT42NTUzNSYmdTwxMTE0MTEyJiYoZj11KX1udWxsPT09Zj8oZj02NTUzMyxsPTEpOmY+NjU1MzUmJihmLT02NTUzNixuLnB1c2goZj4+PjEwJjEwMjN8NTUyOTYpLGY9NTYzMjB8MTAyMyZmKSxuLnB1c2goZiksYSs9bH1yZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGg7aWYodDw9RnIpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLGUpO3ZhciByPSIiLG49MDtmb3IoO248dDspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZS5zbGljZShuLG4rPUZyKSk7cmV0dXJuIHJ9KG4pfVNyLnBvb2xTaXplPTgxOTIsU3IuX2F1Z21lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19fPVNyLnByb3RvdHlwZSxlfSxTci5mcm9tPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIobnVsbCxlLHQscil9LFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQmJihTci5wcm90b3R5cGUuX19wcm90b19fPVVpbnQ4QXJyYXkucHJvdG90eXBlLFNyLl9fcHJvdG9fXz1VaW50OEFycmF5KSxTci5hbGxvYz1mdW5jdGlvbihlLHQscil7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiBUcih0KSx0PD0wP19yKGUsdCk6dm9pZCAwIT09cj8ic3RyaW5nIj09dHlwZW9mIG4/X3IoZSx0KS5maWxsKHIsbik6X3IoZSx0KS5maWxsKHIpOl9yKGUsdCl9KG51bGwsZSx0LHIpfSxTci5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtyZXR1cm4gQXIobnVsbCxlKX0sU3IuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKGUpe3JldHVybiBBcihudWxsLGUpfSxTci5pc0J1ZmZlcj11bixTci5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7aWYoIVByKGUpfHwhUHIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIG11c3QgYmUgQnVmZmVycyIpO2lmKGU9PT10KXJldHVybiAwO2Zvcih2YXIgcj1lLmxlbmd0aCxuPXQubGVuZ3RoLGE9MCxpPU1hdGgubWluKHIsbik7YTxpOysrYSlpZihlW2FdIT09dFthXSl7cj1lW2FdLG49dFthXTticmVha31yZXR1cm4gcjxuPy0xOm48cj8xOjB9LFNyLmlzRW5jb2Rpbmc9ZnVuY3Rpb24oZSl7c3dpdGNoKFN0cmluZyhlKS50b0xvd2VyQ2FzZSgpKXtjYXNlImhleCI6Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpjYXNlImFzY2lpIjpjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOmNhc2UiYmFzZTY0IjpjYXNlInVjczIiOmNhc2UidWNzLTIiOmNhc2UidXRmMTZsZSI6Y2FzZSJ1dGYtMTZsZSI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19LFNyLmNvbmNhdD1mdW5jdGlvbihlLHQpe2lmKCFicihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aWYoMD09PWUubGVuZ3RoKXJldHVybiBTci5hbGxvYygwKTt2YXIgcjtpZih2b2lkIDA9PT10KWZvcih0PTAscj0wO3I8ZS5sZW5ndGg7KytyKXQrPWVbcl0ubGVuZ3RoO3ZhciBuPVNyLmFsbG9jVW5zYWZlKHQpLGE9MDtmb3Iocj0wO3I8ZS5sZW5ndGg7KytyKXt2YXIgaT1lW3JdO2lmKCFQcihpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJyk7aS5jb3B5KG4sYSksYSs9aS5sZW5ndGh9cmV0dXJuIG59LFNyLmJ5dGVMZW5ndGg9RHIsU3IucHJvdG90eXBlLl9pc0J1ZmZlcj0hMCxTci5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz0yKUlyKHRoaXMsdCx0KzEpO3JldHVybiB0aGlzfSxTci5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZW5ndGg7aWYoZSU0IT0wKXRocm93IG5ldyBSYW5nZUVycm9yKCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cyIpO2Zvcih2YXIgdD0wO3Q8ZTt0Kz00KUlyKHRoaXMsdCx0KzMpLElyKHRoaXMsdCsxLHQrMik7cmV0dXJuIHRoaXN9LFNyLnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTgpSXIodGhpcyx0LHQrNyksSXIodGhpcyx0KzEsdCs2KSxJcih0aGlzLHQrMix0KzUpLElyKHRoaXMsdCszLHQrNCk7cmV0dXJuIHRoaXN9LFNyLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBlPTB8dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT1lPyIiOjA9PT1hcmd1bWVudHMubGVuZ3RoP0JyKHRoaXMsMCxlKTpPci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LFNyLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oZSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtyZXR1cm4gdGhpcz09PWV8fDA9PT1Tci5jb21wYXJlKHRoaXMsZSl9LFNyLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMubGVuZ3RoPjAmJihlPXRoaXMudG9TdHJpbmcoImhleCIsMCw1MCkubWF0Y2goLy57Mn0vZykuam9pbigiICIpLHRoaXMubGVuZ3RoPjUwJiYoZSs9IiAuLi4gIikpLCI8QnVmZmVyICIrZSsiPiJ9LFNyLnByb3RvdHlwZS5jb21wYXJlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIiKTtpZih2b2lkIDA9PT10JiYodD0wKSx2b2lkIDA9PT1yJiYocj1lP2UubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWEmJihhPXRoaXMubGVuZ3RoKSx0PDB8fHI+ZS5sZW5ndGh8fG48MHx8YT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib3V0IG9mIHJhbmdlIGluZGV4Iik7aWYobj49YSYmdD49cilyZXR1cm4gMDtpZihuPj1hKXJldHVybi0xO2lmKHQ+PXIpcmV0dXJuIDE7aWYodGhpcz09PWUpcmV0dXJuIDA7Zm9yKHZhciBpPShhPj4+PTApLShuPj4+PTApLG89KHI+Pj49MCktKHQ+Pj49MCkscz1NYXRoLm1pbihpLG8pLHU9dGhpcy5zbGljZShuLGEpLGM9ZS5zbGljZSh0LHIpLGY9MDtmPHM7KytmKWlmKHVbZl0hPT1jW2ZdKXtpPXVbZl0sbz1jW2ZdO2JyZWFrfXJldHVybiBpPG8/LTE6bzxpPzE6MH0sU3IucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZihlLHQscil9LFNyLnByb3RvdHlwZS5pbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gTHIodGhpcyxlLHQsciwhMCl9LFNyLnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbihlLHQscil7cmV0dXJuIExyKHRoaXMsZSx0LHIsITEpfSxTci5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT10eXBlb2YgdCluPXQscj10aGlzLmxlbmd0aCx0PTA7ZWxzZXtpZighaXNGaW5pdGUodCkpdGhyb3cgbmV3IEVycm9yKCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpO3R8PTAsaXNGaW5pdGUocik/KHJ8PTAsdm9pZCAwPT09biYmKG49InV0ZjgiKSk6KG49cixyPXZvaWQgMCl9dmFyIGE9dGhpcy5sZW5ndGgtdDtpZigodm9pZCAwPT09cnx8cj5hKSYmKHI9YSksZS5sZW5ndGg+MCYmKHI8MHx8dDwwKXx8dD50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMiKTtufHwobj0idXRmOCIpO2Zvcih2YXIgaT0hMTs7KXN3aXRjaChuKXtjYXNlImhleCI6cmV0dXJuIEhyKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIE1yKHRoaXMsZSx0LHIpO2Nhc2UiYXNjaWkiOnJldHVybiBqcih0aGlzLGUsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBOcih0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIHFyKHRoaXMsZSx0LHIpO2Nhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4gS3IodGhpcyxlLHQscik7ZGVmYXVsdDppZihpKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbik7bj0oIiIrbikudG9Mb3dlckNhc2UoKSxpPSEwfX0sU3IucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEZyPTQwOTY7ZnVuY3Rpb24gV3IoZSx0LHIpe3ZhciBuPSIiO3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBhPXQ7YTxyOysrYSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiB6cihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVthXSk7cmV0dXJuIG59ZnVuY3Rpb24gWXIoZSx0LHIpe3ZhciBuPWUubGVuZ3RoOyghdHx8dDwwKSYmKHQ9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2Zvcih2YXIgYT0iIixpPXQ7aTxyOysraSlhKz1ubihlW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBHcihlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxhPSIiLGk9MDtpPG4ubGVuZ3RoO2krPTIpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW2ldKzI1NipuW2krMV0pO3JldHVybiBhfWZ1bmN0aW9uIFZyKGUsdCxyKXtpZihlJTEhPTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBYcihlLHQscixuLGEsaSl7aWYoIVByKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJidWZmZXIiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZih0PmF8fHQ8aSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJyk7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiAkcihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2E8aTsrK2EpZVtyK2FdPSh0JjI1NTw8OCoobj9hOjEtYSkpPj4+OCoobj9hOjEtYSl9ZnVuY3Rpb24gWnIoZSx0LHIsbil7dDwwJiYodD00Mjk0OTY3Mjk1K3QrMSk7Zm9yKHZhciBhPTAsaT1NYXRoLm1pbihlLmxlbmd0aC1yLDQpO2E8aTsrK2EpZVtyK2FdPXQ+Pj44KihuP2E6My1hKSYyNTV9ZnVuY3Rpb24gUXIoZSx0LHIsbixhLGkpe2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIik7aWYocjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKX1mdW5jdGlvbiBlbihlLHQscixuLGEpe3JldHVybiBhfHxRcihlLDAsciw0KSxtcihlLHQscixuLDIzLDQpLHIrNH1mdW5jdGlvbiB0bihlLHQscixuLGEpe3JldHVybiBhfHxRcihlLDAsciw4KSxtcihlLHQscixuLDUyLDgpLHIrOH1Tci5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksU3IuVFlQRURfQVJSQVlfU1VQUE9SVCkocj10aGlzLnN1YmFycmF5KGUsdCkpLl9fcHJvdG9fXz1Tci5wcm90b3R5cGU7ZWxzZXt2YXIgYT10LWU7cj1uZXcgU3IoYSx2b2lkIDApO2Zvcih2YXIgaT0wO2k8YTsrK2kpcltpXT10aGlzW2krZV19cmV0dXJuIHJ9LFNyLnByb3RvdHlwZS5yZWFkVUludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG59LFNyLnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlKy0tdF0sYT0xO3Q+MCYmKGEqPTI1Nik7KW4rPXRoaXNbZSstLXRdKmE7cmV0dXJuIG59LFNyLnByb3RvdHlwZS5yZWFkVUludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSxTci5wcm90b3R5cGUucmVhZFVJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMix0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh9LFNyLnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdPDw4fHRoaXNbZSsxXX0sU3IucHJvdG90eXBlLnJlYWRVSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LFNyLnByb3RvdHlwZS5yZWFkVUludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSwxNjc3NzIxNip0aGlzW2VdKyh0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM10pfSxTci5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dGhpc1tlXSxhPTEsaT0wOysraTx0JiYoYSo9MjU2KTspbis9dGhpc1tlK2ldKmE7cmV0dXJuIG4+PShhKj0xMjgpJiYobi09TWF0aC5wb3coMiw4KnQpKSxufSxTci5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8VnIoZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxhPTEsaT10aGlzW2UrLS1uXTtuPjAmJihhKj0yNTYpOylpKz10aGlzW2UrLS1uXSphO3JldHVybiBpPj0oYSo9MTI4KSYmKGktPU1hdGgucG93KDIsOCp0KSksaX0sU3IucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbZV0/LTEqKDI1NS10aGlzW2VdKzEpOnRoaXNbZV19LFNyLnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fFZyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlXXx0aGlzW2UrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFNyLnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbihlLHQpe3R8fFZyKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LFNyLnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTZ8dGhpc1tlKzNdPDwyNH0sU3IucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fFZyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXTw8MjR8dGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdfSxTci5wcm90b3R5cGUucmVhZEZsb2F0TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8VnIoZSw0LHRoaXMubGVuZ3RoKSx5cih0aGlzLGUsITAsMjMsNCl9LFNyLnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDQsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMSwyMyw0KX0sU3IucHJvdG90eXBlLnJlYWREb3VibGVMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDgsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMCw1Miw4KX0sU3IucHJvdG90eXBlLnJlYWREb3VibGVCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxWcihlLDgsdGhpcy5sZW5ndGgpLHlyKHRoaXMsZSwhMSw1Miw4KX0sU3IucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8WHIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT0xLGk9MDtmb3IodGhpc1t0XT0yNTUmZTsrK2k8ciYmKGEqPTI1Nik7KXRoaXNbdCtpXT1lL2EmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZVVJbnRCRT1mdW5jdGlvbihlLHQscixuKXsoZT0rZSx0fD0wLHJ8PTAsbil8fFhyKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGE9ci0xLGk9MTtmb3IodGhpc1t0K2FdPTI1NSZlOy0tYT49MCYmKGkqPTI1Nik7KXRoaXNbdCthXT1lL2kmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDEsMjU1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSxTci5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDY1NTM1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTokcih0aGlzLGUsdCwhMCksdCsyfSxTci5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDY1NTM1LDApLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTokcih0aGlzLGUsdCwhMSksdCsyfSxTci5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0KzNdPWU+Pj4yNCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCsxXT1lPj4+OCx0aGlzW3RdPTI1NSZlKTpacih0aGlzLGUsdCwhMCksdCs0fSxTci5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCw0LDQyOTQ5NjcyOTUsMCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpacih0aGlzLGUsdCwhMSksdCs0fSxTci5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO1hyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT0wLG89MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytpPHImJihvKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K2ktMV0mJihzPTEpLHRoaXNbdCtpXT0oZS9vPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSxTci5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbihlLHQscixuKXtpZihlPStlLHR8PTAsIW4pe3ZhciBhPU1hdGgucG93KDIsOCpyLTEpO1hyKHRoaXMsZSx0LHIsYS0xLC1hKX12YXIgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3QraSsxXSYmKHM9MSksdGhpc1t0K2ldPShlL28+PjApLXMmMjU1O3JldHVybiB0K3J9LFNyLnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMSwxMjcsLTEyOCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksZTwwJiYoZT0yNTUrZSsxKSx0aGlzW3RdPTI1NSZlLHQrMX0sU3IucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxYcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOiRyKHRoaXMsZSx0LCEwKSx0KzJ9LFNyLnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8WHIodGhpcyxlLHQsMiwzMjc2NywtMzI3NjgpLFNyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTokcih0aGlzLGUsdCwhMSksdCsyfSxTci5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrM109ZT4+PjI0KTpacih0aGlzLGUsdCwhMCksdCs0fSxTci5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFhyKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksZTwwJiYoZT00Mjk0OTY3Mjk1K2UrMSksU3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpacih0aGlzLGUsdCwhMSksdCs0fSxTci5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZW4odGhpcyxlLHQsITAscil9LFNyLnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlbih0aGlzLGUsdCwhMSxyKX0sU3IucHJvdG90eXBlLndyaXRlRG91YmxlTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0bih0aGlzLGUsdCwhMCxyKX0sU3IucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0bih0aGlzLGUsdCwhMSxyKX0sU3IucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgYSxpPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGE9aS0xO2E+PTA7LS1hKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBpZihpPDFlM3x8IVNyLlRZUEVEX0FSUkFZX1NVUFBPUlQpZm9yKGE9MDthPGk7KythKWVbYSt0XT10aGlzW2Ercl07ZWxzZSBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChlLHRoaXMuc3ViYXJyYXkocixyK2kpLHQpO3JldHVybiBpfSxTci5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbihlLHQscixuKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksMT09PWUubGVuZ3RoKXt2YXIgYT1lLmNoYXJDb2RlQXQoMCk7YTwyNTYmJihlPWEpfWlmKHZvaWQgMCE9PW4mJiJzdHJpbmciIT10eXBlb2Ygbil0aHJvdyBuZXcgVHlwZUVycm9yKCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nIik7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYhU3IuaXNFbmNvZGluZyhuKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pfWVsc2UibnVtYmVyIj09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgaTtpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT10eXBlb2YgZSlmb3IoaT10O2k8cjsrK2kpdGhpc1tpXT1lO2Vsc2V7dmFyIG89UHIoZSk/ZTphbihuZXcgU3IoZSxuKS50b1N0cmluZygpKSxzPW8ubGVuZ3RoO2ZvcihpPTA7aTxyLXQ7KytpKXRoaXNbaSt0XT1vW2klc119cmV0dXJuIHRoaXN9O3ZhciBybj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBubihlKXtyZXR1cm4gZTwxNj8iMCIrZS50b1N0cmluZygxNik6ZS50b1N0cmluZygxNil9ZnVuY3Rpb24gYW4oZSx0KXt2YXIgcjt0PXR8fDEvMDtmb3IodmFyIG49ZS5sZW5ndGgsYT1udWxsLGk9W10sbz0wO288bjsrK28pe2lmKChyPWUuY2hhckNvZGVBdChvKSk+NTUyOTUmJnI8NTczNDQpe2lmKCFhKXtpZihyPjU2MzE5KXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYobysxPT09bil7KHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWE9cjtjb250aW51ZX1pZihyPDU2MzIwKXsodC09Myk+LTEmJmkucHVzaCgyMzksMTkxLDE4OSksYT1yO2NvbnRpbnVlfXI9NjU1MzYrKGEtNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgYSYmKHQtPTMpPi0xJiZpLnB1c2goMjM5LDE5MSwxODkpO2lmKGE9bnVsbCxyPDEyOCl7aWYoKHQtPTEpPDApYnJlYWs7aS5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigodC09Mik8MClicmVhaztpLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKHQtPTMpPDApYnJlYWs7aS5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNvZGUgcG9pbnQiKTtpZigodC09NCk8MClicmVhaztpLnB1c2gocj4+MTh8MjQwLHI+PjEyJjYzfDEyOCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9fXJldHVybiBpfWZ1bmN0aW9uIG9uKGUpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxpLG87cHJ8fGRyKCk7dmFyIHM9ZS5sZW5ndGg7aWYocyU0PjApdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Iik7aT0iPSI9PT1lW3MtMl0/MjoiPSI9PT1lW3MtMV0/MTowLG89bmV3IGhyKDMqcy80LWkpLG49aT4wP3MtNDpzO3ZhciB1PTA7Zm9yKHQ9MCxyPTA7dDxuO3QrPTQscis9MylhPWxyW2UuY2hhckNvZGVBdCh0KV08PDE4fGxyW2UuY2hhckNvZGVBdCh0KzEpXTw8MTJ8bHJbZS5jaGFyQ29kZUF0KHQrMildPDw2fGxyW2UuY2hhckNvZGVBdCh0KzMpXSxvW3UrK109YT4+MTYmMjU1LG9bdSsrXT1hPj44JjI1NSxvW3UrK109MjU1JmE7cmV0dXJuIDI9PT1pPyhhPWxyW2UuY2hhckNvZGVBdCh0KV08PDJ8bHJbZS5jaGFyQ29kZUF0KHQrMSldPj40LG9bdSsrXT0yNTUmYSk6MT09PWkmJihhPWxyW2UuY2hhckNvZGVBdCh0KV08PDEwfGxyW2UuY2hhckNvZGVBdCh0KzEpXTw8NHxscltlLmNoYXJDb2RlQXQodCsyKV0+PjIsb1t1KytdPWE+PjgmMjU1LG9bdSsrXT0yNTUmYSksb30oZnVuY3Rpb24oZSl7aWYoKGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbT9lLnRyaW0oKTplLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0oZSkucmVwbGFjZShybiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9MDspZSs9Ij0iO3JldHVybiBlfShlKSl9ZnVuY3Rpb24gc24oZSx0LHIsbil7Zm9yKHZhciBhPTA7YTxuJiYhKGErcj49dC5sZW5ndGh8fGE+PWUubGVuZ3RoKTsrK2EpdFthK3JdPWVbYV07cmV0dXJuIGF9ZnVuY3Rpb24gdW4oZSl7cmV0dXJuIG51bGwhPWUmJighIWUuX2lzQnVmZmVyfHxjbihlKXx8ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUucmVhZEZsb2F0TEUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnNsaWNlJiZjbihlLnNsaWNlKDAsMCkpfShlKSl9ZnVuY3Rpb24gY24oZSl7cmV0dXJuISFlLmNvbnN0cnVjdG9yJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlciYmZS5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihlKX12YXIgZm49T2JqZWN0LmZyZWV6ZSh7X19wcm90b19fOm51bGwsQnVmZmVyOlNyLElOU1BFQ1RfTUFYX0JZVEVTOjUwLFNsb3dCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuK2UhPWUmJihlPTApLFNyLmFsbG9jKCtlKX0saXNCdWZmZXI6dW4sa01heExlbmd0aDprcn0pLGxuPXtleHBvcnRzOnt9fSxobj17fSxwbj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkocG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHBuLmRlZmF1bHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sZW5ndGgscj10JTQ7aWYoIXIpcmV0dXJuIGU7dmFyIG49dCxhPTQtcixpPXQrYSxvPVNyLmFsbG9jKGkpO2ZvcihvLndyaXRlKGUpO2EtLTspby53cml0ZSgiPSIsbisrKTtyZXR1cm4gby50b1N0cmluZygpfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBkbj1wbjtmdW5jdGlvbiB2bihlLHQpe3JldHVybiB2b2lkIDA9PT10JiYodD0idXRmOCIpLFNyLmlzQnVmZmVyKGUpP3luKGUudG9TdHJpbmcoImJhc2U2NCIpKTp5bihTci5mcm9tKGUsdCkudG9TdHJpbmcoImJhc2U2NCIpKX1mdW5jdGlvbiBnbihlKXtyZXR1cm4gZT1lLnRvU3RyaW5nKCksZG4uZGVmYXVsdChlKS5yZXBsYWNlKC9cLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIil9ZnVuY3Rpb24geW4oZSl7cmV0dXJuIGUucmVwbGFjZSgvPS9nLCIiKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpfXZhciBtbix3bj12bjt3bi5lbmNvZGU9dm4sd24uZGVjb2RlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksU3IuZnJvbShnbihlKSwiYmFzZTY0IikudG9TdHJpbmcodCl9LHduLnRvQmFzZTY0PWduLHduLmZyb21CYXNlNjQ9eW4sd24udG9CdWZmZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIFNyLmZyb20oZ24oZSksImJhc2U2NCIpfSxobi5kZWZhdWx0PXduLChtbj1sbikuZXhwb3J0cz1obi5kZWZhdWx0LG1uLmV4cG9ydHMuZGVmYXVsdD1tbi5leHBvcnRzO3ZhciBibj1sbi5leHBvcnRzLGtuPXtleHBvcnRzOnt9fTshZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKHQscil7dmFyIG49e307IWZ1bmN0aW9uKGUpe2UuX19lc01vZHVsZT0hMCxlLmRpZ2VzdExlbmd0aD0zMixlLmJsb2NrU2l6ZT02NDt2YXIgdD1uZXcgVWludDMyQXJyYXkoWzExMTYzNTI0MDgsMTg5OTQ0NzQ0MSwzMDQ5MzIzNDcxLDM5MjEwMDk1NzMsOTYxOTg3MTYzLDE1MDg5NzA5OTMsMjQ1MzYzNTc0OCwyODcwNzYzMjIxLDM2MjQzODEwODAsMzEwNTk4NDAxLDYwNzIyNTI3OCwxNDI2ODgxOTg3LDE5MjUwNzgzODgsMjE2MjA3ODIwNiwyNjE0ODg4MTAzLDMyNDgyMjI1ODAsMzgzNTM5MDQwMSw0MDIyMjI0Nzc0LDI2NDM0NzA3OCw2MDQ4MDc2MjgsNzcwMjU1OTgzLDEyNDkxNTAxMjIsMTU1NTA4MTY5MiwxOTk2MDY0OTg2LDI1NTQyMjA4ODIsMjgyMTgzNDM0OSwyOTUyOTk2ODA4LDMyMTAzMTM2NzEsMzMzNjU3MTg5MSwzNTg0NTI4NzExLDExMzkyNjk5MywzMzgyNDE4OTUsNjY2MzA3MjA1LDc3MzUyOTkxMiwxMjk0NzU3MzcyLDEzOTYxODIyOTEsMTY5NTE4MzcwMCwxOTg2NjYxMDUxLDIxNzcwMjYzNTAsMjQ1Njk1NjAzNywyNzMwNDg1OTIxLDI4MjAzMDI0MTEsMzI1OTczMDgwMCwzMzQ1NzY0NzcxLDM1MTYwNjU4MTcsMzYwMDM1MjgwNCw0MDk0NTcxOTA5LDI3NTQyMzM0NCw0MzAyMjc3MzQsNTA2OTQ4NjE2LDY1OTA2MDU1Niw4ODM5OTc4NzcsOTU4MTM5NTcxLDEzMjI4MjIyMTgsMTUzNzAwMjA2MywxNzQ3ODczNzc5LDE5NTU1NjIyMjIsMjAyNDEwNDgxNSwyMjI3NzMwNDUyLDIzNjE4NTI0MjQsMjQyODQzNjQ3NCwyNzU2NzM0MTg3LDMyMDQwMzE0NzksMzMyOTMyNTI5OF0pO2Z1bmN0aW9uIHIoZSxyLG4sYSxpKXtmb3IodmFyIG8scyx1LGMsZixsLGgscCxkLHYsZyx5LG07aT49NjQ7KXtmb3Iobz1yWzBdLHM9clsxXSx1PXJbMl0sYz1yWzNdLGY9cls0XSxsPXJbNV0saD1yWzZdLHA9cls3XSx2PTA7djwxNjt2KyspZz1hKzQqdixlW3ZdPSgyNTUmbltnXSk8PDI0fCgyNTUmbltnKzFdKTw8MTZ8KDI1NSZuW2crMl0pPDw4fDI1NSZuW2crM107Zm9yKHY9MTY7djw2NDt2KyspeT0oKGQ9ZVt2LTJdKT4+PjE3fGQ8PDE1KV4oZD4+PjE5fGQ8PDEzKV5kPj4+MTAsbT0oKGQ9ZVt2LTE1XSk+Pj43fGQ8PDI1KV4oZD4+PjE4fGQ8PDE0KV5kPj4+MyxlW3ZdPSh5K2Vbdi03XXwwKSsobStlW3YtMTZdfDApO2Zvcih2PTA7djw2NDt2KyspeT0oKChmPj4+NnxmPDwyNileKGY+Pj4xMXxmPDwyMSleKGY+Pj4yNXxmPDw3KSkrKGYmbF5+ZiZoKXwwKSsocCsodFt2XStlW3ZdfDApfDApfDAsbT0oKG8+Pj4yfG88PDMwKV4obz4+PjEzfG88PDE5KV4obz4+PjIyfG88PDEwKSkrKG8mc15vJnVecyZ1KXwwLHA9aCxoPWwsbD1mLGY9Yyt5fDAsYz11LHU9cyxzPW8sbz15K218MDtyWzBdKz1vLHJbMV0rPXMsclsyXSs9dSxyWzNdKz1jLHJbNF0rPWYscls1XSs9bCxyWzZdKz1oLHJbN10rPXAsYSs9NjQsaS09NjR9cmV0dXJuIGF9dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5kaWdlc3RMZW5ndGg9ZS5kaWdlc3RMZW5ndGgsdGhpcy5ibG9ja1NpemU9ZS5ibG9ja1NpemUsdGhpcy5zdGF0ZT1uZXcgSW50MzJBcnJheSg4KSx0aGlzLnRlbXA9bmV3IEludDMyQXJyYXkoNjQpLHRoaXMuYnVmZmVyPW5ldyBVaW50OEFycmF5KDEyOCksdGhpcy5idWZmZXJMZW5ndGg9MCx0aGlzLmJ5dGVzSGFzaGVkPTAsdGhpcy5maW5pc2hlZD0hMSx0aGlzLnJlc2V0KCl9cmV0dXJuIHQucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RhdGVbMF09MTc3OTAzMzcwMyx0aGlzLnN0YXRlWzFdPTMxNDQxMzQyNzcsdGhpcy5zdGF0ZVsyXT0xMDEzOTA0MjQyLHRoaXMuc3RhdGVbM109Mjc3MzQ4MDc2Mix0aGlzLnN0YXRlWzRdPTEzNTk4OTMxMTksdGhpcy5zdGF0ZVs1XT0yNjAwODIyOTI0LHRoaXMuc3RhdGVbNl09NTI4NzM0NjM1LHRoaXMuc3RhdGVbN109MTU0MTQ1OTIyNSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXN9LHQucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmJ1ZmZlci5sZW5ndGg7ZSsrKXRoaXMuYnVmZmVyW2VdPTA7Zm9yKGU9MDtlPHRoaXMudGVtcC5sZW5ndGg7ZSsrKXRoaXMudGVtcFtlXT0wO3RoaXMucmVzZXQoKX0sdC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9ZS5sZW5ndGgpLHRoaXMuZmluaXNoZWQpdGhyb3cgbmV3IEVycm9yKCJTSEEyNTY6IGNhbid0IHVwZGF0ZSBiZWNhdXNlIGhhc2ggd2FzIGZpbmlzaGVkLiIpO3ZhciBuPTA7aWYodGhpcy5ieXRlc0hhc2hlZCs9dCx0aGlzLmJ1ZmZlckxlbmd0aD4wKXtmb3IoO3RoaXMuYnVmZmVyTGVuZ3RoPDY0JiZ0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07NjQ9PT10aGlzLmJ1ZmZlckxlbmd0aCYmKHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCw2NCksdGhpcy5idWZmZXJMZW5ndGg9MCl9Zm9yKHQ+PTY0JiYobj1yKHRoaXMudGVtcCx0aGlzLnN0YXRlLGUsbix0KSx0JT02NCk7dD4wOyl0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlckxlbmd0aCsrXT1lW24rK10sdC0tO3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmluaXNoZWQpe3ZhciB0PXRoaXMuYnl0ZXNIYXNoZWQsbj10aGlzLmJ1ZmZlckxlbmd0aCxhPXQvNTM2ODcwOTEyfDAsaT10PDwzLG89dCU2NDw1Nj82NDoxMjg7dGhpcy5idWZmZXJbbl09MTI4O2Zvcih2YXIgcz1uKzE7czxvLTg7cysrKXRoaXMuYnVmZmVyW3NdPTA7dGhpcy5idWZmZXJbby04XT1hPj4+MjQmMjU1LHRoaXMuYnVmZmVyW28tN109YT4+PjE2JjI1NSx0aGlzLmJ1ZmZlcltvLTZdPWE+Pj44JjI1NSx0aGlzLmJ1ZmZlcltvLTVdPWE+Pj4wJjI1NSx0aGlzLmJ1ZmZlcltvLTRdPWk+Pj4yNCYyNTUsdGhpcy5idWZmZXJbby0zXT1pPj4+MTYmMjU1LHRoaXMuYnVmZmVyW28tMl09aT4+PjgmMjU1LHRoaXMuYnVmZmVyW28tMV09aT4+PjAmMjU1LHIodGhpcy50ZW1wLHRoaXMuc3RhdGUsdGhpcy5idWZmZXIsMCxvKSx0aGlzLmZpbmlzaGVkPSEwfWZvcihzPTA7czw4O3MrKyllWzQqcyswXT10aGlzLnN0YXRlW3NdPj4+MjQmMjU1LGVbNCpzKzFdPXRoaXMuc3RhdGVbc10+Pj4xNiYyNTUsZVs0KnMrMl09dGhpcy5zdGF0ZVtzXT4+PjgmMjU1LGVbNCpzKzNdPXRoaXMuc3RhdGVbc10+Pj4wJjI1NTtyZXR1cm4gdGhpc30sdC5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSx0LnByb3RvdHlwZS5fc2F2ZVN0YXRlPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wO3Q8dGhpcy5zdGF0ZS5sZW5ndGg7dCsrKWVbdF09dGhpcy5zdGF0ZVt0XX0sdC5wcm90b3R5cGUuX3Jlc3RvcmVTdGF0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0wO3I8dGhpcy5zdGF0ZS5sZW5ndGg7cisrKXRoaXMuc3RhdGVbcl09ZVtyXTt0aGlzLmJ5dGVzSGFzaGVkPXQsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmJ1ZmZlckxlbmd0aD0wfSx0fSgpO2UuSGFzaD1uO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlubmVyPW5ldyBuLHRoaXMub3V0ZXI9bmV3IG4sdGhpcy5ibG9ja1NpemU9dGhpcy5pbm5lci5ibG9ja1NpemUsdGhpcy5kaWdlc3RMZW5ndGg9dGhpcy5pbm5lci5kaWdlc3RMZW5ndGg7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkodGhpcy5ibG9ja1NpemUpO2lmKGUubGVuZ3RoPnRoaXMuYmxvY2tTaXplKShuZXcgbikudXBkYXRlKGUpLmZpbmlzaCh0KS5jbGVhbigpO2Vsc2UgZm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspdFtyXT1lW3JdO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspdFtyXV49NTQ7dGhpcy5pbm5lci51cGRhdGUodCk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj0xMDY7dGhpcy5vdXRlci51cGRhdGUodCksdGhpcy5pc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMub3N0YXRlPW5ldyBVaW50MzJBcnJheSg4KSx0aGlzLmlubmVyLl9zYXZlU3RhdGUodGhpcy5pc3RhdGUpLHRoaXMub3V0ZXIuX3NhdmVTdGF0ZSh0aGlzLm9zdGF0ZSk7Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdPTB9cmV0dXJuIGUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5uZXIuX3Jlc3RvcmVTdGF0ZSh0aGlzLmlzdGF0ZSx0aGlzLmlubmVyLmJsb2NrU2l6ZSksdGhpcy5vdXRlci5fcmVzdG9yZVN0YXRlKHRoaXMub3N0YXRlLHRoaXMub3V0ZXIuYmxvY2tTaXplKSx0aGlzfSxlLnByb3RvdHlwZS5jbGVhbj1mdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8dGhpcy5pc3RhdGUubGVuZ3RoO2UrKyl0aGlzLm9zdGF0ZVtlXT10aGlzLmlzdGF0ZVtlXT0wO3RoaXMuaW5uZXIuY2xlYW4oKSx0aGlzLm91dGVyLmNsZWFuKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5pbm5lci51cGRhdGUoZSksdGhpc30sZS5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm91dGVyLmZpbmlzaGVkP3RoaXMub3V0ZXIuZmluaXNoKGUpOih0aGlzLmlubmVyLmZpbmlzaChlKSx0aGlzLm91dGVyLnVwZGF0ZShlLHRoaXMuZGlnZXN0TGVuZ3RoKS5maW5pc2goZSkpLHRoaXN9LGUucHJvdG90eXBlLmRpZ2VzdD1mdW5jdGlvbigpe3ZhciBlPW5ldyBVaW50OEFycmF5KHRoaXMuZGlnZXN0TGVuZ3RoKTtyZXR1cm4gdGhpcy5maW5pc2goZSksZX0sZX0oKTtmdW5jdGlvbiBpKGUpe3ZhciB0PShuZXcgbikudXBkYXRlKGUpLHI9dC5kaWdlc3QoKTtyZXR1cm4gdC5jbGVhbigpLHJ9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPW5ldyBhKGUpLnVwZGF0ZSh0KSxuPXIuZGlnZXN0KCk7cmV0dXJuIHIuY2xlYW4oKSxufWZ1bmN0aW9uIHMoZSx0LHIsbil7dmFyIGE9blswXTtpZigwPT09YSl0aHJvdyBuZXcgRXJyb3IoImhrZGY6IGNhbm5vdCBleHBhbmQgbW9yZSIpO3QucmVzZXQoKSxhPjEmJnQudXBkYXRlKGUpLHImJnQudXBkYXRlKHIpLHQudXBkYXRlKG4pLHQuZmluaXNoKGUpLG5bMF0rK31lLkhNQUM9YSxlLmhhc2g9aSxlLmRlZmF1bHQ9aSxlLmhtYWM9bzt2YXIgdT1uZXcgVWludDhBcnJheShlLmRpZ2VzdExlbmd0aCk7ZnVuY3Rpb24gYyhlLHQscixuKXt2b2lkIDA9PT10JiYodD11KSx2b2lkIDA9PT1uJiYobj0zMik7Zm9yKHZhciBpPW5ldyBVaW50OEFycmF5KFsxXSksYz1vKHQsZSksZj1uZXcgYShjKSxsPW5ldyBVaW50OEFycmF5KGYuZGlnZXN0TGVuZ3RoKSxoPWwubGVuZ3RoLHA9bmV3IFVpbnQ4QXJyYXkobiksZD0wO2Q8bjtkKyspaD09PWwubGVuZ3RoJiYocyhsLGYscixpKSxoPTApLHBbZF09bFtoKytdO3JldHVybiBmLmNsZWFuKCksbC5maWxsKDApLGkuZmlsbCgwKSxwfWZ1bmN0aW9uIGYoZSx0LHIsbil7Zm9yKHZhciBpPW5ldyBhKGUpLG89aS5kaWdlc3RMZW5ndGgscz1uZXcgVWludDhBcnJheSg0KSx1PW5ldyBVaW50OEFycmF5KG8pLGM9bmV3IFVpbnQ4QXJyYXkobyksZj1uZXcgVWludDhBcnJheShuKSxsPTA7bCpvPG47bCsrKXt2YXIgaD1sKzE7c1swXT1oPj4+MjQmMjU1LHNbMV09aD4+PjE2JjI1NSxzWzJdPWg+Pj44JjI1NSxzWzNdPWg+Pj4wJjI1NSxpLnJlc2V0KCksaS51cGRhdGUodCksaS51cGRhdGUocyksaS5maW5pc2goYyk7Zm9yKHZhciBwPTA7cDxvO3ArKyl1W3BdPWNbcF07Zm9yKHA9MjtwPD1yO3ArKyl7aS5yZXNldCgpLGkudXBkYXRlKGMpLmZpbmlzaChjKTtmb3IodmFyIGQ9MDtkPG87ZCsrKXVbZF1ePWNbZF19Zm9yKHA9MDtwPG8mJmwqbytwPG47cCsrKWZbbCpvK3BdPXVbcF19Zm9yKGw9MDtsPG87bCsrKXVbbF09Y1tsXT0wO2ZvcihsPTA7bDw0O2wrKylzW2xdPTA7cmV0dXJuIGkuY2xlYW4oKSxmfWUuaGtkZj1jLGUucGJrZGYyPWZ9KG4pO3ZhciBhPW4uZGVmYXVsdDtmb3IodmFyIGkgaW4gbilhW2ldPW5baV07ZS5leHBvcnRzPWF9KCl9KGtuKTt2YXIgeG49JChrbi5leHBvcnRzKSxfbj1jcnlwdG8sU249ZnVuY3Rpb24oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiBDcnlwdG9LZXl9LEVuPW5ldyBUZXh0RW5jb2RlcixUbj1uZXcgVGV4dERlY29kZXI7ZnVuY3Rpb24gQW4oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbj10LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0Lmxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkobiksaT0wO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKGUpe2Euc2V0KGUsaSksaSs9ZS5sZW5ndGh9KSksYX12YXIgUm49ZnVuY3Rpb24oZSl7dmFyIHQ9ZTt0IGluc3RhbmNlb2YgVWludDhBcnJheSYmKHQ9VG4uZGVjb2RlKHQpKSx0PXQucmVwbGFjZSgvLS9nLCIrIikucmVwbGFjZSgvXy9nLCIvIikucmVwbGFjZSgvXHMvZywiIik7dHJ5e3JldHVybiBmdW5jdGlvbihlKXtmb3IodmFyIHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIHJ9KHQpfWNhdGNoKGUpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBpbnB1dCB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC4iKX19LENuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYTtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSk9TRV9HRU5FUklDIixuLm5hbWU9bi5jb25zdHJ1Y3Rvci5uYW1lLG51bGw9PT0oYT1FcnJvci5jYXB0dXJlU3RhY2tUcmFjZSl8fHZvaWQgMD09PWF8fGEuY2FsbChFcnJvcixnKG4pLG4uY29uc3RydWN0b3IpLG59cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfR0VORVJJQyJ9fV0pLHJ9KHYoRXJyb3IpKSxQbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQifX1dKSxyfShDbiksRG49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToidW5zcGVjaWZpZWQiLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOiJ1bnNwZWNpZmllZCI7cmV0dXJuIG8odGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuY29kZT0iRVJSX0pXVF9FWFBJUkVEIixuLmNsYWltPWEsbi5yZWFzb249aSxufXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1RfRVhQSVJFRCJ9fV0pLHJ9KENuKSxPbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX0FMR19OT1RfQUxMT1dFRCJ9fV0pLHJ9KENuKSxJbj1mdW5jdGlvbihlKXtmKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pPU0VfTk9UX1NVUFBPUlRFRCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIn19XSkscn0oQ24pLExuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX0lOVkFMSUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19JTlZBTElEIn19XSkscn0oQ24pLFVuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldUX0lOVkFMSUQiLGV9cmV0dXJuIHUocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9JTlZBTElEIn19XSkscn0oQ24pLEhuPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldLU19JTlZBTElEIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX0lOVkFMSUQifX1dKSxyfShDbiksTW49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX05PX01BVENISU5HX0tFWSIsZS5tZXNzYWdlPSJubyBhcHBsaWNhYmxlIGtleSBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19OT19NQVRDSElOR19LRVkifX1dKSxyfShDbiksam49ZnVuY3Rpb24oZSl7ZihyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMiLGUubWVzc2FnZT0ibXVsdGlwbGUgbWF0Y2hpbmcga2V5cyBmb3VuZCBpbiB0aGUgSlNPTiBXZWIgS2V5IFNldCIsZX1yZXR1cm4gdShyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldLU19NVUxUSVBMRV9NQVRDSElOR19LRVlTIn19XSkscn0oQ24pLE5uPWZ1bmN0aW9uKGUpe2YocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSldTX1NJR05BVFVSRV9WRVJJRklDQVRJT05fRkFJTEVEIixlLm1lc3NhZ2U9InNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIixlfXJldHVybiB1KHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQifX1dKSxyfShDbik7ZnVuY3Rpb24gcW4oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgV2ViU29ja2V0UGFpcn1mdW5jdGlvbiBLbigpe3RyeXtyZXR1cm4gdm9pZCAwIT09SmUudmVyc2lvbnMubm9kZX1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gSm4oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJhbGdvcml0aG0ubmFtZSI7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkNyeXB0b0tleSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBpdHMgIi5jb25jYXQodCwiIG11c3QgYmUgIikuY29uY2F0KGUpKX1mdW5jdGlvbiBCbihlLHQpe3JldHVybiBlLm5hbWU9PT10fWZ1bmN0aW9uIEZuKGUpe3JldHVybiBwYXJzZUludChlLm5hbWUuc2xpY2UoNCksMTApfWZ1bmN0aW9uIFduKGUpe3N3aXRjaChlKXtjYXNlIkVTMjU2IjpyZXR1cm4iUC0yNTYiO2Nhc2UiRVMzODQiOnJldHVybiJQLTM4NCI7Y2FzZSJFUzUxMiI6cmV0dXJuIlAtNTIxIjtkZWZhdWx0OnRocm93IG5ldyBFcnJvcigidW5yZWFjaGFibGUiKX19ZnVuY3Rpb24gem4oZSx0KXtpZih0Lmxlbmd0aCYmIXQuc29tZSgoZnVuY3Rpb24odCl7cmV0dXJuIGUudXNhZ2VzLmluY2x1ZGVzKHQpfSkpKXt2YXIgcj0iQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyB1c2FnZXMgbXVzdCBpbmNsdWRlICI7aWYodC5sZW5ndGg+Mil7dmFyIG49dC5wb3AoKTtyKz0ib25lIG9mICIuY29uY2F0KHQuam9pbigiLCAiKSwiLCBvciAiKS5jb25jYXQobiwiLiIpfWVsc2UgMj09PXQubGVuZ3RoP3IrPSJvbmUgb2YgIi5jb25jYXQodFswXSwiIG9yICIpLmNvbmNhdCh0WzFdLCIuIik6cis9IiIuY29uY2F0KHRbMF0sIi4iKTt0aHJvdyBuZXcgVHlwZUVycm9yKHIpfX12YXIgWW49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PSJLZXkgbXVzdCBiZSAiLHI9YXJndW1lbnRzLmxlbmd0aCxhPW5ldyBBcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKWFbaS0xXT1hcmd1bWVudHNbaV07aWYoYS5sZW5ndGg+Mil7dmFyIG89YS5wb3AoKTt0Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYS5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChvLCIuIil9ZWxzZSAyPT09YS5sZW5ndGg/dCs9Im9uZSBvZiB0eXBlICIuY29uY2F0KGFbMF0sIiBvciAiKS5jb25jYXQoYVsxXSwiLiIpOnQrPSJvZiB0eXBlICIuY29uY2F0KGFbMF0sIi4iKTtyZXR1cm4gbnVsbD09ZT90Kz0iIFJlY2VpdmVkICIuY29uY2F0KGUpOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLm5hbWU/dCs9IiBSZWNlaXZlZCBmdW5jdGlvbiAiLmNvbmNhdChlLm5hbWUpOiJvYmplY3QiPT09bihlKSYmbnVsbCE9ZSYmZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lJiYodCs9IiBSZWNlaXZlZCBhbiBpbnN0YW5jZSBvZiAiLmNvbmNhdChlLmNvbnN0cnVjdG9yLm5hbWUpKSx0fSxHbj1mdW5jdGlvbihlKXtyZXR1cm4gU24oZSl9LFZuPVsiQ3J5cHRvS2V5Il0sWG49ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTt2YXIgbixhPXQuZmlsdGVyKEJvb2xlYW4pO2lmKDA9PT1hLmxlbmd0aHx8MT09PWEubGVuZ3RoKXJldHVybiEwO3ZhciBpLG89XyhhKTt0cnl7Zm9yKG8ucygpOyEoaT1vLm4oKSkuZG9uZTspe3ZhciBzPWkudmFsdWUsdT1PYmplY3Qua2V5cyhzKTtpZihuJiYwIT09bi5zaXplKWZvcih2YXIgYz0wLGY9dTtjPGYubGVuZ3RoO2MrKyl7dmFyIGw9ZltjXTtpZihuLmhhcyhsKSlyZXR1cm4hMTtuLmFkZChsKX1lbHNlIG49bmV3IFNldCh1KX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9cmV0dXJuITB9O2Z1bmN0aW9uICRuKGUpe2lmKCJvYmplY3QiIT09bih0PWUpfHxudWxsPT09dHx8IltvYmplY3QgT2JqZWN0XSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuITE7dmFyIHQ7aWYobnVsbD09PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKSlyZXR1cm4hMDtmb3IodmFyIHI9ZTtudWxsIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpOylyPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKTtyZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09cn12YXIgWm49ZnVuY3Rpb24oZSx0KXtpZihlLnN0YXJ0c1dpdGgoIlJTIil8fGUuc3RhcnRzV2l0aCgiUFMiKSl7dmFyIHI9dC5hbGdvcml0aG0ubW9kdWx1c0xlbmd0aDtpZigibnVtYmVyIiE9dHlwZW9mIHJ8fHI8MjA0OCl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChlLCIgcmVxdWlyZXMga2V5IG1vZHVsdXNMZW5ndGggdG8gYmUgMjA0OCBiaXRzIG9yIGxhcmdlciIpKX19O2Z1bmN0aW9uIFFuKGUpe3ZhciB0LHI7c3dpdGNoKGUua3R5KXtjYXNlIm9jdCI6c3dpdGNoKGUuYWxnKXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjp0PXtuYW1lOiJITUFDIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1bInNpZ24iLCJ2ZXJpZnkiXTticmVhaztjYXNlIkExMjhDQkMtSFMyNTYiOmNhc2UiQTE5MkNCQy1IUzM4NCI6Y2FzZSJBMjU2Q0JDLUhTNTEyIjp0aHJvdyBuZXcgSW4oIiIuY29uY2F0KGUuYWxnLCIga2V5cyBjYW5ub3QgYmUgaW1wb3J0ZWQgYXMgQ3J5cHRvS2V5IGluc3RhbmNlcyIpKTtjYXNlIkExMjhHQ00iOmNhc2UiQTE5MkdDTSI6Y2FzZSJBMjU2R0NNIjpjYXNlIkExMjhHQ01LVyI6Y2FzZSJBMTkyR0NNS1ciOmNhc2UiQTI1NkdDTUtXIjp0PXtuYW1lOiJBRVMtR0NNIn0scj1bImVuY3J5cHQiLCJkZWNyeXB0Il07YnJlYWs7Y2FzZSJBMTI4S1ciOmNhc2UiQTE5MktXIjpjYXNlIkEyNTZLVyI6dD17bmFtZToiQUVTLUtXIn0scj1bIndyYXBLZXkiLCJ1bndyYXBLZXkiXTticmVhaztjYXNlIlBCRVMyLUhTMjU2K0ExMjhLVyI6Y2FzZSJQQkVTMi1IUzM4NCtBMTkyS1ciOmNhc2UiUEJFUzItSFM1MTIrQTI1NktXIjp0PXtuYW1lOiJQQktERjIifSxyPVsiZGVyaXZlQml0cyJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIlJTQSI6c3dpdGNoKGUuYWxnKXtjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjp0PXtuYW1lOiJSU0EtUFNTIixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjp0PXtuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSIsaGFzaDoiU0hBLSIuY29uY2F0KGUuYWxnLnNsaWNlKC0zKSl9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJSU0EtT0FFUCI6Y2FzZSJSU0EtT0FFUC0yNTYiOmNhc2UiUlNBLU9BRVAtMzg0IjpjYXNlIlJTQS1PQUVQLTUxMiI6dD17bmFtZToiUlNBLU9BRVAiLGhhc2g6IlNIQS0iLmNvbmNhdChwYXJzZUludChlLmFsZy5zbGljZSgtMyksMTApfHwxKX0scj1lLmQ/WyJkZWNyeXB0IiwidW53cmFwS2V5Il06WyJlbmNyeXB0Iiwid3JhcEtleSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiYWxnIiAoQWxnb3JpdGhtKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztjYXNlIkVDIjpzd2l0Y2goZS5hbGcpe2Nhc2UiRVMyNTYiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTI1NiJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFUzM4NCI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMzg0In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTNTEyIjp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC01MjEifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRUNESC1FUyI6Y2FzZSJFQ0RILUVTK0ExMjhLVyI6Y2FzZSJFQ0RILUVTK0ExOTJLVyI6Y2FzZSJFQ0RILUVTK0EyNTZLVyI6dD17bmFtZToiRUNESCIsbmFtZWRDdXJ2ZTplLmNydn0scj1lLmQ/WyJkZXJpdmVCaXRzIl06W107YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UocW4oKXx8S24oKSkmJiJPS1AiOmlmKCJFZERTQSIhPT1lLmFsZyl0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpO3N3aXRjaChlLmNydil7Y2FzZSJFZDI1NTE5Ijp0PXtuYW1lOiJOT0RFLUVEMjU1MTkiLG5hbWVkQ3VydmU6Ik5PREUtRUQyNTUxOSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSBLbigpJiYiRWQ0NDgiOnQ9e25hbWU6Ik5PREUtRUQ0NDgiLG5hbWVkQ3VydmU6Ik5PREUtRUQ0NDgifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIEpXSyAiY3J2IiAoU3VidHlwZSBvZiBLZXkgUGFpcikgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgSW4oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyl9cmV0dXJue2FsZ29yaXRobTp0LGtleVVzYWdlczpyfX12YXIgZWE9ZnVuY3Rpb24oKXt2YXIgZT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4pe3ZhciBhLGksbyxzLHUsYyxmLGwsaDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9UW4obiksdT1zLmFsZ29yaXRobSxjPXMua2V5VXNhZ2VzLGY9W3UsbnVsbCE9PShpPW4uZXh0KSYmdm9pZCAwIT09aSYmaSxudWxsIT09KG89bi5rZXlfb3BzKSYmdm9pZCAwIT09bz9vOmNdLCJQQktERjIiIT09dS5uYW1lKXtlLm5leHQ9NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsKGw9X24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkobCxbInJhdyIsUm4obi5rKV0uY29uY2F0KGYpKSk7Y2FzZSA0OnJldHVybiBkZWxldGUoaD10KHt9LG4pKS5hbGcsZS5hYnJ1cHQoInJldHVybiIsKGE9X24uc3VidGxlKS5pbXBvcnRLZXkuYXBwbHkoYSxbImp3ayIsaF0uY29uY2F0KGYpKSk7Y2FzZSA3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpO3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIHRhKGUsdCxyKXtyZXR1cm4gcmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHJhKCl7cmV0dXJuKHJhPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUobixhLGkpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoJG4obikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoIkpXSyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZihhfHwoYT1uLmFsZyksInN0cmluZyI9PXR5cGVvZiBhJiZhKXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVHlwZUVycm9yKCciYWxnIiBhcmd1bWVudCBpcyByZXF1aXJlZCB3aGVuICJqd2suYWxnIiBpcyBub3QgcHJlc2VudCcpO2Nhc2UgNTplLnQwPW4ua3R5LGUubmV4dD0ib2N0Ij09PWUudDA/ODoiUlNBIj09PWUudDA/MTQ6IkVDIj09PWUudDB8fCJPS1AiPT09ZS50MD8xNjoxNzticmVhaztjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiBuLmsmJm4uayl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJ21pc3NpbmcgImsiIChLZXkgVmFsdWUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTA6aWYobnVsbCE9aXx8KGk9ITAhPT1uLmV4dCksIWkpe2UubmV4dD0xMzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZWEodCh0KHt9LG4pLHt9LHthbGc6YSxleHQ6ITF9KSkpO2Nhc2UgMTM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLFJuKG4uaykpO2Nhc2UgMTQ6aWYodm9pZCAwPT09bi5vdGgpe2UubmV4dD0xNjticmVha310aHJvdyBuZXcgSW4oJ1JTQSBKV0sgIm90aCIgKE90aGVyIFByaW1lcyBJbmZvKSBQYXJhbWV0ZXIgdmFsdWUgaXMgbm90IHN1cHBvcnRlZCcpO2Nhc2UgMTY6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGVhKHQodCh7fSxuKSx7fSx7YWxnOmF9KSkpO2Nhc2UgMTc6dGhyb3cgbmV3IEluKCdVbnN1cHBvcnRlZCAia3R5IiAoS2V5IFR5cGUpIFBhcmFtZXRlciB2YWx1ZScpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbmE9ZnVuY3Rpb24oZSx0LHIpe2Uuc3RhcnRzV2l0aCgiSFMiKXx8ImRpciI9PT1lfHxlLnN0YXJ0c1dpdGgoIlBCRVMyIil8fC9eQVxkezN9KD86R0NNKT9LVyQvLnRlc3QoZSk/ZnVuY3Rpb24oZSl7aWYoIShlIGluc3RhbmNlb2YgVWludDhBcnJheSkpe2lmKCFHbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFluLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoVm4pLFsiVWludDhBcnJheSJdKSkpO2lmKCJzZWNyZXQiIT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3Igc3ltbWV0cmljIGFsZ29yaXRobXMgbXVzdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpfX0odCk6ZnVuY3Rpb24oZSx0KXtpZighR24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChiKFZuKSkpKTtpZigic2VjcmV0Ij09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IG5vdCBiZSBvZiB0eXBlICJzZWNyZXQiJykpO2lmKCJzaWduIj09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gc2lnbmluZyBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKCJkZWNyeXB0Ij09PXQmJiJwdWJsaWMiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KFZuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZGVjcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInByaXZhdGUiJykpO2lmKGUuYWxnb3JpdGhtJiYidmVyaWZ5Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIHZlcmlmeWluZyBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSk7aWYoZS5hbGdvcml0aG0mJiJlbmNyeXB0Ij09PXQmJiJwcml2YXRlIj09PWUudHlwZSl0aHJvdyBuZXcgVHlwZUVycm9yKCIiLmNvbmNhdChWbi5qb2luKCIgb3IgIiksJyBpbnN0YW5jZXMgZm9yIGFzeW1tZXRyaWMgYWxnb3JpdGhtIGVuY3J5cHRpb24gbXVzdCBiZSBvZiB0eXBlICJwdWJsaWMiJykpfSh0LHIpfTtmdW5jdGlvbiBhYShlLHQscixuLGEpe2lmKHZvaWQgMCE9PWEuY3JpdCYmdm9pZCAwPT09bi5jcml0KXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpO2lmKCFufHx2b2lkIDA9PT1uLmNyaXQpcmV0dXJuIG5ldyBTZXQ7aWYoIUFycmF5LmlzQXJyYXkobi5jcml0KXx8MD09PW4uY3JpdC5sZW5ndGh8fG4uY3JpdC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV8fDA9PT1lLmxlbmd0aH0pKSl0aHJvdyBuZXcgZSgnImNyaXQiIChDcml0aWNhbCkgSGVhZGVyIFBhcmFtZXRlciBNVVNUIGJlIGFuIGFycmF5IG9mIG5vbi1lbXB0eSBzdHJpbmdzIHdoZW4gcHJlc2VudCcpO3ZhciBpO2k9dm9pZCAwIT09cj9uZXcgTWFwKFtdLmNvbmNhdChiKE9iamVjdC5lbnRyaWVzKHIpKSxiKHQuZW50cmllcygpKSkpOnQ7dmFyIG8scz1fKG4uY3JpdCk7dHJ5e2ZvcihzLnMoKTshKG89cy5uKCkpLmRvbmU7KXt2YXIgdT1vLnZhbHVlO2lmKCFpLmhhcyh1KSl0aHJvdyBuZXcgSW4oJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG5vdCByZWNvZ25pemVkJykpO2lmKHZvaWQgMD09PWFbdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIGlzIG1pc3NpbmcnKSk7aWYoaS5nZXQodSkmJnZvaWQgMD09PW5bdV0pdGhyb3cgbmV3IGUoJ0V4dGVuc2lvbiBIZWFkZXIgUGFyYW1ldGVyICInLmNvbmNhdCh1LCciIE1VU1QgYmUgaW50ZWdyaXR5IHByb3RlY3RlZCcpKX19Y2F0Y2goZSl7cy5lKGUpfWZpbmFsbHl7cy5mKCl9cmV0dXJuIG5ldyBTZXQobi5jcml0KX12YXIgaWE9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDAhPT10JiYoIUFycmF5LmlzQXJyYXkodCl8fHQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBlfSkpKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciJy5jb25jYXQoZSwnIiBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJykpO2lmKHQpcmV0dXJuIG5ldyBTZXQodCl9O2Z1bmN0aW9uIG9hKGUsdCl7dmFyIHI9IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSk7c3dpdGNoKGUpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiSE1BQyJ9O2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiUlNBLVBTUyIsc2FsdExlbmd0aDplLnNsaWNlKC0zKT4+M307Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0FTU0EtUEtDUzEtdjFfNSJ9O2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOnJldHVybntoYXNoOnIsbmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6dC5uYW1lZEN1cnZlfTtjYXNlKHFuKCl8fEtuKCkpJiYiRWREU0EiOnZhciBuPXQubmFtZWRDdXJ2ZTtyZXR1cm57bmFtZTpuLG5hbWVkQ3VydmU6bn07ZGVmYXVsdDp0aHJvdyBuZXcgSW4oImFsZyAiLmNvbmNhdChlLCIgaXMgbm90IHN1cHBvcnRlZCBlaXRoZXIgYnkgSk9TRSBvciB5b3VyIGphdmFzY3JpcHQgcnVudGltZSIpKX19ZnVuY3Rpb24gc2EoZSx0LHIpe2lmKFNuKHQpKXJldHVybiBmdW5jdGlvbihlLHQpe3N3aXRjaCh0KXtjYXNlIkhTMjU2IjpjYXNlIkhTMzg0IjpjYXNlIkhTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIkhNQUMiKSl0aHJvdyBKbigiSE1BQyIpO3ZhciByPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEZuKGUuYWxnb3JpdGhtLmhhc2gpIT09cil0aHJvdyBKbigiU0hBLSIuY29uY2F0KHIpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOmlmKCFCbihlLmFsZ29yaXRobSwiUlNBU1NBLVBLQ1MxLXYxXzUiKSl0aHJvdyBKbigiUlNBU1NBLVBLQ1MxLXYxXzUiKTt2YXIgbj1wYXJzZUludCh0LnNsaWNlKDIpLDEwKTtpZihGbihlLmFsZ29yaXRobS5oYXNoKSE9PW4pdGhyb3cgSm4oIlNIQS0iLmNvbmNhdChuKSwiYWxnb3JpdGhtLmhhc2giKTticmVhaztjYXNlIlBTMjU2IjpjYXNlIlBTMzg0IjpjYXNlIlBTNTEyIjppZighQm4oZS5hbGdvcml0aG0sIlJTQS1QU1MiKSl0aHJvdyBKbigiUlNBLVBTUyIpO3ZhciBhPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEZuKGUuYWxnb3JpdGhtLmhhc2gpIT09YSl0aHJvdyBKbigiU0hBLSIuY29uY2F0KGEpLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UgS24oKSYmIkVkRFNBIjppZigiTk9ERS1FRDI1NTE5IiE9PWUuYWxnb3JpdGhtLm5hbWUmJiJOT0RFLUVENDQ4IiE9PWUuYWxnb3JpdGhtLm5hbWUpdGhyb3cgSm4oIk5PREUtRUQyNTUxOSBvciBOT0RFLUVENDQ4Iik7YnJlYWs7Y2FzZSBxbigpJiYiRWREU0EiOmlmKCFCbihlLmFsZ29yaXRobSwiTk9ERS1FRDI1NTE5IikpdGhyb3cgSm4oIk5PREUtRUQyNTUxOSIpO2JyZWFrO2Nhc2UiRVMyNTYiOmNhc2UiRVMzODQiOmNhc2UiRVM1MTIiOmlmKCFCbihlLmFsZ29yaXRobSwiRUNEU0EiKSl0aHJvdyBKbigiRUNEU0EiKTt2YXIgaT1Xbih0KTtpZihlLmFsZ29yaXRobS5uYW1lZEN1cnZlIT09aSl0aHJvdyBKbihpLCJhbGdvcml0aG0ubmFtZWRDdXJ2ZSIpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24iKX1mb3IodmFyIG89YXJndW1lbnRzLmxlbmd0aCxzPW5ldyBBcnJheShvPjI/by0yOjApLHU9Mjt1PG87dSsrKXNbdS0yXT1hcmd1bWVudHNbdV07em4oZSxzKX0odCxlLHIpLHQ7aWYodCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2lmKCFlLnN0YXJ0c1dpdGgoIkhTIikpdGhyb3cgbmV3IFR5cGVFcnJvcihZbi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKFZuKSkpKTtyZXR1cm4gX24uc3VidGxlLmltcG9ydEtleSgicmF3Iix0LHtoYXNoOiJTSEEtIi5jb25jYXQoZS5zbGljZSgtMykpLG5hbWU6IkhNQUMifSwhMSxbcl0pfXRocm93IG5ldyBUeXBlRXJyb3IoWW4uYXBwbHkodm9pZCAwLFt0XS5jb25jYXQoYihWbiksWyJVaW50OEFycmF5Il0pKSl9dmFyIHVhPWZ1bmN0aW9uKCl7dmFyIGU9aShyKCkubWFyaygoZnVuY3Rpb24gZSh0LG4sYSxpKXt2YXIgbyxzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHNhKHQsbiwidmVyaWZ5Iik7Y2FzZSAyOnJldHVybiBvPWUuc2VudCxabih0LG8pLHM9b2EodCxvLmFsZ29yaXRobSksZS5wcmV2PTUsZS5uZXh0PTgsX24uc3VidGxlLnZlcmlmeShzLG8sYSxpKTtjYXNlIDg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAxMTpyZXR1cm4gZS5wcmV2PTExLGUudDA9ZS5jYXRjaCg1KSxlLmFicnVwdCgicmV0dXJuIiwhMSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzUsMTFdXSl9KSkpO3JldHVybiBmdW5jdGlvbih0LHIsbixhKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpO2Z1bmN0aW9uIGNhKGUsdCxyKXtyZXR1cm4gZmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGZhKCl7cmV0dXJuIGZhPWkocigpLm1hcmsoKGZ1bmN0aW9uIGUobixhLGkpe3ZhciBvLHMsdSxjLGYsbCxoLHAsZCx2LGcseSxtO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoJG4obikpe2UubmV4dD0yO2JyZWFrfXRocm93IG5ldyBMbigiRmxhdHRlbmVkIEpXUyBtdXN0IGJlIGFuIG9iamVjdCIpO2Nhc2UgMjppZih2b2lkIDAhPT1uLnByb3RlY3RlZHx8dm9pZCAwIT09bi5oZWFkZXIpe2UubmV4dD00O2JyZWFrfXRocm93IG5ldyBMbignRmxhdHRlbmVkIEpXUyBtdXN0IGhhdmUgZWl0aGVyIG9mIHRoZSAicHJvdGVjdGVkIiBvciAiaGVhZGVyIiBtZW1iZXJzJyk7Y2FzZSA0OmlmKHZvaWQgMD09PW4ucHJvdGVjdGVkfHwic3RyaW5nIj09dHlwZW9mIG4ucHJvdGVjdGVkKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgTG4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSA2OmlmKHZvaWQgMCE9PW4ucGF5bG9hZCl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IExuKCJKV1MgUGF5bG9hZCBtaXNzaW5nIik7Y2FzZSA4OmlmKCJzdHJpbmciPT10eXBlb2Ygbi5zaWduYXR1cmUpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgTG4oIkpXUyBTaWduYXR1cmUgbWlzc2luZyBvciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTA6aWYodm9pZCAwPT09bi5oZWFkZXJ8fCRuKG4uaGVhZGVyKSl7ZS5uZXh0PTEyO2JyZWFrfXRocm93IG5ldyBMbigiSldTIFVucHJvdGVjdGVkIEhlYWRlciBpbmNvcnJlY3QgdHlwZSIpO2Nhc2UgMTI6aWYocz17fSwhbi5wcm90ZWN0ZWQpe2UubmV4dD0yMjticmVha311PVJuKG4ucHJvdGVjdGVkKSxlLnByZXY9MTUscz1KU09OLnBhcnNlKFRuLmRlY29kZSh1KSksZS5uZXh0PTIyO2JyZWFrO2Nhc2UgMTk6dGhyb3cgZS5wcmV2PTE5LGUudDA9ZS5jYXRjaCgxNSksbmV3IExuKCJKV1MgUHJvdGVjdGVkIEhlYWRlciBpcyBpbnZhbGlkIik7Y2FzZSAyMjppZihYbihzLG4uaGVhZGVyKSl7ZS5uZXh0PTI0O2JyZWFrfXRocm93IG5ldyBMbigiSldTIFByb3RlY3RlZCBhbmQgSldTIFVucHJvdGVjdGVkIEhlYWRlciBQYXJhbWV0ZXIgbmFtZXMgbXVzdCBiZSBkaXNqb2ludCIpO2Nhc2UgMjQ6aWYoYz10KHQoe30scyksbi5oZWFkZXIpLGY9YWEoTG4sbmV3IE1hcChbWyJiNjQiLCEwXV0pLG51bGw9PWk/dm9pZCAwOmkuY3JpdCxzLGMpLGw9ITAsIWYuaGFzKCJiNjQiKSl7ZS5uZXh0PTMxO2JyZWFrfWlmKCJib29sZWFuIj09dHlwZW9mKGw9cy5iNjQpKXtlLm5leHQ9MzE7YnJlYWt9dGhyb3cgbmV3IExuKCdUaGUgImI2NCIgKGJhc2U2NHVybC1lbmNvZGUgcGF5bG9hZCkgSGVhZGVyIFBhcmFtZXRlciBtdXN0IGJlIGEgYm9vbGVhbicpO2Nhc2UgMzE6aWYoInN0cmluZyI9PXR5cGVvZihoPWMuYWxnKSYmaCl7ZS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBMbignSldTICJhbGciIChBbGdvcml0aG0pIEhlYWRlciBQYXJhbWV0ZXIgbWlzc2luZyBvciBpbnZhbGlkJyk7Y2FzZSAzNDppZighKHA9aSYmaWEoImFsZ29yaXRobXMiLGkuYWxnb3JpdGhtcykpfHxwLmhhcyhoKSl7ZS5uZXh0PTM3O2JyZWFrfXRocm93IG5ldyBPbignImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBub3QgYWxsb3dlZCcpO2Nhc2UgMzc6aWYoIWwpe2UubmV4dD00MjticmVha31pZigic3RyaW5nIj09dHlwZW9mIG4ucGF5bG9hZCl7ZS5uZXh0PTQwO2JyZWFrfXRocm93IG5ldyBMbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyIpO2Nhc2UgNDA6ZS5uZXh0PTQ0O2JyZWFrO2Nhc2UgNDI6aWYoInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWR8fG4ucGF5bG9hZCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpe2UubmV4dD00NDticmVha310aHJvdyBuZXcgTG4oIkpXUyBQYXlsb2FkIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gVWludDhBcnJheSBpbnN0YW5jZSIpO2Nhc2UgNDQ6aWYoZD0hMSwiZnVuY3Rpb24iIT10eXBlb2YgYSl7ZS5uZXh0PTUwO2JyZWFrfXJldHVybiBlLm5leHQ9NDgsYShzLG4pO2Nhc2UgNDg6YT1lLnNlbnQsZD0hMDtjYXNlIDUwOnJldHVybiBuYShoLGEsInZlcmlmeSIpLHY9QW4oRW4uZW5jb2RlKG51bGwhPT0obz1uLnByb3RlY3RlZCkmJnZvaWQgMCE9PW8/bzoiIiksRW4uZW5jb2RlKCIuIiksInN0cmluZyI9PXR5cGVvZiBuLnBheWxvYWQ/RW4uZW5jb2RlKG4ucGF5bG9hZCk6bi5wYXlsb2FkKSxnPVJuKG4uc2lnbmF0dXJlKSxlLm5leHQ9NTUsdWEoaCxhLGcsdik7Y2FzZSA1NTppZihlLnNlbnQpe2UubmV4dD01ODticmVha310aHJvdyBuZXcgTm47Y2FzZSA1ODppZih5PWw/Um4obi5wYXlsb2FkKToic3RyaW5nIj09dHlwZW9mIG4ucGF5bG9hZD9Fbi5lbmNvZGUobi5wYXlsb2FkKTpuLnBheWxvYWQsbT17cGF5bG9hZDp5fSx2b2lkIDAhPT1uLnByb3RlY3RlZCYmKG0ucHJvdGVjdGVkSGVhZGVyPXMpLHZvaWQgMCE9PW4uaGVhZGVyJiYobS51bnByb3RlY3RlZEhlYWRlcj1uLmhlYWRlciksIWQpe2UubmV4dD02NDticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LG0pLHt9LHtrZXk6YX0pKTtjYXNlIDY0OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixtKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMTUsMTldXSl9KSkpLGZhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBsYShlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBoYSgpe3JldHVybihoYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYyxmLGw7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihuIGluc3RhbmNlb2YgVWludDhBcnJheSYmKG49VG4uZGVjb2RlKG4pKSwic3RyaW5nIj09dHlwZW9mIG4pe2UubmV4dD0zO2JyZWFrfXRocm93IG5ldyBMbigiQ29tcGFjdCBKV1MgbXVzdCBiZSBhIHN0cmluZyBvciBVaW50OEFycmF5Iik7Y2FzZSAzOmlmKG89bi5zcGxpdCgiLiIpLHM9b1swXSx1PW9bMV0sYz1vWzJdLDM9PT1vLmxlbmd0aCl7ZS5uZXh0PTY7YnJlYWt9dGhyb3cgbmV3IExuKCJJbnZhbGlkIENvbXBhY3QgSldTIik7Y2FzZSA2OnJldHVybiBlLm5leHQ9OCxjYSh7cGF5bG9hZDp1LHByb3RlY3RlZDpzLHNpZ25hdHVyZTpjfSxhLGkpO2Nhc2UgODppZihmPWUuc2VudCxsPXtwYXlsb2FkOmYucGF5bG9hZCxwcm90ZWN0ZWRIZWFkZXI6Zi5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtlLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHQodCh7fSxsKSx7fSx7a2V5OmYua2V5fSkpO2Nhc2UgMTI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGwpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcGE9ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZS5nZXRUaW1lKCkvMWUzKX0sZGE9ODY0MDAsdmE9L14oXGQrfFxkK1wuXGQrKSA/KHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8d2Vla3M/fHd8eWVhcnM/fHlycz98eSkkL2ksZ2E9ZnVuY3Rpb24oZSl7dmFyIHQ9dmEuZXhlYyhlKTtpZighdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIHRpbWUgcGVyaW9kIGZvcm1hdCIpO3ZhciByPXBhcnNlRmxvYXQodFsxXSk7c3dpdGNoKHRbMl0udG9Mb3dlckNhc2UoKSl7Y2FzZSJzZWMiOmNhc2Uic2VjcyI6Y2FzZSJzZWNvbmQiOmNhc2Uic2Vjb25kcyI6Y2FzZSJzIjpyZXR1cm4gTWF0aC5yb3VuZChyKTtjYXNlIm1pbnV0ZSI6Y2FzZSJtaW51dGVzIjpjYXNlIm1pbiI6Y2FzZSJtaW5zIjpjYXNlIm0iOnJldHVybiBNYXRoLnJvdW5kKDYwKnIpO2Nhc2UiaG91ciI6Y2FzZSJob3VycyI6Y2FzZSJociI6Y2FzZSJocnMiOmNhc2UiaCI6cmV0dXJuIE1hdGgucm91bmQoMzYwMCpyKTtjYXNlImRheSI6Y2FzZSJkYXlzIjpjYXNlImQiOnJldHVybiBNYXRoLnJvdW5kKHIqZGEpO2Nhc2Uid2VlayI6Y2FzZSJ3ZWVrcyI6Y2FzZSJ3IjpyZXR1cm4gTWF0aC5yb3VuZCg2MDQ4MDAqcik7ZGVmYXVsdDpyZXR1cm4gTWF0aC5yb3VuZCgzMTU1NzYwMCpyKX19LHlhPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXmFwcGxpY2F0aW9uXC8vLCIiKX0sbWE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/dC5pbmNsdWRlcyhlKTohIUFycmF5LmlzQXJyYXkoZSkmJnQuc29tZShTZXQucHJvdG90eXBlLmhhcy5iaW5kKG5ldyBTZXQoZSkpKX0sd2E9ZnVuY3Rpb24oZSx0KXt2YXIgcixhPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxpPWEudHlwO2lmKGkmJigic3RyaW5nIiE9dHlwZW9mIGUudHlwfHx5YShlLnR5cCkhPT15YShpKSkpdGhyb3cgbmV3IFBuKCd1bmV4cGVjdGVkICJ0eXAiIEpXVCBoZWFkZXIgdmFsdWUnLCJ0eXAiLCJjaGVja19mYWlsZWQiKTt0cnl7cj1KU09OLnBhcnNlKFRuLmRlY29kZSh0KSl9Y2F0Y2goZSl7fWlmKCEkbihyKSl0aHJvdyBuZXcgVW4oIkpXVCBDbGFpbXMgU2V0IG11c3QgYmUgYSB0b3AtbGV2ZWwgSlNPTiBvYmplY3QiKTt2YXIgbz1hLmlzc3VlcjtpZihvJiYhKEFycmF5LmlzQXJyYXkobyk/bzpbb10pLmluY2x1ZGVzKHIuaXNzKSl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgImlzcyIgY2xhaW0gdmFsdWUnLCJpc3MiLCJjaGVja19mYWlsZWQiKTt2YXIgcz1hLnN1YmplY3Q7aWYocyYmci5zdWIhPT1zKXRocm93IG5ldyBQbigndW5leHBlY3RlZCAic3ViIiBjbGFpbSB2YWx1ZScsInN1YiIsImNoZWNrX2ZhaWxlZCIpO3ZhciB1LGM9YS5hdWRpZW5jZTtpZihjJiYhbWEoci5hdWQsInN0cmluZyI9PXR5cGVvZiBjP1tjXTpjKSl0aHJvdyBuZXcgUG4oJ3VuZXhwZWN0ZWQgImF1ZCIgY2xhaW0gdmFsdWUnLCJhdWQiLCJjaGVja19mYWlsZWQiKTtzd2l0Y2gobihhLmNsb2NrVG9sZXJhbmNlKSl7Y2FzZSJzdHJpbmciOnU9Z2EoYS5jbG9ja1RvbGVyYW5jZSk7YnJlYWs7Y2FzZSJudW1iZXIiOnU9YS5jbG9ja1RvbGVyYW5jZTticmVhaztjYXNlInVuZGVmaW5lZCI6dT0wO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjbG9ja1RvbGVyYW5jZSBvcHRpb24gdHlwZSIpfXZhciBmPWEuY3VycmVudERhdGUsbD1wYShmfHxuZXcgRGF0ZSk7aWYoKHZvaWQgMCE9PXIuaWF0fHxhLm1heFRva2VuQWdlKSYmIm51bWJlciIhPXR5cGVvZiByLmlhdCl0aHJvdyBuZXcgUG4oJyJpYXQiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJpYXQiLCJpbnZhbGlkIik7aWYodm9pZCAwIT09ci5uYmYpe2lmKCJudW1iZXIiIT10eXBlb2Ygci5uYmYpdGhyb3cgbmV3IFBuKCcibmJmIiBjbGFpbSBtdXN0IGJlIGEgbnVtYmVyJywibmJmIiwiaW52YWxpZCIpO2lmKHIubmJmPmwrdSl0aHJvdyBuZXcgUG4oJyJuYmYiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJuYmYiLCJjaGVja19mYWlsZWQiKX1pZih2b2lkIDAhPT1yLmV4cCl7aWYoIm51bWJlciIhPXR5cGVvZiByLmV4cCl0aHJvdyBuZXcgUG4oJyJleHAiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJleHAiLCJpbnZhbGlkIik7aWYoci5leHA8PWwtdSl0aHJvdyBuZXcgRG4oJyJleHAiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQnLCJleHAiLCJjaGVja19mYWlsZWQiKX1pZihhLm1heFRva2VuQWdlKXt2YXIgaD1sLXIuaWF0LHA9Im51bWJlciI9PXR5cGVvZiBhLm1heFRva2VuQWdlP2EubWF4VG9rZW5BZ2U6Z2EoYS5tYXhUb2tlbkFnZSk7aWYoaC11PnApdGhyb3cgbmV3IERuKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkICh0b28gZmFyIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpO2lmKGg8MC11KXRocm93IG5ldyBQbignImlhdCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCAoaXQgc2hvdWxkIGJlIGluIHRoZSBwYXN0KScsImlhdCIsImNoZWNrX2ZhaWxlZCIpfXJldHVybiByfTtmdW5jdGlvbiBiYSgpe3JldHVybihiYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSxpKXt2YXIgbyxzLHUsYztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixsYShuLGEsaSk7Y2FzZSAyOmlmKHM9ZS5zZW50LCEobnVsbD09PShvPXMucHJvdGVjdGVkSGVhZGVyLmNyaXQpfHx2b2lkIDA9PT1vP3ZvaWQgMDpvLmluY2x1ZGVzKCJiNjQiKSl8fCExIT09cy5wcm90ZWN0ZWRIZWFkZXIuYjY0KXtlLm5leHQ9NTticmVha310aHJvdyBuZXcgVW4oIkpXVHMgTVVTVCBOT1QgdXNlIHVuZW5jb2RlZCBwYXlsb2FkIik7Y2FzZSA1OmlmKHU9d2Eocy5wcm90ZWN0ZWRIZWFkZXIscy5wYXlsb2FkLGkpLGM9e3BheWxvYWQ6dSxwcm90ZWN0ZWRIZWFkZXI6cy5wcm90ZWN0ZWRIZWFkZXJ9LCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtlLm5leHQ9OTticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LGMpLHt9LHtrZXk6cy5rZXl9KSk7Y2FzZSA5OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga2EoZSl7c3dpdGNoKCJzdHJpbmciPT10eXBlb2YgZSYmZS5zbGljZSgwLDIpKXtjYXNlIlJTIjpjYXNlIlBTIjpyZXR1cm4iUlNBIjtjYXNlIkVTIjpyZXR1cm4iRUMiO2Nhc2UiRWQiOnJldHVybiJPS1AiO2RlZmF1bHQ6dGhyb3cgbmV3IEluKCdVbnN1cHBvcnRlZCAiYWxnIiB2YWx1ZSBmb3IgYSBKU09OIFdlYiBLZXkgU2V0Jyl9fWZ1bmN0aW9uIHhhKGUpe3JldHVybiAkbihlKX12YXIgX2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2lmKG8odGhpcyxlKSx0aGlzLl9jYWNoZWQ9bmV3IFdlYWtNYXAsIWZ1bmN0aW9uKGUpe3JldHVybiBlJiYib2JqZWN0Ij09PW4oZSkmJkFycmF5LmlzQXJyYXkoZS5rZXlzKSYmZS5rZXlzLmV2ZXJ5KHhhKX0odCkpdGhyb3cgbmV3IEhuKCJKU09OIFdlYiBLZXkgU2V0IG1hbGZvcm1lZCIpO3ZhciByO3RoaXMuX2p3a3M9KHI9dCwiZnVuY3Rpb24iPT10eXBlb2Ygc3RydWN0dXJlZENsb25lP3N0cnVjdHVyZWRDbG9uZShyKTpKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHIpKSl9dmFyIGE7cmV0dXJuIHUoZSxbe2tleToiZ2V0S2V5Iix2YWx1ZTooYT1pKHIoKS5tYXJrKChmdW5jdGlvbiBlKG4sYSl7dmFyIGksbyxzLHUsYyxmLGwsaCxwO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoaT10KHQoe30sbiksYS5oZWFkZXIpLG89aS5hbGcscz1pLmtpZCx1PWthKG8pLGM9dGhpcy5fandrcy5rZXlzLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ9dT09PWUua3R5O2lmKHQmJiJzdHJpbmciPT10eXBlb2YgcyYmKHQ9cz09PWUua2lkKSx0JiYic3RyaW5nIj09dHlwZW9mIGUuYWxnJiYodD1vPT09ZS5hbGcpLHQmJiJzdHJpbmciPT10eXBlb2YgZS51c2UmJih0PSJzaWciPT09ZS51c2UpLHQmJkFycmF5LmlzQXJyYXkoZS5rZXlfb3BzKSYmKHQ9ZS5rZXlfb3BzLmluY2x1ZGVzKCJ2ZXJpZnkiKSksdCYmIkVkRFNBIj09PW8mJih0PSJFZDI1NTE5Ij09PWUuY3J2fHwiRWQ0NDgiPT09ZS5jcnYpLHQpc3dpdGNoKG8pe2Nhc2UiRVMyNTYiOnQ9IlAtMjU2Ij09PWUuY3J2O2JyZWFrO2Nhc2UiRVMyNTZLIjp0PSJzZWNwMjU2azEiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzM4NCI6dD0iUC0zODQiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzUxMiI6dD0iUC01MjEiPT09ZS5jcnZ9cmV0dXJuIHR9KSksZj1jWzBdLDAhPT0obD1jLmxlbmd0aCkpe2UubmV4dD04O2JyZWFrfXRocm93IG5ldyBNbjtjYXNlIDg6aWYoMT09PWwpe2UubmV4dD0xMDticmVha310aHJvdyBuZXcgam47Y2FzZSAxMDppZih2b2lkIDAhPT0oaD10aGlzLl9jYWNoZWQuZ2V0KGYpfHx0aGlzLl9jYWNoZWQuc2V0KGYse30pLmdldChmKSlbb10pe2UubmV4dD0xODticmVha31yZXR1cm4gZS5uZXh0PTE0LHRhKHQodCh7fSxmKSx7fSx7ZXh0OiEwfSksbyk7Y2FzZSAxNDppZighKChwPWUuc2VudClpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fCJwdWJsaWMiIT09cC50eXBlKSl7ZS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBIbigiSlNPTiBXZWIgS2V5IFNldCBtZW1iZXJzIG11c3QgYmUgcHVibGljIGtleXMiKTtjYXNlIDE3Omhbb109cDtjYXNlIDE4OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixoW29dKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSksZnVuY3Rpb24oZSx0KXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KX1dKSxlfSgpO3ZhciBTYT17ZXhwb3J0czp7fX0sRWE9e2V4cG9ydHM6e319LFRhPVooZm4pOyFmdW5jdGlvbihlLHQpe3ZhciByPVRhLG49ci5CdWZmZXI7ZnVuY3Rpb24gYShlLHQpe2Zvcih2YXIgciBpbiBlKXRbcl09ZVtyXX1mdW5jdGlvbiBpKGUsdCxyKXtyZXR1cm4gbihlLHQscil9bi5mcm9tJiZuLmFsbG9jJiZuLmFsbG9jVW5zYWZlJiZuLmFsbG9jVW5zYWZlU2xvdz9lLmV4cG9ydHM9cjooYShyLHQpLHQuQnVmZmVyPWkpLGkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGEobixpKSxpLmZyb209ZnVuY3Rpb24oZSx0LHIpe2lmKCJudW1iZXIiPT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUsdCxyKX0saS5hbGxvYz1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTt2YXIgYT1uKGUpO3JldHVybiB2b2lkIDAhPT10PyJzdHJpbmciPT10eXBlb2Ygcj9hLmZpbGwodCxyKTphLmZpbGwodCk6YS5maWxsKDApLGF9LGkuYWxsb2NVbnNhZmU9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gbihlKX0saS5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIiKTtyZXR1cm4gci5TbG93QnVmZmVyKGUpfX0oRWEsRWEuZXhwb3J0cyk7dmFyIEFhPTY1NTM2LFJhPTQyOTQ5NjcyOTU7dmFyIENhPUVhLmV4cG9ydHMuQnVmZmVyLFBhPVguY3J5cHRvfHxYLm1zQ3J5cHRvO1BhJiZQYS5nZXRSYW5kb21WYWx1ZXM/U2EuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2lmKGU+UmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1DYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5BYSlmb3IodmFyIG49MDtuPGU7bis9QWEpUGEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK0FhKSk7ZWxzZSBQYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06U2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIERhPVNhLmV4cG9ydHMsT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBibi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKHhuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBiYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSxfYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IF9hKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOm8saXNzdWVyOmEsc3ViamVjdDppfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKTtvcmlnaW4sVS5TZXNzaW9uU3RvcmFnZTt2YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdShlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiBuPXBhcnNlSW50KHQuZXhwaXJlc19pbiksYT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBTKGksdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihuPD0xMD9uOm4tMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDLEpTT04uc3RyaW5naWZ5KGEpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksTGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbSx3LGIsayx4LF8sRSxULEEsUixDLFAsRCxPLEksTCxVLEgsTSxqO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9bmV3IHNyLGk9bmV3IE9hLG89bmV3IEooYSxpKSxuLm5leHQ9NSxvLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKHM9bmV3IElhKG8pLHU9dChvLHMpLGM9by5nZXREYXRhTGF5ZXIoKSxmPW9yLmdldEluc3RhbmNlKCksbD1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIShuPU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKSkuYXR0YWNoVG9rZW4pe3QubmV4dD0yMzticmVha31pZighbi5zaG91bGRBdHRhY2hJRFBBY2Nlc3NUb2tlbil7dC5uZXh0PTE0O2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9OCx1LmdldElEUEFjY2Vzc1Rva2VuKCk7Y2FzZSA4OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpLHQubmV4dD0yMzticmVhaztjYXNlIDE0OnJldHVybiB0LnQ2PU9iamVjdCx0LnQ3PU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQ4PSJCZWFyZXIgIix0Lm5leHQ9MTksdS5nZXRBY2Nlc3NUb2tlbigpO2Nhc2UgMTk6dC50OT10LnNlbnQsdC50MTA9dC50OC5jb25jYXQuY2FsbCh0LnQ4LHQudDkpLHQudDExPXtBdXRob3JpemF0aW9uOnQudDEwfSxlLmhlYWRlcnM9dC50Ni5hc3NpZ24uY2FsbCh0LnQ2LHQudDcsdC50MTEpO2Nhc2UgMjM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG4udDA9bnVsbD09Zj92b2lkIDA6Zi5pbml0LCFuLnQwKXtuLm5leHQ9MTQ7YnJlYWt9cmV0dXJuIG4ubmV4dD0xNCxmLmluaXQoITAsbCk7Y2FzZSAxNDpyZXR1cm4gaD1mdW5jdGlvbihlKXsobnVsbD09Zj92b2lkIDA6Zi5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZmLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0scD1mdW5jdGlvbihlKXsobnVsbD09Zj92b2lkIDA6Zi5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJmYuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7KG51bGw9PWY/dm9pZCAwOmYuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJmYuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHUuaHR0cFJlcXVlc3QoZixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxnPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdS5odHRwUmVxdWVzdEFsbChlLGYpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHk9ZnVuY3Rpb24oKXt1LmVuYWJsZUh0dHBIYW5kbGVyKGYpfSxtPWZ1bmN0aW9uKCl7dS5kaXNhYmxlSHR0cEhhbmRsZXIoZil9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixvLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGkscztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBhPW5ldyBVUkwoZSksaT1udWxsIT09KG49YS5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09bj9uOiIiLHQubmV4dD00LG8uZ2V0UEtDRUNvZGUoaSk7Y2FzZSA0OnJldHVybiBzPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6c30pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LGI9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHMuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCkscy5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0saz1mdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gaSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCx2b2lkIDAsbixhKTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksaSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBzLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLGUubmV4dD0zLG8uc2lnbk91dCgpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LF89ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG8uZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1LnJlcXVlc3RDdXN0b21HcmFudChlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxUPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9Myx1LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDY6cmV0dXJuIGUucHJldj02LGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbMCw2XV0pfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBvLnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gcy5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxQcm9taXNlLnJlc29sdmUoITApfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSl9LFI9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldENyeXB0b0hlbHBlcigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUuZ2V0RGVjb2RlZElEUElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxJPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sTD1mdW5jdGlvbigpe3JldHVybiB1LmdldEFjY2Vzc1Rva2VuKCl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gdS5pc0F1dGhlbnRpY2F0ZWQoKX0sSD1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLGMuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sTT1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLG8udXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0saj1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYy5nZXRDb25maWdEYXRhKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sbi5hYnJ1cHQoInJldHVybiIse2Rpc2FibGVIdHRwSGFuZGxlcjptLGVuYWJsZUh0dHBIYW5kbGVyOnksZ2V0QWNjZXNzVG9rZW46TCxnZXRBdXRob3JpemF0aW9uVVJMOncsZ2V0QmFzaWNVc2VySW5mbzpSLGdldENvbmZpZ0RhdGE6aixnZXRDcnlwdG9IZWxwZXI6UCxnZXREZWNvZGVkSURQSURUb2tlbjpELGdldERlY29kZWRJRFRva2VuOkMsZ2V0SURUb2tlbjpPLGdldE9JRENTZXJ2aWNlRW5kcG9pbnRzOkksZ2V0U2lnbk91dFVSTDpfLGh0dHBSZXF1ZXN0OnYsaHR0cFJlcXVlc3RBbGw6Zyxpc0F1dGhlbnRpY2F0ZWQ6VSxyZWZyZXNoQWNjZXNzVG9rZW46VCxyZXF1ZXN0QWNjZXNzVG9rZW46ayxyZXF1ZXN0Q3VzdG9tR3JhbnQ6RSxyZXZva2VBY2Nlc3NUb2tlbjpBLHNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2s6ZCxzZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2s6aCxzZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjazpwLHNldFNlc3Npb25TdGF0ZTpILHNpZ25PdXQ6eCxzdGFydEF1dG9SZWZyZXNoVG9rZW46Yix1cGRhdGVDb25maWc6TX0pO2Nhc2UgNDE6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuKX0pKSl9LFVhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKSx0aGlzLl9zcGFIZWxwZXI9cn1yZXR1cm4gdShlLFt7a2V5OiJlbmFibGVIdHRwSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7KG51bGw9PWU/dm9pZCAwOmUuZW5hYmxlSGFuZGxlcikmJmUuZW5hYmxlSGFuZGxlcigpfX0se2tleToiZGlzYWJsZUh0dHBIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXsobnVsbD09ZT92b2lkIDA6ZS5kaXNhYmxlSGFuZGxlcikmJmUuZGlzYWJsZUhhbmRsZXIoKX19LHtrZXk6ImluaXRpYWxpemVTZXNzaW9uTWFuZ2VyIix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEpe3ZhciBpLG8sczthLmluaXRpYWxpemUoZS5jbGllbnRJRCxudWxsIT09KGk9dC5jaGVja1Nlc3Npb25JZnJhbWUpJiZ2b2lkIDAhPT1pP2k6IiIscixudWxsIT09KG89ZS5jaGVja1Nlc3Npb25JbnRlcnZhbCkmJnZvaWQgMCE9PW8/bzozLG51bGwhPT0ocz1lLnNlc3Npb25SZWZyZXNoSW50ZXJ2YWwpJiZ2b2lkIDAhPT1zP3M6MzAwLGUuc2lnbkluUmVkaXJlY3RVUkwsbil9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGwsaD10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6aWYocz0hMCx1PSExLCEobnVsbD09ZT92b2lkIDA6ZS50b2tlbkVuZHBvaW50KSl7by5uZXh0PTM5O2JyZWFrfXJldHVybiBzPSExLGM9MCxvLnQwPVtdLG8udDE9YixvLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgOTppZihvLnQ0PW49by5zZW50LG8udDM9bnVsbD09PW8udDQsby50Myl7by5uZXh0PTEzO2JyZWFrfW8udDM9dm9pZCAwPT09bjtjYXNlIDEzOmlmKCFvLnQzKXtvLm5leHQ9MTc7YnJlYWt9by50NT12b2lkIDAsby5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6by50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE4OmlmKG8udDY9YT1vLnQ1LG8udDI9bnVsbCE9PW8udDYsIW8udDIpe28ubmV4dD0yMjticmVha31vLnQyPXZvaWQgMCE9PWE7Y2FzZSAyMjppZighby50Mil7by5uZXh0PTI2O2JyZWFrfW8udDc9YSxvLm5leHQ9Mjc7YnJlYWs7Y2FzZSAyNjpvLnQ3PVtdO2Nhc2UgMjc6by50OD1vLnQ3LG8udDk9KDAsby50MSkoby50OCksby50MTA9W2UuYmFzZVVybF0sZj1vLnQwLmNvbmNhdC5jYWxsKG8udDAsby50OSxvLnQxMCk7Y2FzZSAzMTppZighKGM8Zi5sZW5ndGgpKXtvLm5leHQ9Mzk7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0oaT1lLnRva2VuRW5kcG9pbnQpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnN0YXJ0c1dpdGgobCkpKXtvLm5leHQ9MzY7YnJlYWt9cmV0dXJuIHU9ITAsby5hYnJ1cHQoImJyZWFrIiwzOSk7Y2FzZSAzNjpjKyssby5uZXh0PTMxO2JyZWFrO2Nhc2UgMzk6aWYoZS5zaG91bGRSZXBsYXlBZnRlclJlZnJlc2gmJnRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKFksSlNPTi5zdHJpbmdpZnkoZSkpLCFzJiYhdSl7by5uZXh0PTQ0O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSkudGhlbigoZnVuY3Rpb24obil7cmV0dXJuIFMoaCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZih0JiYiZnVuY3Rpb24iPT10eXBlb2YgdCYmdChlKSwhZS5yZXR1cm5zU2Vzc2lvbil7ci5uZXh0PTY7YnJlYWt9cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDY6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLG4pO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgNDQ6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtTUFJTl9USFJFQURfQ0xJRU5ULVJDRy1JVjAxIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgdG9rZW4gZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNDU6Y2FzZSJlbmQiOnJldHVybiBvLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6ImdldEN1c3RvbUdyYW50Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihZKTtjYXNlIDI6aWYoISh0PWUuc2VudCkpe2UubmV4dD03O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIixKU09OLnBhcnNlKHQpKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG51bGwpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnByZXY9MCx0Lm5leHQ9Myx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIHQubmV4dD01LHRoaXMuZ2V0Q3VzdG9tR3JhbnRDb25maWdEYXRhKCk7Y2FzZSA1OmlmKCEobj10LnNlbnQpKXt0Lm5leHQ9OTticmVha31yZXR1cm4gdC5uZXh0PTksdGhpcy5yZXF1ZXN0Q3VzdG9tR3JhbnQobixlKTtjYXNlIDk6cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDEzOnJldHVybiB0LnByZXY9MTMsdC50MD10LmNhdGNoKDApLHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KHQudDApKTtjYXNlIDE2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMCwxM11dKX0pKSl9fSx7a2V5OiJodHRwUmVxdWVzdCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSxpLG8pe3ZhciBzLHU7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBjKCl7dmFyIGYsbCxoLHAsZCx2PXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihjKXtmb3IoOzspc3dpdGNoKGMucHJldj1jLm5leHQpe2Nhc2UgMDpyZXR1cm4gZj0hMSxjLm5leHQ9Myx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpyZXR1cm4gbD1jLnNlbnQsaD0wLGMudDA9W10sYy50MT1iLGMubmV4dD05LG51bGw9PWw/dm9pZCAwOmwucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgOTppZihjLnQzPXM9Yy5zZW50LGMudDI9bnVsbCE9PWMudDMsIWMudDIpe2MubmV4dD0xMzticmVha31jLnQyPXZvaWQgMCE9PXM7Y2FzZSAxMzppZighYy50Mil7Yy5uZXh0PTE3O2JyZWFrfWMudDQ9cyxjLm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzpjLnQ0PVtdO2Nhc2UgMTg6Yy50NT1jLnQ0LGMudDY9KDAsYy50MSkoYy50NSksYy50Nz1bbC5iYXNlVXJsXSxwPWMudDAuY29uY2F0LmNhbGwoYy50MCxjLnQ2LGMudDcpO2Nhc2UgMjI6aWYoIShoPHAubGVuZ3RoKSl7Yy5uZXh0PTMwO2JyZWFrfWlmKCEoZD1wW2hdKXx8IShudWxsPT09KHU9bnVsbD09dD92b2lkIDA6dC51cmwpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LnN0YXJ0c1dpdGgoZCkpKXtjLm5leHQ9Mjc7YnJlYWt9cmV0dXJuIGY9ITAsYy5hYnJ1cHQoImJyZWFrIiwzMCk7Y2FzZSAyNzpoKyssYy5uZXh0PTIyO2JyZWFrO2Nhc2UgMzA6aWYoIWYpe2MubmV4dD0zNDticmVha31yZXR1cm4gYy5hYnJ1cHQoInJldHVybiIsZS5yZXF1ZXN0KHQpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKHMpe3JldHVybiBTKHYsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdSgpe3ZhciBjLGYsbCxoLHA7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShjPW51bGw9PXM/dm9pZCAwOnMucmVzcG9uc2UpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLnN0YXR1cykmJihudWxsPT1zP3ZvaWQgMDpzLnJlc3BvbnNlKSl7ci5uZXh0PTMxO2JyZWFrfXJldHVybiByLnByZXY9MSxyLm5leHQ9NCx0aGlzLnJlZnJlc2hBY2Nlc3NUb2tlbihvKTtjYXNlIDQ6aD1yLnNlbnQsci5uZXh0PTE1O2JyZWFrO2Nhc2UgNzppZihyLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksIW4pe3IubmV4dD0xNDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTEzO2JyZWFrfXJldHVybiByLm5leHQ9MTMsYShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scykse2NvZGU6Vn0pKTtjYXNlIDEzOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAxNDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSLVNFMDEiLG51bGwhPT0oZj1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5uYW1lKSYmdm9pZCAwIT09Zj9mOiJSZWZyZXNoIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9PShsPW51bGw9PT1yLnQwfHx2b2lkIDA9PT1yLnQwP3ZvaWQgMDpyLnQwLm1lc3NhZ2UpJiZ2b2lkIDAhPT1sP2w6IkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZm9sbG93aW5nIGEgNDAxIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4iKTtjYXNlIDE1OmlmKCFoKXtyLm5leHQ9MzE7YnJlYWt9cmV0dXJuIHIucHJldj0xNixyLm5leHQ9MTksZS5yZXF1ZXN0KHQpO2Nhc2UgMTk6cmV0dXJuIHA9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShwKSk7Y2FzZSAyMzppZihyLnByZXY9MjMsci50MT1yLmNhdGNoKDE2KSwhbil7ci5uZXh0PTMwO2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtyLm5leHQ9Mjk7YnJlYWt9cmV0dXJuIHIubmV4dD0yOSxhKHIudDEpO2Nhc2UgMjk6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDMwOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChyLnQxKSk7Y2FzZSAzMTppZighbil7ci5uZXh0PTM2O2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtyLm5leHQ9MzU7YnJlYWt9cmV0dXJuIHIubmV4dD0zNSxhKHMpO2Nhc2UgMzU6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDM2OnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChzKSk7Y2FzZSAzNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHUsdGhpcyxbWzEsN10sWzE2LDIzXV0pfSkpKX0pKSk7Y2FzZSAzNDpyZXR1cm4gYy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUi1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiBjLnN0b3AoKX19KSxjLHRoaXMpfSkpKX19LHtrZXk6Imh0dHBSZXF1ZXN0QWxsIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGkpe3ZhciBvLHMsdTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGMoKXt2YXIgZixsLGgscCxkLHYsZyx5LG0sdyxrPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihjKXtmb3IoOzspc3dpdGNoKGMucHJldj1jLm5leHQpe2Nhc2UgMDpyZXR1cm4gZj0hMCxjLm5leHQ9Myx0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMzpsPWMuc2VudCxoPV8oZSksYy5wcmV2PTUsaC5zKCk7Y2FzZSA3OmlmKChwPWgubigpKS5kb25lKXtjLm5leHQ9NTA7YnJlYWt9cmV0dXJuIGQ9cC52YWx1ZSx2PSExLGc9MCxjLnQwPVtdLGMudDE9YixjLm5leHQ9MTUsbDtjYXNlIDE1OmlmKGMudDQ9bz1jLnNlbnQsYy50Mz1udWxsPT09Yy50NCxjLnQzKXtjLm5leHQ9MTk7YnJlYWt9Yy50Mz12b2lkIDA9PT1vO2Nhc2UgMTk6aWYoIWMudDMpe2MubmV4dD0yMzticmVha31jLnQ1PXZvaWQgMCxjLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpjLnQ1PW8ucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMjQ6aWYoYy50Nj1zPWMudDUsYy50Mj1udWxsIT09Yy50NiwhYy50Mil7Yy5uZXh0PTI4O2JyZWFrfWMudDI9dm9pZCAwIT09cztjYXNlIDI4OmlmKCFjLnQyKXtjLm5leHQ9MzI7YnJlYWt9Yy50Nz1zLGMubmV4dD0zMzticmVhaztjYXNlIDMyOmMudDc9W107Y2FzZSAzMzpjLnQ4PWMudDcsYy50OT0oMCxjLnQxKShjLnQ4KSxjLnQxMD1bbC5iYXNlVXJsXSx5PWMudDAuY29uY2F0LmNhbGwoYy50MCxjLnQ5LGMudDEwKTtjYXNlIDM3OmlmKCEoZzx5Lmxlbmd0aCkpe2MubmV4dD00NTticmVha31pZighKG09eVtnXSl8fCEobnVsbD09PSh1PWQudXJsKXx8dm9pZCAwPT09dT92b2lkIDA6dS5zdGFydHNXaXRoKG0pKSl7Yy5uZXh0PTQyO2JyZWFrfXJldHVybiB2PSEwLGMuYWJydXB0KCJicmVhayIsNDUpO2Nhc2UgNDI6ZysrLGMubmV4dD0zNzticmVhaztjYXNlIDQ1OmlmKHYpe2MubmV4dD00ODticmVha31yZXR1cm4gZj0hMSxjLmFicnVwdCgiYnJlYWsiLDUwKTtjYXNlIDQ4OmMubmV4dD03O2JyZWFrO2Nhc2UgNTA6Yy5uZXh0PTU1O2JyZWFrO2Nhc2UgNTI6Yy5wcmV2PTUyLGMudDExPWMuY2F0Y2goNSksaC5lKGMudDExKTtjYXNlIDU1OnJldHVybiBjLnByZXY9NTUsaC5mKCksYy5maW5pc2goNTUpO2Nhc2UgNTg6aWYodz1bXSwhZil7Yy5uZXh0PTY0O2JyZWFrfXJldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKGUpe3cucHVzaCh0LnJlcXVlc3QoZSkpfSkpLGMuYWJydXB0KCJyZXR1cm4iLChudWxsPT10P3ZvaWQgMDp0LmFsbCkmJnQuYWxsKHcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBTKGssdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGw9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KHM9bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtvLm5leHQ9MTc7YnJlYWt9cmV0dXJuIG8ucHJldj0xLG8ubmV4dD00LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgNDpmPW8uc2VudCxvLm5leHQ9MTU7YnJlYWs7Y2FzZSA3OmlmKG8ucHJldj03LG8udDA9by5jYXRjaCgxKSwhbil7by5uZXh0PTE0O2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtvLm5leHQ9MTM7YnJlYWt9cmV0dXJuIG8ubmV4dD0xMyxhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxlKSx7Y29kZTpWfSkpO2Nhc2UgMTM6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDE0OnRocm93IG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItSFJBLVNFMDEiLG51bGwhPT0odT1udWxsPT09by50MHx8dm9pZCAwPT09by50MD92b2lkIDA6by50MC5uYW1lKSYmdm9pZCAwIT09dT91OiJSZWZyZXNoIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9PShjPW51bGw9PT1vLnQwfHx2b2lkIDA9PT1vLnQwP3ZvaWQgMDpvLnQwLm1lc3NhZ2UpJiZ2b2lkIDAhPT1jP2M6IkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHRyeWluZyB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZm9sbG93aW5nIGEgNDAxIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4iKTtjYXNlIDE1OmlmKCFmKXtvLm5leHQ9MTc7YnJlYWt9cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLHQuYWxsJiZ0LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUyhsLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFuKXt0Lm5leHQ9NTticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7dC5uZXh0PTQ7YnJlYWt9cmV0dXJuIHQubmV4dD00LGEoZSk7Y2FzZSA0OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSA1OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSA2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSkpKTtjYXNlIDE3OmlmKCFuKXtvLm5leHQ9MjI7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe28ubmV4dD0yMTticmVha31yZXR1cm4gby5uZXh0PTIxLGEoZSk7Y2FzZSAyMToiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgMjI6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KGUpKTtjYXNlIDIzOmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzLFtbMSw3XV0pfSkpKX0pKSk7Y2FzZSA2NDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKTtjYXNlIDY1OmNhc2UiZW5kIjpyZXR1cm4gYy5zdG9wKCl9fSksYyx0aGlzLFtbNSw1Miw1NSw1OF1dKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGEsaSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBvKCl7dmFyIHMsdSxjPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6aWYoKHM9by5zZW50KS5zdG9yYWdlIT09VS5Ccm93c2VyTWVtb3J5fHwhcy5lbmFibGVQS0NFfHwhdCl7by5uZXh0PTk7YnJlYWt9cmV0dXJuIHU9Y3IuZ2V0UEtDRShMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCkpLG8ubmV4dD03LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnNldFBLQ0VDb2RlKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSx1KTtjYXNlIDc6by5uZXh0PTEyO2JyZWFrO2Nhc2UgOTppZihzLnN0b3JhZ2UhPT1VLldlYldvcmtlcnx8IWEpe28ubmV4dD0xMjticmVha31yZXR1cm4gby5uZXh0PTEyLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnNldFBLQ0VDb2RlKGEsbnVsbCE9aT9pOiIiKTtjYXNlIDEyOmlmKCFlKXtvLm5leHQ9MTQ7YnJlYWt9cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlcXVlc3RBY2Nlc3NUb2tlbihlLG51bGwhPXQ/dDoiIixudWxsIT1pP2k6IiIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIFMoYyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihzLnN0b3JhZ2U9PT1VLldlYldvcmtlcil7ZS5uZXh0PTEwO2JyZWFrfXJldHVybiBlLnQwPWNyLGUubmV4dD00LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldFNpZ25PdXRVUkwoKTtjYXNlIDQ6ZS50MT1lLnNlbnQsZS50MC5zZXRTaWduT3V0VVJMLmNhbGwoZS50MCxlLnQxKSx0aGlzLl9zcGFIZWxwZXImJih0aGlzLl9zcGFIZWxwZXIuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksdGhpcy5fc3BhSGVscGVyLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSksbiYmImZ1bmN0aW9uIj09dHlwZW9mIG4mJnMuZW5hYmxlT0lEQ1Nlc3Npb25NYW5hZ2VtZW50JiZuKCksZS5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6dGhpcy5fc3BhSGVscGVyJiZ0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpO2Nhc2UgMTE6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgMTQ6cmV0dXJuIG8uYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItUkFUMS1ORjAxIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlLiIsIk5vIGF1dGhvcml6YXRpb24gY29kZSB3YXMgZm91bmQuIikpKTtjYXNlIDE1OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJ0cnlTaWduSW5TaWxlbnRseSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBhO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gaSgpe3ZhciBvLHMsdSxjPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihpKXtmb3IoOzspc3dpdGNoKGkucHJldj1pLm5leHQpe2Nhc2UgMDppZighY3IuaXNJbml0aWFsaXplZFNpbGVudFNpZ25JbigpKXtpLm5leHQ9NDticmVha31yZXR1cm4gaS5uZXh0PTMsbi5yZWNlaXZlUHJvbXB0Tm9uZVJlc3BvbnNlKCk7Y2FzZSAzOnJldHVybiBpLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoe2FsbG93ZWRTY29wZXM6IiIsZGlzcGxheU5hbWU6IiIsZW1haWw6IiIsc2Vzc2lvblN0YXRlOiIiLHN1YjoiIix0ZW5hbnREb21haW46IiIsdXNlcm5hbWU6IiJ9KSk7Y2FzZSA0OnJldHVybiBvPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJycElGcmFtZSIpLHM9bnVsbD09PShhPW51bGw9PW8/dm9pZCAwOm8uY29udGVudERvY3VtZW50KXx8dm9pZCAwPT09YT92b2lkIDA6YS5nZXRFbGVtZW50QnlJZCgicHJvbXB0Tm9uZUlGcmFtZSIpLGkucHJldj02LGkubmV4dD05LGUoKTtjYXNlIDk6dT1pLnNlbnQscy5zcmM9dSxpLm5leHQ9MTY7YnJlYWs7Y2FzZSAxMzpyZXR1cm4gaS5wcmV2PTEzLGkudDA9aS5jYXRjaCg2KSxpLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChpLnQwKSk7Y2FzZSAxNjpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUsbil7dmFyIGE9c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlKCExKX0pLDFlNCk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiBpKG8pe3JldHVybiBTKGMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1LGMsZixsLGg7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDoiY2hlY2tfc2Vzc2lvbl9zaWduZWRfb3V0Ij09KG51bGw9PShoPW8uZGF0YSk/dm9pZCAwOmgudHlwZSkmJih3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSksY2xlYXJUaW1lb3V0KGEpLGUoITEpKSwiY2hlY2tfc2Vzc2lvbl9zaWduZWRfaW4iPT0obnVsbD09aD92b2lkIDA6aC50eXBlKSYmKG51bGw9PT0odT1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT11P3ZvaWQgMDp1LmNvZGUpJiZ0KG51bGw9PT0oYz1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvZGUsbnVsbD09PShmPW51bGw9PWg/dm9pZCAwOmguZGF0YSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2Vzc2lvblN0YXRlLG51bGw9PT0obD1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnN0YXRlKS50aGVuKChmdW5jdGlvbih0KXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsaSksZSh0KX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLG4oZSl9KSkuZmluYWxseSgoZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoYSl9KSk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscyl9KSkpfSkpfSkpKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gaS5zdG9wKCl9fSksaSxudWxsLFtbNiwxM11dKX0pKSl9fSx7a2V5OiJoYW5kbGVTaWduSW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOnJldHVybiBpPXIuc2VudCxyLm5leHQ9NSxlKCk7Y2FzZSA1OmlmKCFyLnNlbnQpe3IubmV4dD03O2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoe2FsbG93ZWRTY29wZXM6IiIsZGlzcGxheU5hbWU6IiIsZW1haWw6IiIsc2Vzc2lvblN0YXRlOiIiLHN1YjoiIix0ZW5hbnREb21haW46IiIsdXNlcm5hbWU6IiJ9KSk7Y2FzZSA3OmlmKGkuc3RvcmFnZT09PVUuV2ViV29ya2VyKXtyLm5leHQ9MTk7YnJlYWt9cmV0dXJuIHIubmV4dD0xMCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDEwOmlmKCFyLnNlbnQpe3IubmV4dD0xOTticmVha31yZXR1cm4gdGhpcy5fc3BhSGVscGVyLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksaS5lbmFibGVPSURDU2Vzc2lvbk1hbmFnZW1lbnQmJnQoKSxyLnQwPVByb21pc2Usci5uZXh0PTE3LHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDE3OnJldHVybiByLnQxPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixyLnQwLnJlc29sdmUuY2FsbChyLnQwLHIudDEpKTtjYXNlIDE5OmlmKG89bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikuc2VhcmNoUGFyYW1zLmdldChXKSxzPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoeiksIW8pe3IubmV4dD0yNzticmVha310aHJvdyh1PW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKS5zZWFyY2hQYXJhbXMuZGVsZXRlKFcpLHUuc2VhcmNoUGFyYW1zLmRlbGV0ZSh6KSxoaXN0b3J5LnB1c2hTdGF0ZShudWxsLGRvY3VtZW50LnRpdGxlLHUudG9TdHJpbmcoKSksbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1TSS1TRTAxIixvLG51bGwhPXM/czoiIik7Y2FzZSAyNzppZihpLnN0b3JhZ2UhPT1VLldlYldvcmtlcnx8IW4pe3IubmV4dD0zMzticmVha31yZXR1cm4gci5uZXh0PTMwLG4oKTtjYXNlIDMwOmlmKCEoYz1yLnNlbnQpKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLGMpO2Nhc2UgMzM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QmFzaWNVc2VySW5mbygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEUElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0RGVjb2RlZElEVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDcnlwdG9IZWxwZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0Q3J5cHRvSGVscGVyKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRBY2Nlc3NUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldElEUEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSgpO2Nhc2UgMjppZih0LnQxPWU9dC5zZW50LHQudDA9bnVsbD09PXQudDEsdC50MCl7dC5uZXh0PTY7YnJlYWt9dC50MD12b2lkIDA9PT1lO2Nhc2UgNjppZighdC50MCl7dC5uZXh0PTEwO2JyZWFrfXQudDI9dm9pZCAwLHQubmV4dD0xMTticmVhaztjYXNlIDEwOnQudDI9ZS5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdC50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGF0YUxheWVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhTGF5ZXJ9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpOyFmdW5jdGlvbihlKXt2YXIgdCxuPXNlbGY7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24obil7dmFyIHM9bi5kYXRhLHU9bi5wb3J0cztyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBjLGYsbCxoLHAsZDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHA9dVswXSxzLnR5cGU9PT1CfHx0KXtyLm5leHQ9NDticmVha31yZXR1cm4gcC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBJKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxyLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnIudDA9cy50eXBlLHIubmV4dD1yLnQwPT09Qj83OiJnZXRfYXV0aF91cmwiPT09ci50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ci50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PXIudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ci50MD8yODoic2lnbi1vdXQiPT09ci50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ci50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1yLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1yLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PXIudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PXIudDA/NzY6ImdldC1jcnlwdG8taGVscGVyIj09PXIudDA/OTA6ImdldF9pZF90b2tlbiI9PT1yLnQwPzEwNDoiZW5hYmxlX2h0dHBfaGFuZGxlciI9PT1yLnQwPzExODoiZGlzYWJsZV9odHRwX2hhbmRsZXIiPT09ci50MD8xMjE6ImlzX2F1dGhlbnRpY2F0ZWQiPT09ci50MD8xMjQ6ImdldF9zaWduX291dF91cmwiPT09ci50MD8xMzg6InJlZnJlc2hfYWNjZXNzLXRva2VuIj09PXIudDA/MTUyOiJzdGFydF9hdXRvX3JlZnJlc2hfdG9rZW4iPT09ci50MD8xNjY6InNldF9zZXNzaW9uX3N0YXRlIj09PXIudDA/MTY4OiJ1cGRhdGVfY29uZmlnIj09PXIudDA/MTgyOiJnZXRfY29uZmlnX2RhdGEiPT09ci50MD8xOTY6MjEwO2JyZWFrO2Nhc2UgNzpyZXR1cm4gci5wcmV2PTcsZD1PYmplY3QuYXNzaWduKHt9LHMuZGF0YSksci5uZXh0PTExLExhKGQsZSk7Y2FzZSAxMToodD1yLnNlbnQpLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2sobyksdC5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soYSksdC5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhpKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksci5uZXh0PTIxO2JyZWFrO2Nhc2UgMTg6ci5wcmV2PTE4LHIudDE9ci5jYXRjaCg3KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MSkpO2Nhc2UgMjE6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDIyOnJldHVybiB0LmdldEF1dGhvcml6YXRpb25VUkwobnVsbD09cz92b2lkIDA6cy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDI0OnJldHVybiB0LnJlcXVlc3RBY2Nlc3NUb2tlbihudWxsPT09KGM9bnVsbD09cz92b2lkIDA6cy5kYXRhKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb2RlLG51bGw9PT0oZj1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnNlc3Npb25TdGF0ZSxudWxsPT09KGw9bnVsbD09cz92b2lkIDA6cy5kYXRhKXx8dm9pZCAwPT09bD92b2lkIDA6bC5wa2NlLG51bGw9PT0oaD1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1oP3ZvaWQgMDpoLnN0YXRlKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDI2OnJldHVybiB0Lmh0dHBSZXF1ZXN0KHMuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSAyODpyZXR1cm4gdC5odHRwUmVxdWVzdEFsbChzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMzA6cmV0dXJuIHIucHJldj0zMCxyLnQyPXAsci50Mz11cixyLm5leHQ9MzUsdC5zaWduT3V0KCk7Y2FzZSAzNTpyLnQ0PXIuc2VudCxyLnQ1PXIudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDMsci50NCksci50Mi5wb3N0TWVzc2FnZS5jYWxsKHIudDIsci50NSksci5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ci5wcmV2PTQwLHIudDY9ci5jYXRjaCgzMCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDYpKTtjYXNlIDQzOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA0NDpyZXR1cm4gdC5yZXF1ZXN0Q3VzdG9tR3JhbnQocy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDQ2OnJldHVybiB0LnJldm9rZUFjY2Vzc1Rva2VuKCkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA0ODpyZXR1cm4gci5wcmV2PTQ4LHIudDc9cCxyLnQ4PXVyLHIubmV4dD01Myx0LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzpyLnQ5PXIuc2VudCxyLnQxMD1yLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ4LHIudDkpLHIudDcucG9zdE1lc3NhZ2UuY2FsbChyLnQ3LHIudDEwKSxyLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODpyLnByZXY9NTgsci50MTE9ci5jYXRjaCg0OCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDExKSk7Y2FzZSA2MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgNjI6cmV0dXJuIHIucHJldj02MixyLnQxMj1wLHIudDEzPXVyLHIubmV4dD02Nyx0LmdldEJhc2ljVXNlckluZm8oKTtjYXNlIDY3OnIudDE0PXIuc2VudCxyLnQxNT1yLnQxMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MTMsci50MTQpLHIudDEyLnBvc3RNZXNzYWdlLmNhbGwoci50MTIsci50MTUpLHIubmV4dD03NTticmVhaztjYXNlIDcyOnIucHJldj03MixyLnQxNj1yLmNhdGNoKDYyKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MTYpKTtjYXNlIDc1OnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA3NjpyZXR1cm4gci5wcmV2PTc2LHIudDE3PXAsci50MTg9dXIsci5uZXh0PTgxLHQuZ2V0RGVjb2RlZElEVG9rZW4oKTtjYXNlIDgxOnIudDE5PXIuc2VudCxyLnQyMD1yLnQxOC5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MTgsci50MTkpLHIudDE3LnBvc3RNZXNzYWdlLmNhbGwoci50MTcsci50MjApLHIubmV4dD04OTticmVhaztjYXNlIDg2OnIucHJldj04NixyLnQyMT1yLmNhdGNoKDc2KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MjEpKTtjYXNlIDg5OnJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSA5MDpyZXR1cm4gci5wcmV2PTkwLHIudDIyPXAsci50MjM9dXIsci5uZXh0PTk1LHQuZ2V0Q3J5cHRvSGVscGVyKCk7Y2FzZSA5NTpyLnQyND1yLnNlbnQsci50MjU9ci50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDIzLHIudDI0KSxyLnQyMi5wb3N0TWVzc2FnZS5jYWxsKHIudDIyLHIudDI1KSxyLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOnIucHJldj0xMDAsci50MjY9ci5jYXRjaCg5MCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEwNDpyZXR1cm4gci5wcmV2PTEwNCxyLnQyNz1wLHIudDI4PXVyLHIubmV4dD0xMDksdC5nZXRJRFRva2VuKCk7Y2FzZSAxMDk6ci50Mjk9ci5zZW50LHIudDMwPXIudDI4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQyOCxyLnQyOSksci50MjcucG9zdE1lc3NhZ2UuY2FsbChyLnQyNyxyLnQzMCksci5uZXh0PTExNzticmVhaztjYXNlIDExNDpyLnByZXY9MTE0LHIudDMxPXIuY2F0Y2goMTA0KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MzEpKTtjYXNlIDExNzpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTE4OnJldHVybiB0LmVuYWJsZUh0dHBIYW5kbGVyKCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEyMTpyZXR1cm4gdC5kaXNhYmxlSHR0cEhhbmRsZXIoKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoKSksci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTI0OnJldHVybiByLnByZXY9MTI0LHIudDMyPXAsci50MzM9dXIsci5uZXh0PTEyOSx0LmlzQXV0aGVudGljYXRlZCgpO2Nhc2UgMTI5OnIudDM0PXIuc2VudCxyLnQzNT1yLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MzMsci50MzQpLHIudDMyLnBvc3RNZXNzYWdlLmNhbGwoci50MzIsci50MzUpLHIubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ci5wcmV2PTEzNCxyLnQzNj1yLmNhdGNoKDEyNCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDEzODpyZXR1cm4gci5wcmV2PTEzOCxyLnQzNz1wLHIudDM4PXVyLHIubmV4dD0xNDMsdC5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxNDM6ci50Mzk9ci5zZW50LHIudDQwPXIudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQzOCxyLnQzOSksci50MzcucG9zdE1lc3NhZ2UuY2FsbChyLnQzNyxyLnQ0MCksci5uZXh0PTE1MTticmVhaztjYXNlIDE0ODpyLnByZXY9MTQ4LHIudDQxPXIuY2F0Y2goMTM4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NDEpKTtjYXNlIDE1MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTUyOnJldHVybiByLnByZXY9MTUyLHIudDQyPXAsci50NDM9dXIsci5uZXh0PTE1Nyx0LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMTU3OnIudDQ0PXIuc2VudCxyLnQ0NT1yLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NDMsci50NDQpLHIudDQyLnBvc3RNZXNzYWdlLmNhbGwoci50NDIsci50NDUpLHIubmV4dD0xNjU7YnJlYWs7Y2FzZSAxNjI6ci5wcmV2PTE2MixyLnQ0Nj1yLmNhdGNoKDE1MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDQ2KSk7Y2FzZSAxNjU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDE2Njp0cnl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKHQuc3RhcnRBdXRvUmVmcmVzaFRva2VuKCkpKX1jYXRjaChlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiByLmFicnVwdCgiYnJlYWsiLDIxMSk7Y2FzZSAxNjg6cmV0dXJuIHIucHJldj0xNjgsci50NDc9cCxyLnQ0OD11cixyLm5leHQ9MTczLHQuc2V0U2Vzc2lvblN0YXRlKG51bGw9PXM/dm9pZCAwOnMuZGF0YSk7Y2FzZSAxNzM6ci50NDk9ci5zZW50LHIudDUwPXIudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ0OCxyLnQ0OSksci50NDcucG9zdE1lc3NhZ2UuY2FsbChyLnQ0NyxyLnQ1MCksci5uZXh0PTE4MTticmVhaztjYXNlIDE3ODpyLnByZXY9MTc4LHIudDUxPXIuY2F0Y2goMTY4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NTEpKTtjYXNlIDE4MTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMTgyOnJldHVybiByLnByZXY9MTgyLHIudDUyPXAsci50NTM9dXIsci5uZXh0PTE4Nyx0LnVwZGF0ZUNvbmZpZyhudWxsPT1zP3ZvaWQgMDpzLmRhdGEpO2Nhc2UgMTg3OnIudDU0PXIuc2VudCxyLnQ1NT1yLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NTMsci50NTQpLHIudDUyLnBvc3RNZXNzYWdlLmNhbGwoci50NTIsci50NTUpLHIubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ci5wcmV2PTE5MixyLnQ1Nj1yLmNhdGNoKDE4MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMjExKTtjYXNlIDE5NjpyZXR1cm4gci5wcmV2PTE5NixyLnQ1Nz1wLHIudDU4PXVyLHIubmV4dD0yMDEsdC5nZXRDb25maWdEYXRhKCk7Y2FzZSAyMDE6ci50NTk9ci5zZW50LHIudDYwPXIudDU4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQ1OCxyLnQ1OSksci50NTcucG9zdE1lc3NhZ2UuY2FsbChyLnQ1NyxyLnQ2MCksci5uZXh0PTIwOTticmVhaztjYXNlIDIwNjpyLnByZXY9MjA2LHIudDYxPXIuY2F0Y2goMTk2KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NjEpKTtjYXNlIDIwOTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwyMTEpO2Nhc2UgMjEwOm51bGw9PXB8fHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShuZXcgSSgiU1BBLUNMSUVOVF9XT1JLRVItT05NU0ctSVYwMiIsIlRoZSBtZXNzYWdlIHR5cGUgaXMgaW52YWxpZC4iLCJUaGUgbWVzc2FnZSB0eXBlIHByb3ZpZGVkLCAiLmNvbmNhdChzLnR5cGUsIiwgaXMgaW52YWxpZC4iKSkpKTtjYXNlIDIxMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sbnVsbCxbWzcsMThdLFszMCw0MF0sWzQ4LDU4XSxbNjIsNzJdLFs3Niw4Nl0sWzkwLDEwMF0sWzEwNCwxMTRdLFsxMjQsMTM0XSxbMTM4LDE0OF0sWzE1MiwxNjJdLFsxNjgsMTc4XSxbMTgyLDE5Ml0sWzE5NiwyMDZdXSl9KSkpfTt2YXIgYT1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LGk9ZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sbz1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfX0oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVYShlLHQpfSkpO3JldHVybnt9fSgpOwoK",ij=null,cj=!1,function(t){return aj=aj||nj(rj,ij,cj),new Worker(aj,t)}),sj="init",dj="sign-out",hj="http-request",mj="http-request-all",pj="request-custom-grant",bj="revoke-access-token",Zj="request-start",yj="request-success",Xj="request-finish",fj="get-oidc-service-endpoints",Ij="get-basic-user-info",Gj="get-decoded-id-token",Vj="get-crypto-helper",Wj="enable_http_handler",vj="disable_http_handler",gj="get_auth_url",Sj="request_get_token",Yj="is_authenticated",Rj="get_sign_out_url",Kj="refresh_access-token",Lj="set_session_state",Jj="start_auto_refresh_token",Nj="update_config",xj="get_id_token",Hj="check_session_signed_in",kj="check_session_signed_out",Cj="get_config_data",Uj="set_session_state_from_iframe";t.Storage=void 0,(oj=t.Storage||(t.Storage={})).LocalStorage="localStorage",oj.SessionStorage="sessionStorage",oj.WebWorker="webWorker",oj.BrowserMemory="browserMemory",t.Hooks=void 0,(lj=t.Hooks||(t.Hooks={})).SignIn="sign-in",lj.SignOut="sign-out",lj.Initialize="initialize",lj.HttpRequestStart="http-request-start",lj.HttpRequestFinish="http-request-finish",lj.HttpRequestError="http-request-error",lj.HttpRequestSuccess="http-request-success",lj.RevokeAccessToken="revoke-access-token",lj.CustomGrant="custom-grant",lj.SignOutFailed="sign-out-failed";var Tj,wj,Fj,Mj,jj,zj,Pj,Bj,Qj,Dj,Ej,Oj,Aj,_j,qj,$j,tz,ez="rpIFrame",nz="promptNoneIFrame",rz="Y2hlY2tTZXNzaW9u",iz="sign-in-silently",cz="initialized-silent-sign-in",az="promptNoneRequestSent",oz="error",lz="error_description",uz="custom_grant_config",sz="state",dz="Access token is invalid",hz=function(){function e(t,n){s(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer(),this._spaHelper=n}return h(e,[{key:"enableHttpHandler",value:function(t){(null==t?void 0:t.enableHandler)&&t.enableHandler()}},{key:"disableHttpHandler",value:function(t){(null==t?void 0:t.disableHandler)&&t.disableHandler()}},{key:"initializeSessionManger",value:function(t,e,n,r,i){var c,a,o;i.initialize(t.clientID,null!==(c=e.checkSessionIframe)&&void 0!==c?c:"",n,null!==(a=t.checkSessionInterval)&&void 0!==a?a:3,null!==(o=t.sessionRefreshInterval)&&void 0!==o?o:300,t.signInRedirectURL,r)}},{key:"requestCustomGrant",value:function(t,e){var n,r,i;return TM(this,void 0,void 0,a().mark((function c(){var o,l,u,s,d,h=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(o=!0,l=!1,!(null==t?void 0:t.tokenEndpoint)){c.next=39;break}return o=!1,u=0,c.t0=[],c.t1=v,c.next=9,this._dataLayer.getConfigData();case 9:if(c.t4=n=c.sent,c.t3=null===c.t4,c.t3){c.next=13;break}c.t3=void 0===n;case 13:if(!c.t3){c.next=17;break}c.t5=void 0,c.next=18;break;case 17:c.t5=n.resourceServerURLs;case 18:if(c.t6=r=c.t5,c.t2=null!==c.t6,!c.t2){c.next=22;break}c.t2=void 0!==r;case 22:if(!c.t2){c.next=26;break}c.t7=r,c.next=27;break;case 26:c.t7=[];case 27:c.t8=c.t7,c.t9=(0,c.t1)(c.t8),c.t10=[t.baseUrl],s=c.t0.concat.call(c.t0,c.t9,c.t10);case 31:if(!(u<s.length)){c.next=39;break}if(!(d=s[u])||!(null===(i=t.tokenEndpoint)||void 0===i?void 0:i.startsWith(d))){c.next=36;break}return l=!0,c.abrupt("break",39);case 36:u++,c.next=31;break;case 39:if(t.shouldReplayAfterRefresh&&this._dataLayer.setTemporaryDataParameter(uz,JSON.stringify(t)),!o&&!l){c.next=44;break}return c.abrupt("return",this._authenticationClient.requestCustomGrant(t).then((function(n){return TM(h,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e&&"function"==typeof e&&e(t),!t.returnsSession){r.next=6;break}return this._spaHelper.refreshAccessTokenAutomatically(),r.abrupt("return",this._authenticationClient.getBasicUserInfo());case 6:return r.abrupt("return",n);case 7:case"end":return r.stop()}}),r,this)})))})).catch((function(t){return Promise.reject(t)})));case 44:return c.abrupt("return",Promise.reject(new EM("SPA-MAIN_THREAD_CLIENT-RCG-IV01","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified token endpoint in this request cannot be found among the `resourceServerURLs`")));case 45:case"end":return c.stop()}}),c,this)})))}},{key:"getCustomGrantConfigData",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(uz);case 2:if(!(e=t.sent)){t.next=7;break}return t.abrupt("return",JSON.parse(e));case 7:return t.abrupt("return",null);case 8:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._authenticationClient.refreshAccessToken();case 3:return e.next=5,this.getCustomGrantConfigData();case 5:if(!(n=e.sent)){e.next=9;break}return e.next=9,this.requestCustomGrant(n,t);case 9:return this._spaHelper.refreshAccessTokenAutomatically(),e.abrupt("return",this._authenticationClient.getBasicUserInfo());case 13:return e.prev=13,e.t0=e.catch(0),e.abrupt("return",Promise.reject(e.t0));case 16:case"end":return e.stop()}}),e,this,[[0,13]])})))}},{key:"httpRequest",value:function(t,e,n,r,i,c){var o,l;return TM(this,void 0,void 0,a().mark((function u(){var s,d,h,m,p,b=this;return a().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return s=!1,u.next=3,this._dataLayer.getConfigData();case 3:return d=u.sent,h=0,u.t0=[],u.t1=v,u.next=9,null==d?void 0:d.resourceServerURLs;case 9:if(u.t3=o=u.sent,u.t2=null!==u.t3,!u.t2){u.next=13;break}u.t2=void 0!==o;case 13:if(!u.t2){u.next=17;break}u.t4=o,u.next=18;break;case 17:u.t4=[];case 18:u.t5=u.t4,u.t6=(0,u.t1)(u.t5),u.t7=[d.baseUrl],m=u.t0.concat.call(u.t0,u.t6,u.t7);case 22:if(!(h<m.length)){u.next=30;break}if(!(p=m[h])||!(null===(l=null==e?void 0:e.url)||void 0===l?void 0:l.startsWith(p))){u.next=27;break}return s=!0,u.abrupt("break",30);case 27:h++,u.next=22;break;case 30:if(!s){u.next=34;break}return u.abrupt("return",t.request(e).then((function(t){return Promise.resolve(t)})).catch((function(o){return TM(b,void 0,void 0,a().mark((function l(){var u,s,d,h,m;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:if(401!==(null===(u=null==o?void 0:o.response)||void 0===u?void 0:u.status)&&(null==o?void 0:o.response)){a.next=31;break}return a.prev=1,a.next=4,this.refreshAccessToken(c);case 4:h=a.sent,a.next=15;break;case 7:if(a.prev=7,a.t0=a.catch(1),!n){a.next=14;break}if("function"!=typeof r){a.next=13;break}return a.next=13,r(Object.assign(Object.assign({},o),{code:dz}));case 13:"function"==typeof i&&i();case 14:throw new EM("SPA-AUTH_HELPER-HR-SE01",null!==(s=null===a.t0||void 0===a.t0?void 0:a.t0.name)&&void 0!==s?s:"Refresh token request failed.",null!==(d=null===a.t0||void 0===a.t0?void 0:a.t0.message)&&void 0!==d?d:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!h){a.next=31;break}return a.prev=16,a.next=19,t.request(e);case 19:return m=a.sent,a.abrupt("return",Promise.resolve(m));case 23:if(a.prev=23,a.t1=a.catch(16),!n){a.next=30;break}if("function"!=typeof r){a.next=29;break}return a.next=29,r(a.t1);case 29:"function"==typeof i&&i();case 30:return a.abrupt("return",Promise.reject(a.t1));case 31:if(!n){a.next=36;break}if("function"!=typeof r){a.next=35;break}return a.next=35,r(o);case 35:"function"==typeof i&&i();case 36:return a.abrupt("return",Promise.reject(o));case 37:case"end":return a.stop()}}),l,this,[[1,7],[16,23]])})))})));case 34:return u.abrupt("return",Promise.reject(new EM("SPA-AUTH_HELPER-HR-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`")));case 35:case"end":return u.stop()}}),u,this)})))}},{key:"httpRequestAll",value:function(t,e,n,r,i){var c,o,l;return TM(this,void 0,void 0,a().mark((function u(){var s,d,h,m,p,b,Z,y,X,f,I=this;return a().wrap((function(u){for(;;)switch(u.prev=u.next){case 0:return s=!0,u.next=3,this._dataLayer.getConfigData();case 3:d=u.sent,h=Y(t),u.prev=5,h.s();case 7:if((m=h.n()).done){u.next=50;break}return p=m.value,b=!1,Z=0,u.t0=[],u.t1=v,u.next=15,d;case 15:if(u.t4=c=u.sent,u.t3=null===u.t4,u.t3){u.next=19;break}u.t3=void 0===c;case 19:if(!u.t3){u.next=23;break}u.t5=void 0,u.next=24;break;case 23:u.t5=c.resourceServerURLs;case 24:if(u.t6=o=u.t5,u.t2=null!==u.t6,!u.t2){u.next=28;break}u.t2=void 0!==o;case 28:if(!u.t2){u.next=32;break}u.t7=o,u.next=33;break;case 32:u.t7=[];case 33:u.t8=u.t7,u.t9=(0,u.t1)(u.t8),u.t10=[d.baseUrl],y=u.t0.concat.call(u.t0,u.t9,u.t10);case 37:if(!(Z<y.length)){u.next=45;break}if(!(X=y[Z])||!(null===(l=p.url)||void 0===l?void 0:l.startsWith(X))){u.next=42;break}return b=!0,u.abrupt("break",45);case 42:Z++,u.next=37;break;case 45:if(b){u.next=48;break}return s=!1,u.abrupt("break",50);case 48:u.next=7;break;case 50:u.next=55;break;case 52:u.prev=52,u.t11=u.catch(5),h.e(u.t11);case 55:return u.prev=55,h.f(),u.finish(55);case 58:if(f=[],!s){u.next=64;break}return t.forEach((function(t){f.push(e.request(t))})),u.abrupt("return",(null==e?void 0:e.all)&&e.all(f).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(I,void 0,void 0,a().mark((function c(){var o,l,u,s,d=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(401!==(null===(o=null==t?void 0:t.response)||void 0===o?void 0:o.status)&&(null==t?void 0:t.response)){c.next=17;break}return c.prev=1,c.next=4,this._authenticationClient.refreshAccessToken();case 4:s=c.sent,c.next=15;break;case 7:if(c.prev=7,c.t0=c.catch(1),!n){c.next=14;break}if("function"!=typeof r){c.next=13;break}return c.next=13,r(Object.assign(Object.assign({},t),{code:dz}));case 13:"function"==typeof i&&i();case 14:throw new EM("SPA-AUTH_HELPER-HRA-SE01",null!==(l=null===c.t0||void 0===c.t0?void 0:c.t0.name)&&void 0!==l?l:"Refresh token request failed.",null!==(u=null===c.t0||void 0===c.t0?void 0:c.t0.message)&&void 0!==u?u:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!s){c.next=17;break}return c.abrupt("return",e.all&&e.all(f).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(d,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}if("function"!=typeof r){e.next=4;break}return e.next=4,r(t);case 4:"function"==typeof i&&i();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))})));case 17:if(!n){c.next=22;break}if("function"!=typeof r){c.next=21;break}return c.next=21,r(t);case 21:"function"==typeof i&&i();case 22:return c.abrupt("return",Promise.reject(t));case 23:case"end":return c.stop()}}),c,this,[[1,7]])})))})));case 64:throw new EM("SPA-AUTH_HELPER-HRA-IV02","Request to the provided endpoint is prohibited.","Requests can only be sent to resource servers specified by the `resourceServerURLs` attribute while initializing the SDK. The specified endpoint in this request cannot be found among the `resourceServerURLs`");case 65:case"end":return u.stop()}}),u,this,[[5,52,55,58]])})))}},{key:"requestAccessToken",value:function(e,n,r,i,c){return TM(this,void 0,void 0,a().mark((function o(){var l,u,s=this;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,this._dataLayer.getConfigData();case 2:if((l=o.sent).storage!==t.Storage.BrowserMemory||!l.enablePKCE||!n){o.next=9;break}return u=bz.getPKCE(OM.extractPKCEKeyFromStateParam(n)),o.next=7,this._authenticationClient.setPKCECode(OM.extractPKCEKeyFromStateParam(n),u);case 7:o.next=12;break;case 9:if(l.storage!==t.Storage.WebWorker||!i){o.next=12;break}return o.next=12,this._authenticationClient.setPKCECode(i,null!=c?c:"");case 12:if(!e){o.next=14;break}return o.abrupt("return",this._authenticationClient.requestAccessToken(e,null!=n?n:"",null!=c?c:"").then((function(){return TM(s,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l.storage===t.Storage.WebWorker){e.next=10;break}return e.t0=bz,e.next=4,this._authenticationClient.getSignOutURL();case 4:e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),this._spaHelper&&(this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically()),r&&"function"==typeof r&&l.enableOIDCSessionManagement&&r(),e.next=11;break;case 10:this._spaHelper&&this._spaHelper.refreshAccessTokenAutomatically();case 11:return e.abrupt("return",this._authenticationClient.getBasicUserInfo());case 12:case"end":return e.stop()}}),e,this)})))})).catch((function(t){return Promise.reject(t)})));case 14:return o.abrupt("return",Promise.reject(new EM("SPA-AUTH_HELPER-RAT1-NF01","No authorization code.","No authorization code was found.")));case 15:case"end":return o.stop()}}),o,this)})))}},{key:"trySignInSilently",value:function(t,e,n){var r;return TM(this,void 0,void 0,a().mark((function i(){var c,o,l,u=this;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(!bz.isInitializedSilentSignIn()){i.next=4;break}return i.next=3,n.receivePromptNoneResponse();case 3:return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:return c=document.getElementById(ez),o=null===(r=null==c?void 0:c.contentDocument)||void 0===r?void 0:r.getElementById(nz),i.prev=6,i.next=9,t();case 9:l=i.sent,o.src=l,i.next=16;break;case 13:return i.prev=13,i.t0=i.catch(6),i.abrupt("return",Promise.reject(i.t0));case 16:return i.abrupt("return",new Promise((function(t,n){var r=setTimeout((function(){t(!1)}),1e4);window.addEventListener("message",(function i(c){return TM(u,void 0,void 0,a().mark((function o(){var l,u,s,d,h;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:(null==(h=c.data)?void 0:h.type)==kj&&(window.removeEventListener("message",i),clearTimeout(r),t(!1)),(null==h?void 0:h.type)==Hj&&(null===(l=null==h?void 0:h.data)||void 0===l?void 0:l.code)&&e(null===(u=null==h?void 0:h.data)||void 0===u?void 0:u.code,null===(s=null==h?void 0:h.data)||void 0===s?void 0:s.sessionState,null===(d=null==h?void 0:h.data)||void 0===d?void 0:d.state).then((function(e){window.removeEventListener("message",i),t(e)})).catch((function(t){window.removeEventListener("message",i),n(t)})).finally((function(){clearTimeout(r)}));case 3:case"end":return a.stop()}}),o)})))}))})));case 17:case"end":return i.stop()}}),i,null,[[6,13]])})))}},{key:"handleSignIn",value:function(e,n,r){return TM(this,void 0,void 0,a().mark((function i(){var c,o,l,u,s;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.getConfigData();case 2:return c=i.sent,i.next=5,e();case 5:if(!i.sent){i.next=7;break}return i.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:if(c.storage===t.Storage.WebWorker){i.next=19;break}return i.next=10,this._authenticationClient.isAuthenticated();case 10:if(!i.sent){i.next=19;break}return this._spaHelper.clearRefreshTokenTimeout(),this._spaHelper.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&n(),i.t0=Promise,i.next=17,this._authenticationClient.getBasicUserInfo();case 17:return i.t1=i.sent,i.abrupt("return",i.t0.resolve.call(i.t0,i.t1));case 19:if(o=new URL(window.location.href).searchParams.get(oz),l=new URL(window.location.href).searchParams.get(lz),!o){i.next=27;break}throw(u=new URL(window.location.href)).searchParams.delete(oz),u.searchParams.delete(lz),history.pushState(null,document.title,u.toString()),new EM("SPA-AUTH_HELPER-SI-SE01",o,null!=l?l:"");case 27:if(c.storage!==t.Storage.WebWorker||!r){i.next=33;break}return i.next=30,r();case 30:if(!(s=i.sent)){i.next=33;break}return i.abrupt("return",s);case 33:case"end":return i.stop()}}),i,this)})))}},{key:"getBasicUserInfo",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getBasicUserInfo());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDPIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getDecodedIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getCryptoHelper",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getCryptoHelper());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getIDToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.getAccessToken());case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDPAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(e.t1=t=e.sent,e.t0=null===e.t1,e.t0){e.next=6;break}e.t0=void 0===t;case 6:if(!e.t0){e.next=10;break}e.t2=void 0,e.next=11;break;case 10:e.t2=t.access_token;case 11:return e.abrupt("return",e.t2);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"isAuthenticated",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationClient.isAuthenticated());case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),mz=function(){function t(e){s(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return h(t,[{key:"refreshAccessTokenAutomatically",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e,n,r,i=this;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData();case 2:if(!(e=t.sent).refresh_token){t.next=9;break}return n=parseInt(e.expires_in),r=setTimeout((function(){return TM(i,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return t.stop()}}),t,this)})))}),1e3*(n<=10?n:n-10)),t.next=9,this._dataLayer.setTemporaryDataParameter(MM,JSON.stringify(r));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getTemporaryDataParameter(MM);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(MM);case 6:t.t1=t.sent,e=t.t0.parse.call(t.t0,t.t1),clearTimeout(e);case 9:case"end":return t.stop()}}),t,this)})))}}]),t}(),pz=function(){function t(){s(this,t)}return h(t,null,[{key:"generateSuccessMessage",value:function(t){return{blob:(null==t?void 0:t.data)instanceof Blob?null==t?void 0:t.data:null,data:JSON.stringify(null!=t?t:""),success:!0}}},{key:"generateFailureMessage",value:function(t){return(null==t?void 0:t.toJSON)&&delete t.toJSON,{error:JSON.stringify(null!=t?t:""),success:!1}}}]),t}(),bz=function(){function t(){s(this,t)}return h(t,null,[{key:"removeAuthorizationCode",value:function(){var t=location.href;history.pushState({},document.title,t.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(t){var e;return null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:""}},{key:"setPKCE",value:function(t,e){sessionStorage.setItem(t,e)}},{key:"setSignOutURL",value:function(t){sessionStorage.setItem(BM,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(BM))&&void 0!==t?t:""}},{key:"removePKCE",value:function(t){sessionStorage.removeItem(t)}},{key:"canContinueSignIn",value:function(e,n){return!(e&&!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return t.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!t.hasErrorInURL()&&!t.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var t=sessionStorage.getItem(cz),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!ej.isSignOutSuccessful(window.location.href)){t.next=6;break}return e=window.location.href.split("?")[0],history.pushState({},document.title,e),t.next=5,ej.clearUserSessionData();case 5:return t.abrupt("return",!0);case 6:return t.abrupt("return",!1);case 7:case"end":return t.stop()}}),t)})))}},{key:"didSignOutFail",value:function(){if(ej.didSignOutFail(window.location.href)){var t=new URL(window.location.href),e=t.searchParams.get(oz),n=t.searchParams.get(lz),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=e?e:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var t,e=new URL(window.location.href).searchParams.get("state");return null!==(t=null==e?void 0:e.includes(iz))&&void 0!==t&&t}},{key:"hasAuthSearchParamsInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,e=/[?&]code=[^&]+/;return e.test(t)}},{key:"hasErrorInURL",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,e=new URL(t);return!!e.searchParams.get(oz)&&e.searchParams.get(sz)!==QM}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem(az);return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem(az,JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=null!=t?t:3e3,e.next=3,new Promise((function(t){return setTimeout(t,1e3*n)}));case 3:case"end":return e.stop()}}),e)})))}}]),t}(),Zz=(Oj=function(t,e,n,r,i,c,a){Tj=t,wj=e,Fj=n,jj=c,zj=i,Ej=a,(Mj=r)>-1&&Aj(),zj>-1&&(i=setInterval((function(){$j()}),1e3*zj))},Aj=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n,r,i;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var r,i,c,o,l;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Fj();case 2:r=e.sent,Boolean(Tj)&&Boolean(r)&&(i="".concat(Tj," ").concat(r),c=document.getElementById(ez),o=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(l=o.contentWindow)||l.postMessage(i,wj));case 4:case"end":return e.stop()}}),e)})))},wj&&Tj&&jj){t.next=3;break}return t.abrupt("return");case 3:n="opIFrame",i=document.getElementById(ez),(null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=wj+"?client_id="+Tj+"&redirect_uri="+jj,Bj=setInterval(r,1e3*Mj),qj();case 9:case"end":return t.stop()}}),t)})))},_j=function(){clearInterval(Bj),clearInterval(void 0)},qj=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=wj)&&!((null==r?void 0:r.indexOf(t.origin))<0)&&(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)!==Uj){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==t.data){n.next=6;break}n.next=13;break;case 6:if("error"!==t.data){n.next=12;break}return n.next=9,Pj();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&$j();case 13:case"end":return n.stop()}}),n)})))}),!1)},$j=function(){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=document.getElementById(ez),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(nz),!bz.canSendPromptNoneRequest()){e.next=10;break}return bz.setPromptNoneRequestSent(!0),c=function t(e){var n,r,i;(null===(n=null==e?void 0:e.data)||void 0===n?void 0:n.type)===Uj&&(Dj(null!==(i=null===(r=null==e?void 0:e.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",t))},Qj!==t.Storage.BrowserMemory&&Qj!==t.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),e.next=8,Ej({prompt:"none",responseMode:"query",state:rz});case 8:o=e.sent,i.src=o;case 10:case"end":return e.stop()}}),e)})))},tz=function(e){return TM(void 0,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d,h,m;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(sz),o=new URL(window.location.href).searchParams.get(PM),l=window.parent.parent,null===c||!c.includes(rz)&&!c.includes(iz)){n.next=48;break}if(null===(u=new URL(window.location.href).searchParams.get("code"))||0===u.length){n.next=32;break}if(!c.includes(iz)){n.next=15;break}return s={data:{code:u,sessionState:null!=o?o:"",state:c},type:Hj},sessionStorage.setItem(cz,"false"),l.postMessage(s,l.origin),bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,bz.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),Qj!==t.Storage.LocalStorage&&Qj!==t.Storage.SessionStorage){n.next=23;break}if(n.t0=e,!n.t0){n.next=21;break}return n.next=21,e(d);case 21:n.next=25;break;case 23:h={data:null!=d?d:"",type:Uj},null===(i=null===(r=null===window||void 0===window?void 0:window.parent)||void 0===r?void 0:r.parent)||void 0===i||i.postMessage(h);case 25:return bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,bz.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(iz)){n.next=40;break}return m={type:kj},window.parent.parent.postMessage(m,l.origin),bz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,bz.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return bz.setPromptNoneRequestSent(!1),n.next=43,Pj();case 43:return l.location.href=n.sent,window.location.href="about:blank",n.next=47,bz.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o,l;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",ez),c.style.display="none",o=!1,c.onload=function(){var t,e,n,r,i=null==(c=document.getElementById(ez))?void 0:c.contentDocument,a=null==i?void 0:i.createElement("iframe");a&&(a.setAttribute("id","opIFrame"),a.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",nz),l.style.display="none"),a&&(null===(e=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.body)||void 0===e||e.appendChild(a)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),o=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),Pj=t,Qj=e,Dj=n,l=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 10:if(!1!==o){r.next=15;break}return r.next=13,l();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:Oj,receivePromptNoneResponse:tz,reset:_j});case 16:case"end":return r.stop()}}),r)})))}),yz={exports:{}},Xz=function(t,e){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return t.apply(e,n)}},fz=Xz,Iz=Object.prototype.toString;function Gz(t){return Array.isArray(t)}function Vz(t){return void 0===t}function Wz(t){return"[object ArrayBuffer]"===Iz.call(t)}function vz(t){return null!==t&&"object"===o(t)}function gz(t){if("[object Object]"!==Iz.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function Sz(t){return"[object Function]"===Iz.call(t)}function Yz(t,e){if(null!=t)if("object"!==o(t)&&(t=[t]),Gz(t))for(var n=0,r=t.length;n<r;n++)e.call(null,t[n],n,t);else for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.call(null,t[i],i,t)}var Rz={isArray:Gz,isArrayBuffer:Wz,isBuffer:function(t){return null!==t&&!Vz(t)&&null!==t.constructor&&!Vz(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"[object FormData]"===Iz.call(t)},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&Wz(t.buffer)},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:vz,isPlainObject:gz,isUndefined:Vz,isDate:function(t){return"[object Date]"===Iz.call(t)},isFile:function(t){return"[object File]"===Iz.call(t)},isBlob:function(t){return"[object Blob]"===Iz.call(t)},isFunction:Sz,isStream:function(t){return vz(t)&&Sz(t.pipe)},isURLSearchParams:function(t){return"[object URLSearchParams]"===Iz.call(t)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Yz,merge:function t(){var e={};function n(n,r){gz(e[r])&&gz(n)?e[r]=t(e[r],n):gz(n)?e[r]=t({},n):Gz(n)?e[r]=n.slice():e[r]=n}for(var r=0,i=arguments.length;r<i;r++)Yz(arguments[r],n);return e},extend:function(t,e,n){return Yz(e,(function(e,r){t[r]=n&&"function"==typeof e?fz(e,n):e})),t},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},stripBOM:function(t){return 65279===t.charCodeAt(0)&&(t=t.slice(1)),t}},Kz=Rz;function Lz(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Jz=function(t,e,n){if(!e)return t;var r;if(n)r=n(e);else if(Kz.isURLSearchParams(e))r=e.toString();else{var i=[];Kz.forEach(e,(function(t,e){null!=t&&(Kz.isArray(t)?e+="[]":t=[t],Kz.forEach(t,(function(t){Kz.isDate(t)?t=t.toISOString():Kz.isObject(t)&&(t=JSON.stringify(t)),i.push(Lz(e)+"="+Lz(t))})))})),r=i.join("&")}if(r){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+r}return t},Nz=Rz;function xz(){this.handlers=[]}xz.prototype.use=function(t,e,n){return this.handlers.push({fulfilled:t,rejected:e,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},xz.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},xz.prototype.forEach=function(t){Nz.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var Hz=xz,kz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function Cz(){throw new Error("setTimeout has not been defined")}function Uz(){throw new Error("clearTimeout has not been defined")}var Tz=Cz,wz=Uz;function Fz(t){if(Tz===setTimeout)return setTimeout(t,0);if((Tz===Cz||!Tz)&&setTimeout)return Tz=setTimeout,setTimeout(t,0);try{return Tz(t,0)}catch(e){try{return Tz.call(null,t,0)}catch(e){return Tz.call(this,t,0)}}}"function"==typeof kz.setTimeout&&(Tz=setTimeout),"function"==typeof kz.clearTimeout&&(wz=clearTimeout);var Mz,jz=[],zz=!1,Pz=-1;function Bz(){zz&&Mz&&(zz=!1,Mz.length?jz=Mz.concat(jz):Pz=-1,jz.length&&Qz())}function Qz(){if(!zz){var t=Fz(Bz);zz=!0;for(var e=jz.length;e;){for(Mz=jz,jz=[];++Pz<e;)Mz&&Mz[Pz].run();Pz=-1,e=jz.length}Mz=null,zz=!1,function(t){if(wz===clearTimeout)return clearTimeout(t);if((wz===Uz||!wz)&&clearTimeout)return wz=clearTimeout,clearTimeout(t);try{wz(t)}catch(e){try{return wz.call(null,t)}catch(e){return wz.call(this,t)}}}(t)}}function Dz(t,e){this.fun=t,this.array=e}Dz.prototype.run=function(){this.fun.apply(null,this.array)};function Ez(){}var Oz=Ez,Az=Ez,_z=Ez,qz=Ez,$z=Ez,tP=Ez,eP=Ez;var nP=kz.performance||{},rP=nP.now||nP.mozNow||nP.msNow||nP.oNow||nP.webkitNow||function(){return(new Date).getTime()};var iP=new Date;var cP={nextTick:function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];jz.push(new Dz(t,e)),1!==jz.length||zz||Fz(Qz)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Oz,addListener:Az,once:_z,off:qz,removeListener:$z,removeAllListeners:tP,emit:eP,binding:function(t){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(t){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(t){var e=.001*rP.call(nP),n=Math.floor(e),r=Math.floor(e%1*1e9);return t&&(n-=t[0],(r-=t[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-iP)/1e3}},aP=cP,oP=Rz,lP=function(t,e,n,r,i){return t.config=e,n&&(t.code=n),t.request=r,t.response=i,t.isAxiosError=!0,t.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code,status:this.response&&this.response.status?this.response.status:null}},t},uP={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},sP=lP,dP=function(t,e,n,r,i){var c=new Error(t);return sP(c,e,n,r,i)},hP=dP,mP=Rz,pP=mP.isStandardBrowserEnv()?{write:function(t,e,n,r,i,c){var a=[];a.push(t+"="+encodeURIComponent(e)),mP.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),mP.isString(r)&&a.push("path="+r),mP.isString(i)&&a.push("domain="+i),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},bP=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},ZP=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t},yP=Rz,XP=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],fP=Rz,IP=fP.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=r(window.location.href),function(e){var n=fP.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0};function GP(t){this.message=t}GP.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},GP.prototype.__CANCEL__=!0;var VP=GP,WP=Rz,vP=function(t,e,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?e(hP("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)},gP=pP,SP=Jz,YP=function(t,e){return t&&!bP(e)?ZP(t,e):e},RP=function(t){var e,n,r,i={};return t?(yP.forEach(t.split("\n"),(function(t){if(r=t.indexOf(":"),e=yP.trim(t.substr(0,r)).toLowerCase(),n=yP.trim(t.substr(r+1)),e){if(i[e]&&XP.indexOf(e)>=0)return;i[e]="set-cookie"===e?(i[e]?i[e]:[]).concat([n]):i[e]?i[e]+", "+n:n}})),i):i},KP=IP,LP=dP,JP=uP,NP=VP,xP=function(t){return new Promise((function(e,n){var r,i=t.data,c=t.headers,a=t.responseType;function o(){t.cancelToken&&t.cancelToken.unsubscribe(r),t.signal&&t.signal.removeEventListener("abort",r)}WP.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(t.auth){var u=t.auth.username||"",s=t.auth.password?unescape(encodeURIComponent(t.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+s)}var d=YP(t.baseURL,t.url);function h(){if(l){var r="getAllResponseHeaders"in l?RP(l.getAllResponseHeaders()):null,i={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:t,request:l};vP((function(t){e(t),o()}),(function(t){n(t),o()}),i),l=null}}if(l.open(t.method.toUpperCase(),SP(d,t.params,t.paramsSerializer),!0),l.timeout=t.timeout,"onloadend"in l?l.onloadend=h:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(h)},l.onabort=function(){l&&(n(LP("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(LP("Network Error",t,null,l)),l=null},l.ontimeout=function(){var e=t.timeout?"timeout of "+t.timeout+"ms exceeded":"timeout exceeded",r=t.transitional||JP;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(LP(e,t,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},WP.isStandardBrowserEnv()){var m=(t.withCredentials||KP(d))&&t.xsrfCookieName?gP.read(t.xsrfCookieName):void 0;m&&(c[t.xsrfHeaderName]=m)}"setRequestHeader"in l&&WP.forEach(c,(function(t,e){void 0===i&&"content-type"===e.toLowerCase()?delete c[e]:l.setRequestHeader(e,t)})),WP.isUndefined(t.withCredentials)||(l.withCredentials=!!t.withCredentials),a&&"json"!==a&&(l.responseType=t.responseType),"function"==typeof t.onDownloadProgress&&l.addEventListener("progress",t.onDownloadProgress),"function"==typeof t.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",t.onUploadProgress),(t.cancelToken||t.signal)&&(r=function(t){l&&(n(!t||t&&t.type?new NP("canceled"):t),l.abort(),l=null)},t.cancelToken&&t.cancelToken.subscribe(r),t.signal&&(t.signal.aborted?r():t.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},HP=Rz,kP=function(t,e){oP.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))},CP=lP,UP={"Content-Type":"application/x-www-form-urlencoded"};function TP(t,e){!HP.isUndefined(t)&&HP.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var wP,FP={transitional:uP,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==aP&&"[object process]"===Object.prototype.toString.call(aP))&&(wP=xP),wP),transformRequest:[function(t,e){return kP(e,"Accept"),kP(e,"Content-Type"),HP.isFormData(t)||HP.isArrayBuffer(t)||HP.isBuffer(t)||HP.isStream(t)||HP.isFile(t)||HP.isBlob(t)?t:HP.isArrayBufferView(t)?t.buffer:HP.isURLSearchParams(t)?(TP(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):HP.isObject(t)||e&&"application/json"===e["Content-Type"]?(TP(e,"application/json"),function(t,e,n){if(HP.isString(t))try{return(e||JSON.parse)(t),HP.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||FP.transitional,n=e&&e.silentJSONParsing,r=e&&e.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&HP.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(i){if("SyntaxError"===t.name)throw CP(t,this,"E_JSON_PARSE");throw t}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};HP.forEach(["delete","get","head"],(function(t){FP.headers[t]={}})),HP.forEach(["post","put","patch"],(function(t){FP.headers[t]=HP.merge(UP)}));var MP=FP,jP=Rz,zP=MP,PP=function(t){return!(!t||!t.__CANCEL__)},BP=Rz,QP=function(t,e,n){var r=this||zP;return jP.forEach(n,(function(n){t=n.call(r,t,e)})),t},DP=PP,EP=MP,OP=VP;function AP(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new OP("canceled")}var _P=Rz,qP=function(t,e){e=e||{};var n={};function r(t,e){return _P.isPlainObject(t)&&_P.isPlainObject(e)?_P.merge(t,e):_P.isPlainObject(e)?_P.merge({},e):_P.isArray(e)?e.slice():e}function i(n){return _P.isUndefined(e[n])?_P.isUndefined(t[n])?void 0:r(void 0,t[n]):r(t[n],e[n])}function c(t){if(!_P.isUndefined(e[t]))return r(void 0,e[t])}function a(n){return _P.isUndefined(e[n])?_P.isUndefined(t[n])?void 0:r(void 0,t[n]):r(void 0,e[n])}function o(n){return n in e?r(t[n],e[n]):n in t?r(void 0,t[n]):void 0}var l={url:c,method:c,data:c,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o};return _P.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=l[t]||i,r=e(t);_P.isUndefined(r)&&e!==o||(n[t]=r)})),n},$P="0.26.1",tB=$P,eB={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){eB[t]=function(n){return o(n)===t||"a"+(e<1?"n ":" ")+t}}));var nB={};eB.transitional=function(t,e,n){function r(t,e){return"[Axios v"+tB+"] Transitional option '"+t+"'"+e+(n?". "+n:"")}return function(n,i,c){if(!1===t)throw new Error(r(i," has been removed"+(e?" in "+e:"")));return e&&!nB[i]&&(nB[i]=!0,console.warn(r(i," has been deprecated since v"+e+" and will be removed in the near future"))),!t||t(n,i,c)}};var rB={assertOptions:function(t,e,n){if("object"!==o(t))throw new TypeError("options must be an object");for(var r=Object.keys(t),i=r.length;i-- >0;){var c=r[i],a=e[c];if(a){var l=t[c],u=void 0===l||a(l,c,t);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:eB},iB=Rz,cB=Jz,aB=Hz,oB=function(t){return AP(t),t.headers=t.headers||{},t.data=QP.call(t,t.data,t.headers,t.transformRequest),t.headers=BP.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),BP.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||EP.adapter)(t).then((function(e){return AP(t),e.data=QP.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return DP(e)||(AP(t),e&&e.response&&(e.response.data=QP.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},lB=qP,uB=rB,sB=uB.validators;function dB(t){this.defaults=t,this.interceptors={request:new aB,response:new aB}}dB.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=lB(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var n=e.transitional;void 0!==n&&uB.assertOptions(n,{silentJSONParsing:sB.transitional(sB.boolean),forcedJSONParsing:sB.transitional(sB.boolean),clarifyTimeoutError:sB.transitional(sB.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(t){a.push(t.fulfilled,t.rejected)})),!i){var o=[oB,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(a),c=Promise.resolve(e);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=e;r.length;){var u=r.shift(),s=r.shift();try{l=u(l)}catch(t){s(t);break}}try{c=oB(l)}catch(t){return Promise.reject(t)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},dB.prototype.getUri=function(t){return t=lB(this.defaults,t),cB(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},iB.forEach(["delete","get","head","options"],(function(t){dB.prototype[t]=function(e,n){return this.request(lB(n||{},{method:t,url:e,data:(n||{}).data}))}})),iB.forEach(["post","put","patch"],(function(t){dB.prototype[t]=function(e,n,r){return this.request(lB(r||{},{method:t,url:e,data:n}))}}));var hB=dB,mB=VP;function pB(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;this.promise.then((function(t){if(n._listeners){var e,r=n._listeners.length;for(e=0;e<r;e++)n._listeners[e](t);n._listeners=null}})),this.promise.then=function(t){var e,r=new Promise((function(t){n.subscribe(t),e=t})).then(t);return r.cancel=function(){n.unsubscribe(e)},r},t((function(t){n.reason||(n.reason=new mB(t),e(n.reason))}))}pB.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},pB.prototype.subscribe=function(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]},pB.prototype.unsubscribe=function(t){if(this._listeners){var e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}},pB.source=function(){var t,e=new pB((function(e){t=e}));return{token:e,cancel:t}};var bB=pB,ZB=Rz,yB=Rz,XB=Xz,fB=hB,IB=qP;var GB=function t(e){var n=new fB(e),r=XB(fB.prototype.request,n);return yB.extend(r,fB.prototype,n),yB.extend(r,n),r.create=function(n){return t(IB(e,n))},r}(MP);GB.Axios=fB,GB.Cancel=VP,GB.CancelToken=bB,GB.isCancel=PP,GB.VERSION=$P,GB.all=function(t){return Promise.all(t)},GB.spread=function(t){return function(e){return t.apply(null,e)}},GB.isAxiosError=function(t){return ZB.isObject(t)&&!0===t.isAxiosError},yz.exports=GB,yz.exports.default=GB;var VB,WB=yz.exports;var vB=VB=function(){function t(){s(this,t),this.attachToken=function(){return Promise.resolve()},this.requestStartCallback=function(){return null},this.requestSuccessCallback=function(){return null},this.requestErrorCallback=function(){return null},this.requestFinishCallback=function(){return null},this.init=this.init.bind(this),this.setHttpRequestErrorCallback=this.setHttpRequestErrorCallback.bind(this),this.setHttpRequestFinishCallback=this.setHttpRequestFinishCallback.bind(this),this.setHttpRequestStartCallback=this.setHttpRequestStartCallback.bind(this),this.setHttpRequestSuccessCallback=this.setHttpRequestSuccessCallback.bind(this)}return h(t,[{key:"requestHandler",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.attachToken(t);case 2:return(null==t?void 0:t.shouldEncodeToFormData)&&(n=null==t?void 0:t.data,r=new FormData,Object.keys(n).forEach((function(t){r.append(t,n[t])})),t.data=r),t.startTimeInMs=(new Date).getTime(),VB.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 6:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw VB.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"successHandler",value:function(t){return VB.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(t),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),t}},{key:"init",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1?arguments[1]:void 0;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:VB.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){VB.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){VB.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:VB.DEFAULT_HANDLER_DISABLE_TIMEOUT;VB.isHandlerEnabled=!1,setTimeout((function(){VB.isHandlerEnabled=!0}),t)}},{key:"setHttpRequestStartCallback",value:function(t){this.requestStartCallback=t}},{key:"setHttpRequestSuccessCallback",value:function(t){this.requestSuccessCallback=t}},{key:"setHttpRequestErrorCallback",value:function(t){this.requestErrorCallback=t}},{key:"setHttpRequestFinishCallback",value:function(t){this.requestFinishCallback=t}}],[{key:"getInstance",value:function(){var t=this;return this.axiosInstance||(this.axiosInstance=WB.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new VB),this.axiosInstance.interceptors.request.use((function(e){return TM(t,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.clientInstance.requestHandler(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))})),this.axiosInstance.interceptors.response.use((function(e){return t.clientInstance.successHandler(e)}),(function(e){return t.clientInstance.errorHandler(e)})),this.axiosInstance.all=WB.all,this.axiosInstance.spread=WB.spread,this.axiosInstance.init=this.clientInstance.init,this.axiosInstance.enableHandler=this.clientInstance.enableHandler,this.axiosInstance.disableHandler=this.clientInstance.disableHandler,this.axiosInstance.disableHandlerWithTimeout=this.clientInstance.disableHandlerWithTimeout,this.axiosInstance.setHttpRequestStartCallback=this.clientInstance.setHttpRequestStartCallback,this.axiosInstance.setHttpRequestSuccessCallback=this.clientInstance.setHttpRequestSuccessCallback,this.axiosInstance.setHttpRequestErrorCallback=this.clientInstance.setHttpRequestErrorCallback,this.axiosInstance.setHttpRequestFinishCallback=this.clientInstance.setHttpRequestFinishCallback),this.axiosInstance}}]),t}();vB.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,vB=VB=function(t,e,n,r){var i,c=arguments.length,a=c<3?e:null===r?r=Object.getOwnPropertyDescriptor(e,n):r;if("object"===("undefined"==typeof Reflect?"undefined":o(Reflect))&&"function"==typeof Reflect.decorate)a=Reflect.decorate(t,e,n,r);else for(var l=t.length-1;l>=0;l--)(i=t[l])&&(a=(c<3?i(a):c>3?i(e,n,a):i(e,n))||a);return c>3&&a&&Object.defineProperty(e,n,a),a}([function(t){}],vB);var gB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=localStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:localStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),SB=function(){function t(){s(this,t),this._data=new Map}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(t,e);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(t){var e,n;return TM(this,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(e=this._data)||void 0===e?void 0:e.get(t))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this._data.delete(t);case 1:case"end":return e.stop()}}),e,this)})))}}]),t}(),YB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(t,e);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(e=sessionStorage.getItem(t))&&void 0!==e?e:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(t){return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:sessionStorage.removeItem(t);case 1:case"end":return e.stop()}}),e)})))}}]),t}(),RB=[],KB=[],LB="undefined"!=typeof Uint8Array?Uint8Array:Array,JB=!1;function NB(){JB=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)RB[e]=t[e],KB[t.charCodeAt(e)]=e;KB["-".charCodeAt(0)]=62,KB["_".charCodeAt(0)]=63}function xB(t,e,n){for(var r,i,c=[],a=e;a<n;a+=3)r=(t[a]<<16)+(t[a+1]<<8)+t[a+2],c.push(RB[(i=r)>>18&63]+RB[i>>12&63]+RB[i>>6&63]+RB[63&i]);return c.join("")}function HB(t){var e;JB||NB();for(var n=t.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(xB(t,o,o+a>l?l:o+a));return 1===r?(e=t[n-1],i+=RB[e>>2],i+=RB[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=RB[e>>10],i+=RB[e>>4&63],i+=RB[e<<2&63],i+="="),c.push(i),c.join("")}function kB(t,e,n,r,i){var c,a,o=8*i-r-1,l=(1<<o)-1,u=l>>1,s=-7,d=n?i-1:0,h=n?-1:1,m=t[e+d];for(d+=h,c=m&(1<<-s)-1,m>>=-s,s+=o;s>0;c=256*c+t[e+d],d+=h,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=r;s>0;a=256*a+t[e+d],d+=h,s-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(m?-1:1);a+=Math.pow(2,r),c-=u}return(m?-1:1)*a*Math.pow(2,c-r)}function CB(t,e,n,r,i,c){var a,o,l,u=8*c-i-1,s=(1<<u)-1,d=s>>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,m=r?0:c-1,p=r?1:-1,b=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=s):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+d>=1?h/l:h*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=s?(o=0,a=s):a+d>=1?(o=(e*l-1)*Math.pow(2,i),a+=d):(o=e*Math.pow(2,d-1)*Math.pow(2,i),a=0));i>=8;t[n+m]=255&o,m+=p,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;t[n+m]=255&a,m+=p,a/=256,u-=8);t[n+m-p]|=128*b}var UB={}.toString,TB=Array.isArray||function(t){return"[object Array]"==UB.call(t)};jB.TYPED_ARRAY_SUPPORT=void 0===kz.TYPED_ARRAY_SUPPORT||kz.TYPED_ARRAY_SUPPORT;var wB=FB();function FB(){return jB.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function MB(t,e){if(FB()<e)throw new RangeError("Invalid typed array length");return jB.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=jB.prototype:(null===t&&(t=new jB(e)),t.length=e),t}function jB(t,e,n){if(!(jB.TYPED_ARRAY_SUPPORT||this instanceof jB))return new jB(t,e,n);if("number"==typeof t){if("string"==typeof e)throw new Error("If encoding is specified then the first argument must be a string");return BB(this,t)}return zB(this,t,e,n)}function zB(t,e,n,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer?function(t,e,n,r){if(e.byteLength,n<0||e.byteLength<n)throw new RangeError("'offset' is out of bounds");if(e.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");e=void 0===n&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,n):new Uint8Array(e,n,r);jB.TYPED_ARRAY_SUPPORT?(t=e).__proto__=jB.prototype:t=QB(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!jB.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|OB(e,n),i=(t=MB(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if(EB(e)){var n=0|DB(e.length);return 0===(t=MB(t,n)).length||e.copy(t,0,0,n),t}if(e){if("undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return"number"!=typeof e.length||(r=e.length)!=r?MB(t,0):QB(t,e);if("Buffer"===e.type&&TB(e.data))return QB(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function PB(t){if("number"!=typeof t)throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative')}function BB(t,e){if(PB(e),t=MB(t,e<0?0:0|DB(e)),!jB.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function QB(t,e){var n=e.length<0?0:0|DB(e.length);t=MB(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function DB(t){if(t>=FB())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+FB().toString(16)+" bytes");return 0|t}function EB(t){return!(null==t||!t._isBuffer)}function OB(t,e){if(EB(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var n=t.length;if(0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return VQ(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return WQ(t).length;default:if(r)return VQ(t).length;e=(""+e).toLowerCase(),r=!0}}function AB(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return dQ(this,e,n);case"utf8":case"utf-8":return oQ(this,e,n);case"ascii":return uQ(this,e,n);case"latin1":case"binary":return sQ(this,e,n);case"base64":return aQ(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return hQ(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function _B(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function qB(t,e,n,r,i){if(0===t.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(i)return-1;n=t.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof e&&(e=jB.from(e,r)),EB(e))return 0===e.length?-1:$B(t,e,n,r,i);if("number"==typeof e)return e&=255,jB.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):$B(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function $B(t,e,n,r,i){var c,a=1,o=t.length,l=e.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(t.length<2||e.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var s=-1;for(c=n;c<o;c++)if(u(t,c)===u(e,-1===s?0:c-s)){if(-1===s&&(s=c),c-s+1===l)return s*a}else-1!==s&&(c-=c-s),s=-1}else for(n+l>o&&(n=o-l),c=n;c>=0;c--){for(var d=!0,h=0;h<l;h++)if(u(t,c+h)!==u(e,h)){d=!1;break}if(d)return c}return-1}function tQ(t,e,n,r){n=Number(n)||0;var i=t.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=e.length;if(c%2!=0)throw new TypeError("Invalid hex string");r>c/2&&(r=c/2);for(var a=0;a<r;++a){var o=parseInt(e.substr(2*a,2),16);if(isNaN(o))return a;t[n+a]=o}return a}function eQ(t,e,n,r){return vQ(VQ(e,t.length-n),t,n,r)}function nQ(t,e,n,r){return vQ(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function rQ(t,e,n,r){return nQ(t,e,n,r)}function iQ(t,e,n,r){return vQ(WQ(e),t,n,r)}function cQ(t,e,n,r){return vQ(function(t,e){for(var n,r,i,c=[],a=0;a<t.length&&!((e-=2)<0);++a)r=(n=t.charCodeAt(a))>>8,i=n%256,c.push(i),c.push(r);return c}(e,t.length-n),t,n,r)}function aQ(t,e,n){return 0===e&&n===t.length?HB(t):HB(t.slice(e,n))}function oQ(t,e,n){n=Math.min(t.length,n);for(var r=[],i=e;i<n;){var c,a,o,l,u=t[i],s=null,d=u>239?4:u>223?3:u>191?2:1;if(i+d<=n)switch(d){case 1:u<128&&(s=u);break;case 2:128==(192&(c=t[i+1]))&&(l=(31&u)<<6|63&c)>127&&(s=l);break;case 3:c=t[i+1],a=t[i+2],128==(192&c)&&128==(192&a)&&(l=(15&u)<<12|(63&c)<<6|63&a)>2047&&(l<55296||l>57343)&&(s=l);break;case 4:c=t[i+1],a=t[i+2],o=t[i+3],128==(192&c)&&128==(192&a)&&128==(192&o)&&(l=(15&u)<<18|(63&c)<<12|(63&a)<<6|63&o)>65535&&l<1114112&&(s=l)}null===s?(s=65533,d=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=d}return function(t){var e=t.length;if(e<=lQ)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=lQ));return n}(r)}jB.poolSize=8192,jB._augment=function(t){return t.__proto__=jB.prototype,t},jB.from=function(t,e,n){return zB(null,t,e,n)},jB.TYPED_ARRAY_SUPPORT&&(jB.prototype.__proto__=Uint8Array.prototype,jB.__proto__=Uint8Array),jB.alloc=function(t,e,n){return function(t,e,n,r){return PB(e),e<=0?MB(t,e):void 0!==n?"string"==typeof r?MB(t,e).fill(n,r):MB(t,e).fill(n):MB(t,e)}(null,t,e,n)},jB.allocUnsafe=function(t){return BB(null,t)},jB.allocUnsafeSlow=function(t){return BB(null,t)},jB.isBuffer=gQ,jB.compare=function(t,e){if(!EB(t)||!EB(e))throw new TypeError("Arguments must be Buffers");if(t===e)return 0;for(var n=t.length,r=e.length,i=0,c=Math.min(n,r);i<c;++i)if(t[i]!==e[i]){n=t[i],r=e[i];break}return n<r?-1:r<n?1:0},jB.isEncoding=function(t){switch(String(t).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},jB.concat=function(t,e){if(!TB(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return jB.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=jB.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!EB(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},jB.byteLength=OB,jB.prototype._isBuffer=!0,jB.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;e<t;e+=2)_B(this,e,e+1);return this},jB.prototype.swap32=function(){var t=this.length;if(t%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var e=0;e<t;e+=4)_B(this,e,e+3),_B(this,e+1,e+2);return this},jB.prototype.swap64=function(){var t=this.length;if(t%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var e=0;e<t;e+=8)_B(this,e,e+7),_B(this,e+1,e+6),_B(this,e+2,e+5),_B(this,e+3,e+4);return this},jB.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?oQ(this,0,t):AB.apply(this,arguments)},jB.prototype.equals=function(t){if(!EB(t))throw new TypeError("Argument must be a Buffer");return this===t||0===jB.compare(this,t)},jB.prototype.inspect=function(){var t="";return this.length>0&&(t=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(t+=" ... ")),"<Buffer "+t+">"},jB.prototype.compare=function(t,e,n,r,i){if(!EB(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),e<0||n>t.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&e>=n)return 0;if(r>=i)return-1;if(e>=n)return 1;if(this===t)return 0;for(var c=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(e>>>=0),o=Math.min(c,a),l=this.slice(r,i),u=t.slice(e,n),s=0;s<o;++s)if(l[s]!==u[s]){c=l[s],a=u[s];break}return c<a?-1:a<c?1:0},jB.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},jB.prototype.indexOf=function(t,e,n){return qB(this,t,e,n,!0)},jB.prototype.lastIndexOf=function(t,e,n){return qB(this,t,e,n,!1)},jB.prototype.write=function(t,e,n,r){if(void 0===e)r="utf8",n=this.length,e=0;else if(void 0===n&&"string"==typeof e)r=e,n=this.length,e=0;else{if(!isFinite(e))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");e|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-e;if((void 0===n||n>i)&&(n=i),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return tQ(this,t,e,n);case"utf8":case"utf-8":return eQ(this,t,e,n);case"ascii":return nQ(this,t,e,n);case"latin1":case"binary":return rQ(this,t,e,n);case"base64":return iQ(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return cQ(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},jB.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var lQ=4096;function uQ(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(127&t[i]);return r}function sQ(t,e,n){var r="";n=Math.min(t.length,n);for(var i=e;i<n;++i)r+=String.fromCharCode(t[i]);return r}function dQ(t,e,n){var r=t.length;(!e||e<0)&&(e=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=e;c<n;++c)i+=GQ(t[c]);return i}function hQ(t,e,n){for(var r=t.slice(e,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function mQ(t,e,n){if(t%1!=0||t<0)throw new RangeError("offset is not uint");if(t+e>n)throw new RangeError("Trying to access beyond buffer length")}function pQ(t,e,n,r,i,c){if(!EB(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||e<c)throw new RangeError('"value" argument is out of bounds');if(n+r>t.length)throw new RangeError("Index out of range")}function bQ(t,e,n,r){e<0&&(e=65535+e+1);for(var i=0,c=Math.min(t.length-n,2);i<c;++i)t[n+i]=(e&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function ZQ(t,e,n,r){e<0&&(e=4294967295+e+1);for(var i=0,c=Math.min(t.length-n,4);i<c;++i)t[n+i]=e>>>8*(r?i:3-i)&255}function yQ(t,e,n,r,i,c){if(n+r>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function XQ(t,e,n,r,i){return i||yQ(t,0,n,4),CB(t,e,n,r,23,4),n+4}function fQ(t,e,n,r,i){return i||yQ(t,0,n,8),CB(t,e,n,r,52,8),n+8}jB.prototype.slice=function(t,e){var n,r=this.length;if((t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e<t&&(e=t),jB.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=jB.prototype;else{var i=e-t;n=new jB(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},jB.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},jB.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},jB.prototype.readUInt8=function(t,e){return e||mQ(t,1,this.length),this[t]},jB.prototype.readUInt16LE=function(t,e){return e||mQ(t,2,this.length),this[t]|this[t+1]<<8},jB.prototype.readUInt16BE=function(t,e){return e||mQ(t,2,this.length),this[t]<<8|this[t+1]},jB.prototype.readUInt32LE=function(t,e){return e||mQ(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},jB.prototype.readUInt32BE=function(t,e){return e||mQ(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},jB.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*e)),r},jB.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||mQ(t,e,this.length);for(var r=e,i=1,c=this[t+--r];r>0&&(i*=256);)c+=this[t+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*e)),c},jB.prototype.readInt8=function(t,e){return e||mQ(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},jB.prototype.readInt16LE=function(t,e){e||mQ(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},jB.prototype.readInt16BE=function(t,e){e||mQ(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},jB.prototype.readInt32LE=function(t,e){return e||mQ(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},jB.prototype.readInt32BE=function(t,e){return e||mQ(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},jB.prototype.readFloatLE=function(t,e){return e||mQ(t,4,this.length),kB(this,t,!0,23,4)},jB.prototype.readFloatBE=function(t,e){return e||mQ(t,4,this.length),kB(this,t,!1,23,4)},jB.prototype.readDoubleLE=function(t,e){return e||mQ(t,8,this.length),kB(this,t,!0,52,8)},jB.prototype.readDoubleBE=function(t,e){return e||mQ(t,8,this.length),kB(this,t,!1,52,8)},jB.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||pQ(this,t,e,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[e]=255&t;++c<n&&(i*=256);)this[e+c]=t/i&255;return e+n},jB.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||pQ(this,t,e,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[e+i]=255&t;--i>=0&&(c*=256);)this[e+i]=t/c&255;return e+n},jB.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,1,255,0),jB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},jB.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,65535,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):bQ(this,t,e,!0),e+2},jB.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,65535,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):bQ(this,t,e,!1),e+2},jB.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,4294967295,0),jB.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):ZQ(this,t,e,!0),e+4},jB.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,4294967295,0),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ZQ(this,t,e,!1),e+4},jB.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);pQ(this,t,e,n,i-1,-i)}var c=0,a=1,o=0;for(this[e]=255&t;++c<n&&(a*=256);)t<0&&0===o&&0!==this[e+c-1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},jB.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);pQ(this,t,e,n,i-1,-i)}var c=n-1,a=1,o=0;for(this[e+c]=255&t;--c>=0&&(a*=256);)t<0&&0===o&&0!==this[e+c+1]&&(o=1),this[e+c]=(t/a>>0)-o&255;return e+n},jB.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,1,127,-128),jB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},jB.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,32767,-32768),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):bQ(this,t,e,!0),e+2},jB.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,2,32767,-32768),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):bQ(this,t,e,!1),e+2},jB.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,2147483647,-2147483648),jB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):ZQ(this,t,e,!0),e+4},jB.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||pQ(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),jB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):ZQ(this,t,e,!1),e+4},jB.prototype.writeFloatLE=function(t,e,n){return XQ(this,t,e,!0,n)},jB.prototype.writeFloatBE=function(t,e,n){return XQ(this,t,e,!1,n)},jB.prototype.writeDoubleLE=function(t,e,n){return fQ(this,t,e,!0,n)},jB.prototype.writeDoubleBE=function(t,e,n){return fQ(this,t,e,!1,n)},jB.prototype.copy=function(t,e,n,r){if(n||(n=0),r||0===r||(r=this.length),e>=t.length&&(e=t.length),e||(e=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===t.length||0===this.length)return 0;if(e<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),t.length-e<r-n&&(r=t.length-e+n);var i,c=r-n;if(this===t&&n<e&&e<r)for(i=c-1;i>=0;--i)t[i+e]=this[i+n];else if(c<1e3||!jB.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)t[i+e]=this[i+n];else Uint8Array.prototype.set.call(t,this.subarray(n,n+c),e);return c},jB.prototype.fill=function(t,e,n,r){if("string"==typeof t){if("string"==typeof e?(r=e,e=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===t.length){var i=t.charCodeAt(0);i<256&&(t=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!jB.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof t&&(t&=255);if(e<0||this.length<e||this.length<n)throw new RangeError("Out of range index");if(n<=e)return this;var c;if(e>>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(c=e;c<n;++c)this[c]=t;else{var a=EB(t)?t:VQ(new jB(t,r).toString()),o=a.length;for(c=0;c<n-e;++c)this[c+e]=a[c%o]}return this};var IQ=/[^+\/0-9A-Za-z-_]/g;function GQ(t){return t<16?"0"+t.toString(16):t.toString(16)}function VQ(t,e){var n;e=e||1/0;for(var r=t.length,i=null,c=[],a=0;a<r;++a){if((n=t.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(e-=3)>-1&&c.push(239,191,189);continue}if(a+1===r){(e-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(e-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(e-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((e-=1)<0)break;c.push(n)}else if(n<2048){if((e-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;c.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function WQ(t){return function(t){var e,n,r,i,c,a;JB||NB();var o=t.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===t[o-2]?2:"="===t[o-1]?1:0,a=new LB(3*o/4-c),r=c>0?o-4:o;var l=0;for(e=0,n=0;e<r;e+=4,n+=3)i=KB[t.charCodeAt(e)]<<18|KB[t.charCodeAt(e+1)]<<12|KB[t.charCodeAt(e+2)]<<6|KB[t.charCodeAt(e+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=KB[t.charCodeAt(e)]<<2|KB[t.charCodeAt(e+1)]>>4,a[l++]=255&i):1===c&&(i=KB[t.charCodeAt(e)]<<10|KB[t.charCodeAt(e+1)]<<4|KB[t.charCodeAt(e+2)]>>2,a[l++]=i>>8&255,a[l++]=255&i),a}(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(IQ,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function vQ(t,e,n,r){for(var i=0;i<r&&!(i+n>=e.length||i>=t.length);++i)e[i+n]=t[i];return i}function gQ(t){return null!=t&&(!!t._isBuffer||SQ(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&SQ(t.slice(0,0))}(t))}function SQ(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var YQ=Object.freeze({__proto__:null,Buffer:jB,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),jB.alloc(+t)},isBuffer:gQ,kMaxLength:wB}),RQ={exports:{}},KQ={},LQ={};Object.defineProperty(LQ,"__esModule",{value:!0}),LQ.default=function(t){var e=t.length,n=e%4;if(!n)return t;var r=e,i=4-n,c=e+i,a=jB.alloc(c);for(a.write(t);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(KQ,"__esModule",{value:!0});var JQ=LQ;function NQ(t,e){return void 0===e&&(e="utf8"),jB.isBuffer(t)?HQ(t.toString("base64")):HQ(jB.from(t,e).toString("base64"))}function xQ(t){return t=t.toString(),JQ.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function HQ(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var kQ,CQ=NQ;CQ.encode=NQ,CQ.decode=function(t,e){return void 0===e&&(e="utf8"),jB.from(xQ(t),"base64").toString(e)},CQ.toBase64=xQ,CQ.fromBase64=HQ,CQ.toBuffer=function(t){return jB.from(xQ(t),"base64")},KQ.default=CQ,(kQ=RQ).exports=KQ.default,kQ.exports.default=kQ.exports;var UQ=RQ.exports,TQ={exports:{}};!function(t){!function(e,n){var r={};!function(t){t.__esModule=!0,t.digestLength=32,t.blockSize=64;var e=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function n(t,n,r,i,c){for(var a,o,l,u,s,d,h,m,p,b,Z,y,X;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],s=n[4],d=n[5],h=n[6],m=n[7],b=0;b<16;b++)Z=i+4*b,t[b]=(255&r[Z])<<24|(255&r[Z+1])<<16|(255&r[Z+2])<<8|255&r[Z+3];for(b=16;b<64;b++)y=((p=t[b-2])>>>17|p<<15)^(p>>>19|p<<13)^p>>>10,X=((p=t[b-15])>>>7|p<<25)^(p>>>18|p<<14)^p>>>3,t[b]=(y+t[b-7]|0)+(X+t[b-16]|0);for(b=0;b<64;b++)y=(((s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7))+(s&d^~s&h)|0)+(m+(e[b]+t[b]|0)|0)|0,X=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,m=h,h=d,d=s,s=u+y|0,u=l,l=o,o=a,a=y+X|0;n[0]+=a,n[1]+=o,n[2]+=l,n[3]+=u,n[4]+=s,n[5]+=d,n[6]+=h,n[7]+=m,i+=64,c-=64}return i}var r=function(){function e(){this.digestLength=t.digestLength,this.blockSize=t.blockSize,this.state=new Int32Array(8),this.temp=new Int32Array(64),this.buffer=new Uint8Array(128),this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this.reset()}return e.prototype.reset=function(){return this.state[0]=1779033703,this.state[1]=3144134277,this.state[2]=1013904242,this.state[3]=2773480762,this.state[4]=1359893119,this.state[5]=2600822924,this.state[6]=528734635,this.state[7]=1541459225,this.bufferLength=0,this.bytesHashed=0,this.finished=!1,this},e.prototype.clean=function(){for(var t=0;t<this.buffer.length;t++)this.buffer[t]=0;for(t=0;t<this.temp.length;t++)this.temp[t]=0;this.reset()},e.prototype.update=function(t,e){if(void 0===e&&(e=t.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=e,this.bufferLength>0){for(;this.bufferLength<64&&e>0;)this.buffer[this.bufferLength++]=t[r++],e--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(e>=64&&(r=n(this.temp,this.state,t,r,e),e%=64);e>0;)this.buffer[this.bufferLength++]=t[r++],e--;return this},e.prototype.finish=function(t){if(!this.finished){var e=this.bytesHashed,r=this.bufferLength,i=e/536870912|0,c=e<<3,a=e%64<56?64:128;this.buffer[r]=128;for(var o=r+1;o<a-8;o++)this.buffer[o]=0;this.buffer[a-8]=i>>>24&255,this.buffer[a-7]=i>>>16&255,this.buffer[a-6]=i>>>8&255,this.buffer[a-5]=i>>>0&255,this.buffer[a-4]=c>>>24&255,this.buffer[a-3]=c>>>16&255,this.buffer[a-2]=c>>>8&255,this.buffer[a-1]=c>>>0&255,n(this.temp,this.state,this.buffer,0,a),this.finished=!0}for(o=0;o<8;o++)t[4*o+0]=this.state[o]>>>24&255,t[4*o+1]=this.state[o]>>>16&255,t[4*o+2]=this.state[o]>>>8&255,t[4*o+3]=this.state[o]>>>0&255;return this},e.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},e.prototype._saveState=function(t){for(var e=0;e<this.state.length;e++)t[e]=this.state[e]},e.prototype._restoreState=function(t,e){for(var n=0;n<this.state.length;n++)this.state[n]=t[n];this.bytesHashed=e,this.finished=!1,this.bufferLength=0},e}();t.Hash=r;var i=function(){function t(t){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var e=new Uint8Array(this.blockSize);if(t.length>this.blockSize)(new r).update(t).finish(e).clean();else for(var n=0;n<t.length;n++)e[n]=t[n];for(n=0;n<e.length;n++)e[n]^=54;this.inner.update(e);for(n=0;n<e.length;n++)e[n]^=106;this.outer.update(e),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<e.length;n++)e[n]=0}return t.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},t.prototype.clean=function(){for(var t=0;t<this.istate.length;t++)this.ostate[t]=this.istate[t]=0;this.inner.clean(),this.outer.clean()},t.prototype.update=function(t){return this.inner.update(t),this},t.prototype.finish=function(t){return this.outer.finished?this.outer.finish(t):(this.inner.finish(t),this.outer.update(t,this.digestLength).finish(t)),this},t.prototype.digest=function(){var t=new Uint8Array(this.digestLength);return this.finish(t),t},t}();function c(t){var e=(new r).update(t),n=e.digest();return e.clean(),n}function a(t,e){var n=new i(t).update(e),r=n.digest();return n.clean(),r}function o(t,e,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");e.reset(),i>1&&e.update(t),n&&e.update(n),e.update(r),e.finish(t),r[0]++}t.HMAC=i,t.hash=c,t.default=c,t.hmac=a;var l=new Uint8Array(t.digestLength);function u(t,e,n,r){void 0===e&&(e=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=a(e,t),s=new i(u),d=new Uint8Array(s.digestLength),h=d.length,m=new Uint8Array(r),p=0;p<r;p++)h===d.length&&(o(d,s,n,c),h=0),m[p]=d[h++];return s.clean(),d.fill(0),c.fill(0),m}function s(t,e,n,r){for(var c=new i(t),a=c.digestLength,o=new Uint8Array(4),l=new Uint8Array(a),u=new Uint8Array(a),s=new Uint8Array(r),d=0;d*a<r;d++){var h=d+1;o[0]=h>>>24&255,o[1]=h>>>16&255,o[2]=h>>>8&255,o[3]=h>>>0&255,c.reset(),c.update(e),c.update(o),c.finish(u);for(var m=0;m<a;m++)l[m]=u[m];for(m=2;m<=n;m++){c.reset(),c.update(u).finish(u);for(var p=0;p<a;p++)l[p]^=u[p]}for(m=0;m<a&&d*a+m<r;m++)s[d*a+m]=l[m]}for(d=0;d<a;d++)l[d]=u[d]=0;for(d=0;d<4;d++)o[d]=0;return c.clean(),s}t.hkdf=u,t.pbkdf2=s}(r);var i=r.default;for(var c in r)i[c]=r[c];t.exports=i}()}(TQ);var wQ=n(TQ.exports),FQ=crypto,MQ=function(t){return t instanceof CryptoKey},jQ=new TextEncoder,zQ=new TextDecoder;function PQ(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=e.reduce((function(t,e){return t+e.length}),0),i=new Uint8Array(r),c=0;return e.forEach((function(t){i.set(t,c),c+=t.length})),i}var BQ=function(t){var e=t;e instanceof Uint8Array&&(e=zQ.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(t){for(var e=atob(t),n=new Uint8Array(e.length),r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}(e)}catch(t){throw new TypeError("The input to be decoded is not correctly encoded.")}},QQ=function(t){p(n,t);var e=V(n);function n(t){var r,i;return s(this,n),(r=e.call(this,t)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,I(r),r.constructor),r}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(f(Error)),DQ=function(t){p(n,t);var e=V(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return s(this,n),(r=e.call(this,t)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(QQ),EQ=function(t){p(n,t);var e=V(n);function n(t){var r,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"unspecified",c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"unspecified";return s(this,n),(r=e.call(this,t)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(QQ),OQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",t}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(QQ),AQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",t}return h(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(QQ),_Q=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(QQ),qQ=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWT_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(QQ),$Q=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_INVALID",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(QQ),tD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",t.message="no applicable key found in the JSON Web Key Set",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(QQ),eD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",t.message="multiple matching keys found in the JSON Web Key Set",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(QQ),nD=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",t.message="signature verification failed",t}return h(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(QQ);function rD(){return"function"==typeof WebSocketPair}function iD(){try{return void 0!==aP.versions.node}catch(t){return!1}}function cD(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(e," must be ").concat(t))}function aD(t,e){return t.name===e}function oD(t){return parseInt(t.name.slice(4),10)}function lD(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function uD(t,e){if(e.length&&!e.some((function(e){return t.usages.includes(e)}))){var n="CryptoKey does not support this operation, its usages must include ";if(e.length>2){var r=e.pop();n+="one of ".concat(e.join(", "),", or ").concat(r,".")}else 2===e.length?n+="one of ".concat(e[0]," or ").concat(e[1],"."):n+="".concat(e[0],".");throw new TypeError(n)}}var sD=function(t){for(var e="Key must be ",n=arguments.length,r=new Array(n>1?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];if(r.length>2){var c=r.pop();e+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?e+="one of type ".concat(r[0]," or ").concat(r[1],"."):e+="of type ".concat(r[0],".");return null==t?e+=" Received ".concat(t):"function"==typeof t&&t.name?e+=" Received function ".concat(t.name):"object"===o(t)&&null!=t&&t.constructor&&t.constructor.name&&(e+=" Received an instance of ".concat(t.constructor.name)),e},dD=function(t){return MQ(t)},hD=["CryptoKey"],mD=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r,i=e.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,a=Y(i);try{for(a.s();!(c=a.n()).done;){var o=c.value,l=Object.keys(o);if(r&&0!==r.size)for(var u=0,s=l;u<s.length;u++){var d=s[u];if(r.has(d))return!1;r.add(d)}else r=new Set(l)}}catch(t){a.e(t)}finally{a.f()}return!0};function pD(t){if("object"!==o(e=t)||null===e||"[object Object]"!==Object.prototype.toString.call(t))return!1;var e;if(null===Object.getPrototypeOf(t))return!0;for(var n=t;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(t)===n}var bD=function(t,e){if(t.startsWith("RS")||t.startsWith("PS")){var n=e.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(t," requires key modulusLength to be 2048 bits or larger"))}};function ZD(t){var e,n;switch(t.kty){case"oct":switch(t.alg){case"HS256":case"HS384":case"HS512":e={name:"HMAC",hash:"SHA-".concat(t.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new AQ("".concat(t.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":e={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":e={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":e={name:"PBKDF2"},n=["deriveBits"];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(t.alg.slice(-3))},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(t.alg.slice(-3),10)||1)},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(t.alg){case"ES256":e={name:"ECDSA",namedCurve:"P-256"},n=t.d?["sign"]:["verify"];break;case"ES384":e={name:"ECDSA",namedCurve:"P-384"},n=t.d?["sign"]:["verify"];break;case"ES512":e={name:"ECDSA",namedCurve:"P-521"},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(rD()||iD())&&"OKP":if("EdDSA"!==t.alg)throw new AQ('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(t.crv){case"Ed25519":e={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=t.d?["sign"]:["verify"];break;case iD()&&"Ed448":e={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=t.d?["sign"]:["verify"];break;default:throw new AQ('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new AQ('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}var yD=function(){var t=u(a().mark((function t(e){var n,r,i,o,l,u,s,d,h;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=ZD(e),l=o.algorithm,u=o.keyUsages,s=[l,null!==(r=e.ext)&&void 0!==r&&r,null!==(i=e.key_ops)&&void 0!==i?i:u],"PBKDF2"!==l.name){t.next=4;break}return t.abrupt("return",(d=FQ.subtle).importKey.apply(d,["raw",BQ(e.k)].concat(s)));case 4:return delete(h=c({},e)).alg,t.abrupt("return",(n=FQ.subtle).importKey.apply(n,["jwk",h].concat(s)));case 7:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();function XD(t,e,n){return fD.apply(this,arguments)}function fD(){return(fD=u(a().mark((function t(e,n,r){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(pD(e)){t.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=e.alg),"string"==typeof n&&n){t.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:t.t0=e.kty,t.next="oct"===t.t0?8:"RSA"===t.t0?14:"EC"===t.t0||"OKP"===t.t0?16:17;break;case 8:if("string"==typeof e.k&&e.k){t.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==e.ext),!r){t.next=13;break}return t.abrupt("return",yD(c(c({},e),{},{alg:n,ext:!1})));case 13:return t.abrupt("return",BQ(e.k));case 14:if(void 0===e.oth){t.next=16;break}throw new AQ('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return t.abrupt("return",yD(c(c({},e),{},{alg:n})));case 17:throw new AQ('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var ID=function(t,e,n){t.startsWith("HS")||"dir"===t||t.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(t)?function(t){if(!(t instanceof Uint8Array)){if(!dD(t))throw new TypeError(sD.apply(void 0,[t].concat(v(hD),["Uint8Array"])));if("secret"!==t.type)throw new TypeError("".concat(hD.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(e):function(t,e){if(!dD(t))throw new TypeError(sD.apply(void 0,[t].concat(v(hD))));if("secret"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===e&&"public"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===e&&"public"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(t.algorithm&&"verify"===e&&"private"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(t.algorithm&&"encrypt"===e&&"private"===t.type)throw new TypeError("".concat(hD.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(e,n)};function GD(t,e,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||void 0===r.crit)return new Set;if(!Array.isArray(r.crit)||0===r.crit.length||r.crit.some((function(t){return"string"!=typeof t||0===t.length})))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(v(Object.entries(n)),v(e.entries()))):e;var a,o=Y(r.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new AQ('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new t('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new t('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(t){o.e(t)}finally{o.f()}return new Set(r.crit)}var VD=function(t,e){if(void 0!==e&&(!Array.isArray(e)||e.some((function(t){return"string"!=typeof t}))))throw new TypeError('"'.concat(t,'" option must be an array of strings'));if(e)return new Set(e)};function WD(t,e){var n="SHA-".concat(t.slice(-3));switch(t){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:t.slice(-3)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:e.namedCurve};case(rD()||iD())&&"EdDSA":var r=e.namedCurve;return{name:r,namedCurve:r};default:throw new AQ("alg ".concat(t," is not supported either by JOSE or your javascript runtime"))}}function vD(t,e,n){if(MQ(e))return function(t,e){switch(e){case"HS256":case"HS384":case"HS512":if(!aD(t.algorithm,"HMAC"))throw cD("HMAC");var n=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==n)throw cD("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!aD(t.algorithm,"RSASSA-PKCS1-v1_5"))throw cD("RSASSA-PKCS1-v1_5");var r=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==r)throw cD("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!aD(t.algorithm,"RSA-PSS"))throw cD("RSA-PSS");var i=parseInt(e.slice(2),10);if(oD(t.algorithm.hash)!==i)throw cD("SHA-".concat(i),"algorithm.hash");break;case iD()&&"EdDSA":if("NODE-ED25519"!==t.algorithm.name&&"NODE-ED448"!==t.algorithm.name)throw cD("NODE-ED25519 or NODE-ED448");break;case rD()&&"EdDSA":if(!aD(t.algorithm,"NODE-ED25519"))throw cD("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!aD(t.algorithm,"ECDSA"))throw cD("ECDSA");var c=lD(e);if(t.algorithm.namedCurve!==c)throw cD(c,"algorithm.namedCurve");break;default:throw new TypeError("CryptoKey does not support this operation")}for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l<a;l++)o[l-2]=arguments[l];uD(t,o)}(e,t,n),e;if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(sD.apply(void 0,[e].concat(v(hD))));return FQ.subtle.importKey("raw",e,{hash:"SHA-".concat(t.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(sD.apply(void 0,[e].concat(v(hD),["Uint8Array"])))}var gD=function(){var t=u(a().mark((function t(e,n,r,i){var c,o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,vD(e,n,"verify");case 2:return c=t.sent,bD(e,c),o=WD(e,c.algorithm),t.prev=5,t.next=8,FQ.subtle.verify(o,c,r,i);case 8:return t.abrupt("return",t.sent);case 11:return t.prev=11,t.t0=t.catch(5),t.abrupt("return",!1);case 14:case"end":return t.stop()}}),t,null,[[5,11]])})));return function(e,n,r,i){return t.apply(this,arguments)}}();function SD(t,e,n){return YD.apply(this,arguments)}function YD(){return YD=u(a().mark((function t(e,n,r){var i,o,l,u,s,d,h,m,p,b,Z,y,X;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(pD(e)){t.next=2;break}throw new _Q("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new _Q('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===e.protected||"string"==typeof e.protected){t.next=6;break}throw new _Q("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new _Q("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new _Q("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||pD(e.header)){t.next=12;break}throw new _Q("JWS Unprotected Header incorrect type");case 12:if(o={},!e.protected){t.next=22;break}l=BQ(e.protected),t.prev=15,o=JSON.parse(zQ.decode(l)),t.next=22;break;case 19:throw t.prev=19,t.t0=t.catch(15),new _Q("JWS Protected Header is invalid");case 22:if(mD(o,e.header)){t.next=24;break}throw new _Q("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(u=c(c({},o),e.header),s=GD(_Q,new Map([["b64",!0]]),null==r?void 0:r.crit,o,u),d=!0,!s.has("b64")){t.next=31;break}if("boolean"==typeof(d=o.b64)){t.next=31;break}throw new _Q('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(h=u.alg)&&h){t.next=34;break}throw new _Q('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&VD("algorithms",r.algorithms))||m.has(h)){t.next=37;break}throw new OQ('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!d){t.next=42;break}if("string"==typeof e.payload){t.next=40;break}throw new _Q("JWS Payload must be a string");case 40:t.next=44;break;case 42:if("string"==typeof e.payload||e.payload instanceof Uint8Array){t.next=44;break}throw new _Q("JWS Payload must be a string or an Uint8Array instance");case 44:if(p=!1,"function"!=typeof n){t.next=50;break}return t.next=48,n(o,e);case 48:n=t.sent,p=!0;case 50:return ID(h,n,"verify"),b=PQ(jQ.encode(null!==(i=e.protected)&&void 0!==i?i:""),jQ.encode("."),"string"==typeof e.payload?jQ.encode(e.payload):e.payload),Z=BQ(e.signature),t.next=55,gD(h,n,Z,b);case 55:if(t.sent){t.next=58;break}throw new nD;case 58:if(y=d?BQ(e.payload):"string"==typeof e.payload?jQ.encode(e.payload):e.payload,X={payload:y},void 0!==e.protected&&(X.protectedHeader=o),void 0!==e.header&&(X.unprotectedHeader=e.header),!p){t.next=64;break}return t.abrupt("return",c(c({},X),{},{key:n}));case 64:return t.abrupt("return",X);case 65:case"end":return t.stop()}}),t,null,[[15,19]])}))),YD.apply(this,arguments)}function RD(t,e,n){return KD.apply(this,arguments)}function KD(){return KD=u(a().mark((function t(e,n,r){var i,o,l,u,s,d;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(e instanceof Uint8Array&&(e=zQ.decode(e)),"string"==typeof e){t.next=3;break}throw new _Q("Compact JWS must be a string or Uint8Array");case 3:if(i=e.split("."),o=i[0],l=i[1],u=i[2],3===i.length){t.next=6;break}throw new _Q("Invalid Compact JWS");case 6:return t.next=8,SD({payload:l,protected:o,signature:u},n,r);case 8:if(s=t.sent,d={payload:s.payload,protectedHeader:s.protectedHeader},"function"!=typeof n){t.next=12;break}return t.abrupt("return",c(c({},d),{},{key:s.key}));case 12:return t.abrupt("return",d);case 13:case"end":return t.stop()}}),t)}))),KD.apply(this,arguments)}var LD=function(t){return Math.floor(t.getTime()/1e3)},JD=86400,ND=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,xD=function(t){var e=ND.exec(t);if(!e)throw new TypeError("Invalid time period format");var n=parseFloat(e[1]);switch(e[2].toLowerCase()){case"sec":case"secs":case"second":case"seconds":case"s":return Math.round(n);case"minute":case"minutes":case"min":case"mins":case"m":return Math.round(60*n);case"hour":case"hours":case"hr":case"hrs":case"h":return Math.round(3600*n);case"day":case"days":case"d":return Math.round(n*JD);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},HD=function(t){return t.toLowerCase().replace(/^application\//,"")},kD=function(t,e){return"string"==typeof t?e.includes(t):!!Array.isArray(t)&&e.some(Set.prototype.has.bind(new Set(t)))},CD=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof t.typ||HD(t.typ)!==HD(i)))throw new DQ('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(zQ.decode(e))}catch(t){}if(!pD(n))throw new qQ("JWT Claims Set must be a top-level JSON object");var c=r.issuer;if(c&&!(Array.isArray(c)?c:[c]).includes(n.iss))throw new DQ('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new DQ('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!kD(n.aud,"string"==typeof u?[u]:u))throw new DQ('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":l=xD(r.clockTolerance);break;case"number":l=r.clockTolerance;break;case"undefined":l=0;break;default:throw new TypeError("Invalid clockTolerance option type")}var s=r.currentDate,d=LD(s||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new DQ('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new DQ('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>d+l)throw new DQ('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new DQ('"exp" claim must be a number',"exp","invalid");if(n.exp<=d-l)throw new EQ('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var h=d-n.iat,m="number"==typeof r.maxTokenAge?r.maxTokenAge:xD(r.maxTokenAge);if(h-l>m)throw new EQ('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(h<0-l)throw new DQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function UD(){return UD=u(a().mark((function t(e,n,r){var i,o,l,u;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,RD(e,n,r);case 2:if(o=t.sent,!(null===(i=o.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==o.protectedHeader.b64){t.next=5;break}throw new qQ("JWTs MUST NOT use unencoded payload");case 5:if(l=CD(o.protectedHeader,o.payload,r),u={payload:l,protectedHeader:o.protectedHeader},"function"!=typeof n){t.next=9;break}return t.abrupt("return",c(c({},u),{},{key:o.key}));case 9:return t.abrupt("return",u);case 10:case"end":return t.stop()}}),t)}))),UD.apply(this,arguments)}function TD(t){switch("string"==typeof t&&t.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new AQ('Unsupported "alg" value for a JSON Web Key Set')}}function wD(t){return pD(t)}var FD=function(){function t(e){if(s(this,t),this._cached=new WeakMap,!function(t){return t&&"object"===o(t)&&Array.isArray(t.keys)&&t.keys.every(wD)}(e))throw new $Q("JSON Web Key Set malformed");var n;this._jwks=(n=e,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var e;return h(t,[{key:"getKey",value:(e=u(a().mark((function t(e,n){var r,i,o,l,u,s,d,h,m;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=c(c({},e),n.header),i=r.alg,o=r.kid,l=TD(i),u=this._jwks.keys.filter((function(t){var e=l===t.kty;if(e&&"string"==typeof o&&(e=o===t.kid),e&&"string"==typeof t.alg&&(e=i===t.alg),e&&"string"==typeof t.use&&(e="sig"===t.use),e&&Array.isArray(t.key_ops)&&(e=t.key_ops.includes("verify")),e&&"EdDSA"===i&&(e="Ed25519"===t.crv||"Ed448"===t.crv),e)switch(i){case"ES256":e="P-256"===t.crv;break;case"ES256K":e="secp256k1"===t.crv;break;case"ES384":e="P-384"===t.crv;break;case"ES512":e="P-521"===t.crv}return e})),s=u[0],0!==(d=u.length)){t.next=8;break}throw new tD;case 8:if(1===d){t.next=10;break}throw new eD;case 10:if(void 0!==(h=this._cached.get(s)||this._cached.set(s,{}).get(s))[i]){t.next=18;break}return t.next=14,XD(c(c({},s),{},{ext:!0}),i);case 14:if(!((m=t.sent)instanceof Uint8Array||"public"!==m.type)){t.next=17;break}throw new $Q("JSON Web Key Set members must be public keys");case 17:h[i]=m;case 18:return t.abrupt("return",h[i]);case 19:case"end":return t.stop()}}),t,this)}))),function(t,n){return e.apply(this,arguments)})}]),t}();var MD={exports:{}},jD={exports:{}},zD=r(YQ);!function(t,e){var n=zD,r=n.Buffer;function i(t,e){for(var n in t)e[n]=t[n]}function c(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=n:(i(n,e),e.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},c.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},c.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},c.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n.SlowBuffer(t)}}(jD,jD.exports);var PD=65536,BD=4294967295;var QD=jD.exports.Buffer,DD=e.crypto||e.msCrypto;DD&&DD.getRandomValues?MD.exports=function(t,e){if(t>BD)throw new RangeError("requested too many random bytes");var n=QD.allocUnsafe(t);if(t>0)if(t>PD)for(var r=0;r<t;r+=PD)DD.getRandomValues(n.slice(r,r+PD));else DD.getRandomValues(n);if("function"==typeof e)return aP.nextTick((function(){e(null,n)}));return n}:MD.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var ED=MD.exports,OD=function(){function t(){s(this,t)}return h(t,[{key:"base64URLEncode",value:function(t){return UQ.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(t){return UQ.decode(t).toString()}},{key:"hashSha256",value:function(t){return jB.from(wQ((new TextEncoder).encode(t)))}},{key:"generateRandomBytes",value:function(t){return ED(t)}},{key:"verifyJwt",value:function(t,e,n,r,i,c,a){return function(t,e,n){return UD.apply(this,arguments)}(t,(o={keys:[e]},FD.prototype.getKey.bind(new FD(o))),{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),t}(),AD=function(e){switch(e){case t.Storage.LocalStorage:return new gB;case t.Storage.SessionStorage:return new YB;case t.Storage.BrowserMemory:return new SB;default:return new YB}},_D=function(e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U,T,w,F,M,j,z,P,B,Q,D;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return c=AD(e.storage),o=new OD,l=new ej(c,o),r.next=5,l.initialize(e);case 5:return u=new mz(l),s=l.getDataLayer(),r.next=9,Zz((function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.signOut());case 1:case"end":return t.stop()}}),t)})))}),null!==(i=e.storage)&&void 0!==i?i:t.Storage.SessionStorage,(function(t){return s.setSessionDataParameter(PM,null!=t?t:"")}));case 9:if(d=r.sent,h=n(l,u),m=!1,p=vB.getInstance(),b=!0,X=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=Object.assign({attachToken:!0},t)).attachToken){e.next=23;break}if(!n.shouldAttachIDPAccessToken){e.next=14;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=8,h.getIDPAccessToken();case 8:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5),e.next=23;break;case 14:return e.t6=Object,e.t7=Object.assign({},t.headers),e.t8="Bearer ",e.next=19,h.getAccessToken();case 19:e.t9=e.sent,e.t10=e.t8.concat.call(e.t8,e.t9),e.t11={Authorization:e.t10},t.headers=e.t6.assign.call(e.t6,e.t7,e.t11);case 23:case"end":return e.stop()}}),e)})))},r.t0=null==p?void 0:p.init,!r.t0){r.next=19;break}return r.next=19,p.init(!0,X);case 19:return f=function(t){(null==p?void 0:p.setHttpRequestStartCallback)&&p.setHttpRequestStartCallback(t)},I=function(t){(null==p?void 0:p.setHttpRequestSuccessCallback)&&p.setHttpRequestSuccessCallback(t)},G=function(t){(null==p?void 0:p.setHttpRequestFinishCallback)&&p.setHttpRequestFinishCallback(t)},V=function(t){Z=t},W=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.httpRequest(p,t,b,Z,y);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},v=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.httpRequestAll(t,p,b,Z,y);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},g=function(){return p},S=function(){return h.enableHttpHandler(p),b=!0,!0},Y=function(){return h.disableHttpHandler(p),b=!1,!0},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getOIDCServiceEndpoints();case 2:return e=t.sent,t.next=5,s.getConfigData();case 5:n=t.sent,h.initializeSessionManger(n,e,(function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getBasicUserInfo();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",l.getAuthorizationURL(t));case 1:case"end":return e.stop()}}),e)})))}),d);case 7:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d.receivePromptNoneResponse((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.setSessionDataParameter(PM,null!=t?t:"");case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(n,r,i,c){return TM(void 0,void 0,void 0,a().mark((function o(){var u,s,d,m,p,b,Z;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,h.handleSignIn(K,R);case 2:if(!(m=o.sent)){o.next=7;break}return o.abrupt("return",m);case 7:if((null==e?void 0:e.responseMode)===t.ResponseMode.formPost&&r?(p=r,b=null!=i?i:"",Z=null!=c?c:""):(p=null!==(u=new URL(window.location.href).searchParams.get(zM))&&void 0!==u?u:"",b=null!==(s=new URL(window.location.href).searchParams.get(PM))&&void 0!==s?s:"",Z=null!==(d=new URL(window.location.href).searchParams.get(DM))&&void 0!==d?d:"",bz.removeAuthorizationCode()),!p||!Z){o.next=10;break}return o.abrupt("return",C(p,b,Z));case 10:return o.abrupt("return",l.getAuthorizationURL(n).then((function(n){return TM(void 0,void 0,void 0,a().mark((function r(){var i;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e.storage!==t.Storage.BrowserMemory||!e.enablePKCE){r.next=8;break}return i=OM.extractPKCEKeyFromStateParam(Z),r.t0=bz,r.t1=i,r.next=6,l.getPKCECode(Z);case 6:r.t2=r.sent,r.t0.setPKCE.call(r.t0,r.t1,r.t2);case 8:return location.href=n,r.next=11,bz.waitTillPageRedirect();case 11:return r.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return r.stop()}}),r)})))})));case 11:case"end":return o.stop()}}),o)})))},J=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.isAuthenticated();case 2:if(t.t0=t.sent,!t.t0){t.next=5;break}t.t0=!m;case 5:if(!t.t0){t.next=11;break}return t.next=8,l.signOut();case 8:location.href=t.sent,t.next=18;break;case 11:return location.href=bz.getSignOutURL(),t.next=14,s.removeOIDCProviderMetaData();case 14:return t.next=16,s.removeTemporaryData();case 16:return t.next=18,s.removeSessionData();case 18:return u.clearRefreshTokenTimeout(),t.next=21,bz.waitTillPageRedirect();case 21:return t.abrupt("return",!0);case 22:case"end":return t.stop()}}),t)})))},N=function(t){t.preventSignOutURLUpdate&&(m=!0)},x=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,h.requestCustomGrant(t,N);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},H=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,h.refreshAccessToken(N);case 3:return t.abrupt("return",t.sent);case 6:return t.prev=6,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 9:case"end":return t.stop()}}),t,null,[[0,6]])})))},k=function(){return l.revokeAccessToken().then((function(){return d.reset(),u.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},C=function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,h.requestAccessToken(t,e,R,void 0,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r)})))},U=function(){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.getConfigData();case 2:return n=e.sent,e.next=5,l.getAuthorizationURL({prompt:"none",state:iz});case 5:if(r=e.sent,(i=new URL(r)).searchParams.set("response_mode","query"),c=i.toString(),n.storage!==t.Storage.BrowserMemory||!n.enablePKCE){e.next=17;break}return o=i.searchParams.get(DM),e.t0=bz,e.t1=OM.extractPKCEKeyFromStateParam(null!=o?o:""),e.next=15,l.getPKCECode(null!=o?o:"");case 15:e.t2=e.sent,e.t0.setPKCE.call(e.t0,e.t1,e.t2);case 17:return e.abrupt("return",c);case 18:case"end":return e.stop()}}),e)})))},T=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,h.trySignInSilently(U,C,d);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},w=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},F=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},M=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getCryptoHelper());case 1:case"end":return t.stop()}}),t)})))},j=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getIDToken());case 1:case"end":return t.stop()}}),t)})))},z=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},P=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getAccessToken());case 1:case"end":return t.stop()}}),t)})))},B=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.getDataLayer());case 1:case"end":return t.stop()}}),t)})))},Q=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",h.isAuthenticated());case 1:case"end":return t.stop()}}),t)})))},D=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,s.getConfigData();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),e.next=7,l.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(d.reset(),R());case 8:case"end":return e.stop()}}),e)})))},r.abrupt("return",{disableHttpHandler:Y,enableHttpHandler:S,getAccessToken:P,getBasicUserInfo:w,getCryptoHelper:M,getDataLayer:B,getDecodedIDToken:F,getHttpClient:g,getIDToken:j,getOIDCServiceEndpoints:z,httpRequest:W,httpRequestAll:v,isAuthenticated:Q,refreshAccessToken:H,requestCustomGrant:x,revokeAccessToken:k,setHttpRequestErrorCallback:V,setHttpRequestFinishCallback:G,setHttpRequestStartCallback:f,setHttpRequestSuccessCallback:I,signIn:L,signOut:J,trySignInSilently:T,updateConfig:D});case 49:case"end":return r.stop()}}),r)})))},qD=function(e){switch(e){case t.Storage.LocalStorage:return new gB;case t.Storage.SessionStorage:return new YB;case t.Storage.BrowserMemory:return new SB;default:return new YB}},$D=function(e,n,r){return TM(void 0,void 0,void 0,a().mark((function i(){var c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U,T,w,F,M,j,z,P,B,Q,D,E,O,A;return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return l=null!==(c=null==e?void 0:e.requestTimeout)&&void 0!==c?c:6e4,u=!0,s=!1,d=qD(e.storage),h=new OD,m=new ej(d,h),i.next=8,m.initialize(e);case 8:return p=new mz(m),i.next=11,Zz((function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e={type:dj},t.prev=1,t.next=4,X(e);case 4:return n=t.sent,t.abrupt("return",n);case 8:return t.prev=8,t.t0=t.catch(1),t.abrupt("return",bz.getSignOutURL());case 11:case"end":return t.stop()}}),t,null,[[1,8]])})))}),e.storage,(function(t){return g(t)}));case 11:return b=i.sent,Z=r(m,p),y=new n,X=function(t){var e=new MessageChannel;return y.postMessage(t,[e.port2]),new Promise((function(t,n){var r=setTimeout((function(){n(new EM("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+l/1e3+" since dispatching the request"))}),l);return e.port1.onmessage=function(e){var i=e.data;if(clearTimeout(r),null==i?void 0:i.success){var c=(null==i?void 0:i.data)?JSON.parse(null==i?void 0:i.data):null;(null==i?void 0:i.blob)&&(c.data=null==i?void 0:i.blob),t(c)}else n(i.error?JSON.parse(i.error):null)}}))},f=function(t){return X({data:t,type:pj}).then((function(e){return t.preventSignOutURLUpdate&&(s=!0),Promise.resolve(e)})).catch((function(t){return Promise.reject(t)}))},I=function(t){return X({data:t,type:hj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u){e.next=5;break}if("function"!=typeof o.requestErrorCallback){e.next=4;break}return e.next=4,o.requestErrorCallback(t);case 4:"function"==typeof o.requestFinishCallback&&o.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},G=function(t){return X({data:t,type:mj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!u){e.next=5;break}if("function"!=typeof o.requestErrorCallback){e.next=4;break}return e.next=4,o.requestErrorCallback(t);case 4:"function"==typeof o.requestFinishCallback&&o.requestFinishCallback();case 5:return e.abrupt("return",Promise.reject(t));case 6:case"end":return e.stop()}}),e)})))}))},V=function(){return X({type:Wj}).then((function(){return u=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},W=function(){return X({type:vj}).then((function(){return u=!1,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},v=function(){return o||(o={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),y.onmessage=function(t){var e=t.data;switch(e.type){case Xj:(null==o?void 0:o.requestFinishCallback)&&(null==o||o.requestFinishCallback());break;case Zj:(null==o?void 0:o.requestStartCallback)&&(null==o||o.requestStartCallback());break;case yj:(null==o?void 0:o.requestSuccessCallback)&&(null==o||o.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},X({data:e,type:sj}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},g=function(t){return X({data:t,type:Lj})},S=function(){return X({type:Jj})},Y=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,U();case 2:return e=t.sent,t.next=5,T();case 5:n=t.sent,Z.initializeSessionManger(n,e,(function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,w();case 2:return t.abrupt("return",t.sent.sessionState);case 3:case"end":return t.stop()}}),t)})))}),(function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L(t);case 2:return e.abrupt("return",e.sent.authorizationURL);case 3:case"end":return e.stop()}}),e)})))}),b);case 7:case"end":return t.stop()}}),t)})))},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){var e,n,r,i,c,o,l,u;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,T();case 2:return n=t.sent,r={data:{prompt:"none",state:iz},type:gj},t.next=6,X(r);case 6:return i=t.sent,c=OM.extractPKCEKeyFromStateParam(null!==(e=new URL(i.authorizationURL).searchParams.get(DM))&&void 0!==e?e:""),i.pkce&&n.enablePKCE&&bz.setPKCE(c,i.pkce),o=i.authorizationURL,(l=new URL(o)).searchParams.set("response_mode","query"),u=l.toString(),t.abrupt("return",u);case 14:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,Z.trySignInSilently(R,J,b);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T();case 2:return n=e.sent,r={data:t,type:gj},e.abrupt("return",X(r).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var r,i;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t.pkce&&n.enablePKCE&&(i=OM.extractPKCEKeyFromStateParam(null!==(r=new URL(t.authorizationURL).searchParams.get(DM))&&void 0!==r?r:""),bz.setPKCE(i,t.pkce)),e.abrupt("return",Promise.resolve(t));case 2:case"end":return e.stop()}}),e)})))})));case 5:case"end":return e.stop()}}),e)})))},J=function(t,e,n){return TM(void 0,void 0,void 0,a().mark((function r(){var i,c,o;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,T();case 2:return i=r.sent,c=OM.extractPKCEKeyFromStateParam(n),o={data:{code:t,pkce:i.enablePKCE?bz.getPKCE(c):void 0,sessionState:e,state:n},type:Sj},i.enablePKCE&&bz.removePKCE(c),r.abrupt("return",X(o).then((function(t){return X({type:Rj}).then((function(e){return bz.setSignOutURL(e),i.enableOIDCSessionManagement&&Y(),S(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))})).catch((function(t){return Promise.reject(t)})));case 7:case"end":return r.stop()}}),r)})))},N=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,b.receivePromptNoneResponse((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",g(t));case 1:case"end":return e.stop()}}),e)})))}));case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},x=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,P();case 2:if(!t.sent){t.next=7;break}return t.next=5,S();case 5:return e.enableOIDCSessionManagement&&Y(),t.abrupt("return",w());case 7:case"end":return t.stop()}}),t)})))},H=function(n,r,i,c){return TM(void 0,void 0,void 0,a().mark((function o(){var l,u,s,d,h,m,p;return a().wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,Z.handleSignIn(N,Y,x);case 2:if(!(d=o.sent)){o.next=7;break}return o.abrupt("return",d);case 7:if((null==e?void 0:e.responseMode)===t.ResponseMode.formPost&&r?(h=r,m=null!=i?i:"",p=null!=c?c:""):(h=null!==(l=new URL(window.location.href).searchParams.get(zM))&&void 0!==l?l:"",m=null!==(u=new URL(window.location.href).searchParams.get(PM))&&void 0!==u?u:"",p=null!==(s=new URL(window.location.href).searchParams.get(DM))&&void 0!==s?s:"",bz.removeAuthorizationCode()),!h||!p){o.next=10;break}return o.abrupt("return",J(h,m,p));case 10:return o.abrupt("return",L(n).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return location.href=t.authorizationURL,e.next=3,bz.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 11:case"end":return o.stop()}}),o)})))},k=function(){return P().then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||s){e.next=5;break}return n={type:dj},e.abrupt("return",X(n).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return window.location.href=t,e.next=3,bz.waitTillPageRedirect();case 3:return e.abrupt("return",Promise.resolve(!0));case 4:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 5:return window.location.href=bz.getSignOutURL(),e.next=8,bz.waitTillPageRedirect();case 8:return e.abrupt("return",Promise.resolve(!0));case 9:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)}))},C=function(){return X({type:bj}).then((function(t){return b.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},U=function(){return X({type:fj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},T=function(){return X({type:Cj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},w=function(){return X({type:Ij}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},F=function(){return X({type:Gj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},M=function(){return X({type:"get-decoded-idp-id-token"}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},j=function(){return X({type:Vj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},z=function(){return X({type:xj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},P=function(){return X({type:Yj}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},B=function(){return X({type:Kj})},Q=function(t){t&&"function"==typeof t&&(o.requestSuccessCallback=t)},D=function(t){t&&"function"==typeof t&&(o.requestErrorCallback=t)},E=function(t){t&&"function"==typeof t&&(o.requestStartCallback=t)},O=function(t){t&&"function"==typeof t&&(o.requestFinishCallback=t)},A=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,c;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,T();case 2:return n=e.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&t&&t.endpoints&&t.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===t.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),t),c={data:i,type:Nj},e.next=8,X(c);case 8:i.enableOIDCSessionManagement&&r&&(b.reset(),Y());case 9:case"end":return e.stop()}}),e)})))},i.abrupt("return",{disableHttpHandler:W,enableHttpHandler:V,getBasicUserInfo:w,getCryptoHelper:j,getDecodedIDPIDToken:M,getDecodedIDToken:F,getIDToken:z,getOIDCServiceEndpoints:U,httpRequest:I,httpRequestAll:G,initialize:v,isAuthenticated:P,refreshAccessToken:B,requestCustomGrant:f,revokeAccessToken:C,setHttpRequestErrorCallback:D,setHttpRequestFinishCallback:O,setHttpRequestStartCallback:E,setHttpRequestSuccessCallback:Q,signIn:H,signOut:k,trySignInSilently:K,updateConfig:A});case 48:case"end":return i.stop()}}),i)})))},tE={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:t.Storage.SessionStorage},eE="primaryInstance",nE=function(){function e(t){s(this,e),this._authHelper=hz,this._worker=uj,this._initialized=!1,this._startedInitialize=!1,this._onSignInCallback=function(){return null},this._onSignOutCallback=function(){return null},this._onSignOutFailedCallback=function(){return null},this._onEndUserSession=function(){return null},this._onInitialize=function(){return null},this._onCustomGrant=new Map,this._instanceID=t}return h(e,[{key:"instantiateAuthHelper",value:function(t){this._authHelper=t||hz}},{key:"instantiateWorker",value:function(t){this._worker=t||uj}},{key:"_isInitialized",value:function(){return TM(this,void 0,void 0,a().mark((function t(){var e,n;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(this._startedInitialize){t.next=2;break}return t.abrupt("return",!1);case 2:e=0,n=function(){return new Promise((function(t){return setTimeout(t,1)}))};case 4:if(this._initialized){t.next=11;break}return 1e4===e&&console.warn("It is taking longer than usual for the object to be initialized"),t.next=8,n();case 8:e++,t.next=4;break;case 11:return t.abrupt("return",!0);case 12:case"end":return t.stop()}}),t,this)})))}},{key:"_validateMethod",value:function(){return TM(this,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(t.sent){t.next=4;break}return t.abrupt("return",Promise.reject());case 4:return t.next=6,this.isAuthenticated();case 6:if(t.sent){t.next=8;break}return t.abrupt("return",Promise.reject());case 8:return t.abrupt("return",!0);case 9:case"end":return t.stop()}}),t,this)})))}},{key:"initialize",value:function(e,n,r){var i;return TM(this,void 0,void 0,a().mark((function c(){var o,l,u,s=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:if(this._storage=null!==(i=e.storage)&&void 0!==i?i:t.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,n&&this.instantiateAuthHelper(n),r&&this.instantiateWorker(r),this._storage===t.Storage.WebWorker){c.next=17;break}if(this._client){c.next=12;break}return o=e,l=Object.assign({},tE),c.next=11,_D(Object.assign(Object.assign({},l),o),(function(t,e){return new s._authHelper(t,e)}));case 11:this._client=c.sent;case 12:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),c.abrupt("return",Promise.resolve(!0));case 17:if(this._client){c.next=23;break}return u=e,c.next=21,$D(Object.assign(Object.assign({},tE),u),this._worker,(function(t,e){return new s._authHelper(t,e)}));case 21:return this._client=c.sent,c.abrupt("return",this._client.initialize().then((function(){return s._onInitialize&&s._onInitialize(!0),s._initialized=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)})));case 23:return c.abrupt("return",Promise.resolve(!0));case 24:case"end":return c.stop()}}),c,this)})))}},{key:"getBasicUserInfo",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getBasicUserInfo());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"signIn",value:function(t,e,n,r){var i;return TM(this,void 0,void 0,a().mark((function c(){var o=this;return a().wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(bz.canContinueSignIn(Boolean(null==t?void 0:t.callOnlyOnRedirect),e)){c.next=4;break}return c.abrupt("return");case 4:return null==t||delete t.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(t,e,n,r).then((function(t){return o._onSignInCallback&&(t.allowedScopes||t.displayName||t.email||t.username)&&o._onSignInCallback(t),t})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var n=this;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(!bz.wasSignInCalled()){e.next=4;break}return e.abrupt("return");case 4:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.trySignInSilently().then((function(t){if(n._onSignInCallback&&t){var e=t;(e.allowedScopes||e.displayName||e.email||e.username)&&n._onSignInCallback(e)}return t})));case 5:case"end":return e.stop()}}),e,this)})))}},{key:"signOut",value:function(){var t,e;return TM(this,void 0,void 0,a().mark((function n(){var r;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(t=this._client)||void 0===t?void 0:t.signOut();case 4:if(n.t1=e=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==e;case 8:if(!n.t0){n.next=12;break}n.t2=e,n.next=13;break;case 12:n.t2=!1;case 13:return r=n.t2,n.abrupt("return",r);case 15:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequest",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequest(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequestAll",value:function(t){var e;return TM(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.httpRequestAll(t));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"requestCustomGrant",value:function(t){var e,n;return TM(this,void 0,void 0,a().mark((function r(){var i,c;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!t.signInRequired){r.next=5;break}return r.next=3,this._validateMethod();case 3:r.next=7;break;case 5:return r.next=7,this._validateMethod();case 7:if(t.id){r.next=9;break}return r.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-RCG-NF01","The custom grant request id not found.","The id attribute of the custom grant config object passed as an argument should have a value.")));case 9:return r.next=11,null===(e=this._client)||void 0===e?void 0:e.requestCustomGrant(t);case 11:return i=r.sent,(c=this._onCustomGrant.get(t.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(t.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}},{key:"revokeAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.next=4,null===(t=this._client)||void 0===t?void 0:t.revokeAccessToken();case 4:if(n=e.sent,e.t0=this._onEndUserSession,!e.t0){e.next=9;break}return e.next=9,this._onEndUserSession(n);case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getOIDCServiceEndpoints());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==t.Storage.WebWorker)return this._client.getHttpClient();throw new EM("SPA-AUTH_CLIENT-GHC-IV01","Http client cannot be returned.","The http client cannot be returned when the storage type is set to webWorker.")}throw new EM("SPA-AUTH_CLIENT-GHC-NF02","The SDK is not initialized.","The SDK has not been initialized yet. Initialize the SDK using the initialize method before calling this method.")}},{key:"getDecodedIDToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getDecodedIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getCryptoHelper",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getCryptoHelper());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getIDToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.getIDToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getIDPAccessToken",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GIAT-IV01","The access token cannot be returned.","The access token cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getAccessToken());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getDataLayer",value:function(){return TM(this,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:if(!this._storage||![(t.Storage.WebWorker,t.Storage.BrowserMemory)].includes(this._storage)){e.next=4;break}return e.abrupt("return",Promise.reject(new EM("SPA-AUTH_CLIENT-GDL-IV01","The data layer cannot be returned.","The data layer cannot be returned when the storage type is set to webWorker or browserMemory.")));case 4:return n=this._client,e.abrupt("return",n.getDataLayer());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"refreshAccessToken",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._validateMethod();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.refreshAccessToken());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"isAuthenticated",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.isAuthenticated());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"on",value:function(e,n,r){var i,c,o,l;return TM(this,void 0,void 0,a().mark((function u(){var s;return a().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){a.next=35;break}a.t0=e,a.next=a.t0===t.Hooks.SignIn?6:a.t0===t.Hooks.SignOut?8:a.t0===t.Hooks.RevokeAccessToken?14:a.t0===t.Hooks.Initialize?16:a.t0===t.Hooks.HttpRequestError?18:a.t0===t.Hooks.HttpRequestFinish?20:a.t0===t.Hooks.HttpRequestStart?22:a.t0===t.Hooks.HttpRequestSuccess?24:a.t0===t.Hooks.CustomGrant?26:a.t0===t.Hooks.SignOutFailed?28:32;break;case 6:return this._onSignInCallback=n,a.abrupt("break",33);case 8:return this._onSignOutCallback=n,a.next=11,bz.isSignOutSuccessful();case 11:if(!a.sent){a.next=13;break}this._onSignOutCallback();case 13:return a.abrupt("break",33);case 14:return this._onEndUserSession=n,a.abrupt("break",33);case 16:return this._onInitialize=n,a.abrupt("break",33);case 18:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),a.abrupt("break",33);case 20:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),a.abrupt("break",33);case 22:return null===(o=this._client)||void 0===o||o.setHttpRequestStartCallback(n),a.abrupt("break",33);case 24:return null===(l=this._client)||void 0===l||l.setHttpRequestSuccessCallback(n),a.abrupt("break",33);case 26:return r&&this._onCustomGrant.set(r,n),a.abrupt("break",33);case 28:return this._onSignOutFailedCallback=n,(s=bz.didSignOutFail())&&this._onSignOutFailedCallback(s),a.abrupt("break",33);case 32:throw new EM("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 33:a.next=36;break;case 35:throw new EM("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 36:case"end":return a.stop()}}),u,this)})))}},{key:"enableHttpHandler",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.enableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"disableHttpHandler",value:function(){var t;return TM(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:return e.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.disableHttpHandler());case 3:case"end":return e.stop()}}),e,this)})))}},{key:"updateConfig",value:function(e){return TM(this,void 0,void 0,a().mark((function n(){var r,i;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==t.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(e);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(e);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(t){var n,r;return t&&(null===(n=this._instances)||void 0===n?void 0:n.get(t))?this._instances.get(t):!t&&(null===(r=this._instances)||void 0===r?void 0:r.get(eE))?this._instances.get(eE):t?(this._instances.set(t,new e(t)),this._instances.get(t)):(this._instances.set(eE,new e(eE)),this._instances.get(eE))}}]),e}();nE._instances=new Map;var rE=function(t){p(n,t);var e=V(n);function n(){var t;return s(this,n),(t=e.apply(this,arguments)).onmessage=function(){return null},t}return h(n)}(f(Worker)),iE=function(t,e){return TM(void 0,void 0,void 0,a().mark((function n(){var r,i,c,o,l,u,s,d,h,m,p,b,Z,y,X,f,I,G,V,W,v,g,S,Y,R,K,L,J,N,x,H,k,C,U;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=new SB,i=new OD,c=new ej(r,i),n.next=5,c.initialize(t);case 5:if(o=new mz(c),l=e(c,o),u=c.getDataLayer(),s=vB.getInstance(),d=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=Object.assign({attachToken:!0},t)).attachToken){e.next=23;break}if(!n.shouldAttachIDPAccessToken){e.next=14;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=8,l.getIDPAccessToken();case 8:e.t3=e.sent,e.t4=e.t2.concat.call(e.t2,e.t3),e.t5={Authorization:e.t4},t.headers=e.t0.assign.call(e.t0,e.t1,e.t5),e.next=23;break;case 14:return e.t6=Object,e.t7=Object.assign({},t.headers),e.t8="Bearer ",e.next=19,l.getAccessToken();case 19:e.t9=e.sent,e.t10=e.t8.concat.call(e.t8,e.t9),e.t11={Authorization:e.t10},t.headers=e.t6.assign.call(e.t6,e.t7,e.t11);case 23:case"end":return e.stop()}}),e)})))},n.t0=null==s?void 0:s.init,!n.t0){n.next=14;break}return n.next=14,s.init(!0,d);case 14:return h=function(t){(null==s?void 0:s.setHttpRequestStartCallback)&&s.setHttpRequestStartCallback(t)},m=function(t){(null==s?void 0:s.setHttpRequestSuccessCallback)&&s.setHttpRequestSuccessCallback(t)},p=function(t){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(t)},b=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.httpRequest(s,t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},Z=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.httpRequestAll(t,s);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},y=function(){l.enableHttpHandler(s)},X=function(){l.disableHttpHandler(s)},f=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",c.getAuthorizationURL(t).then((function(t){return TM(void 0,void 0,void 0,a().mark((function e(){var n,r,i,o;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new URL(t),i=null!==(n=r.searchParams.get(DM))&&void 0!==n?n:"",e.next=4,c.getPKCECode(i);case 4:return o=e.sent,e.abrupt("return",{authorizationURL:t,pkce:o});case 6:case"end":return e.stop()}}),e)})))})).catch((function(t){return Promise.reject(t)})));case 1:case"end":return e.stop()}}),e)})))},I=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))},G=function(t,e,n,r){return TM(void 0,void 0,void 0,a().mark((function i(){return a().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.requestAccessToken(t,e,void 0,n,r);case 2:return i.abrupt("return",i.sent);case 3:case"end":return i.stop()}}),i)})))},V=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o.clearRefreshTokenTimeout(),t.next=3,c.signOut();case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))},W=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,c.getSignOutURL();case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},v=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.requestCustomGrant(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))},g=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,l.refreshAccessToken();case 3:return t.abrupt("return",t.sent);case 6:return t.prev=6,t.t0=t.catch(0),t.abrupt("return",Promise.reject(t.t0));case 9:case"end":return t.stop()}}),t,null,[[0,6]])})))},S=function(){return c.revokeAccessToken().then((function(){return o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},Y=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getBasicUserInfo());case 1:case"end":return t.stop()}}),t)})))},R=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getDecodedIDToken());case 1:case"end":return t.stop()}}),t)})))},K=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getCryptoHelper());case 1:case"end":return t.stop()}}),t)})))},L=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getDecodedIDPIDToken());case 1:case"end":return t.stop()}}),t)})))},J=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getIDToken());case 1:case"end":return t.stop()}}),t)})))},N=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",l.getOIDCServiceEndpoints());case 1:case"end":return t.stop()}}),t)})))},x=function(){return l.getAccessToken()},H=function(){return l.isAuthenticated()},k=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,u.setSessionDataParameter(PM,t);case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))},C=function(t){return TM(void 0,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c.updateConfig(t);case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))},U=function(){return TM(void 0,void 0,void 0,a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",u.getConfigData());case 1:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:X,enableHttpHandler:y,getAccessToken:x,getAuthorizationURL:f,getBasicUserInfo:Y,getConfigData:U,getCryptoHelper:K,getDecodedIDPIDToken:L,getDecodedIDToken:R,getIDToken:J,getOIDCServiceEndpoints:N,getSignOutURL:W,httpRequest:b,httpRequestAll:Z,isAuthenticated:H,refreshAccessToken:g,requestAccessToken:G,requestCustomGrant:v,revokeAccessToken:S,setHttpRequestFinishCallback:p,setHttpRequestStartCallback:h,setHttpRequestSuccessCallback:m,setSessionState:k,signOut:V,startAutoRefreshToken:I,updateConfig:C});case 41:case"end":return n.stop()}}),n)})))};return t.AUTHORIZATION_CODE=zM,t.AsgardeoAuthClient=ej,t.AsgardeoAuthException=EM,t.AsgardeoSPAClient=nE,t.AuthenticationHelper=hz,t.AuthenticationUtils=OM,t.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",t.CLIENT_ID_TAG="{{clientID}}",t.CLIENT_SECRET_TAG="{{clientSecret}}",t.CryptoHelper=_M,t.DataLayer=$M,t.MainThreadClient=_D,t.NBF_CLAIM="nbf",t.OIDC_SCOPE="openid",t.PKCE_CODE_VERIFIER="pkce_code_verifier",t.PKCE_SEPARATOR="#",t.REFRESH_TOKEN_TIMER=MM,t.SCOPE_TAG="{{scope}}",t.SESSION_STATE=PM,t.SIGN_OUT_SUCCESS_PARAM=QM,t.SIGN_OUT_URL=BM,t.SPAHelper=mz,t.SPAUtils=bz,t.STATE=DM,t.SUPPORTED_SIGNATURE_ALGORITHMS=jM,t.TOKEN_TAG="{{token}}",t.USERNAME_TAG="{{username}}",t.WebWorkerClass=rE,t.WebWorkerClient=$D,t.workerReceiver=function(t){var e,n=self;n.onmessage=function(n){var o=n.data,l=n.ports;return TM(void 0,void 0,void 0,a().mark((function n(){var u,s,d,h,m,p;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(m=l[0],o.type===sj||e){n.next=4;break}return m.postMessage(pz.generateFailureMessage(new EM("SPA-CLIENT_WORKER-ONMSG-NF01","The web worker has not been initialized yet.","The initialize method needs to be called before the specified operation can be carried out."))),n.abrupt("return");case 4:n.t0=o.type,n.next=n.t0===sj?7:n.t0===gj?22:n.t0===Sj?24:n.t0===hj?26:n.t0===mj?28:n.t0===dj?30:n.t0===pj?44:n.t0===bj?46:n.t0===fj?48:n.t0===Ij?62:n.t0===Gj?76:n.t0===Vj?90:n.t0===xj?104:n.t0===Wj?118:n.t0===vj?121:n.t0===Yj?124:n.t0===Rj?138:n.t0===Kj?152:n.t0===Jj?166:n.t0===Lj?168:n.t0===Nj?182:n.t0===Cj?196:210;break;case 7:return n.prev=7,p=Object.assign({},o.data),n.next=11,iE(p,t);case 11:(e=n.sent).setHttpRequestFinishCallback(c),e.setHttpRequestStartCallback(r),e.setHttpRequestSuccessCallback(i),m.postMessage(pz.generateSuccessMessage()),n.next=21;break;case 18:n.prev=18,n.t1=n.catch(7),m.postMessage(pz.generateFailureMessage(n.t1));case 21:return n.abrupt("break",211);case 22:return e.getAuthorizationURL(null==o?void 0:o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 24:return e.requestAccessToken(null===(u=null==o?void 0:o.data)||void 0===u?void 0:u.code,null===(s=null==o?void 0:o.data)||void 0===s?void 0:s.sessionState,null===(d=null==o?void 0:o.data)||void 0===d?void 0:d.pkce,null===(h=null==o?void 0:o.data)||void 0===h?void 0:h.state).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 26:return e.httpRequest(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 28:return e.httpRequestAll(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 30:return n.prev=30,n.t2=m,n.t3=pz,n.next=35,e.signOut();case 35:n.t4=n.sent,n.t5=n.t3.generateSuccessMessage.call(n.t3,n.t4),n.t2.postMessage.call(n.t2,n.t5),n.next=43;break;case 40:n.prev=40,n.t6=n.catch(30),m.postMessage(pz.generateFailureMessage(n.t6));case 43:return n.abrupt("break",211);case 44:return e.requestCustomGrant(o.data).then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 46:return e.revokeAccessToken().then((function(t){m.postMessage(pz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(pz.generateFailureMessage(t))})),n.abrupt("break",211);case 48:return n.prev=48,n.t7=m,n.t8=pz,n.next=53,e.getOIDCServiceEndpoints();case 53:n.t9=n.sent,n.t10=n.t8.generateSuccessMessage.call(n.t8,n.t9),n.t7.postMessage.call(n.t7,n.t10),n.next=61;break;case 58:n.prev=58,n.t11=n.catch(48),m.postMessage(pz.generateFailureMessage(n.t11));case 61:return n.abrupt("break",211);case 62:return n.prev=62,n.t12=m,n.t13=pz,n.next=67,e.getBasicUserInfo();case 67:n.t14=n.sent,n.t15=n.t13.generateSuccessMessage.call(n.t13,n.t14),n.t12.postMessage.call(n.t12,n.t15),n.next=75;break;case 72:n.prev=72,n.t16=n.catch(62),m.postMessage(pz.generateFailureMessage(n.t16));case 75:return n.abrupt("break",211);case 76:return n.prev=76,n.t17=m,n.t18=pz,n.next=81,e.getDecodedIDToken();case 81:n.t19=n.sent,n.t20=n.t18.generateSuccessMessage.call(n.t18,n.t19),n.t17.postMessage.call(n.t17,n.t20),n.next=89;break;case 86:n.prev=86,n.t21=n.catch(76),m.postMessage(pz.generateFailureMessage(n.t21));case 89:return n.abrupt("break",211);case 90:return n.prev=90,n.t22=m,n.t23=pz,n.next=95,e.getCryptoHelper();case 95:n.t24=n.sent,n.t25=n.t23.generateSuccessMessage.call(n.t23,n.t24),n.t22.postMessage.call(n.t22,n.t25),n.next=103;break;case 100:n.prev=100,n.t26=n.catch(90),m.postMessage(pz.generateFailureMessage(n.t26));case 103:return n.abrupt("break",211);case 104:return n.prev=104,n.t27=m,n.t28=pz,n.next=109,e.getIDToken();case 109:n.t29=n.sent,n.t30=n.t28.generateSuccessMessage.call(n.t28,n.t29),n.t27.postMessage.call(n.t27,n.t30),n.next=117;break;case 114:n.prev=114,n.t31=n.catch(104),m.postMessage(pz.generateFailureMessage(n.t31));case 117:return n.abrupt("break",211);case 118:return e.enableHttpHandler(),m.postMessage(pz.generateSuccessMessage()),n.abrupt("break",211);case 121:return e.disableHttpHandler(),m.postMessage(pz.generateSuccessMessage()),n.abrupt("break",211);case 124:return n.prev=124,n.t32=m,n.t33=pz,n.next=129,e.isAuthenticated();case 129:n.t34=n.sent,n.t35=n.t33.generateSuccessMessage.call(n.t33,n.t34),n.t32.postMessage.call(n.t32,n.t35),n.next=137;break;case 134:n.prev=134,n.t36=n.catch(124),m.postMessage(pz.generateFailureMessage(n.t36));case 137:return n.abrupt("break",211);case 138:return n.prev=138,n.t37=m,n.t38=pz,n.next=143,e.getSignOutURL();case 143:n.t39=n.sent,n.t40=n.t38.generateSuccessMessage.call(n.t38,n.t39),n.t37.postMessage.call(n.t37,n.t40),n.next=151;break;case 148:n.prev=148,n.t41=n.catch(138),m.postMessage(pz.generateFailureMessage(n.t41));case 151:return n.abrupt("break",211);case 152:return n.prev=152,n.t42=m,n.t43=pz,n.next=157,e.refreshAccessToken();case 157:n.t44=n.sent,n.t45=n.t43.generateSuccessMessage.call(n.t43,n.t44),n.t42.postMessage.call(n.t42,n.t45),n.next=165;break;case 162:n.prev=162,n.t46=n.catch(152),m.postMessage(pz.generateFailureMessage(n.t46));case 165:return n.abrupt("break",211);case 166:try{m.postMessage(pz.generateSuccessMessage(e.startAutoRefreshToken()))}catch(t){m.postMessage(pz.generateFailureMessage(t))}return n.abrupt("break",211);case 168:return n.prev=168,n.t47=m,n.t48=pz,n.next=173,e.setSessionState(null==o?void 0:o.data);case 173:n.t49=n.sent,n.t50=n.t48.generateSuccessMessage.call(n.t48,n.t49),n.t47.postMessage.call(n.t47,n.t50),n.next=181;break;case 178:n.prev=178,n.t51=n.catch(168),m.postMessage(pz.generateFailureMessage(n.t51));case 181:return n.abrupt("break",211);case 182:return n.prev=182,n.t52=m,n.t53=pz,n.next=187,e.updateConfig(null==o?void 0:o.data);case 187:n.t54=n.sent,n.t55=n.t53.generateSuccessMessage.call(n.t53,n.t54),n.t52.postMessage.call(n.t52,n.t55),n.next=195;break;case 192:n.prev=192,n.t56=n.catch(182),m.postMessage(pz.generateFailureMessage(n.t56));case 195:return n.abrupt("break",211);case 196:return n.prev=196,n.t57=m,n.t58=pz,n.next=201,e.getConfigData();case 201:n.t59=n.sent,n.t60=n.t58.generateSuccessMessage.call(n.t58,n.t59),n.t57.postMessage.call(n.t57,n.t60),n.next=209;break;case 206:n.prev=206,n.t61=n.catch(196),m.postMessage(pz.generateFailureMessage(n.t61));case 209:return n.abrupt("break",211);case 210:null==m||m.postMessage(pz.generateFailureMessage(new EM("SPA-CLIENT_WORKER-ONMSG-IV02","The message type is invalid.","The message type provided, ".concat(o.type,", is invalid."))));case 211:case"end":return n.stop()}}),n,null,[[7,18],[30,40],[48,58],[62,72],[76,86],[90,100],[104,114],[124,134],[138,148],[152,162],[168,178],[182,192],[196,206]])})))};var r=function(){n.postMessage({type:Zj})},i=function(t){n.postMessage({data:JSON.stringify(null!=t?t:""),type:yj})},c=function(){n.postMessage({type:Xj})}},Object.defineProperty(t,"__esModule",{value:!0}),t}({});
2
2
  //# sourceMappingURL=asgardeo-spa.production.min.js.map