@asgardeo/auth-spa 0.3.6 → 0.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/asgardeo-spa.production.esm.js +13 -13
  2. package/dist/asgardeo-spa.production.esm.js.map +1 -1
  3. package/dist/asgardeo-spa.production.js +13 -13
  4. package/dist/asgardeo-spa.production.js.map +1 -1
  5. package/dist/asgardeo-spa.production.min.js +1 -1
  6. package/dist/asgardeo-spa.production.min.js.map +1 -1
  7. package/dist/polyfilled/asgardeo-spa.production.esm.js +42 -40
  8. package/dist/polyfilled/asgardeo-spa.production.esm.js.map +1 -1
  9. package/dist/polyfilled/asgardeo-spa.production.js +42 -40
  10. package/dist/polyfilled/asgardeo-spa.production.js.map +1 -1
  11. package/dist/polyfilled/asgardeo-spa.production.min.js +1 -1
  12. package/dist/polyfilled/asgardeo-spa.production.min.js.map +1 -1
  13. package/dist/src/client.d.ts +21 -16
  14. package/dist/src/client.d.ts.map +1 -1
  15. package/dist/src/client.js +29 -3
  16. package/dist/src/client.js.map +1 -1
  17. package/dist/src/clients/main-thread-client.d.ts +3 -2
  18. package/dist/src/clients/main-thread-client.d.ts.map +1 -1
  19. package/dist/src/clients/main-thread-client.js +83 -385
  20. package/dist/src/clients/main-thread-client.js.map +1 -1
  21. package/dist/src/clients/web-worker-client.d.ts +3 -2
  22. package/dist/src/clients/web-worker-client.d.ts.map +1 -1
  23. package/dist/src/clients/web-worker-client.js +98 -138
  24. package/dist/src/clients/web-worker-client.js.map +1 -1
  25. package/dist/src/helpers/authentication-helper.d.ts +50 -0
  26. package/dist/src/helpers/authentication-helper.d.ts.map +1 -0
  27. package/dist/src/helpers/authentication-helper.js +482 -0
  28. package/dist/src/helpers/authentication-helper.js.map +1 -0
  29. package/dist/src/helpers/index.d.ts +1 -0
  30. package/dist/src/helpers/index.d.ts.map +1 -1
  31. package/dist/src/helpers/index.js +1 -0
  32. package/dist/src/helpers/index.js.map +1 -1
  33. package/dist/src/public-api.d.ts +3 -0
  34. package/dist/src/public-api.d.ts.map +1 -1
  35. package/dist/src/public-api.js +5 -0
  36. package/dist/src/public-api.js.map +1 -1
  37. package/dist/src/worker/index.d.ts +1 -1
  38. package/dist/src/worker/index.d.ts.map +1 -1
  39. package/dist/src/worker/index.js +1 -1
  40. package/dist/src/worker/index.js.map +1 -1
  41. package/dist/src/worker/worker-core.d.ts +3 -2
  42. package/dist/src/worker/worker-core.d.ts.map +1 -1
  43. package/dist/src/worker/worker-core.js +23 -202
  44. package/dist/src/worker/worker-core.js.map +1 -1
  45. package/dist/src/worker/worker-receiver.d.ts +22 -0
  46. package/dist/src/worker/worker-receiver.d.ts.map +1 -0
  47. package/dist/src/worker/worker-receiver.js +233 -0
  48. package/dist/src/worker/worker-receiver.js.map +1 -0
  49. package/dist/src/{worker/client.worker.d.ts → worker.d.ts} +2 -2
  50. package/dist/src/worker.d.ts.map +1 -0
  51. package/dist/src/worker.js +24 -0
  52. package/dist/src/worker.js.map +1 -0
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/package.json +1 -1
  55. package/src/client.ts +65 -19
  56. package/src/clients/main-thread-client.ts +137 -486
  57. package/src/clients/web-worker-client.ts +128 -169
  58. package/src/helpers/authentication-helper.ts +661 -0
  59. package/src/helpers/index.ts +1 -0
  60. package/src/public-api.ts +7 -0
  61. package/src/worker/index.ts +1 -1
  62. package/src/worker/worker-core.ts +48 -261
  63. package/src/worker/worker-receiver.ts +297 -0
  64. package/src/worker.ts +30 -0
  65. package/dist/src/worker/client.worker.d.ts.map +0 -1
  66. package/dist/src/worker/client.worker.js +0 -232
  67. package/dist/src/worker/client.worker.js.map +0 -1
  68. package/src/worker/client.worker.ts +0 -286
@@ -1,2 +1,2 @@
1
- var AsgardeoAuth=function(e){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e){if(e.__esModule)return e;var t=Object.defineProperty({},"__esModule",{value:!0});return Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function o(e,t,n,r,i,c,a){try{var o=e[c](a),l=o.value}catch(e){return void n(e)}o.done?t(l):Promise.resolve(l).then(r,i)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,i){var c=e.apply(t,n);function a(e){o(c,r,i,a,l,"next",e)}function l(e){o(c,r,i,a,l,"throw",e)}a(void 0)}))}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)}function Z(e){return Z=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},Z(e)}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function p(){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(e){return!1}}function y(e,t,n){return y=p()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&b(i,n.prototype),i},y.apply(null,arguments)}function X(e){var t="function"==typeof Map?new Map:void 0;return X=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return y(e,arguments,Z(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),b(r,e)},X(e)}function f(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function V(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return f(e)}function G(e){var t=p();return function(){var n,r=Z(e);if(t){var i=Z(this).constructor;n=Reflect.construct(r,arguments,i)}else n=r.apply(this,arguments);return V(this,n)}}function I(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==n)return;var r,i,c=[],a=!0,o=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(c.push(r.value),!t||c.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==n.return||n.return()}finally{if(o)throw i}}return c}(e,t)||g(e,t)||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 W(e){return function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||g(e)||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(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?v(e,t):void 0}}function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=g(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,a=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){o=!0,c=e},f:function(){try{a||null==n.return||n.return()}finally{if(o)throw c}}}}var R=function(e){return e&&e.Math==Math&&e},Y=R("object"==("undefined"==typeof globalThis?"undefined":a(globalThis))&&globalThis)||R("object"==("undefined"==typeof window?"undefined":a(window))&&window)||R("object"==("undefined"==typeof self?"undefined":a(self))&&self)||R("object"==a(t)&&t)||function(){return this}()||Function("return this")(),J={},x=function(e){try{return!!e()}catch(e){return!0}},K=!x((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),L=!x((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),N=L,H=Function.prototype.call,k=N?H.bind(H):function(){return H.apply(H,arguments)},C={},U={}.propertyIsEnumerable,T=Object.getOwnPropertyDescriptor,w=T&&!U.call({1:2},1);C.f=w?function(e){var t=T(this,e);return!!t&&t.enumerable}:U;var F,z,j=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},M=L,P=Function.prototype,Q=P.bind,B=P.call,E=M&&Q.bind(B,B),D=M?function(e){return e&&E(e)}:function(e){return e&&function(){return B.apply(e,arguments)}},O=D,A=O({}.toString),_=O("".slice),q=function(e){return _(A(e),8,-1)},$=D,ee=x,te=q,ne=Y.Object,re=$("".split),ie=ee((function(){return!ne("z").propertyIsEnumerable(0)}))?function(e){return"String"==te(e)?re(e,""):ne(e)}:ne,ce=Y.TypeError,ae=function(e){if(null==e)throw ce("Can't call method on "+e);return e},oe=ie,le=ae,ue=function(e){return oe(le(e))},se=function(e){return"function"==typeof e},de=se,me=function(e){return"object"==a(e)?null!==e:de(e)},he=Y,Ze=se,be=function(e){return Ze(e)?e:void 0},pe=function(e,t){return arguments.length<2?be(he[e]):he[e]&&he[e][t]},ye=D({}.isPrototypeOf),Xe=pe("navigator","userAgent")||"",fe=Y,Ve=Xe,Ge=fe.process,Ie=fe.Deno,We=Ge&&Ge.versions||Ie&&Ie.version,ge=We&&We.v8;ge&&(z=(F=ge.split("."))[0]>0&&F[0]<4?1:+(F[0]+F[1])),!z&&Ve&&(!(F=Ve.match(/Edge\/(\d+)/))||F[1]>=74)&&(F=Ve.match(/Chrome\/(\d+)/))&&(z=+F[1]);var ve=z,Se=ve,Re=x,Ye=!!Object.getOwnPropertySymbols&&!Re((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&Se&&Se<41})),Je=Ye&&!Symbol.sham&&"symbol"==a(Symbol.iterator),xe=pe,Ke=se,Le=ye,Ne=Je,He=Y.Object,ke=Ne?function(e){return"symbol"==a(e)}:function(e){var t=xe("Symbol");return Ke(t)&&Le(t.prototype,He(e))},Ce=Y.String,Ue=function(e){try{return Ce(e)}catch(e){return"Object"}},Te=se,we=Ue,Fe=Y.TypeError,ze=function(e){if(Te(e))return e;throw Fe(we(e)+" is not a function")},je=ze,Me=function(e,t){var n=e[t];return null==n?void 0:je(n)},Pe=k,Qe=se,Be=me,Ee=Y.TypeError,De=function(e,t){var n,r;if("string"===t&&Qe(n=e.toString)&&!Be(r=Pe(n,e)))return r;if(Qe(n=e.valueOf)&&!Be(r=Pe(n,e)))return r;if("string"!==t&&Qe(n=e.toString)&&!Be(r=Pe(n,e)))return r;throw Ee("Can't convert object to primitive value")},Oe={exports:{}},Ae=Y,_e=Object.defineProperty,qe=function(e,t){try{_e(Ae,e,{value:t,configurable:!0,writable:!0})}catch(n){Ae[e]=t}return t},$e=qe,et="__core-js_shared__",tt=Y[et]||$e(et,{}),nt=tt;(Oe.exports=function(e,t){return nt[e]||(nt[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.22.4",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE",source:"https://github.com/zloirock/core-js"});var rt=ae,it=Y.Object,ct=function(e){return it(rt(e))},at=ct,ot=D({}.hasOwnProperty),lt=Object.hasOwn||function(e,t){return ot(at(e),t)},ut=D,st=0,dt=Math.random(),mt=ut(1..toString),ht=function(e){return"Symbol("+(void 0===e?"":e)+")_"+mt(++st+dt,36)},Zt=Y,bt=Oe.exports,pt=lt,yt=ht,Xt=Ye,ft=Je,Vt=bt("wks"),Gt=Zt.Symbol,It=Gt&&Gt.for,Wt=ft?Gt:Gt&&Gt.withoutSetter||yt,gt=function(e){if(!pt(Vt,e)||!Xt&&"string"!=typeof Vt[e]){var t="Symbol."+e;Xt&&pt(Gt,e)?Vt[e]=Gt[e]:Vt[e]=ft&&It?It(t):Wt(t)}return Vt[e]},vt=k,St=me,Rt=ke,Yt=Me,Jt=De,xt=gt,Kt=Y.TypeError,Lt=xt("toPrimitive"),Nt=function(e,t){if(!St(e)||Rt(e))return e;var n,r=Yt(e,Lt);if(r){if(void 0===t&&(t="default"),n=vt(r,e,t),!St(n)||Rt(n))return n;throw Kt("Can't convert object to primitive value")}return void 0===t&&(t="number"),Jt(e,t)},Ht=Nt,kt=ke,Ct=function(e){var t=Ht(e,"string");return kt(t)?t:t+""},Ut=me,Tt=Y.document,wt=Ut(Tt)&&Ut(Tt.createElement),Ft=function(e){return wt?Tt.createElement(e):{}},zt=Ft,jt=!K&&!x((function(){return 7!=Object.defineProperty(zt("div"),"a",{get:function(){return 7}}).a})),Mt=K,Pt=k,Qt=C,Bt=j,Et=ue,Dt=Ct,Ot=lt,At=jt,_t=Object.getOwnPropertyDescriptor;J.f=Mt?_t:function(e,t){if(e=Et(e),t=Dt(t),At)try{return _t(e,t)}catch(e){}if(Ot(e,t))return Bt(!Pt(Qt.f,e,t),e[t])};var qt={},$t=K&&x((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),en=Y,tn=me,nn=en.String,rn=en.TypeError,cn=function(e){if(tn(e))return e;throw rn(nn(e)+" is not an object")},an=K,on=jt,ln=$t,un=cn,sn=Ct,dn=Y.TypeError,mn=Object.defineProperty,hn=Object.getOwnPropertyDescriptor,Zn="enumerable",bn="configurable",pn="writable";qt.f=an?ln?function(e,t,n){if(un(e),t=sn(t),un(n),"function"==typeof e&&"prototype"===t&&"value"in n&&pn in n&&!n.writable){var r=hn(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:bn in n?n.configurable:r.configurable,enumerable:Zn in n?n.enumerable:r.enumerable,writable:!1})}return mn(e,t,n)}:mn:function(e,t,n){if(un(e),t=sn(t),un(n),on)try{return mn(e,t,n)}catch(e){}if("get"in n||"set"in n)throw dn("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var yn=qt,Xn=j,fn=K?function(e,t,n){return yn.f(e,t,Xn(1,n))}:function(e,t,n){return e[t]=n,e},Vn={exports:{}},Gn=K,In=lt,Wn=Function.prototype,gn=Gn&&Object.getOwnPropertyDescriptor,vn=In(Wn,"name"),Sn={EXISTS:vn,PROPER:vn&&"something"===function(){}.name,CONFIGURABLE:vn&&(!Gn||Gn&&gn(Wn,"name").configurable)},Rn=se,Yn=tt,Jn=D(Function.toString);Rn(Yn.inspectSource)||(Yn.inspectSource=function(e){return Jn(e)});var xn,Kn,Ln,Nn=Yn.inspectSource,Hn=se,kn=Nn,Cn=Y.WeakMap,Un=Hn(Cn)&&/native code/.test(kn(Cn)),Tn=Oe.exports,wn=ht,Fn=Tn("keys"),zn=function(e){return Fn[e]||(Fn[e]=wn(e))},jn={},Mn=Un,Pn=Y,Qn=D,Bn=me,En=fn,Dn=lt,On=tt,An=zn,_n=jn,qn="Object already initialized",$n=Pn.TypeError,er=Pn.WeakMap;if(Mn||On.state){var tr=On.state||(On.state=new er),nr=Qn(tr.get),rr=Qn(tr.has),ir=Qn(tr.set);xn=function(e,t){if(rr(tr,e))throw new $n(qn);return t.facade=e,ir(tr,e,t),t},Kn=function(e){return nr(tr,e)||{}},Ln=function(e){return rr(tr,e)}}else{var cr=An("state");_n[cr]=!0,xn=function(e,t){if(Dn(e,cr))throw new $n(qn);return t.facade=e,En(e,cr,t),t},Kn=function(e){return Dn(e,cr)?e[cr]:{}},Ln=function(e){return Dn(e,cr)}}var ar={set:xn,get:Kn,has:Ln,enforce:function(e){return Ln(e)?Kn(e):xn(e,{})},getterFor:function(e){return function(t){var n;if(!Bn(t)||(n=Kn(t)).type!==e)throw $n("Incompatible receiver, "+e+" required");return n}}},or=x,lr=se,ur=lt,sr=qt.f,dr=Sn.CONFIGURABLE,mr=Nn,hr=ar.enforce,Zr=ar.get,br=!or((function(){return 8!==sr((function(){}),"length",{value:8}).length})),pr=String(String).split("String"),yr=Vn.exports=function(e,t,n){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!ur(e,"name")||dr&&e.name!==t)&&sr(e,"name",{value:t,configurable:!0}),br&&n&&ur(n,"arity")&&e.length!==n.arity&&sr(e,"length",{value:n.arity});var r=hr(e);return ur(r,"source")||(r.source=pr.join("string"==typeof t?t:"")),e};Function.prototype.toString=yr((function(){return lr(this)&&Zr(this).source||mr(this)}),"toString");var Xr=Y,fr=se,Vr=fn,Gr=Vn.exports,Ir=qe,Wr=function(e,t,n,r){var i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet,o=r&&void 0!==r.name?r.name:t;return fr(n)&&Gr(n,o,r),e===Xr?(c?e[t]=n:Ir(t,n),e):(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:Vr(e,t,n),e)},gr={},vr=Math.ceil,Sr=Math.floor,Rr=function(e){var t=+e;return t!=t||0===t?0:(t>0?Sr:vr)(t)},Yr=Rr,Jr=Math.max,xr=Math.min,Kr=function(e,t){var n=Yr(e);return n<0?Jr(n+t,0):xr(n,t)},Lr=Rr,Nr=Math.min,Hr=function(e){return e>0?Nr(Lr(e),9007199254740991):0},kr=Hr,Cr=function(e){return kr(e.length)},Ur=ue,Tr=Kr,wr=Cr,Fr=function(e){return function(t,n,r){var i,c=Ur(t),a=wr(c),o=Tr(r,a);if(e&&n!=n){for(;a>o;)if((i=c[o++])!=i)return!0}else for(;a>o;o++)if((e||o in c)&&c[o]===n)return e||o||0;return!e&&-1}},zr={includes:Fr(!0),indexOf:Fr(!1)},jr=lt,Mr=ue,Pr=zr.indexOf,Qr=jn,Br=D([].push),Er=function(e,t){var n,r=Mr(e),i=0,c=[];for(n in r)!jr(Qr,n)&&jr(r,n)&&Br(c,n);for(;t.length>i;)jr(r,n=t[i++])&&(~Pr(c,n)||Br(c,n));return c},Dr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Or=Er,Ar=Dr.concat("length","prototype");gr.f=Object.getOwnPropertyNames||function(e){return Or(e,Ar)};var _r={};_r.f=Object.getOwnPropertySymbols;var qr=pe,$r=gr,ei=_r,ti=cn,ni=D([].concat),ri=qr("Reflect","ownKeys")||function(e){var t=$r.f(ti(e)),n=ei.f;return n?ni(t,n(e)):t},ii=lt,ci=ri,ai=J,oi=qt,li=function(e,t,n){for(var r=ci(t),i=oi.f,c=ai.f,a=0;a<r.length;a++){var o=r[a];ii(e,o)||n&&ii(n,o)||i(e,o,c(t,o))}},ui=x,si=se,di=/#|\.prototype\./,mi=function(e,t){var n=Zi[hi(e)];return n==pi||n!=bi&&(si(t)?ui(t):!!t)},hi=mi.normalize=function(e){return String(e).replace(di,".").toLowerCase()},Zi=mi.data={},bi=mi.NATIVE="N",pi=mi.POLYFILL="P",yi=mi,Xi=Y,fi=J.f,Vi=fn,Gi=Wr,Ii=qe,Wi=li,gi=yi,vi=function(e,t){var n,r,i,c,o,l=e.target,u=e.global,s=e.stat;if(n=u?Xi:s?Xi[l]||Ii(l,{}):(Xi[l]||{}).prototype)for(r in t){if(c=t[r],i=e.noTargetGet?(o=fi(n,r))&&o.value:n[r],!gi(u?r:l+(s?".":"#")+r,e.forced)&&void 0!==i){if(a(c)==a(i))continue;Wi(c,i)}(e.sham||i&&i.sham)&&Vi(c,"sham",!0),Gi(n,r,c,e)}},Si={};Si[gt("toStringTag")]="z";var Ri="[object z]"===String(Si),Yi=Y,Ji=Ri,xi=se,Ki=q,Li=gt("toStringTag"),Ni=Yi.Object,Hi="Arguments"==Ki(function(){return arguments}()),ki=Ji?Ki:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Ni(e),Li))?n:Hi?Ki(t):"Object"==(r=Ki(t))&&xi(t.callee)?"Arguments":r},Ci=ki,Ui=Y.String,Ti=function(e){if("Symbol"===Ci(e))throw TypeError("Cannot convert a Symbol value to a string");return Ui(e)},wi={},Fi=Er,zi=Dr,ji=Object.keys||function(e){return Fi(e,zi)},Mi=K,Pi=$t,Qi=qt,Bi=cn,Ei=ue,Di=ji;wi.f=Mi&&!Pi?Object.defineProperties:function(e,t){Bi(e);for(var n,r=Ei(t),i=Di(t),c=i.length,a=0;c>a;)Qi.f(e,n=i[a++],r[n]);return e};var Oi,Ai=pe("document","documentElement"),_i=cn,qi=wi,$i=Dr,ec=jn,tc=Ai,nc=Ft,rc=zn("IE_PROTO"),ic=function(){},cc=function(e){return"<script>"+e+"</"+"script>"},ac=function(e){e.write(cc("")),e.close();var t=e.parentWindow.Object;return e=null,t},oc=function(){try{Oi=new ActiveXObject("htmlfile")}catch(e){}var e,t;oc="undefined"!=typeof document?document.domain&&Oi?ac(Oi):((t=nc("iframe")).style.display="none",tc.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(cc("document.F=Object")),e.close(),e.F):ac(Oi);for(var n=$i.length;n--;)delete oc.prototype[$i[n]];return oc()};ec[rc]=!0;var lc=Object.create||function(e,t){var n;return null!==e?(ic.prototype=_i(e),n=new ic,ic.prototype=null,n[rc]=e):n=oc(),void 0===t?n:qi.f(n,t)},uc={},sc=Ct,dc=qt,mc=j,hc=function(e,t,n){var r=sc(t);r in e?dc.f(e,r,mc(0,n)):e[r]=n},Zc=Kr,bc=Cr,pc=hc,yc=Y.Array,Xc=Math.max,fc=function(e,t,n){for(var r=bc(e),i=Zc(t,r),c=Zc(void 0===n?r:n,r),a=yc(Xc(c-i,0)),o=0;i<c;i++,o++)pc(a,o,e[i]);return a.length=o,a},Vc=q,Gc=ue,Ic=gr.f,Wc=fc,gc="object"==("undefined"==typeof window?"undefined":a(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];uc.f=function(e){return gc&&"Window"==Vc(e)?function(e){try{return Ic(e)}catch(e){return Wc(gc)}}(e):Ic(Gc(e))};var vc={},Sc=gt;vc.f=Sc;var Rc=Y,Yc=lt,Jc=vc,xc=qt.f,Kc=function(e){var t=Rc.Symbol||(Rc.Symbol={});Yc(t,e)||xc(t,e,{value:Jc.f(e)})},Lc=k,Nc=pe,Hc=gt,kc=Wr,Cc=function(){var e=Nc("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=Hc("toPrimitive");t&&!t[r]&&kc(t,r,(function(e){return Lc(n,this)}),{arity:1})},Uc=qt.f,Tc=lt,wc=gt("toStringTag"),Fc=function(e,t,n){e&&!n&&(e=e.prototype),e&&!Tc(e,wc)&&Uc(e,wc,{configurable:!0,value:t})},zc=ze,jc=L,Mc=D(D.bind),Pc=function(e,t){return zc(e),void 0===t?e:jc?Mc(e,t):function(){return e.apply(t,arguments)}},Qc=q,Bc=Array.isArray||function(e){return"Array"==Qc(e)},Ec=D,Dc=x,Oc=se,Ac=ki,_c=Nn,qc=function(){},$c=[],ea=pe("Reflect","construct"),ta=/^\s*(?:class|function)\b/,na=Ec(ta.exec),ra=!ta.exec(qc),ia=function(e){if(!Oc(e))return!1;try{return ea(qc,$c,e),!0}catch(e){return!1}},ca=function(e){if(!Oc(e))return!1;switch(Ac(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return ra||!!na(ta,_c(e))}catch(e){return!0}};ca.sham=!0;var aa=!ea||Dc((function(){var e;return ia(ia.call)||!ia(Object)||!ia((function(){e=!0}))||e}))?ca:ia,oa=Y,la=Bc,ua=aa,sa=me,da=gt("species"),ma=oa.Array,ha=function(e){var t;return la(e)&&(t=e.constructor,(ua(t)&&(t===ma||la(t.prototype))||sa(t)&&null===(t=t[da]))&&(t=void 0)),void 0===t?ma:t},Za=function(e,t){return new(ha(e))(0===t?0:t)},ba=Pc,pa=ie,ya=ct,Xa=Cr,fa=Za,Va=D([].push),Ga=function(e){var t=1==e,n=2==e,r=3==e,i=4==e,c=6==e,a=7==e,o=5==e||c;return function(l,u,s,d){for(var m,h,Z=ya(l),b=pa(Z),p=ba(u,s),y=Xa(b),X=0,f=d||fa,V=t?f(l,y):n||a?f(l,0):void 0;y>X;X++)if((o||X in b)&&(h=p(m=b[X],X,Z),e))if(t)V[X]=h;else if(h)switch(e){case 3:return!0;case 5:return m;case 6:return X;case 2:Va(V,m)}else switch(e){case 4:return!1;case 7:Va(V,m)}return c?-1:r||i?i:V}},Ia={forEach:Ga(0),map:Ga(1),filter:Ga(2),some:Ga(3),every:Ga(4),find:Ga(5),findIndex:Ga(6),filterReject:Ga(7)},Wa=vi,ga=Y,va=k,Sa=D,Ra=K,Ya=Ye,Ja=x,xa=lt,Ka=ye,La=cn,Na=ue,Ha=Ct,ka=Ti,Ca=j,Ua=lc,Ta=ji,wa=gr,Fa=uc,za=_r,ja=J,Ma=qt,Pa=wi,Qa=C,Ba=Wr,Ea=Oe.exports,Da=jn,Oa=ht,Aa=gt,_a=vc,qa=Kc,$a=Cc,eo=Fc,to=ar,no=Ia.forEach,ro=zn("hidden"),io="Symbol",co=to.set,ao=to.getterFor(io),oo=Object.prototype,lo=ga.Symbol,uo=lo&&lo.prototype,so=ga.TypeError,mo=ga.QObject,ho=ja.f,Zo=Ma.f,bo=Fa.f,po=Qa.f,yo=Sa([].push),Xo=Ea("symbols"),fo=Ea("op-symbols"),Vo=Ea("wks"),Go=!mo||!mo.prototype||!mo.prototype.findChild,Io=Ra&&Ja((function(){return 7!=Ua(Zo({},"a",{get:function(){return Zo(this,"a",{value:7}).a}})).a}))?function(e,t,n){var r=ho(oo,t);r&&delete oo[t],Zo(e,t,n),r&&e!==oo&&Zo(oo,t,r)}:Zo,Wo=function(e,t){var n=Xo[e]=Ua(uo);return co(n,{type:io,tag:e,description:t}),Ra||(n.description=t),n},go=function(e,t,n){e===oo&&go(fo,t,n),La(e);var r=Ha(t);return La(n),xa(Xo,r)?(n.enumerable?(xa(e,ro)&&e[ro][r]&&(e[ro][r]=!1),n=Ua(n,{enumerable:Ca(0,!1)})):(xa(e,ro)||Zo(e,ro,Ca(1,{})),e[ro][r]=!0),Io(e,r,n)):Zo(e,r,n)},vo=function(e,t){La(e);var n=Na(t),r=Ta(n).concat(Jo(n));return no(r,(function(t){Ra&&!va(So,n,t)||go(e,t,n[t])})),e},So=function(e){var t=Ha(e),n=va(po,this,t);return!(this===oo&&xa(Xo,t)&&!xa(fo,t))&&(!(n||!xa(this,t)||!xa(Xo,t)||xa(this,ro)&&this[ro][t])||n)},Ro=function(e,t){var n=Na(e),r=Ha(t);if(n!==oo||!xa(Xo,r)||xa(fo,r)){var i=ho(n,r);return!i||!xa(Xo,r)||xa(n,ro)&&n[ro][r]||(i.enumerable=!0),i}},Yo=function(e){var t=bo(Na(e)),n=[];return no(t,(function(e){xa(Xo,e)||xa(Da,e)||yo(n,e)})),n},Jo=function(e){var t=e===oo,n=bo(t?fo:Na(e)),r=[];return no(n,(function(e){!xa(Xo,e)||t&&!xa(oo,e)||yo(r,Xo[e])})),r};Ya||(lo=function(){if(Ka(uo,this))throw so("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?ka(arguments[0]):void 0,t=Oa(e),n=function e(n){this===oo&&va(e,fo,n),xa(this,ro)&&xa(this[ro],t)&&(this[ro][t]=!1),Io(this,t,Ca(1,n))};return Ra&&Go&&Io(oo,t,{configurable:!0,set:n}),Wo(t,e)},Ba(uo=lo.prototype,"toString",(function(){return ao(this).tag})),Ba(lo,"withoutSetter",(function(e){return Wo(Oa(e),e)})),Qa.f=So,Ma.f=go,Pa.f=vo,ja.f=Ro,wa.f=Fa.f=Yo,za.f=Jo,_a.f=function(e){return Wo(Aa(e),e)},Ra&&(Zo(uo,"description",{configurable:!0,get:function(){return ao(this).description}}),Ba(oo,"propertyIsEnumerable",So,{unsafe:!0}))),Wa({global:!0,wrap:!0,forced:!Ya,sham:!Ya},{Symbol:lo}),no(Ta(Vo),(function(e){qa(e)})),Wa({target:io,stat:!0,forced:!Ya},{useSetter:function(){Go=!0},useSimple:function(){Go=!1}}),Wa({target:"Object",stat:!0,forced:!Ya,sham:!Ra},{create:function(e,t){return void 0===t?Ua(e):vo(Ua(e),t)},defineProperty:go,defineProperties:vo,getOwnPropertyDescriptor:Ro}),Wa({target:"Object",stat:!0,forced:!Ya},{getOwnPropertyNames:Yo}),$a(),eo(lo,io),Da[ro]=!0;var xo=Ye&&!!Symbol.for&&!!Symbol.keyFor,Ko=vi,Lo=pe,No=lt,Ho=Ti,ko=Oe.exports,Co=xo,Uo=ko("string-to-symbol-registry"),To=ko("symbol-to-string-registry");Ko({target:"Symbol",stat:!0,forced:!Co},{for:function(e){var t=Ho(e);if(No(Uo,t))return Uo[t];var n=Lo("Symbol")(t);return Uo[t]=n,To[n]=t,n}});var wo=vi,Fo=lt,zo=ke,jo=Ue,Mo=xo,Po=(0,Oe.exports)("symbol-to-string-registry");wo({target:"Symbol",stat:!0,forced:!Mo},{keyFor:function(e){if(!zo(e))throw TypeError(jo(e)+" is not a symbol");if(Fo(Po,e))return Po[e]}});var Qo=L,Bo=Function.prototype,Eo=Bo.apply,Do=Bo.call,Oo="object"==("undefined"==typeof Reflect?"undefined":a(Reflect))&&Reflect.apply||(Qo?Do.bind(Eo):function(){return Do.apply(Eo,arguments)}),Ao=D([].slice),_o=vi,qo=pe,$o=Oo,el=k,tl=D,nl=x,rl=Bc,il=se,cl=me,al=ke,ol=Ao,ll=Ye,ul=qo("JSON","stringify"),sl=tl(/./.exec),dl=tl("".charAt),ml=tl("".charCodeAt),hl=tl("".replace),Zl=tl(1..toString),bl=/[\uD800-\uDFFF]/g,pl=/^[\uD800-\uDBFF]$/,yl=/^[\uDC00-\uDFFF]$/,Xl=!ll||nl((function(){var e=qo("Symbol")();return"[null]"!=ul([e])||"{}"!=ul({a:e})||"{}"!=ul(Object(e))})),fl=nl((function(){return'"\\udf06\\ud834"'!==ul("\udf06\ud834")||'"\\udead"'!==ul("\udead")})),Vl=function(e,t){var n=ol(arguments),r=t;if((cl(t)||void 0!==e)&&!al(e))return rl(t)||(t=function(e,t){if(il(r)&&(t=el(r,this,e,t)),!al(t))return t}),n[1]=t,$o(ul,null,n)},Gl=function(e,t,n){var r=dl(n,t-1),i=dl(n,t+1);return sl(pl,e)&&!sl(yl,i)||sl(yl,e)&&!sl(pl,r)?"\\u"+Zl(ml(e,0),16):e};ul&&_o({target:"JSON",stat:!0,arity:3,forced:Xl||fl},{stringify:function(e,t,n){var r=ol(arguments),i=$o(Xl?Vl:ul,null,r);return fl&&"string"==typeof i?hl(i,bl,Gl):i}});var Il=_r,Wl=ct;vi({target:"Object",stat:!0,forced:!Ye||x((function(){Il.f(1)}))},{getOwnPropertySymbols:function(e){var t=Il.f;return t?t(Wl(e)):[]}});var gl=vi,vl=K,Sl=Y,Rl=D,Yl=lt,Jl=se,xl=ye,Kl=Ti,Ll=qt.f,Nl=li,Hl=Sl.Symbol,kl=Hl&&Hl.prototype;if(vl&&Jl(Hl)&&(!("description"in kl)||void 0!==Hl().description)){var Cl={},Ul=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:Kl(arguments[0]),t=xl(kl,this)?new Hl(e):void 0===e?Hl():Hl(e);return""===e&&(Cl[t]=!0),t};Nl(Ul,Hl),Ul.prototype=kl,kl.constructor=Ul;var Tl="Symbol(test)"==String(Hl("test")),wl=Rl(kl.toString),Fl=Rl(kl.valueOf),zl=/^Symbol\((.*)\)[^)]+$/,jl=Rl("".replace),Ml=Rl("".slice);Ll(kl,"description",{configurable:!0,get:function(){var e=Fl(this),t=wl(e);if(Yl(Cl,e))return"";var n=Tl?Ml(t,7,-1):jl(t,zl,"$1");return""===n?void 0:n}}),gl({global:!0,forced:!0},{Symbol:Ul})}Kc("asyncIterator"),Kc("hasInstance"),Kc("isConcatSpreadable"),Kc("iterator"),Kc("match"),Kc("matchAll"),Kc("replace"),Kc("search"),Kc("species"),Kc("split");var Pl=Cc;Kc("toPrimitive"),Pl();var Ql=pe,Bl=Fc;Kc("toStringTag"),Bl(Ql("Symbol"),"Symbol"),Kc("unscopables");var El=x,Dl=ve,Ol=gt("species"),Al=function(e){return Dl>=51||!El((function(){var t=[];return(t.constructor={})[Ol]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},_l=vi,ql=Y,$l=x,eu=Bc,tu=me,nu=ct,ru=Cr,iu=hc,cu=Za,au=Al,ou=ve,lu=gt("isConcatSpreadable"),uu=9007199254740991,su="Maximum allowed index exceeded",du=ql.TypeError,mu=ou>=51||!$l((function(){var e=[];return e[lu]=!1,e.concat()[0]!==e})),hu=au("concat"),Zu=function(e){if(!tu(e))return!1;var t=e[lu];return void 0!==t?!!t:eu(e)};_l({target:"Array",proto:!0,arity:1,forced:!mu||!hu},{concat:function(e){var t,n,r,i,c,a=nu(this),o=cu(a,0),l=0;for(t=-1,r=arguments.length;t<r;t++)if(Zu(c=-1===t?a:arguments[t])){if(l+(i=ru(c))>uu)throw du(su);for(n=0;n<i;n++,l++)n in c&&iu(o,l,c[n])}else{if(l>=uu)throw du(su);iu(o,l++,c)}return o.length=l,o}});var bu=ct,pu=Kr,yu=Cr,Xu=Math.min,fu=[].copyWithin||function(e,t){var n=bu(this),r=yu(n),i=pu(e,r),c=pu(t,r),a=arguments.length>2?arguments[2]:void 0,o=Xu((void 0===a?r:pu(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]:delete n[i],i+=l,c+=l;return n},Vu=lc,Gu=qt,Iu=gt("unscopables"),Wu=Array.prototype;null==Wu[Iu]&&Gu.f(Wu,Iu,{configurable:!0,value:Vu(null)});var gu=function(e){Wu[Iu][e]=!0},vu=gu;vi({target:"Array",proto:!0},{copyWithin:fu}),vu("copyWithin");var Su=ct,Ru=Kr,Yu=Cr,Ju=function(e){for(var t=Su(this),n=Yu(t),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;)t[i++]=e;return t},xu=gu;vi({target:"Array",proto:!0},{fill:Ju}),xu("fill");var Ku=Ia.filter;vi({target:"Array",proto:!0,forced:!Al("filter")},{filter:function(e){return Ku(this,e,arguments.length>1?arguments[1]:void 0)}});var Lu=vi,Nu=Ia.find,Hu=gu,ku="find",Cu=!0;ku in[]&&Array(1).find((function(){Cu=!1})),Lu({target:"Array",proto:!0,forced:Cu},{find:function(e){return Nu(this,e,arguments.length>1?arguments[1]:void 0)}}),Hu(ku);var Uu=vi,Tu=Ia.findIndex,wu=gu,Fu="findIndex",zu=!0;Fu in[]&&Array(1).findIndex((function(){zu=!1})),Uu({target:"Array",proto:!0,forced:zu},{findIndex:function(e){return Tu(this,e,arguments.length>1?arguments[1]:void 0)}}),wu(Fu);var ju=Bc,Mu=Cr,Pu=Pc,Qu=Y.TypeError,Bu=function e(t,n,r,i,c,a,o,l){for(var u,s=c,d=0,m=!!o&&Pu(o,l);d<i;){if(d in r){if(u=m?m(r[d],d,n):r[d],a>0&&ju(u))s=e(t,n,u,Mu(u),s,a-1)-1;else{if(s>=9007199254740991)throw Qu("Exceed the acceptable array length");t[s]=u}s++}d++}return s},Eu=Bu,Du=ct,Ou=Cr,Au=Rr,_u=Za;vi({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,t=Du(this),n=Ou(t),r=_u(t,0);return r.length=Eu(r,t,t,n,0,void 0===e?1:Au(e)),r}});var qu=Bu,$u=ze,es=ct,ts=Cr,ns=Za;vi({target:"Array",proto:!0},{flatMap:function(e){var t,n=es(this),r=ts(n);return $u(e),(t=ns(n,0)).length=qu(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:void 0),t}});var rs=k,is=cn,cs=Me,as=function(e,t,n){var r,i;is(e);try{if(!(r=cs(e,"return"))){if("throw"===t)throw n;return n}r=rs(r,e)}catch(e){i=!0,r=e}if("throw"===t)throw n;if(i)throw r;return is(r),n},os=cn,ls=as,us={},ss=us,ds=gt("iterator"),ms=Array.prototype,hs=function(e){return void 0!==e&&(ss.Array===e||ms[ds]===e)},Zs=ki,bs=Me,ps=us,ys=gt("iterator"),Xs=function(e){if(null!=e)return bs(e,ys)||bs(e,"@@iterator")||ps[Zs(e)]},fs=k,Vs=ze,Gs=cn,Is=Ue,Ws=Xs,gs=Y.TypeError,vs=function(e,t){var n=arguments.length<2?Ws(e):t;if(Vs(n))return Gs(fs(n,e));throw gs(Is(e)+" is not iterable")},Ss=Pc,Rs=k,Ys=ct,Js=function(e,t,n,r){try{return r?t(os(n)[0],n[1]):t(n)}catch(t){ls(e,"throw",t)}},xs=hs,Ks=aa,Ls=Cr,Ns=hc,Hs=vs,ks=Xs,Cs=Y.Array,Us=function(e){var t=Ys(e),n=Ks(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Ss(i,r>2?arguments[2]:void 0));var a,o,l,u,s,d,m=ks(t),h=0;if(!m||this==Cs&&xs(m))for(a=Ls(t),o=n?new this(a):Cs(a);a>h;h++)d=c?i(t[h],h):t[h],Ns(o,h,d);else for(s=(u=Hs(t,m)).next,o=n?new this:[];!(l=Rs(s,u)).done;h++)d=c?Js(u,i,[l.value,h],!0):l.value,Ns(o,h,d);return o.length=h,o},Ts=gt("iterator"),ws=!1;try{var Fs=0,zs={next:function(){return{done:!!Fs++}},return:function(){ws=!0}};zs[Ts]=function(){return this},Array.from(zs,(function(){throw 2}))}catch(e){}var js=function(e,t){if(!t&&!ws)return!1;var n=!1;try{var r={};r[Ts]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(e){}return n},Ms=Us;vi({target:"Array",stat:!0,forced:!js((function(e){Array.from(e)}))},{from:Ms});var Ps=zr.includes,Qs=gu;vi({target:"Array",proto:!0,forced:x((function(){return!Array(1).includes()}))},{includes:function(e){return Ps(this,e,arguments.length>1?arguments[1]:void 0)}}),Qs("includes");var Bs,Es,Ds,Os=!x((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),As=Y,_s=lt,qs=se,$s=ct,ed=Os,td=zn("IE_PROTO"),nd=As.Object,rd=nd.prototype,id=ed?nd.getPrototypeOf:function(e){var t=$s(e);if(_s(t,td))return t[td];var n=t.constructor;return qs(n)&&t instanceof n?n.prototype:t instanceof nd?rd:null},cd=x,ad=se,od=id,ld=Wr,ud=gt("iterator"),sd=!1;[].keys&&("next"in(Ds=[].keys())?(Es=od(od(Ds)))!==Object.prototype&&(Bs=Es):sd=!0);var dd=null==Bs||cd((function(){var e={};return Bs[ud].call(e)!==e}));dd&&(Bs={}),ad(Bs[ud])||ld(Bs,ud,(function(){return this}));var md={IteratorPrototype:Bs,BUGGY_SAFARI_ITERATORS:sd},hd=md.IteratorPrototype,Zd=lc,bd=j,pd=Fc,yd=us,Xd=function(){return this},fd=function(e,t,n,r){var i=t+" Iterator";return e.prototype=Zd(hd,{next:bd(+!r,n)}),pd(e,i,!1),yd[i]=Xd,e},Vd=Y,Gd=se,Id=Vd.String,Wd=Vd.TypeError,gd=function(e){if("object"==a(e)||Gd(e))return e;throw Wd("Can't set "+Id(e)+" as a prototype")},vd=D,Sd=cn,Rd=gd,Yd=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=vd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return Sd(n),Rd(r),t?e(n,r):n.__proto__=r,n}}():void 0),Jd=vi,xd=k,Kd=se,Ld=fd,Nd=id,Hd=Yd,kd=Fc,Cd=fn,Ud=Wr,Td=us,wd=Sn.PROPER,Fd=Sn.CONFIGURABLE,zd=md.IteratorPrototype,jd=md.BUGGY_SAFARI_ITERATORS,Md=gt("iterator"),Pd="keys",Qd="values",Bd="entries",Ed=function(){return this},Dd=function(e,t,n,r,i,c,a){Ld(n,t,r);var o,l,u,s=function(e){if(e===i&&b)return b;if(!jd&&e in h)return h[e];switch(e){case Pd:case Qd:case Bd:return function(){return new n(this,e)}}return function(){return new n(this)}},d=t+" Iterator",m=!1,h=e.prototype,Z=h[Md]||h["@@iterator"]||i&&h[i],b=!jd&&Z||s(i),p="Array"==t&&h.entries||Z;if(p&&(o=Nd(p.call(new e)))!==Object.prototype&&o.next&&(Nd(o)!==zd&&(Hd?Hd(o,zd):Kd(o[Md])||Ud(o,Md,Ed)),kd(o,d,!0)),wd&&i==Qd&&Z&&Z.name!==Qd&&(Fd?Cd(h,"name",Qd):(m=!0,b=function(){return xd(Z,this)})),i)if(l={values:s(Qd),keys:c?b:s(Pd),entries:s(Bd)},a)for(u in l)(jd||m||!(u in h))&&Ud(h,u,l[u]);else Jd({target:t,proto:!0,forced:jd||m},l);return h[Md]!==b&&Ud(h,Md,b,{name:i}),Td[t]=b,l},Od=ue,Ad=gu,_d=us,qd=ar,$d=qt.f,em=Dd,tm=K,nm="Array Iterator",rm=qd.set,im=qd.getterFor(nm),cm=em(Array,"Array",(function(e,t){rm(this,{type:nm,target:Od(e),index:0,kind:t})}),(function(){var e=im(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),am=_d.Arguments=_d.Array;if(Ad("keys"),Ad("values"),Ad("entries"),tm&&"values"!==am.name)try{$d(am,"name",{value:"values"})}catch(e){}var om=x,lm=function(e,t){var n=[][e];return!!n&&om((function(){n.call(null,t||function(){return 1},1)}))},um=vi,sm=ie,dm=ue,mm=lm,hm=D([].join),Zm=sm!=Object,bm=mm("join",",");um({target:"Array",proto:!0,forced:Zm||!bm},{join:function(e){return hm(dm(this),void 0===e?",":e)}});var pm=Ia.map;vi({target:"Array",proto:!0,forced:!Al("map")},{map:function(e){return pm(this,e,arguments.length>1?arguments[1]:void 0)}});var ym=vi,Xm=x,fm=aa,Vm=hc,Gm=Y.Array;ym({target:"Array",stat:!0,forced:Xm((function(){function e(){}return!(Gm.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new(fm(this)?this:Gm)(t);t>e;)Vm(n,e,arguments[e++]);return n.length=t,n}});var Im=vi,Wm=Y,gm=Bc,vm=aa,Sm=me,Rm=Kr,Ym=Cr,Jm=ue,xm=hc,Km=gt,Lm=Ao,Nm=Al("slice"),Hm=Km("species"),km=Wm.Array,Cm=Math.max;Im({target:"Array",proto:!0,forced:!Nm},{slice:function(e,t){var n,r,i,c=Jm(this),a=Ym(c),o=Rm(e,a),l=Rm(void 0===t?a:t,a);if(gm(c)&&(n=c.constructor,(vm(n)&&(n===km||gm(n.prototype))||Sm(n)&&null===(n=n[Hm]))&&(n=void 0),n===km||void 0===n))return Lm(c,o,l);for(r=new(void 0===n?km:n)(Cm(l-o,0)),i=0;o<l;o++,i++)o in c&&xm(r,i,c[o]);return r.length=i,r}});var Um=fc,Tm=Math.floor,wm=function(e,t){for(var n,r,i=e.length,c=1;c<i;){for(r=c,n=e[c];r&&t(e[r-1],n)>0;)e[r]=e[--r];r!==c++&&(e[r]=n)}return e},Fm=function(e,t,n,r){for(var i=t.length,c=n.length,a=0,o=0;a<i||o<c;)e[a+o]=a<i&&o<c?r(t[a],n[o])<=0?t[a++]:n[o++]:a<i?t[a++]:n[o++];return e},zm=function e(t,n){var r=t.length,i=Tm(r/2);return r<8?wm(t,n):Fm(t,e(Um(t,0,i),n),e(Um(t,i),n),n)},jm=Xe.match(/firefox\/(\d+)/i),Mm=!!jm&&+jm[1],Pm=/MSIE|Trident/.test(Xe),Qm=Xe.match(/AppleWebKit\/(\d+)\./),Bm=!!Qm&&+Qm[1],Em=vi,Dm=D,Om=ze,Am=ct,_m=Cr,qm=Ti,$m=x,eh=zm,th=lm,nh=Mm,rh=Pm,ih=ve,ch=Bm,ah=[],oh=Dm(ah.sort),lh=Dm(ah.push),uh=$m((function(){ah.sort(void 0)})),sh=$m((function(){ah.sort(null)})),dh=th("sort"),mh=!$m((function(){if(ih)return ih<70;if(!(nh&&nh>3)){if(rh)return!0;if(ch)return ch<603;var e,t,n,r,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){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++)ah.push({k:t+r,v:n})}for(ah.sort((function(e,t){return t.v-e.v})),r=0;r<ah.length;r++)t=ah[r].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}}));Em({target:"Array",proto:!0,forced:uh||!sh||!dh||!mh},{sort:function(e){void 0!==e&&Om(e);var t=Am(this);if(mh)return void 0===e?oh(t):oh(t,e);var n,r,i=[],c=_m(t);for(r=0;r<c;r++)r in t&&lh(i,t[r]);for(eh(i,function(e){return function(t,n){return void 0===n?-1:void 0===t?1:void 0!==e?+e(t,n)||0:qm(t)>qm(n)?1:-1}}(e)),n=i.length,r=0;r<n;)t[r]=i[r++];for(;r<c;)delete t[r++];return t}});var hh=pe,Zh=qt,bh=K,ph=gt("species"),yh=function(e){var t=hh(e),n=Zh.f;bh&&t&&!t[ph]&&n(t,ph,{configurable:!0,get:function(){return this}})};yh("Array");var Xh=vi,fh=Y,Vh=Kr,Gh=Rr,Ih=Cr,Wh=ct,gh=Za,vh=hc,Sh=Al("splice"),Rh=fh.TypeError,Yh=Math.max,Jh=Math.min,xh=9007199254740991,Kh="Maximum allowed length exceeded";Xh({target:"Array",proto:!0,forced:!Sh},{splice:function(e,t){var n,r,i,c,a,o,l=Wh(this),u=Ih(l),s=Vh(e,u),d=arguments.length;if(0===d?n=r=0:1===d?(n=0,r=u-s):(n=d-2,r=Jh(Yh(Gh(t),0),u-s)),u+n-r>xh)throw Rh(Kh);for(i=gh(l,r),c=0;c<r;c++)(a=s+c)in l&&vh(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]:delete l[o];for(c=u;c>u-r+n;c--)delete 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]:delete 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 Lh="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Nh=Wr,Hh=function(e,t,n){for(var r in t)Nh(e,r,t[r],n);return e},kh=ye,Ch=Y.TypeError,Uh=function(e,t){if(kh(t,e))return e;throw Ch("Incorrect invocation")},Th=Rr,wh=Hr,Fh=Y.RangeError,zh=function(e){if(void 0===e)return 0;var t=Th(e),n=wh(t);if(t!==n)throw Fh("Wrong length or index");return n},jh=Y.Array,Mh=Math.abs,Ph=Math.pow,Qh=Math.floor,Bh=Math.log,Eh=Math.LN2,Dh={pack:function(e,t,n){var r,i,c,a=jh(n),o=8*n-t-1,l=(1<<o)-1,u=l>>1,s=23===t?Ph(2,-24)-Ph(2,-77):0,d=e<0||0===e&&1/e<0?1:0,m=0;for((e=Mh(e))!=e||e===1/0?(i=e!=e?1:0,r=l):(r=Qh(Bh(e)/Eh),e*(c=Ph(2,-r))<1&&(r--,c*=2),(e+=r+u>=1?s/c:s*Ph(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(e*c-1)*Ph(2,t),r+=u):(i=e*Ph(2,u-1)*Ph(2,t),r=0));t>=8;)a[m++]=255&i,i/=256,t-=8;for(r=r<<t|i,o+=t;o>0;)a[m++]=255&r,r/=256,o-=8;return a[--m]|=128*d,a},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,c=(1<<i)-1,a=c>>1,o=i-7,l=r-1,u=e[l--],s=127&u;for(u>>=7;o>0;)s=256*s+e[l--],o-=8;for(n=s&(1<<-o)-1,s>>=-o,o+=t;o>0;)n=256*n+e[l--],o-=8;if(0===s)s=1-a;else{if(s===c)return n?NaN:u?-1/0:1/0;n+=Ph(2,t),s-=a}return(u?-1:1)*n*Ph(2,s-t)}},Oh=Y,Ah=D,_h=K,qh=Lh,$h=Sn,eZ=fn,tZ=Hh,nZ=x,rZ=Uh,iZ=Rr,cZ=Hr,aZ=zh,oZ=Dh,lZ=id,uZ=Yd,sZ=gr.f,dZ=qt.f,mZ=Ju,hZ=fc,ZZ=Fc,bZ=$h.PROPER,pZ=$h.CONFIGURABLE,yZ=ar.get,XZ=ar.set,fZ="ArrayBuffer",VZ="DataView",GZ="Wrong index",IZ=Oh.ArrayBuffer,WZ=IZ,gZ=WZ&&WZ.prototype,vZ=Oh.DataView,SZ=vZ&&vZ.prototype,RZ=Object.prototype,YZ=Oh.Array,JZ=Oh.RangeError,xZ=Ah(mZ),KZ=Ah([].reverse),LZ=oZ.pack,NZ=oZ.unpack,HZ=function(e){return[255&e]},kZ=function(e){return[255&e,e>>8&255]},CZ=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},UZ=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},TZ=function(e){return LZ(e,23,4)},wZ=function(e){return LZ(e,52,8)},FZ=function(e,t){dZ(e.prototype,t,{get:function(){return yZ(this)[t]}})},zZ=function(e,t,n,r){var i=aZ(n),c=yZ(e);if(i+t>c.byteLength)throw JZ(GZ);var a=yZ(c.buffer).bytes,o=i+c.byteOffset,l=hZ(a,o,o+t);return r?l:KZ(l)},jZ=function(e,t,n,r,i,c){var a=aZ(n),o=yZ(e);if(a+t>o.byteLength)throw JZ(GZ);for(var l=yZ(o.buffer).bytes,u=a+o.byteOffset,s=r(+i),d=0;d<t;d++)l[u+d]=s[c?d:t-d-1]};if(qh){var MZ=bZ&&IZ.name!==fZ;if(nZ((function(){IZ(1)}))&&nZ((function(){new IZ(-1)}))&&!nZ((function(){return new IZ,new IZ(1.5),new IZ(NaN),MZ&&!pZ})))MZ&&pZ&&eZ(IZ,"name",fZ);else{(WZ=function(e){return rZ(this,gZ),new IZ(aZ(e))}).prototype=gZ;for(var PZ,QZ=sZ(IZ),BZ=0;QZ.length>BZ;)(PZ=QZ[BZ++])in WZ||eZ(WZ,PZ,IZ[PZ]);gZ.constructor=WZ}uZ&&lZ(SZ)!==RZ&&uZ(SZ,RZ);var EZ=new vZ(new WZ(2)),DZ=Ah(SZ.setInt8);EZ.setInt8(0,2147483648),EZ.setInt8(1,2147483649),!EZ.getInt8(0)&&EZ.getInt8(1)||tZ(SZ,{setInt8:function(e,t){DZ(this,e,t<<24>>24)},setUint8:function(e,t){DZ(this,e,t<<24>>24)}},{unsafe:!0})}else WZ=function(e){rZ(this,gZ);var t=aZ(e);XZ(this,{bytes:xZ(YZ(t),0),byteLength:t}),_h||(this.byteLength=t)},gZ=WZ.prototype,vZ=function(e,t,n){rZ(this,SZ),rZ(e,gZ);var r=yZ(e).byteLength,i=iZ(t);if(i<0||i>r)throw JZ("Wrong offset");if(i+(n=void 0===n?r-i:cZ(n))>r)throw JZ("Wrong length");XZ(this,{buffer:e,byteLength:n,byteOffset:i}),_h||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},SZ=vZ.prototype,_h&&(FZ(WZ,"byteLength"),FZ(vZ,"buffer"),FZ(vZ,"byteLength"),FZ(vZ,"byteOffset")),tZ(SZ,{getInt8:function(e){return zZ(this,1,e)[0]<<24>>24},getUint8:function(e){return zZ(this,1,e)[0]},getInt16:function(e){var t=zZ(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=zZ(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return UZ(zZ(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return UZ(zZ(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return NZ(zZ(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return NZ(zZ(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){jZ(this,1,e,HZ,t)},setUint8:function(e,t){jZ(this,1,e,HZ,t)},setInt16:function(e,t){jZ(this,2,e,kZ,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){jZ(this,2,e,kZ,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){jZ(this,4,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){jZ(this,4,e,CZ,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){jZ(this,4,e,TZ,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){jZ(this,8,e,wZ,t,arguments.length>2?arguments[2]:void 0)}});ZZ(WZ,fZ),ZZ(vZ,VZ);var OZ={ArrayBuffer:WZ,DataView:vZ},AZ=yh,_Z="ArrayBuffer",qZ=OZ.ArrayBuffer;vi({global:!0,forced:Y.ArrayBuffer!==qZ},{ArrayBuffer:qZ}),AZ(_Z);var $Z=cn,eb=De,tb=Y.TypeError,nb=lt,rb=Wr,ib=function(e){if($Z(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw tb("Incorrect hint");return eb(this,e)},cb=gt("toPrimitive"),ab=Date.prototype;nb(ab,cb)||rb(ab,cb,ib);var ob=se,lb=me,ub=qt,sb=id,db=gt,mb=Vn.exports,hb=db("hasInstance"),Zb=Function.prototype;hb in Zb||ub.f(Zb,hb,{value:mb((function(e){if(!ob(this)||!lb(e))return!1;var t=this.prototype;if(!lb(t))return e instanceof this;for(;e=sb(e);)if(t===e)return!0;return!1}),hb)});var bb=K,pb=Sn.EXISTS,yb=D,Xb=qt.f,fb=Function.prototype,Vb=yb(fb.toString),Gb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Ib=yb(Gb.exec);bb&&!pb&&Xb(fb,"name",{configurable:!0,get:function(){try{return Ib(Gb,Vb(this))[1]}catch(e){return""}}}),vi({global:!0},{globalThis:Y}),Fc(Y.JSON,"JSON",!0);var Wb={exports:{}},gb=x((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),vb=x,Sb=me,Rb=q,Yb=gb,Jb=Object.isExtensible,xb=vb((function(){Jb(1)}))||Yb?function(e){return!!Sb(e)&&((!Yb||"ArrayBuffer"!=Rb(e))&&(!Jb||Jb(e)))}:Jb,Kb=!x((function(){return Object.isExtensible(Object.preventExtensions({}))})),Lb=vi,Nb=D,Hb=jn,kb=me,Cb=lt,Ub=qt.f,Tb=gr,wb=uc,Fb=xb,zb=Kb,jb=!1,Mb=ht("meta"),Pb=0,Qb=function(e){Ub(e,Mb,{value:{objectID:"O"+Pb++,weakData:{}}})},Bb=Wb.exports={enable:function(){Bb.enable=function(){},jb=!0;var e=Tb.f,t=Nb([].splice),n={};n[Mb]=1,e(n).length&&(Tb.f=function(n){for(var r=e(n),i=0,c=r.length;i<c;i++)if(r[i]===Mb){t(r,i,1);break}return r},Lb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:wb.f}))},fastKey:function(e,t){if(!kb(e))return"symbol"==a(e)?e:("string"==typeof e?"S":"P")+e;if(!Cb(e,Mb)){if(!Fb(e))return"F";if(!t)return"E";Qb(e)}return e[Mb].objectID},getWeakData:function(e,t){if(!Cb(e,Mb)){if(!Fb(e))return!0;if(!t)return!1;Qb(e)}return e[Mb].weakData},onFreeze:function(e){return zb&&jb&&Fb(e)&&!Cb(e,Mb)&&Qb(e),e}};Hb[Mb]=!0;var Eb=Pc,Db=k,Ob=cn,Ab=Ue,_b=hs,qb=Cr,$b=ye,ep=vs,tp=Xs,np=as,rp=Y.TypeError,ip=function(e,t){this.stopped=e,this.result=t},cp=ip.prototype,ap=function(e,t,n){var r,i,c,o,l,u,s,d=n&&n.that,m=!(!n||!n.AS_ENTRIES),h=!(!n||!n.IS_ITERATOR),Z=!(!n||!n.INTERRUPTED),b=Eb(t,d),p=function(e){return r&&np(r,"normal",e),new ip(!0,e)},y=function(e){return m?(Ob(e),Z?b(e[0],e[1],p):b(e[0],e[1])):Z?b(e,p):b(e)};if(h)r=e;else{if(!(i=tp(e)))throw rp(Ab(e)+" is not iterable");if(_b(i)){for(c=0,o=qb(e);o>c;c++)if((l=y(e[c]))&&$b(cp,l))return l;return new ip(!1)}r=ep(e,i)}for(u=r.next;!(s=Db(u,r)).done;){try{l=y(s.value)}catch(e){np(r,"throw",e)}if("object"==a(l)&&l&&$b(cp,l))return l}return new ip(!1)},op=se,lp=me,up=Yd,sp=function(e,t,n){var r,i;return up&&op(r=t.constructor)&&r!==n&&lp(i=r.prototype)&&i!==n.prototype&&up(e,i),e},dp=vi,mp=Y,hp=D,Zp=yi,bp=Wr,pp=Wb.exports,yp=ap,Xp=Uh,fp=se,Vp=me,Gp=x,Ip=js,Wp=Fc,gp=sp,vp=function(e,t,n){var r=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),c=r?"set":"add",a=mp[e],o=a&&a.prototype,l=a,u={},s=function(e){var t=hp(o[e]);bp(o,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!Vp(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!Vp(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!Vp(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(Zp(e,!fp(a)||!(i||o.forEach&&!Gp((function(){(new a).entries().next()})))))l=n.getConstructor(t,e,r,c),pp.enable();else if(Zp(e,!0)){var d=new l,m=d[c](i?{}:-0,1)!=d,h=Gp((function(){d.has(1)})),Z=Ip((function(e){new a(e)})),b=!i&&Gp((function(){for(var e=new a,t=5;t--;)e[c](t,t);return!e.has(-0)}));Z||((l=t((function(e,t){Xp(e,o);var n=gp(new a,e,l);return null!=t&&yp(t,n[c],{that:n,AS_ENTRIES:r}),n}))).prototype=o,o.constructor=l),(h||b)&&(s("delete"),s("has"),r&&s("get")),(b||m)&&s(c),i&&o.clear&&delete o.clear}return u[e]=l,dp({global:!0,forced:l!=a},u),Wp(l,e),i||n.setStrong(l,e,r),l},Sp=qt.f,Rp=lc,Yp=Hh,Jp=Pc,xp=Uh,Kp=ap,Lp=Dd,Np=yh,Hp=K,kp=Wb.exports.fastKey,Cp=ar.set,Up=ar.getterFor,Tp={getConstructor:function(e,t,n,r){var i=e((function(e,i){xp(e,c),Cp(e,{type:t,index:Rp(null),first:void 0,last:void 0,size:0}),Hp||(e.size=0),null!=i&&Kp(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=Up(t),o=function(e,t,n){var r,i,c=a(e),o=l(e,t);return o?o.value=n:(c.last=o={index:i=kp(t,!0),key:t,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),Hp?c.size++:e.size++,"F"!==i&&(c.index[i]=o)),e},l=function(e,t){var n,r=a(e),i=kp(t);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==t)return n};return Yp(c,{clear:function(){for(var e=a(this),t=e.index,n=e.first;n;)n.removed=!0,n.previous&&(n.previous=n.previous.next=void 0),delete t[n.index],n=n.next;e.first=e.last=void 0,Hp?e.size=0:this.size=0},delete:function(e){var t=this,n=a(t),r=l(t,e);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),Hp?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=a(this),r=Jp(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!l(this,e)}}),Yp(c,n?{get:function(e){var t=l(this,e);return t&&t.value},set:function(e,t){return o(this,0===e?0:e,t)}}:{add:function(e){return o(this,e=0===e?0:e,e)}}),Hp&&Sp(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(e,t,n){var r=t+" Iterator",i=Up(t),c=Up(r);Lp(e,t,(function(e,t){Cp(this,{type:r,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=c(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=void 0,{value:void 0,done:!0})}),n?"entries":"values",!n,!0),Np(t)}};vp("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Tp);var wp=Math.log,Fp=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:wp(1+e)},zp=vi,jp=Fp,Mp=Math.acosh,Pp=Math.log,Qp=Math.sqrt,Bp=Math.LN2;zp({target:"Math",stat:!0,forced:!Mp||710!=Math.floor(Mp(Number.MAX_VALUE))||Mp(1/0)!=1/0},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Pp(e)+Bp:jp(e-1+Qp(e-1)*Qp(e+1))}});var Ep=vi,Dp=Math.asinh,Op=Math.log,Ap=Math.sqrt;Ep({target:"Math",stat:!0,forced:!(Dp&&1/Dp(0)>0)},{asinh:function e(t){return isFinite(t=+t)&&0!=t?t<0?-e(-t):Op(t+Ap(t*t+1)):t}});var _p=vi,qp=Math.atanh,$p=Math.log;_p({target:"Math",stat:!0,forced:!(qp&&1/qp(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:$p((1+e)/(1-e))/2}});var ey=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1},ty=vi,ny=ey,ry=Math.abs,iy=Math.pow;ty({target:"Math",stat:!0},{cbrt:function(e){return ny(e=+e)*iy(ry(e),1/3)}});var cy=vi,ay=Math.floor,oy=Math.log,ly=Math.LOG2E;cy({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-ay(oy(e+.5)*ly):32}});var uy=Math.expm1,sy=Math.exp,dy=!uy||uy(10)>22025.465794806718||uy(10)<22025.465794806718||-2e-17!=uy(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:sy(e)-1}:uy,my=vi,hy=dy,Zy=Math.cosh,by=Math.abs,py=Math.E;my({target:"Math",stat:!0,forced:!Zy||Zy(710)===1/0},{cosh:function(e){var t=hy(by(e)-1)+1;return(t+1/(t*py*py))*(py/2)}});var yy=dy;vi({target:"Math",stat:!0,forced:yy!=Math.expm1},{expm1:yy});var Xy=ey,fy=Math.abs,Vy=Math.pow,Gy=Vy(2,-52),Iy=Vy(2,-23),Wy=Vy(2,127)*(2-Iy),gy=Vy(2,-126),vy=Math.fround||function(e){var t,n,r=fy(e),i=Xy(e);return r<gy?i*function(e){return e+1/Gy-1/Gy}(r/gy/Iy)*gy*Iy:(n=(t=(1+Iy/Gy)*r)-(t-r))>Wy||n!=n?i*(1/0):i*n};vi({target:"Math",stat:!0},{fround:vy});var Sy=vi,Ry=Math.hypot,Yy=Math.abs,Jy=Math.sqrt;Sy({target:"Math",stat:!0,arity:2,forced:!!Ry&&Ry(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,r,i=0,c=0,a=arguments.length,o=0;c<a;)o<(n=Yy(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*Jy(i)}});var xy=vi,Ky=x,Ly=Math.imul;xy({target:"Math",stat:!0,forced:Ky((function(){return-5!=Ly(4294967295,5)||2!=Ly.length}))},{imul:function(e,t){var n=65535,r=+e,i=+t,c=n&r,a=n&i;return 0|c*a+((n&r>>>16)*a+c*(n&i>>>16)<<16>>>0)}});var Ny=Math.log,Hy=Math.LOG10E;vi({target:"Math",stat:!0},{log10:Math.log10||function(e){return Ny(e)*Hy}}),vi({target:"Math",stat:!0},{log1p:Fp});var ky=vi,Cy=Math.log,Uy=Math.LN2;ky({target:"Math",stat:!0},{log2:function(e){return Cy(e)/Uy}}),vi({target:"Math",stat:!0},{sign:ey});var Ty=vi,wy=x,Fy=dy,zy=Math.abs,jy=Math.exp,My=Math.E;Ty({target:"Math",stat:!0,forced:wy((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return zy(e=+e)<1?(Fy(e)-Fy(-e))/2:(jy(e-1)-jy(-e-1))*(My/2)}});var Py=vi,Qy=dy,By=Math.exp;Py({target:"Math",stat:!0},{tanh:function(e){var t=Qy(e=+e),n=Qy(-e);return t==1/0?1:n==1/0?-1:(t-n)/(By(e)+By(-e))}}),Fc(Math,"Math",!0);var Ey=vi,Dy=Math.ceil,Oy=Math.floor;Ey({target:"Math",stat:!0},{trunc:function(e){return(e>0?Oy:Dy)(e)}});var Ay=D(1..valueOf),_y="\t\n\v\f\r                 \u2028\u2029\ufeff",qy=ae,$y=Ti,eX=D("".replace),tX="[\t\n\v\f\r                 \u2028\u2029\ufeff]",nX=RegExp("^"+tX+tX+"*"),rX=RegExp(tX+tX+"*$"),iX=function(e){return function(t){var n=$y(qy(t));return 1&e&&(n=eX(n,nX,"")),2&e&&(n=eX(n,rX,"")),n}},cX={start:iX(1),end:iX(2),trim:iX(3)},aX=K,oX=Y,lX=D,uX=yi,sX=Wr,dX=lt,mX=sp,hX=ye,ZX=ke,bX=Nt,pX=x,yX=gr.f,XX=J.f,fX=qt.f,VX=Ay,GX=cX.trim,IX="Number",WX=oX.Number,gX=WX.prototype,vX=oX.TypeError,SX=lX("".slice),RX=lX("".charCodeAt),YX=function(e){var t=bX(e,"number");return"bigint"==typeof t?t:JX(t)},JX=function(e){var t,n,r,i,c,a,o,l,u=bX(e,"number");if(ZX(u))throw vX("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=GX(u),43===(t=RX(u,0))||45===t){if(88===(n=RX(u,2))||120===n)return NaN}else if(48===t){switch(RX(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=SX(u,2)).length,o=0;o<a;o++)if((l=RX(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(uX(IX,!WX(" 0o1")||!WX("0b1")||WX("+0x1"))){for(var xX,KX=function(e){var t=arguments.length<1?0:WX(YX(e)),n=this;return hX(gX,n)&&pX((function(){VX(n)}))?mX(Object(t),n,KX):t},LX=aX?yX(WX):"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(","),NX=0;LX.length>NX;NX++)dX(WX,xX=LX[NX])&&!dX(KX,xX)&&fX(KX,xX,XX(WX,xX));KX.prototype=gX,gX.constructor=KX,sX(oX,IX,KX)}vi({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var HX=Y.isFinite;vi({target:"Number",stat:!0},{isFinite:Number.isFinite||function(e){return"number"==typeof e&&HX(e)}});var kX=me,CX=Math.floor,UX=Number.isInteger||function(e){return!kX(e)&&isFinite(e)&&CX(e)===e};vi({target:"Number",stat:!0},{isInteger:UX}),vi({target:"Number",stat:!0},{isNaN:function(e){return e!=e}});var TX=vi,wX=UX,FX=Math.abs;TX({target:"Number",stat:!0},{isSafeInteger:function(e){return wX(e)&&FX(e)<=9007199254740991}}),vi({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),vi({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var zX=Y,jX=x,MX=Ti,PX=cX.trim,QX=D("".charAt),BX=zX.parseFloat,EX=zX.Symbol,DX=EX&&EX.iterator,OX=1/BX("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||DX&&!jX((function(){BX(Object(DX))}))?function(e){var t=PX(MX(e)),n=BX(t);return 0===n&&"-"==QX(t,0)?-0:n}:BX;vi({target:"Number",stat:!0,forced:Number.parseFloat!=OX},{parseFloat:OX});var AX=Y,_X=x,qX=D,$X=Ti,ef=cX.trim,tf=_y,nf=AX.parseInt,rf=AX.Symbol,cf=rf&&rf.iterator,af=/^[+-]?0x/i,of=qX(af.exec),lf=8!==nf(tf+"08")||22!==nf(tf+"0x16")||cf&&!_X((function(){nf(Object(cf))}))?function(e,t){var n=ef($X(e));return nf(n,t>>>0||(of(af,n)?16:10))}:nf,uf=lf;vi({target:"Number",stat:!0,forced:Number.parseInt!=uf},{parseInt:uf});var sf=Rr,df=Ti,mf=ae,hf=Y.RangeError,Zf=function(e){var t=df(mf(this)),n="",r=sf(e);if(r<0||r==1/0)throw hf("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(t+=t))1&r&&(n+=t);return n},bf=vi,pf=Y,yf=D,Xf=Rr,ff=Ay,Vf=Zf,Gf=x,If=pf.RangeError,Wf=pf.String,gf=Math.floor,vf=yf(Vf),Sf=yf("".slice),Rf=yf(1..toFixed),Yf=function e(t,n,r){return 0===n?r:n%2==1?e(t,n-1,r*t):e(t*t,n/2,r)},Jf=function(e,t,n){for(var r=-1,i=n;++r<6;)i+=t*e[r],e[r]=i%1e7,i=gf(i/1e7)},xf=function(e,t){for(var n=6,r=0;--n>=0;)r+=e[n],e[n]=gf(r/t),r=r%t*1e7},Kf=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var r=Wf(e[t]);n=""===n?r:n+vf("0",7-r.length)+r}return n};bf({target:"Number",proto:!0,forced:Gf((function(){return"0.000"!==Rf(8e-5,3)||"1"!==Rf(.9,0)||"1.25"!==Rf(1.255,2)||"1000000000000000128"!==Rf(0xde0b6b3a7640080,0)}))||!Gf((function(){Rf({})}))},{toFixed:function(e){var t,n,r,i,c=ff(this),a=Xf(e),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw If("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return Wf(c);if(c<0&&(l="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*Yf(2,69,1))-69,n=t<0?c*Yf(2,-t,1):c/Yf(2,t,1),n*=4503599627370496,(t=52-t)>0){for(Jf(o,0,n),r=a;r>=7;)Jf(o,1e7,0),r-=7;for(Jf(o,Yf(10,r,1),0),r=t-1;r>=23;)xf(o,1<<23),r-=23;xf(o,1<<r),Jf(o,1,1),xf(o,2),u=Kf(o)}else Jf(o,0,n),Jf(o,1<<-t,0),u=Kf(o)+vf("0",a);return u=a>0?l+((i=u.length)<=a?"0."+vf("0",a-i)+u:Sf(u,0,i-a)+"."+Sf(u,i-a)):l+u}});var Lf=K,Nf=D,Hf=k,kf=x,Cf=ji,Uf=_r,Tf=C,wf=ct,Ff=ie,zf=Object.assign,jf=Object.defineProperty,Mf=Nf([].concat),Pf=!zf||kf((function(){if(Lf&&1!==zf({b:1},zf(jf({},"a",{enumerable:!0,get:function(){jf(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach((function(e){t[e]=e})),7!=zf({},e)[n]||Cf(zf({},t)).join("")!=r}))?function(e,t){for(var n=wf(e),r=arguments.length,i=1,c=Uf.f,a=Tf.f;r>i;)for(var o,l=Ff(arguments[i++]),u=c?Mf(Cf(l),c(l)):Cf(l),s=u.length,d=0;s>d;)o=u[d++],Lf&&!Hf(a,l,o)||(n[o]=l[o]);return n}:zf,Qf=Pf;vi({target:"Object",stat:!0,arity:2,forced:Object.assign!==Qf},{assign:Qf});var Bf=Y,Ef=Bm,Df=!x((function(){if(!(Ef&&Ef<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete Bf[e]}})),Of=ze,Af=ct,_f=qt;K&&vi({target:"Object",proto:!0,forced:Df},{__defineGetter__:function(e,t){_f.f(Af(this),e,{get:Of(t),enumerable:!0,configurable:!0})}});var qf=ze,$f=ct,eV=qt;K&&vi({target:"Object",proto:!0,forced:Df},{__defineSetter__:function(e,t){eV.f($f(this),e,{set:qf(t),enumerable:!0,configurable:!0})}});var tV=K,nV=D,rV=ji,iV=ue,cV=nV(C.f),aV=nV([].push),oV=function(e){return function(t){for(var n,r=iV(t),i=rV(r),c=i.length,a=0,o=[];c>a;)n=i[a++],tV&&!cV(r,n)||aV(o,e?[n,r[n]]:r[n]);return o}},lV={entries:oV(!0),values:oV(!1)},uV=lV.entries;vi({target:"Object",stat:!0},{entries:function(e){return uV(e)}});var sV=vi,dV=Kb,mV=x,hV=me,ZV=Wb.exports.onFreeze,bV=Object.freeze;sV({target:"Object",stat:!0,forced:mV((function(){bV(1)})),sham:!dV},{freeze:function(e){return bV&&hV(e)?bV(ZV(e)):e}});var pV=ap,yV=hc;vi({target:"Object",stat:!0},{fromEntries:function(e){var t={};return pV(e,(function(e,n){yV(t,e,n)}),{AS_ENTRIES:!0}),t}});var XV=vi,fV=x,VV=ue,GV=J.f,IV=K,WV=fV((function(){GV(1)}));XV({target:"Object",stat:!0,forced:!IV||WV,sham:!IV},{getOwnPropertyDescriptor:function(e,t){return GV(VV(e),t)}});var gV=ri,vV=ue,SV=J,RV=hc;vi({target:"Object",stat:!0,sham:!K},{getOwnPropertyDescriptors:function(e){for(var t,n,r=vV(e),i=SV.f,c=gV(r),a={},o=0;c.length>o;)void 0!==(n=i(r,t=c[o++]))&&RV(a,t,n);return a}});var YV=vi,JV=x,xV=uc.f;YV({target:"Object",stat:!0,forced:JV((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:xV});var KV=ct,LV=id,NV=Os;vi({target:"Object",stat:!0,forced:x((function(){LV(1)})),sham:!NV},{getPrototypeOf:function(e){return LV(KV(e))}});var HV=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};vi({target:"Object",stat:!0},{is:HV});var kV=xb;vi({target:"Object",stat:!0,forced:Object.isExtensible!==kV},{isExtensible:kV});var CV=vi,UV=x,TV=me,wV=q,FV=gb,zV=Object.isFrozen;CV({target:"Object",stat:!0,forced:UV((function(){zV(1)}))||FV},{isFrozen:function(e){return!TV(e)||(!(!FV||"ArrayBuffer"!=wV(e))||!!zV&&zV(e))}});var jV=vi,MV=x,PV=me,QV=q,BV=gb,EV=Object.isSealed;jV({target:"Object",stat:!0,forced:MV((function(){EV(1)}))||BV},{isSealed:function(e){return!PV(e)||(!(!BV||"ArrayBuffer"!=QV(e))||!!EV&&EV(e))}});var DV=ct,OV=ji;vi({target:"Object",stat:!0,forced:x((function(){OV(1)}))},{keys:function(e){return OV(DV(e))}});var AV=vi,_V=K,qV=Df,$V=ct,eG=Ct,tG=id,nG=J.f;_V&&AV({target:"Object",proto:!0,forced:qV},{__lookupGetter__:function(e){var t,n=$V(this),r=eG(e);do{if(t=nG(n,r))return t.get}while(n=tG(n))}});var rG=vi,iG=K,cG=Df,aG=ct,oG=Ct,lG=id,uG=J.f;iG&&rG({target:"Object",proto:!0,forced:cG},{__lookupSetter__:function(e){var t,n=aG(this),r=oG(e);do{if(t=uG(n,r))return t.set}while(n=lG(n))}});var sG=vi,dG=me,mG=Wb.exports.onFreeze,hG=Kb,ZG=x,bG=Object.preventExtensions;sG({target:"Object",stat:!0,forced:ZG((function(){bG(1)})),sham:!hG},{preventExtensions:function(e){return bG&&dG(e)?bG(mG(e)):e}});var pG=vi,yG=me,XG=Wb.exports.onFreeze,fG=Kb,VG=x,GG=Object.seal;pG({target:"Object",stat:!0,forced:VG((function(){GG(1)})),sham:!fG},{seal:function(e){return GG&&yG(e)?GG(XG(e)):e}});var IG=ki,WG=Ri?{}.toString:function(){return"[object "+IG(this)+"]"};Ri||Wr(Object.prototype,"toString",WG,{unsafe:!0});var gG=lV.values;vi({target:"Object",stat:!0},{values:function(e){return gG(e)}});var vG,SG,RG,YG,JG="process"==q(Y.process),xG=aa,KG=Ue,LG=Y.TypeError,NG=function(e){if(xG(e))return e;throw LG(KG(e)+" is not a constructor")},HG=cn,kG=NG,CG=gt("species"),UG=function(e,t){var n,r=HG(e).constructor;return void 0===r||null==(n=HG(r)[CG])?t:kG(n)},TG=Y.TypeError,wG=function(e,t){if(e<t)throw TG("Not enough arguments");return e},FG=/(?:ipad|iphone|ipod).*applewebkit/i.test(Xe),zG=Y,jG=Oo,MG=Pc,PG=se,QG=lt,BG=x,EG=Ai,DG=Ao,OG=Ft,AG=wG,_G=FG,qG=JG,$G=zG.setImmediate,eI=zG.clearImmediate,tI=zG.process,nI=zG.Dispatch,rI=zG.Function,iI=zG.MessageChannel,cI=zG.String,aI=0,oI={},lI="onreadystatechange";try{vG=zG.location}catch(e){}var uI=function(e){if(QG(oI,e)){var t=oI[e];delete oI[e],t()}},sI=function(e){return function(){uI(e)}},dI=function(e){uI(e.data)},mI=function(e){zG.postMessage(cI(e),vG.protocol+"//"+vG.host)};$G&&eI||($G=function(e){AG(arguments.length,1);var t=PG(e)?e:rI(e),n=DG(arguments,1);return oI[++aI]=function(){jG(t,void 0,n)},SG(aI),aI},eI=function(e){delete oI[e]},qG?SG=function(e){tI.nextTick(sI(e))}:nI&&nI.now?SG=function(e){nI.now(sI(e))}:iI&&!_G?(YG=(RG=new iI).port2,RG.port1.onmessage=dI,SG=MG(YG.postMessage,YG)):zG.addEventListener&&PG(zG.postMessage)&&!zG.importScripts&&vG&&"file:"!==vG.protocol&&!BG(mI)?(SG=mI,zG.addEventListener("message",dI,!1)):SG=lI in OG("script")?function(e){EG.appendChild(OG("script")).onreadystatechange=function(){EG.removeChild(this),uI(e)}}:function(e){setTimeout(sI(e),0)});var hI,ZI,bI,pI,yI,XI,fI,VI,GI={set:$G,clear:eI},II=Y,WI=/ipad|iphone|ipod/i.test(Xe)&&void 0!==II.Pebble,gI=/web0s(?!.*chrome)/i.test(Xe),vI=Y,SI=Pc,RI=J.f,YI=GI.set,JI=FG,xI=WI,KI=gI,LI=JG,NI=vI.MutationObserver||vI.WebKitMutationObserver,HI=vI.document,kI=vI.process,CI=vI.Promise,UI=RI(vI,"queueMicrotask"),TI=UI&&UI.value;TI||(hI=function(){var e,t;for(LI&&(e=kI.domain)&&e.exit();ZI;){t=ZI.fn,ZI=ZI.next;try{t()}catch(e){throw ZI?pI():bI=void 0,e}}bI=void 0,e&&e.enter()},JI||LI||KI||!NI||!HI?!xI&&CI&&CI.resolve?((fI=CI.resolve(void 0)).constructor=CI,VI=SI(fI.then,fI),pI=function(){VI(hI)}):LI?pI=function(){kI.nextTick(hI)}:(YI=SI(YI,vI),pI=function(){YI(hI)}):(yI=!0,XI=HI.createTextNode(""),new NI(hI).observe(XI,{characterData:!0}),pI=function(){XI.data=yI=!yI}));var wI=TI||function(e){var t={fn:e,next:void 0};bI&&(bI.next=t),ZI||(ZI=t,pI()),bI=t},FI=Y,zI=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},jI=function(){this.head=null,this.tail=null};jI.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}};var MI=jI,PI=Y.Promise,QI="object"==("undefined"==typeof window?"undefined":a(window))&&"object"!=("undefined"==typeof Deno?"undefined":a(Deno)),BI=Y,EI=PI,DI=se,OI=yi,AI=Nn,_I=gt,qI=QI,$I=ve;EI&&EI.prototype;var eW=_I("species"),tW=!1,nW=DI(BI.PromiseRejectionEvent),rW=OI("Promise",(function(){var e=AI(EI),t=e!==String(EI);if(!t&&66===$I)return!0;if($I>=51&&/native code/.test(e))return!1;var n=new EI((function(e){e(1)})),r=function(e){e((function(){}),(function(){}))};return(n.constructor={})[eW]=r,!(tW=n.then((function(){}))instanceof r)||!t&&qI&&!nW})),iW={CONSTRUCTOR:rW,REJECTION_EVENT:nW,SUBCLASSING:tW},cW={},aW=ze,oW=function(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=aW(t),this.reject=aW(n)};cW.f=function(e){return new oW(e)};var lW,uW,sW,dW=vi,mW=JG,hW=Y,ZW=k,bW=Wr,pW=Yd,yW=Fc,XW=yh,fW=ze,VW=se,GW=me,IW=Uh,WW=UG,gW=GI.set,vW=wI,SW=function(e,t){var n=FI.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))},RW=zI,YW=MI,JW=ar,xW=PI,KW=cW,LW="Promise",NW=iW.CONSTRUCTOR,HW=iW.REJECTION_EVENT,kW=iW.SUBCLASSING,CW=JW.getterFor(LW),UW=JW.set,TW=xW&&xW.prototype,wW=xW,FW=TW,zW=hW.TypeError,jW=hW.document,MW=hW.process,PW=KW.f,QW=PW,BW=!!(jW&&jW.createEvent&&hW.dispatchEvent),EW="unhandledrejection",DW=function(e){var t;return!(!GW(e)||!VW(t=e.then))&&t},OW=function(e,t){var n,r,i,c=t.value,a=1==t.state,o=a?e.ok:e.fail,l=e.resolve,u=e.reject,s=e.domain;try{o?(a||(2===t.rejection&&eg(t),t.rejection=1),!0===o?n=c:(s&&s.enter(),n=o(c),s&&(s.exit(),i=!0)),n===e.promise?u(zW("Promise-chain cycle")):(r=DW(n))?ZW(r,n,l,u):l(n)):u(c)}catch(e){s&&!i&&s.exit(),u(e)}},AW=function(e,t){e.notified||(e.notified=!0,vW((function(){for(var n,r=e.reactions;n=r.get();)OW(n,e);e.notified=!1,t&&!e.rejection&&qW(e)})))},_W=function(e,t,n){var r,i;BW?((r=jW.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),hW.dispatchEvent(r)):r={promise:t,reason:n},!HW&&(i=hW["on"+e])?i(r):e===EW&&SW("Unhandled promise rejection",n)},qW=function(e){ZW(gW,hW,(function(){var t,n=e.facade,r=e.value;if($W(e)&&(t=RW((function(){mW?MW.emit("unhandledRejection",r,n):_W(EW,n,r)})),e.rejection=mW||$W(e)?2:1,t.error))throw t.value}))},$W=function(e){return 1!==e.rejection&&!e.parent},eg=function(e){ZW(gW,hW,(function(){var t=e.facade;mW?MW.emit("rejectionHandled",t):_W("rejectionhandled",t,e.value)}))},tg=function(e,t,n){return function(r){e(t,r,n)}},ng=function(e,t,n){e.done||(e.done=!0,n&&(e=n),e.value=t,e.state=2,AW(e,!0))},rg=function e(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw zW("Promise can't be resolved itself");var i=DW(n);i?vW((function(){var r={done:!1};try{ZW(i,n,tg(e,r,t),tg(ng,r,t))}catch(e){ng(r,e,t)}})):(t.value=n,t.state=1,AW(t,!1))}catch(e){ng({done:!1},e,t)}}};if(NW&&(FW=(wW=function(e){IW(this,FW),fW(e),ZW(lW,this);var t=CW(this);try{e(tg(rg,t),tg(ng,t))}catch(e){ng(t,e)}}).prototype,(lW=function(e){UW(this,{type:LW,done:!1,notified:!1,parent:!1,reactions:new YW,rejection:!1,state:0,value:void 0})}).prototype=bW(FW,"then",(function(e,t){var n=CW(this),r=PW(WW(this,wW));return n.parent=!0,r.ok=!VW(e)||e,r.fail=VW(t)&&t,r.domain=mW?MW.domain:void 0,0==n.state?n.reactions.add(r):vW((function(){OW(r,n)})),r.promise})),uW=function(){var e=new lW,t=CW(e);this.promise=e,this.resolve=tg(rg,t),this.reject=tg(ng,t)},KW.f=PW=function(e){return e===wW||undefined===e?new uW(e):QW(e)},VW(xW)&&TW!==Object.prototype)){sW=TW.then,kW||bW(TW,"then",(function(e,t){var n=this;return new wW((function(e,t){ZW(sW,n,e,t)})).then(e,t)}),{unsafe:!0});try{delete TW.constructor}catch(e){}pW&&pW(TW,FW)}dW({global:!0,wrap:!0,forced:NW},{Promise:wW}),yW(wW,LW,!1),XW(LW);var ig=PI,cg=iW.CONSTRUCTOR||!js((function(e){ig.all(e).then(void 0,(function(){}))})),ag=k,og=ze,lg=cW,ug=zI,sg=ap;vi({target:"Promise",stat:!0,forced:cg},{all:function(e){var t=this,n=lg.f(t),r=n.resolve,i=n.reject,c=ug((function(){var n=og(t.resolve),c=[],a=0,o=1;sg(e,(function(e){var l=a++,u=!1;o++,ag(n,t,e).then((function(e){u||(u=!0,c[l]=e,--o||r(c))}),i)})),--o||r(c)}));return c.error&&i(c.value),n.promise}});var dg=vi,mg=iW.CONSTRUCTOR,hg=PI,Zg=pe,bg=se,pg=Wr,yg=hg&&hg.prototype;if(dg({target:"Promise",proto:!0,forced:mg,real:!0},{catch:function(e){return this.then(void 0,e)}}),bg(hg)){var Xg=Zg("Promise").prototype.catch;yg.catch!==Xg&&pg(yg,"catch",Xg,{unsafe:!0})}var fg=k,Vg=ze,Gg=cW,Ig=zI,Wg=ap;vi({target:"Promise",stat:!0,forced:cg},{race:function(e){var t=this,n=Gg.f(t),r=n.reject,i=Ig((function(){var i=Vg(t.resolve);Wg(e,(function(e){fg(i,t,e).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var gg=k,vg=cW;vi({target:"Promise",stat:!0,forced:iW.CONSTRUCTOR},{reject:function(e){var t=vg.f(this);return gg(t.reject,void 0,e),t.promise}});var Sg=cn,Rg=me,Yg=cW,Jg=function(e,t){if(Sg(e),Rg(t)&&t.constructor===e)return t;var n=Yg.f(e);return(0,n.resolve)(t),n.promise},xg=vi,Kg=iW.CONSTRUCTOR,Lg=Jg;pe("Promise"),xg({target:"Promise",stat:!0,forced:Kg},{resolve:function(e){return Lg(this,e)}});var Ng=k,Hg=ze,kg=cW,Cg=zI,Ug=ap;vi({target:"Promise",stat:!0},{allSettled:function(e){var t=this,n=kg.f(t),r=n.resolve,i=n.reject,c=Cg((function(){var n=Hg(t.resolve),i=[],c=0,a=1;Ug(e,(function(e){var o=c++,l=!1;a++,Ng(n,t,e).then((function(e){l||(l=!0,i[o]={status:"fulfilled",value:e},--a||r(i))}),(function(e){l||(l=!0,i[o]={status:"rejected",reason:e},--a||r(i))}))})),--a||r(i)}));return c.error&&i(c.value),n.promise}});var Tg=vi,wg=PI,Fg=x,zg=pe,jg=se,Mg=UG,Pg=Jg,Qg=Wr,Bg=wg&&wg.prototype;if(Tg({target:"Promise",proto:!0,real:!0,forced:!!wg&&Fg((function(){Bg.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=Mg(this,zg("Promise")),n=jg(e);return this.then(n?function(n){return Pg(t,e()).then((function(){return n}))}:e,n?function(n){return Pg(t,e()).then((function(){throw n}))}:e)}}),jg(wg)){var Eg=zg("Promise").prototype.finally;Bg.finally!==Eg&&Qg(Bg,"finally",Eg,{unsafe:!0})}var Dg=Oo,Og=ze,Ag=cn;vi({target:"Reflect",stat:!0,forced:!x((function(){Reflect.apply((function(){}))}))},{apply:function(e,t,n){return Dg(Og(e),t,Ag(n))}});var _g=D,qg=ze,$g=me,ev=lt,tv=Ao,nv=L,rv=Y.Function,iv=_g([].concat),cv=_g([].join),av={},ov=function(e,t,n){if(!ev(av,t)){for(var r=[],i=0;i<t;i++)r[i]="a["+i+"]";av[t]=rv("C,a","return new C("+cv(r,",")+")")}return av[t](e,n)},lv=nv?rv.bind:function(e){var t=qg(this),n=t.prototype,r=tv(arguments,1),i=function(){var n=iv(r,tv(arguments));return this instanceof i?ov(t,n.length,n):t.apply(e,n)};return $g(n)&&(i.prototype=n),i},uv=vi,sv=Oo,dv=lv,mv=NG,hv=cn,Zv=me,bv=lc,pv=x,yv=pe("Reflect","construct"),Xv=Object.prototype,fv=[].push,Vv=pv((function(){function e(){}return!(yv((function(){}),[],e)instanceof e)})),Gv=!pv((function(){yv((function(){}))})),Iv=Vv||Gv;uv({target:"Reflect",stat:!0,forced:Iv,sham:Iv},{construct:function(e,t){mv(e),hv(t);var n=arguments.length<3?e:mv(arguments[2]);if(Gv&&!Vv)return yv(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return sv(fv,r,t),new(sv(dv,e,r))}var i=n.prototype,c=bv(Zv(i)?i:Xv),a=sv(e,c,t);return Zv(a)?a:c}});var Wv=K,gv=cn,vv=Ct,Sv=qt;vi({target:"Reflect",stat:!0,forced:x((function(){Reflect.defineProperty(Sv.f({},1,{value:1}),1,{value:2})})),sham:!Wv},{defineProperty:function(e,t,n){gv(e);var r=vv(t);gv(n);try{return Sv.f(e,r,n),!0}catch(e){return!1}}});var Rv=vi,Yv=cn,Jv=J.f;Rv({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=Jv(Yv(e),t);return!(n&&!n.configurable)&&delete e[t]}});var xv=lt,Kv=function(e){return void 0!==e&&(xv(e,"value")||xv(e,"writable"))},Lv=k,Nv=me,Hv=cn,kv=Kv,Cv=J,Uv=id;vi({target:"Reflect",stat:!0},{get:function e(t,n){var r,i,c=arguments.length<3?t:arguments[2];return Hv(t)===c?t[n]:(r=Cv.f(t,n))?kv(r)?r.value:void 0===r.get?void 0:Lv(r.get,c):Nv(i=Uv(t))?e(i,n,c):void 0}});var Tv=cn,wv=J;vi({target:"Reflect",stat:!0,sham:!K},{getOwnPropertyDescriptor:function(e,t){return wv.f(Tv(e),t)}});var Fv=cn,zv=id;vi({target:"Reflect",stat:!0,sham:!Os},{getPrototypeOf:function(e){return zv(Fv(e))}}),vi({target:"Reflect",stat:!0},{has:function(e,t){return t in e}});var jv=cn,Mv=xb;vi({target:"Reflect",stat:!0},{isExtensible:function(e){return jv(e),Mv(e)}}),vi({target:"Reflect",stat:!0},{ownKeys:ri});var Pv=pe,Qv=cn;vi({target:"Reflect",stat:!0,sham:!Kb},{preventExtensions:function(e){Qv(e);try{var t=Pv("Object","preventExtensions");return t&&t(e),!0}catch(e){return!1}}});var Bv=vi,Ev=k,Dv=cn,Ov=me,Av=Kv,_v=qt,qv=J,$v=id,eS=j;var tS=x((function(){var e=function(){},t=_v.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}));Bv({target:"Reflect",stat:!0,forced:tS},{set:function e(t,n,r){var i,c,a,o=arguments.length<4?t:arguments[3],l=qv.f(Dv(t),n);if(!l){if(Ov(c=$v(t)))return e(c,n,r,o);l=eS(0)}if(Av(l)){if(!1===l.writable||!Ov(o))return!1;if(i=qv.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,_v.f(o,n,i)}else _v.f(o,n,eS(0,r))}else{if(void 0===(a=l.set))return!1;Ev(a,o,r)}return!0}});var nS=cn,rS=gd,iS=Yd;iS&&vi({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){nS(e),rS(t);try{return iS(e,t),!0}catch(e){return!1}}});var cS=me,aS=q,oS=gt("match"),lS=function(e){var t;return cS(e)&&(void 0!==(t=e[oS])?!!t:"RegExp"==aS(e))},uS=cn,sS=function(){var e=uS(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},dS=k,mS=lt,hS=ye,ZS=sS,bS=RegExp.prototype,pS=function(e){var t=e.flags;return void 0!==t||"flags"in bS||mS(e,"flags")||!hS(bS,e)?t:dS(ZS,e)},yS=x,XS=Y.RegExp,fS=yS((function(){var e=XS("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),VS=fS||yS((function(){return!XS("a","y").sticky})),GS=fS||yS((function(){var e=XS("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),IS={BROKEN_CARET:GS,MISSED_STICKY:VS,UNSUPPORTED_Y:fS},WS=qt.f,gS=x,vS=Y.RegExp,SS=gS((function(){var e=vS(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)})),RS=x,YS=Y.RegExp,JS=RS((function(){var e=YS("(?<a>b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$<a>c")})),xS=K,KS=Y,LS=D,NS=yi,HS=sp,kS=fn,CS=gr.f,US=ye,TS=lS,wS=Ti,FS=pS,zS=IS,jS=function(e,t,n){n in e||WS(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},MS=Wr,PS=x,QS=lt,BS=ar.enforce,ES=yh,DS=SS,OS=JS,AS=gt("match"),_S=KS.RegExp,qS=_S.prototype,$S=KS.SyntaxError,eR=LS(qS.exec),tR=LS("".charAt),nR=LS("".replace),rR=LS("".indexOf),iR=LS("".slice),cR=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,aR=/a/g,oR=/a/g,lR=new _S(aR)!==aR,uR=zS.MISSED_STICKY,sR=zS.UNSUPPORTED_Y,dR=xS&&(!lR||uR||DS||OS||PS((function(){return oR[AS]=!1,_S(aR)!=aR||_S(oR)==oR||"/a/i"!=_S(aR,"i")})));if(NS("RegExp",dR)){for(var mR=function(e,t){var n,r,i,c,a,o,l=US(qS,this),u=TS(e),s=void 0===t,d=[],m=e;if(!l&&u&&s&&e.constructor===mR)return e;if((u||US(qS,e))&&(e=e.source,s&&(t=FS(m))),e=void 0===e?"":wS(e),t=void 0===t?"":wS(t),m=e,DS&&"dotAll"in aR&&(r=!!t&&rR(t,"s")>-1)&&(t=nR(t,/s/g,"")),n=t,uR&&"sticky"in aR&&(i=!!t&&rR(t,"y")>-1)&&sR&&(t=nR(t,/y/g,"")),OS&&(c=function(e){for(var t,n=e.length,r=0,i="",c=[],a={},o=!1,l=!1,u=0,s="";r<=n;r++){if("\\"===(t=tR(e,r)))t+=tR(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:eR(cR,iR(e,r+1))&&(r+=2,l=!0),i+=t,u++;continue;case">"===t&&l:if(""===s||QS(a,s))throw new $S("Invalid capture group name");a[s]=!0,c[c.length]=[s,u],l=!1,s="";continue}l?s+=t:i+=t}return[i,c]}(e),e=c[0],d=c[1]),a=HS(_S(e,t),l?this:qS,mR),(r||i||d.length)&&(o=BS(a),r&&(o.dotAll=!0,o.raw=mR(function(e){for(var t,n=e.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(t=tR(e,r))?c||"."!==t?("["===t?c=!0:"]"===t&&(c=!1),i+=t):i+="[\\s\\S]":i+=t+tR(e,++r);return i}(e),n)),i&&(o.sticky=!0),d.length&&(o.groups=d)),e!==m)try{kS(a,"source",""===m?"(?:)":m)}catch(e){}return a},hR=CS(_S),ZR=0;hR.length>ZR;)jS(mR,_S,hR[ZR++]);qS.constructor=mR,mR.prototype=qS,MS(KS,"RegExp",mR)}ES("RegExp");var bR=k,pR=D,yR=Ti,XR=sS,fR=IS,VR=Oe.exports,GR=lc,IR=ar.get,WR=SS,gR=JS,vR=VR("native-string-replace",String.prototype.replace),SR=RegExp.prototype.exec,RR=SR,YR=pR("".charAt),JR=pR("".indexOf),xR=pR("".replace),KR=pR("".slice),LR=function(){var e=/a/,t=/b*/g;return bR(SR,e,"a"),bR(SR,t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),NR=fR.BROKEN_CARET,HR=void 0!==/()??/.exec("")[1];(LR||HR||NR||WR||gR)&&(RR=function(e){var t,n,r,i,c,a,o,l=this,u=IR(l),s=yR(e),d=u.raw;if(d)return d.lastIndex=l.lastIndex,t=bR(RR,d,s),l.lastIndex=d.lastIndex,t;var m=u.groups,h=NR&&l.sticky,Z=bR(XR,l),b=l.source,p=0,y=s;if(h&&(Z=xR(Z,"y",""),-1===JR(Z,"g")&&(Z+="g"),y=KR(s,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==YR(s,l.lastIndex-1))&&(b="(?: "+b+")",y=" "+y,p++),n=new RegExp("^(?:"+b+")",Z)),HR&&(n=new RegExp("^"+b+"$(?!\\s)",Z)),LR&&(r=l.lastIndex),i=bR(SR,h?n:l,y),h?i?(i.input=KR(i.input,p),i[0]=KR(i[0],p),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:LR&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),HR&&i&&i.length>1&&bR(vR,i[0],n,(function(){for(c=1;c<arguments.length-2;c++)void 0===arguments[c]&&(i[c]=void 0)})),i&&m)for(i.groups=a=GR(null),c=0;c<m.length;c++)a[(o=m[c])[0]]=i[o[1]];return i});var kR=RR;vi({target:"RegExp",proto:!0,forced:/./.exec!==kR},{exec:kR});var CR=Vn.exports,UR=qt,TR=function(e,t,n){return n.get&&CR(n.get,t,{getter:!0}),n.set&&CR(n.set,t,{setter:!0}),UR.f(e,t,n)},wR=K,FR=TR,zR=sS,jR=x,MR=RegExp.prototype;wR&&jR((function(){return"sy"!==Object.getOwnPropertyDescriptor(MR,"flags").get.call({dotAll:!0,sticky:!0})}))&&FR(MR,"flags",{configurable:!0,get:zR});var PR=Y,QR=K,BR=IS.MISSED_STICKY,ER=q,DR=TR,OR=ar.get,AR=RegExp.prototype,_R=PR.TypeError;QR&&BR&&DR(AR,"sticky",{configurable:!0,get:function(){if(this!==AR){if("RegExp"===ER(this))return!!OR(this).sticky;throw _R("Incompatible receiver, RegExp required")}}});var qR,$R,eY=vi,tY=Y,nY=k,rY=D,iY=se,cY=me,aY=(qR=!1,($R=/[ac]/).exec=function(){return qR=!0,/./.exec.apply(this,arguments)},!0===$R.test("abc")&&qR),oY=tY.Error,lY=rY(/./.test);eY({target:"RegExp",proto:!0,forced:!aY},{test:function(e){var t=this.exec;if(!iY(t))return lY(this,e);var n=nY(t,this,e);if(null!==n&&!cY(n))throw new oY("RegExp exec method returned something other than an Object or null");return!!n}});var uY=Sn.PROPER,sY=Wr,dY=cn,mY=Ti,hY=x,ZY=pS,bY="toString",pY=RegExp.prototype.toString,yY=hY((function(){return"/a/b"!=pY.call({source:"a",flags:"b"})})),XY=uY&&pY.name!=bY;(yY||XY)&&sY(RegExp.prototype,bY,(function(){var e=dY(this);return"/"+mY(e.source)+"/"+mY(ZY(e))}),{unsafe:!0}),vp("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),Tp);var fY=D,VY=Rr,GY=Ti,IY=ae,WY=fY("".charAt),gY=fY("".charCodeAt),vY=fY("".slice),SY=function(e){return function(t,n){var r,i,c=GY(IY(t)),a=VY(n),o=c.length;return a<0||a>=o?e?"":void 0:(r=gY(c,a))<55296||r>56319||a+1===o||(i=gY(c,a+1))<56320||i>57343?e?WY(c,a):r:e?vY(c,a,a+2):i-56320+(r-55296<<10)+65536}},RY={codeAt:SY(!1),charAt:SY(!0)},YY=RY.codeAt;vi({target:"String",proto:!0},{codePointAt:function(e){return YY(this,e)}});var JY,xY=lS,KY=Y.TypeError,LY=function(e){if(xY(e))throw KY("The method doesn't accept regular expressions");return e},NY=gt("match"),HY=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[NY]=!1,"/./"[e](t)}catch(e){}}return!1},kY=vi,CY=D,UY=J.f,TY=Hr,wY=Ti,FY=LY,zY=ae,jY=HY,MY=CY("".endsWith),PY=CY("".slice),QY=Math.min,BY=jY("endsWith");kY({target:"String",proto:!0,forced:!!(BY||(JY=UY(String.prototype,"endsWith"),!JY||JY.writable))&&!BY},{endsWith:function(e){var t=wY(zY(this));FY(e);var n=arguments.length>1?arguments[1]:void 0,r=t.length,i=void 0===n?r:QY(TY(n),r),c=wY(e);return MY?MY(t,c,i):PY(t,i-c.length,i)===c}});var EY=vi,DY=D,OY=Kr,AY=Y.RangeError,_Y=String.fromCharCode,qY=String.fromCodePoint,$Y=DY([].join);EY({target:"String",stat:!0,arity:1,forced:!!qY&&1!=qY.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,i=0;r>i;){if(t=+arguments[i++],OY(t,1114111)!==t)throw AY(t+" is not a valid code point");n[i]=t<65536?_Y(t):_Y(55296+((t-=65536)>>10),t%1024+56320)}return $Y(n,"")}});var eJ=vi,tJ=LY,nJ=ae,rJ=Ti,iJ=HY,cJ=D("".indexOf);eJ({target:"String",proto:!0,forced:!iJ("includes")},{includes:function(e){return!!~cJ(rJ(nJ(this)),rJ(tJ(e)),arguments.length>1?arguments[1]:void 0)}});var aJ=RY.charAt,oJ=Ti,lJ=ar,uJ=Dd,sJ="String Iterator",dJ=lJ.set,mJ=lJ.getterFor(sJ);uJ(String,"String",(function(e){dJ(this,{type:sJ,string:oJ(e),index:0})}),(function(){var e,t=mJ(this),n=t.string,r=t.index;return r>=n.length?{value:void 0,done:!0}:(e=aJ(n,r),t.index+=e.length,{value:e,done:!1})}));var hJ=D,ZJ=Wr,bJ=kR,pJ=x,yJ=gt,XJ=fn,fJ=yJ("species"),VJ=RegExp.prototype,GJ=function(e,t,n,r){var i=yJ(e),c=!pJ((function(){var t={};return t[i]=function(){return 7},7!=""[e](t)})),a=c&&!pJ((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[fJ]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return t=!0,null},n[i](""),!t}));if(!c||!a||n){var o=hJ(/./[i]),l=t(i,""[e],(function(e,t,n,r,i){var a=hJ(e),l=t.exec;return l===bJ||l===VJ.exec?c&&!i?{done:!0,value:o(t,n,r)}:{done:!0,value:a(n,t,r)}:{done:!1}}));ZJ(String.prototype,e,l[0]),ZJ(VJ,i,l[1])}r&&XJ(VJ[i],"sham",!0)},IJ=RY.charAt,WJ=function(e,t,n){return t+(n?IJ(e,t).length:1)},gJ=k,vJ=cn,SJ=se,RJ=q,YJ=kR,JJ=Y.TypeError,xJ=function(e,t){var n=e.exec;if(SJ(n)){var r=gJ(n,e,t);return null!==r&&vJ(r),r}if("RegExp"===RJ(e))return gJ(YJ,e,t);throw JJ("RegExp#exec called on incompatible receiver")},KJ=k,LJ=cn,NJ=Hr,HJ=Ti,kJ=ae,CJ=Me,UJ=WJ,TJ=xJ;GJ("match",(function(e,t,n){return[function(t){var n=kJ(this),r=null==t?void 0:CJ(t,e);return r?KJ(r,t,n):new RegExp(t)[e](HJ(n))},function(e){var r=LJ(this),i=HJ(e),c=n(t,r,i);if(c.done)return c.value;if(!r.global)return TJ(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=TJ(r,i));){var s=HJ(o[0]);l[u]=s,""===s&&(r.lastIndex=UJ(i,NJ(r.lastIndex),a)),u++}return 0===u?null:l}]}));var wJ=vi,FJ=Y,zJ=k,jJ=D,MJ=fd,PJ=ae,QJ=Hr,BJ=Ti,EJ=cn,DJ=lS,OJ=pS,AJ=Me,_J=Wr,qJ=x,$J=UG,ex=WJ,tx=xJ,nx=ar,rx=gt("matchAll"),ix="RegExp String",cx="RegExp String Iterator",ax=nx.set,ox=nx.getterFor(cx),lx=RegExp.prototype,ux=FJ.TypeError,sx=jJ("".indexOf),dx=jJ("".matchAll),mx=!!dx&&!qJ((function(){dx("a",/./)})),hx=MJ((function(e,t,n,r){ax(this,{type:cx,regexp:e,string:t,global:n,unicode:r,done:!1})}),ix,(function(){var e=ox(this);if(e.done)return{value:void 0,done:!0};var t=e.regexp,n=e.string,r=tx(t,n);return null===r?{value:void 0,done:e.done=!0}:e.global?(""===BJ(r[0])&&(t.lastIndex=ex(n,QJ(t.lastIndex),e.unicode)),{value:r,done:!1}):(e.done=!0,{value:r,done:!1})})),Zx=function(e){var t,n,r,i=EJ(this),c=BJ(e),a=$J(i,RegExp),o=BJ(OJ(i));return t=new a(a===RegExp?i.source:i,o),n=!!~sx(o,"g"),r=!!~sx(o,"u"),t.lastIndex=QJ(i.lastIndex),new hx(t,c,n,r)};wJ({target:"String",proto:!0,forced:mx},{matchAll:function(e){var t,n,r,i=PJ(this);if(null!=e){if(DJ(e)&&(t=BJ(PJ(OJ(e))),!~sx(t,"g")))throw ux("`.matchAll` does not allow non-global regexes");if(mx)return dx(i,e);if(r=AJ(e,rx))return zJ(r,e,i)}else if(mx)return dx(i,e);return n=BJ(i),new RegExp(e,"g")[rx](n)}}),rx in lx||_J(lx,rx,Zx);var bx=D,px=Hr,yx=Ti,Xx=ae,fx=bx(Zf),Vx=bx("".slice),Gx=Math.ceil,Ix=function(e){return function(t,n,r){var i,c,a=yx(Xx(t)),o=px(n),l=a.length,u=void 0===r?" ":yx(r);return o<=l||""==u?a:((c=fx(u,Gx((i=o-l)/u.length))).length>i&&(c=Vx(c,0,i)),e?a+c:c+a)}},Wx={start:Ix(!1),end:Ix(!0)},gx=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(Xe),vx=Wx.end;vi({target:"String",proto:!0,forced:gx},{padEnd:function(e){return vx(this,e,arguments.length>1?arguments[1]:void 0)}});var Sx=Wx.start;vi({target:"String",proto:!0,forced:gx},{padStart:function(e){return Sx(this,e,arguments.length>1?arguments[1]:void 0)}});var Rx=vi,Yx=D,Jx=ue,xx=ct,Kx=Ti,Lx=Cr,Nx=Yx([].push),Hx=Yx([].join);Rx({target:"String",stat:!0},{raw:function(e){for(var t=Jx(xx(e).raw),n=Lx(t),r=arguments.length,i=[],c=0;n>c;){if(Nx(i,Kx(t[c++])),c===n)return Hx(i,"");c<r&&Nx(i,Kx(arguments[c]))}}}),vi({target:"String",proto:!0},{repeat:Zf});var kx=D,Cx=ct,Ux=Math.floor,Tx=kx("".charAt),wx=kx("".replace),Fx=kx("".slice),zx=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,jx=/\$([$&'`]|\d{1,2})/g,Mx=Oo,Px=k,Qx=D,Bx=GJ,Ex=x,Dx=cn,Ox=se,Ax=Rr,_x=Hr,qx=Ti,$x=ae,eK=WJ,tK=Me,nK=function(e,t,n,r,i,c){var a=n+e.length,o=r.length,l=jx;return void 0!==i&&(i=Cx(i),l=zx),wx(c,l,(function(c,l){var u;switch(Tx(l,0)){case"$":return"$";case"&":return e;case"`":return Fx(t,0,n);case"'":return Fx(t,a);case"<":u=i[Fx(l,1,-1)];break;default:var s=+l;if(0===s)return c;if(s>o){var d=Ux(s/10);return 0===d?c:d<=o?void 0===r[d-1]?Tx(l,1):r[d-1]+Tx(l,1):c}u=r[s-1]}return void 0===u?"":u}))},rK=xJ,iK=gt("replace"),cK=Math.max,aK=Math.min,oK=Qx([].concat),lK=Qx([].push),uK=Qx("".indexOf),sK=Qx("".slice),dK="$0"==="a".replace(/./,"$0"),mK=!!/./[iK]&&""===/./[iK]("a","$0"),hK=!Ex((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$<a>")}));Bx("replace",(function(e,t,n){var r=mK?"$":"$0";return[function(e,n){var r=$x(this),i=null==e?void 0:tK(e,iK);return i?Px(i,e,r,n):Px(t,qx(r),e,n)},function(e,i){var c=Dx(this),a=qx(e);if("string"==typeof i&&-1===uK(i,r)&&-1===uK(i,"$<")){var o=n(t,c,a,i);if(o.done)return o.value}var l=Ox(i);l||(i=qx(i));var u=c.global;if(u){var s=c.unicode;c.lastIndex=0}for(var d=[];;){var m=rK(c,a);if(null===m)break;if(lK(d,m),!u)break;""===qx(m[0])&&(c.lastIndex=eK(a,_x(c.lastIndex),s))}for(var h,Z="",b=0,p=0;p<d.length;p++){for(var y=qx((m=d[p])[0]),X=cK(aK(Ax(m.index),a.length),0),f=[],V=1;V<m.length;V++)lK(f,void 0===(h=m[V])?h:String(h));var G=m.groups;if(l){var I=oK([y],f,X,a);void 0!==G&&lK(I,G);var W=qx(Mx(i,void 0,I))}else W=nK(y,a,X,f,G,i);X>=b&&(Z+=sK(a,b,X)+W,b=X+y.length)}return Z+sK(a,b)}]}),!hK||!dK||mK);var ZK=k,bK=cn,pK=ae,yK=HV,XK=Ti,fK=Me,VK=xJ;GJ("search",(function(e,t,n){return[function(t){var n=pK(this),r=null==t?void 0:fK(t,e);return r?ZK(r,t,n):new RegExp(t)[e](XK(n))},function(e){var r=bK(this),i=XK(e),c=n(t,r,i);if(c.done)return c.value;var a=r.lastIndex;yK(a,0)||(r.lastIndex=0);var o=VK(r,i);return yK(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var GK=Oo,IK=k,WK=D,gK=GJ,vK=lS,SK=cn,RK=ae,YK=UG,JK=WJ,xK=Hr,KK=Ti,LK=Me,NK=fc,HK=xJ,kK=kR,CK=x,UK=IS.UNSUPPORTED_Y,TK=4294967295,wK=Math.min,FK=[].push,zK=WK(/./.exec),jK=WK(FK),MK=WK("".slice),PK=!CK((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));gK("split",(function(e,t,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(e,n){var r=KK(RK(this)),i=void 0===n?TK:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!vK(e))return IK(t,r,e,i);for(var c,a,o,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),s=0,d=new RegExp(e.source,u+"g");(c=IK(kK,d,r))&&!((a=d.lastIndex)>s&&(jK(l,MK(r,s,c.index)),c.length>1&&c.index<r.length&&GK(FK,l,NK(c,1)),o=c[0].length,s=a,l.length>=i));)d.lastIndex===c.index&&d.lastIndex++;return s===r.length?!o&&zK(d,"")||jK(l,""):jK(l,MK(r,s)),l.length>i?NK(l,0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:IK(t,this,e,n)}:t,[function(t,n){var i=RK(this),c=null==t?void 0:LK(t,e);return c?IK(c,t,i,n):IK(r,KK(i),t,n)},function(e,i){var c=SK(this),a=KK(e),o=n(r,c,a,i,r!==t);if(o.done)return o.value;var l=YK(c,RegExp),u=c.unicode,s=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(UK?"g":"y"),d=new l(UK?"^(?:"+c.source+")":c,s),m=void 0===i?TK:i>>>0;if(0===m)return[];if(0===a.length)return null===HK(d,a)?[a]:[];for(var h=0,Z=0,b=[];Z<a.length;){d.lastIndex=UK?0:Z;var p,y=HK(d,UK?MK(a,Z):a);if(null===y||(p=wK(xK(d.lastIndex+(UK?Z:0)),a.length))===h)Z=JK(a,Z,u);else{if(jK(b,MK(a,h,Z)),b.length===m)return b;for(var X=1;X<=y.length-1;X++)if(jK(b,y[X]),b.length===m)return b;Z=h=p}}return jK(b,MK(a,h)),b}]}),!PK,UK);var QK=vi,BK=D,EK=J.f,DK=Hr,OK=Ti,AK=LY,_K=ae,qK=HY,$K=BK("".startsWith),eL=BK("".slice),tL=Math.min,nL=qK("startsWith"),rL=!nL&&!!function(){var e=EK(String.prototype,"startsWith");return e&&!e.writable}();QK({target:"String",proto:!0,forced:!rL&&!nL},{startsWith:function(e){var t=OK(_K(this));AK(e);var n=DK(tL(arguments.length>1?arguments[1]:void 0,t.length)),r=OK(e);return $K?$K(t,r,n):eL(t,n,n+r.length)===r}});var iL=Sn.PROPER,cL=x,aL=_y,oL=function(e){return cL((function(){return!!aL[e]()||"​…᠎"!=="​…᠎"[e]()||iL&&aL[e].name!==e}))},lL=cX.trim;vi({target:"String",proto:!0,forced:oL("trim")},{trim:function(){return lL(this)}});var uL=cX.end,sL=oL("trimEnd")?function(){return uL(this)}:"".trimEnd;vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==sL},{trimRight:sL});vi({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==sL},{trimEnd:sL});var dL=cX.start,mL=oL("trimStart")?function(){return dL(this)}:"".trimStart;vi({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==mL},{trimLeft:mL});vi({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==mL},{trimStart:mL});var hL=ae,ZL=Ti,bL=/"/g,pL=D("".replace),yL=function(e,t,n,r){var i=ZL(hL(e)),c="<"+t;return""!==n&&(c+=" "+n+'="'+pL(ZL(r),bL,"&quot;")+'"'),c+">"+i+"</"+t+">"},XL=x,fL=function(e){return XL((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))},VL=yL;vi({target:"String",proto:!0,forced:fL("anchor")},{anchor:function(e){return VL(this,"a","name",e)}});var GL=yL;vi({target:"String",proto:!0,forced:fL("big")},{big:function(){return GL(this,"big","","")}});var IL=yL;vi({target:"String",proto:!0,forced:fL("blink")},{blink:function(){return IL(this,"blink","","")}});var WL=yL;vi({target:"String",proto:!0,forced:fL("bold")},{bold:function(){return WL(this,"b","","")}});var gL=yL;vi({target:"String",proto:!0,forced:fL("fixed")},{fixed:function(){return gL(this,"tt","","")}});var vL=yL;vi({target:"String",proto:!0,forced:fL("fontcolor")},{fontcolor:function(e){return vL(this,"font","color",e)}});var SL=yL;vi({target:"String",proto:!0,forced:fL("fontsize")},{fontsize:function(e){return SL(this,"font","size",e)}});var RL=yL;vi({target:"String",proto:!0,forced:fL("italics")},{italics:function(){return RL(this,"i","","")}});var YL=yL;vi({target:"String",proto:!0,forced:fL("link")},{link:function(e){return YL(this,"a","href",e)}});var JL=yL;vi({target:"String",proto:!0,forced:fL("small")},{small:function(){return JL(this,"small","","")}});var xL=yL;vi({target:"String",proto:!0,forced:fL("strike")},{strike:function(){return xL(this,"strike","","")}});var KL=yL;vi({target:"String",proto:!0,forced:fL("sub")},{sub:function(){return KL(this,"sub","","")}});var LL=yL;vi({target:"String",proto:!0,forced:fL("sup")},{sup:function(){return LL(this,"sup","","")}});var NL,HL,kL,CL={exports:{}},UL=Lh,TL=K,wL=Y,FL=se,zL=me,jL=lt,ML=ki,PL=Ue,QL=fn,BL=Wr,EL=qt.f,DL=ye,OL=id,AL=Yd,_L=gt,qL=ht,$L=wL.Int8Array,eN=$L&&$L.prototype,tN=wL.Uint8ClampedArray,nN=tN&&tN.prototype,rN=$L&&OL($L),iN=eN&&OL(eN),cN=Object.prototype,aN=wL.TypeError,oN=_L("toStringTag"),lN=qL("TYPED_ARRAY_TAG"),uN=qL("TYPED_ARRAY_CONSTRUCTOR"),sN=UL&&!!AL&&"Opera"!==ML(wL.opera),dN=!1,mN={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},hN={BigInt64Array:8,BigUint64Array:8},ZN=function(e){if(!zL(e))return!1;var t=ML(e);return jL(mN,t)||jL(hN,t)};for(NL in mN)(kL=(HL=wL[NL])&&HL.prototype)?QL(kL,uN,HL):sN=!1;for(NL in hN)(kL=(HL=wL[NL])&&HL.prototype)&&QL(kL,uN,HL);if((!sN||!FL(rN)||rN===Function.prototype)&&(rN=function(){throw aN("Incorrect invocation")},sN))for(NL in mN)wL[NL]&&AL(wL[NL],rN);if((!sN||!iN||iN===cN)&&(iN=rN.prototype,sN))for(NL in mN)wL[NL]&&AL(wL[NL].prototype,iN);if(sN&&OL(nN)!==iN&&AL(nN,iN),TL&&!jL(iN,oN))for(NL in dN=!0,EL(iN,oN,{get:function(){return zL(this)?this[lN]:void 0}}),mN)wL[NL]&&QL(wL[NL],lN,NL);var bN={NATIVE_ARRAY_BUFFER_VIEWS:sN,TYPED_ARRAY_CONSTRUCTOR:uN,TYPED_ARRAY_TAG:dN&&lN,aTypedArray:function(e){if(ZN(e))return e;throw aN("Target is not a typed array")},aTypedArrayConstructor:function(e){if(FL(e)&&(!AL||DL(rN,e)))return e;throw aN(PL(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n,r){if(TL){if(n)for(var i in mN){var c=wL[i];if(c&&jL(c.prototype,e))try{delete c.prototype[e]}catch(n){try{c.prototype[e]=t}catch(e){}}}iN[e]&&!n||BL(iN,e,n?t:sN&&eN[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,n){var r,i;if(TL){if(AL){if(n)for(r in mN)if((i=wL[r])&&jL(i,e))try{delete i[e]}catch(e){}if(rN[e]&&!n)return;try{return BL(rN,e,n?t:sN&&rN[e]||t)}catch(e){}}for(r in mN)!(i=wL[r])||i[e]&&!n||BL(i,e,t)}},isView:function(e){if(!zL(e))return!1;var t=ML(e);return"DataView"===t||jL(mN,t)||jL(hN,t)},isTypedArray:ZN,TypedArray:rN,TypedArrayPrototype:iN},pN=Y,yN=x,XN=js,fN=bN.NATIVE_ARRAY_BUFFER_VIEWS,VN=pN.ArrayBuffer,GN=pN.Int8Array,IN=!fN||!yN((function(){GN(1)}))||!yN((function(){new GN(-1)}))||!XN((function(e){new GN,new GN(null),new GN(1.5),new GN(e)}),!0)||yN((function(){return 1!==new GN(new VN(2),1,void 0).length})),WN=Rr,gN=Y.RangeError,vN=function(e){var t=WN(e);if(t<0)throw gN("The argument can't be less than 0");return t},SN=Y.RangeError,RN=function(e,t){var n=vN(e);if(n%t)throw SN("Wrong offset");return n},YN=Pc,JN=k,xN=NG,KN=ct,LN=Cr,NN=vs,HN=Xs,kN=hs,CN=bN.aTypedArrayConstructor,UN=function(e){var t,n,r,i,c,a,o=xN(this),l=KN(e),u=arguments.length,s=u>1?arguments[1]:void 0,d=void 0!==s,m=HN(l);if(m&&!kN(m))for(a=(c=NN(l,m)).next,l=[];!(i=JN(a,c)).done;)l.push(i.value);for(d&&u>2&&(s=YN(s,arguments[2])),n=LN(l),r=new(CN(o))(n),t=0;n>t;t++)r[t]=d?s(l[t],t):l[t];return r},TN=vi,wN=Y,FN=k,zN=K,jN=IN,MN=bN,PN=OZ,QN=Uh,BN=j,EN=fn,DN=UX,ON=Hr,AN=zh,_N=RN,qN=Ct,$N=lt,eH=ki,tH=me,nH=ke,rH=lc,iH=ye,cH=Yd,aH=gr.f,oH=UN,lH=Ia.forEach,uH=yh,sH=qt,dH=J,mH=sp,hH=ar.get,ZH=ar.set,bH=sH.f,pH=dH.f,yH=Math.round,XH=wN.RangeError,fH=PN.ArrayBuffer,VH=fH.prototype,GH=PN.DataView,IH=MN.NATIVE_ARRAY_BUFFER_VIEWS,WH=MN.TYPED_ARRAY_CONSTRUCTOR,gH=MN.TYPED_ARRAY_TAG,vH=MN.TypedArray,SH=MN.TypedArrayPrototype,RH=MN.aTypedArrayConstructor,YH=MN.isTypedArray,JH="BYTES_PER_ELEMENT",xH="Wrong length",KH=function(e,t){RH(e);for(var n=0,r=t.length,i=new e(r);r>n;)i[n]=t[n++];return i},LH=function(e,t){bH(e,t,{get:function(){return hH(this)[t]}})},NH=function(e){var t;return iH(VH,e)||"ArrayBuffer"==(t=eH(e))||"SharedArrayBuffer"==t},HH=function(e,t){return YH(e)&&!nH(t)&&t in e&&DN(+t)&&t>=0},kH=function(e,t){return t=qN(t),HH(e,t)?BN(2,e[t]):pH(e,t)},CH=function(e,t,n){return t=qN(t),!(HH(e,t)&&tH(n)&&$N(n,"value"))||$N(n,"get")||$N(n,"set")||n.configurable||$N(n,"writable")&&!n.writable||$N(n,"enumerable")&&!n.enumerable?bH(e,t,n):(e[t]=n.value,e)};zN?(IH||(dH.f=kH,sH.f=CH,LH(SH,"buffer"),LH(SH,"byteOffset"),LH(SH,"byteLength"),LH(SH,"length")),TN({target:"Object",stat:!0,forced:!IH},{getOwnPropertyDescriptor:kH,defineProperty:CH}),CL.exports=function(e,t,n){var r=e.match(/\d+$/)[0]/8,i=e+(n?"Clamped":"")+"Array",c="get"+e,a="set"+e,o=wN[i],l=o,u=l&&l.prototype,s={},d=function(e,t){bH(e,t,{get:function(){return function(e,t){var n=hH(e);return n.view[c](t*r+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var c=hH(e);n&&(i=(i=yH(i))<0?0:i>255?255:255&i),c.view[a](t*r+c.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};IH?jN&&(l=t((function(e,t,n,i){return QN(e,u),mH(tH(t)?NH(t)?void 0!==i?new o(t,_N(n,r),i):void 0!==n?new o(t,_N(n,r)):new o(t):YH(t)?KH(l,t):FN(oH,l,t):new o(AN(t)),e,l)})),cH&&cH(l,vH),lH(aH(o),(function(e){e in l||EN(l,e,o[e])})),l.prototype=u):(l=t((function(e,t,n,i){QN(e,u);var c,a,o,s=0,m=0;if(tH(t)){if(!NH(t))return YH(t)?KH(l,t):FN(oH,l,t);c=t,m=_N(n,r);var h=t.byteLength;if(void 0===i){if(h%r)throw XH(xH);if((a=h-m)<0)throw XH(xH)}else if((a=ON(i)*r)+m>h)throw XH(xH);o=a/r}else o=AN(t),c=new fH(a=o*r);for(ZH(e,{buffer:c,byteOffset:m,byteLength:a,length:o,view:new GH(c)});s<o;)d(e,s++)})),cH&&cH(l,vH),u=l.prototype=rH(SH)),u.constructor!==l&&EN(u,"constructor",l),EN(u,WH,l),gH&&EN(u,gH,i),s[i]=l,TN({global:!0,forced:l!=o,sham:!IH},s),JH in l||EN(l,JH,r),JH in u||EN(u,JH,r),uH(i)}):CL.exports=function(){},(0,CL.exports)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0),(0,CL.exports)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}})),(0,CL.exports)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}));var UH=bN,TH=D(fu),wH=UH.aTypedArray;(0,UH.exportTypedArrayMethod)("copyWithin",(function(e,t){return TH(wH(this),e,t,arguments.length>2?arguments[2]:void 0)}));var FH=Ia.every,zH=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("every",(function(e){return FH(zH(this),e,arguments.length>1?arguments[1]:void 0)}));var jH=k,MH=Ju,PH=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("fill",(function(e){var t=arguments.length;return jH(MH,PH(this),e,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}));var QH=Cr,BH=UG,EH=bN.TYPED_ARRAY_CONSTRUCTOR,DH=bN.aTypedArrayConstructor,OH=function(e){return DH(BH(e,e[EH]))},AH=function(e,t){for(var n=0,r=QH(t),i=new e(r);r>n;)i[n]=t[n++];return i},_H=OH,qH=Ia.filter,$H=function(e,t){return AH(_H(e),t)},ek=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("filter",(function(e){var t=qH(ek(this),e,arguments.length>1?arguments[1]:void 0);return $H(this,t)}));var tk=Ia.find,nk=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("find",(function(e){return tk(nk(this),e,arguments.length>1?arguments[1]:void 0)}));var rk=Ia.findIndex,ik=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("findIndex",(function(e){return rk(ik(this),e,arguments.length>1?arguments[1]:void 0)}));var ck=Ia.forEach,ak=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("forEach",(function(e){ck(ak(this),e,arguments.length>1?arguments[1]:void 0)})),(0,bN.exportTypedArrayStaticMethod)("from",UN,IN);var ok=zr.includes,lk=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("includes",(function(e){return ok(lk(this),e,arguments.length>1?arguments[1]:void 0)}));var uk=zr.indexOf,sk=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("indexOf",(function(e){return uk(sk(this),e,arguments.length>1?arguments[1]:void 0)}));var dk=Y,mk=x,hk=D,Zk=bN,bk=cm,pk=gt("iterator"),yk=dk.Uint8Array,Xk=hk(bk.values),fk=hk(bk.keys),Vk=hk(bk.entries),Gk=Zk.aTypedArray,Ik=Zk.exportTypedArrayMethod,Wk=yk&&yk.prototype,gk=!mk((function(){Wk[pk].call([1])})),vk=!!Wk&&Wk.values&&Wk[pk]===Wk.values&&"values"===Wk.values.name,Sk=function(){return Xk(Gk(this))};Ik("entries",(function(){return Vk(Gk(this))}),gk),Ik("keys",(function(){return fk(Gk(this))}),gk),Ik("values",Sk,gk||!vk,{name:"values"}),Ik(pk,Sk,gk||!vk,{name:"values"});var Rk=bN.aTypedArray,Yk=bN.exportTypedArrayMethod,Jk=D([].join);Yk("join",(function(e){return Jk(Rk(this),e)}));var xk=Oo,Kk=ue,Lk=Rr,Nk=Cr,Hk=lm,kk=Math.min,Ck=[].lastIndexOf,Uk=!!Ck&&1/[1].lastIndexOf(1,-0)<0,Tk=Hk("lastIndexOf"),wk=Uk||!Tk?function(e){if(Uk)return xk(Ck,this,arguments)||0;var t=Kk(this),n=Nk(t),r=n-1;for(arguments.length>1&&(r=kk(r,Lk(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:Ck,Fk=Oo,zk=wk,jk=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("lastIndexOf",(function(e){var t=arguments.length;return Fk(zk,jk(this),t>1?[e,arguments[1]]:[e])}));var Mk=Ia.map,Pk=OH,Qk=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("map",(function(e){return Mk(Qk(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(Pk(e))(t)}))}));var Bk=bN.aTypedArrayConstructor;(0,bN.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(Bk(this))(t);t>e;)n[e]=arguments[e++];return n}),IN);var Ek=ze,Dk=ct,Ok=ie,Ak=Cr,_k=Y.TypeError,qk=function(e){return function(t,n,r,i){Ek(n);var c=Dk(t),a=Ok(c),o=Ak(c),l=e?o-1:0,u=e?-1:1;if(r<2)for(;;){if(l in a){i=a[l],l+=u;break}if(l+=u,e?l<0:o<=l)throw _k("Reduce of empty array with no initial value")}for(;e?l>=0:o>l;l+=u)l in a&&(i=n(i,a[l],l,c));return i}},$k={left:qk(!1),right:qk(!0)},eC=$k.left,tC=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("reduce",(function(e){var t=arguments.length;return eC(tC(this),e,t,t>1?arguments[1]:void 0)}));var nC=$k.right,rC=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("reduceRight",(function(e){var t=arguments.length;return nC(rC(this),e,t,t>1?arguments[1]:void 0)}));var iC=bN.aTypedArray,cC=bN.exportTypedArrayMethod,aC=Math.floor;cC("reverse",(function(){for(var e,t=this,n=iC(t).length,r=aC(n/2),i=0;i<r;)e=t[i],t[i++]=t[--n],t[n]=e;return t}));var oC=Y,lC=k,uC=bN,sC=Cr,dC=RN,mC=ct,hC=x,ZC=oC.RangeError,bC=oC.Int8Array,pC=bC&&bC.prototype,yC=pC&&pC.set,XC=uC.aTypedArray,fC=uC.exportTypedArrayMethod,VC=!hC((function(){var e=new Uint8ClampedArray(2);return lC(yC,e,{length:1,0:3},1),3!==e[1]})),GC=VC&&uC.NATIVE_ARRAY_BUFFER_VIEWS&&hC((function(){var e=new bC(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));fC("set",(function(e){XC(this);var t=dC(arguments.length>1?arguments[1]:void 0,1),n=mC(e);if(VC)return lC(yC,this,n,t);var r=this.length,i=sC(n),c=0;if(i+t>r)throw ZC("Wrong length");for(;c<i;)this[t+c]=n[c++]}),!VC||GC);var IC=OH,WC=Ao,gC=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("slice",(function(e,t){for(var n=WC(gC(this),e,t),r=IC(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),x((function(){new Int8Array(1).slice()})));var vC=Ia.some,SC=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("some",(function(e){return vC(SC(this),e,arguments.length>1?arguments[1]:void 0)}));var RC=D,YC=x,JC=ze,xC=zm,KC=Mm,LC=Pm,NC=ve,HC=Bm,kC=bN.aTypedArray,CC=bN.exportTypedArrayMethod,UC=Y.Uint16Array,TC=UC&&RC(UC.prototype.sort),wC=!(!TC||YC((function(){TC(new UC(2),null)}))&&YC((function(){TC(new UC(2),{})}))),FC=!!TC&&!YC((function(){if(NC)return NC<74;if(KC)return KC<67;if(LC)return!0;if(HC)return HC<602;var e,t,n=new UC(516),r=Array(516);for(e=0;e<516;e++)t=e%4,n[e]=515-e,r[e]=e-2*t+3;for(TC(n,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(n[e]!==r[e])return!0}));CC("sort",(function(e){return void 0!==e&&JC(e),FC?TC(this,e):xC(kC(this),function(e){return function(t,n){return void 0!==e?+e(t,n)||0:n!=n?-1:t!=t?1:0===t&&0===n?1/t>0&&1/n<0?1:-1:t>n}}(e))}),!FC||wC);var zC=Hr,jC=Kr,MC=OH,PC=bN.aTypedArray;(0,bN.exportTypedArrayMethod)("subarray",(function(e,t){var n=PC(this),r=n.length,i=jC(e,r);return new(MC(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,zC((void 0===t?r:jC(t,r))-i))}));var QC=Oo,BC=bN,EC=x,DC=Ao,OC=Y.Int8Array,AC=BC.aTypedArray,_C=BC.exportTypedArrayMethod,qC=[].toLocaleString,$C=!!OC&&EC((function(){qC.call(new OC(1))}));_C("toLocaleString",(function(){return QC(qC,$C?DC(AC(this)):AC(this),DC(arguments))}),EC((function(){return[1,2].toLocaleString()!=new OC([1,2]).toLocaleString()}))||!EC((function(){OC.prototype.toLocaleString.call([1,2])})));var eU=bN.exportTypedArrayMethod,tU=x,nU=D,rU=Y.Uint8Array,iU=rU&&rU.prototype||{},cU=[].toString,aU=nU([].join);tU((function(){cU.call({})}))&&(cU=function(){return aU(this)});var oU=iU.toString!=cU;eU("toString",cU,oU);var lU=D,uU=Hh,sU=Wb.exports.getWeakData,dU=cn,mU=me,hU=Uh,ZU=ap,bU=lt,pU=ar.set,yU=ar.getterFor,XU=Ia.find,fU=Ia.findIndex,VU=lU([].splice),GU=0,IU=function(e){return e.frozen||(e.frozen=new WU)},WU=function(){this.entries=[]},gU=function(e,t){return XU(e.entries,(function(e){return e[0]===t}))};WU.prototype={get:function(e){var t=gU(this,e);if(t)return t[1]},has:function(e){return!!gU(this,e)},set:function(e,t){var n=gU(this,e);n?n[1]=t:this.entries.push([e,t])},delete:function(e){var t=fU(this.entries,(function(t){return t[0]===e}));return~t&&VU(this.entries,t,1),!!~t}};var vU,SU={getConstructor:function(e,t,n,r){var i=e((function(e,i){hU(e,c),pU(e,{type:t,id:GU++,frozen:void 0}),null!=i&&ZU(i,e[r],{that:e,AS_ENTRIES:n})})),c=i.prototype,a=yU(t),o=function(e,t,n){var r=a(e),i=sU(dU(t),!0);return!0===i?IU(r).set(t,n):i[r.id]=n,e};return uU(c,{delete:function(e){var t=a(this);if(!mU(e))return!1;var n=sU(e);return!0===n?IU(t).delete(e):n&&bU(n,t.id)&&delete n[t.id]},has:function(e){var t=a(this);if(!mU(e))return!1;var n=sU(e);return!0===n?IU(t).has(e):n&&bU(n,t.id)}}),uU(c,n?{get:function(e){var t=a(this);if(mU(e)){var n=sU(e);return!0===n?IU(t).get(e):n?n[t.id]:void 0}},set:function(e,t){return o(this,e,t)}}:{add:function(e){return o(this,e,!0)}}),i}},RU=Y,YU=D,JU=Hh,xU=Wb.exports,KU=vp,LU=SU,NU=me,HU=xb,kU=ar.enforce,CU=Un,UU=!RU.ActiveXObject&&"ActiveXObject"in RU,TU=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},wU=KU("WeakMap",TU,LU);if(CU&&UU){vU=LU.getConstructor(TU,"WeakMap",!0),xU.enable();var FU=wU.prototype,zU=YU(FU.delete),jU=YU(FU.has),MU=YU(FU.get),PU=YU(FU.set);JU(FU,{delete:function(e){if(NU(e)&&!HU(e)){var t=kU(this);return t.frozen||(t.frozen=new vU),zU(this,e)||t.frozen.delete(e)}return zU(this,e)},has:function(e){if(NU(e)&&!HU(e)){var t=kU(this);return t.frozen||(t.frozen=new vU),jU(this,e)||t.frozen.has(e)}return jU(this,e)},get:function(e){if(NU(e)&&!HU(e)){var t=kU(this);return t.frozen||(t.frozen=new vU),jU(this,e)?MU(this,e):t.frozen.get(e)}return MU(this,e)},set:function(e,t){if(NU(e)&&!HU(e)){var n=kU(this);n.frozen||(n.frozen=new vU),jU(this,e)?PU(this,e,t):n.frozen.set(e,t)}else PU(this,e,t);return this}})}vp("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),SU);var QU={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},BU=Ft("span").classList,EU=BU&&BU.constructor&&BU.constructor.prototype,DU=EU===Object.prototype?void 0:EU,OU=Ia.forEach,AU=lm("forEach")?[].forEach:function(e){return OU(this,e,arguments.length>1?arguments[1]:void 0)},_U=Y,qU=QU,$U=DU,eT=AU,tT=fn,nT=function(e){if(e&&e.forEach!==eT)try{tT(e,"forEach",eT)}catch(t){e.forEach=eT}};for(var rT in qU)qU[rT]&&nT(_U[rT]&&_U[rT].prototype);nT($U);var iT=Y,cT=QU,aT=DU,oT=cm,lT=fn,uT=gt,sT=uT("iterator"),dT=uT("toStringTag"),mT=oT.values,hT=function(e,t){if(e){if(e[sT]!==mT)try{lT(e,sT,mT)}catch(t){e[sT]=mT}if(e[dT]||lT(e,dT,t),cT[t])for(var n in oT)if(e[n]!==oT[n])try{lT(e,n,oT[n])}catch(t){e[n]=oT[n]}}};for(var ZT in cT)hT(iT[ZT]&&iT[ZT].prototype,ZT);hT(aT,"DOMTokenList");var bT=GI.clear;vi({global:!0,bind:!0,enumerable:!0,forced:Y.clearImmediate!==bT},{clearImmediate:bT});var pT=GI.set;vi({global:!0,bind:!0,enumerable:!0,forced:Y.setImmediate!==pT},{setImmediate:pT});var yT=vi,XT=wI,fT=ze,VT=wG,GT=JG,IT=Y.process;yT({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){VT(arguments.length,1),fT(e);var t=GT&&IT.domain;XT(t?t.bind(e):e)}});var WT=x,gT=gt("iterator"),vT=!WT((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,n="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),n+=r+e})),!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[gT]||"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})),ST=D,RT=2147483647,YT=/[^\0-\u007E]/,JT=/[.\u3002\uFF0E\uFF61]/g,xT="Overflow: input needs wider integers to process",KT=Y.RangeError,LT=ST(JT.exec),NT=Math.floor,HT=String.fromCharCode,kT=ST("".charCodeAt),CT=ST([].join),UT=ST([].push),TT=ST("".replace),wT=ST("".split),FT=ST("".toLowerCase),zT=function(e){return e+22+75*(e<26)},jT=function(e,t,n){var r=0;for(e=n?NT(e/700):e>>1,e+=NT(e/t);e>455;)e=NT(e/35),r+=36;return NT(r+36*e/(e+38))},MT=function(e){var t=[];e=function(e){for(var t=[],n=0,r=e.length;n<r;){var i=kT(e,n++);if(i>=55296&&i<=56319&&n<r){var c=kT(e,n++);56320==(64512&c)?UT(t,((1023&i)<<10)+(1023&c)+65536):(UT(t,i),n--)}else UT(t,i)}return t}(e);var n,r,i=e.length,c=128,a=0,o=72;for(n=0;n<e.length;n++)(r=e[n])<128&&UT(t,HT(r));var l=t.length,u=l;for(l&&UT(t,"-");u<i;){var s=RT;for(n=0;n<e.length;n++)(r=e[n])>=c&&r<s&&(s=r);var d=u+1;if(s-c>NT((RT-a)/d))throw KT(xT);for(a+=(s-c)*d,c=s,n=0;n<e.length;n++){if((r=e[n])<c&&++a>RT)throw KT(xT);if(r==c){for(var m=a,h=36;;){var Z=h<=o?1:h>=o+26?26:h-o;if(m<Z)break;var b=m-Z,p=36-Z;UT(t,HT(zT(Z+b%p))),m=NT(b/p),h+=36}UT(t,HT(zT(m))),o=jT(a,d,u==l),a=0,u++}}a++,c++}return CT(t,"")},PT=vi,QT=Y,BT=k,ET=D,DT=K,OT=vT,AT=Wr,_T=Hh,qT=Fc,$T=fd,ew=ar,tw=Uh,nw=se,rw=lt,iw=Pc,cw=ki,aw=cn,ow=me,lw=Ti,uw=lc,sw=j,dw=vs,mw=Xs,hw=wG,Zw=zm,bw=gt("iterator"),pw="URLSearchParams",yw="URLSearchParamsIterator",Xw=ew.set,fw=ew.getterFor(pw),Vw=ew.getterFor(yw),Gw=Object.getOwnPropertyDescriptor,Iw=function(e){if(!DT)return QT[e];var t=Gw(QT,e);return t&&t.value},Ww=Iw("fetch"),gw=Iw("Request"),vw=Iw("Headers"),Sw=gw&&gw.prototype,Rw=vw&&vw.prototype,Yw=QT.RegExp,Jw=QT.TypeError,xw=QT.decodeURIComponent,Kw=QT.encodeURIComponent,Lw=ET("".charAt),Nw=ET([].join),Hw=ET([].push),kw=ET("".replace),Cw=ET([].shift),Uw=ET([].splice),Tw=ET("".split),ww=ET("".slice),Fw=/\+/g,zw=Array(4),jw=function(e){return zw[e-1]||(zw[e-1]=Yw("((?:%[\\da-f]{2}){"+e+"})","gi"))},Mw=function(e){try{return xw(e)}catch(t){return e}},Pw=function(e){var t=kw(e,Fw," "),n=4;try{return xw(t)}catch(e){for(;n;)t=kw(t,jw(n--),Mw);return t}},Qw=/[!'()~]|%20/g,Bw={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Ew=function(e){return Bw[e]},Dw=function(e){return kw(Kw(e),Qw,Ew)},Ow=$T((function(e,t){Xw(this,{type:yw,iterator:dw(fw(e).entries),kind:t})}),"Iterator",(function(){var e=Vw(this),t=e.kind,n=e.iterator.next(),r=n.value;return n.done||(n.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),n}),!0),Aw=function(e){this.entries=[],this.url=null,void 0!==e&&(ow(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Lw(e,0)?ww(e,1):e:lw(e)))};Aw.prototype={type:pw,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,n,r,i,c,a,o,l=mw(e);if(l)for(n=(t=dw(e,l)).next;!(r=BT(n,t)).done;){if(c=(i=dw(aw(r.value))).next,(a=BT(c,i)).done||(o=BT(c,i)).done||!BT(c,i).done)throw Jw("Expected sequence with length 2");Hw(this.entries,{key:lw(a.value),value:lw(o.value)})}else for(var u in e)rw(e,u)&&Hw(this.entries,{key:u,value:lw(e[u])})},parseQuery:function(e){if(e)for(var t,n,r=Tw(e,"&"),i=0;i<r.length;)(t=r[i++]).length&&(n=Tw(t,"="),Hw(this.entries,{key:Pw(Cw(n)),value:Pw(Nw(n,"="))}))},serialize:function(){for(var e,t=this.entries,n=[],r=0;r<t.length;)e=t[r++],Hw(n,Dw(e.key)+"="+Dw(e.value));return Nw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var _w=function(){tw(this,qw);var e=arguments.length>0?arguments[0]:void 0;Xw(this,new Aw(e))},qw=_w.prototype;if(_T(qw,{append:function(e,t){hw(arguments.length,2);var n=fw(this);Hw(n.entries,{key:lw(e),value:lw(t)}),n.updateURL()},delete:function(e){hw(arguments.length,1);for(var t=fw(this),n=t.entries,r=lw(e),i=0;i<n.length;)n[i].key===r?Uw(n,i,1):i++;t.updateURL()},get:function(e){hw(arguments.length,1);for(var t=fw(this).entries,n=lw(e),r=0;r<t.length;r++)if(t[r].key===n)return t[r].value;return null},getAll:function(e){hw(arguments.length,1);for(var t=fw(this).entries,n=lw(e),r=[],i=0;i<t.length;i++)t[i].key===n&&Hw(r,t[i].value);return r},has:function(e){hw(arguments.length,1);for(var t=fw(this).entries,n=lw(e),r=0;r<t.length;)if(t[r++].key===n)return!0;return!1},set:function(e,t){hw(arguments.length,1);for(var n,r=fw(this),i=r.entries,c=!1,a=lw(e),o=lw(t),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?Uw(i,l--,1):(c=!0,n.value=o));c||Hw(i,{key:a,value:o}),r.updateURL()},sort:function(){var e=fw(this);Zw(e.entries,(function(e,t){return e.key>t.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,n=fw(this).entries,r=iw(e,arguments.length>1?arguments[1]:void 0),i=0;i<n.length;)r((t=n[i++]).value,t.key,this)},keys:function(){return new Ow(this,"keys")},values:function(){return new Ow(this,"values")},entries:function(){return new Ow(this,"entries")}},{enumerable:!0}),AT(qw,bw,qw.entries,{name:"entries"}),AT(qw,"toString",(function(){return fw(this).serialize()}),{enumerable:!0}),qT(_w,pw),PT({global:!0,forced:!OT},{URLSearchParams:_w}),!OT&&nw(vw)){var $w=ET(Rw.has),eF=ET(Rw.set),tF=function(e){if(ow(e)){var t,n=e.body;if(cw(n)===pw)return t=e.headers?new vw(e.headers):new vw,$w(t,"content-type")||eF(t,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),uw(e,{body:sw(0,lw(n)),headers:sw(0,t)})}return e};if(nw(Ww)&&PT({global:!0,enumerable:!0,noTargetGet:!0,forced:!0},{fetch:function(e){return Ww(e,arguments.length>1?tF(arguments[1]):{})}}),nw(gw)){var nF=function(e){return tw(this,Sw),new gw(e,arguments.length>1?tF(arguments[1]):{})};Sw.constructor=nF,nF.prototype=Sw,PT({global:!0,forced:!0,noTargetGet:!0},{Request:nF})}}var rF,iF=vi,cF=K,aF=vT,oF=Y,lF=Pc,uF=D,sF=Wr,dF=TR,mF=Uh,hF=lt,ZF=Pf,bF=Us,pF=fc,yF=RY.codeAt,XF=function(e){var t,n,r=[],i=wT(TT(FT(e),JT,"."),".");for(t=0;t<i.length;t++)n=i[t],UT(r,LT(YT,n)?"xn--"+MT(n):n);return CT(r,".")},fF=Ti,VF=Fc,GF=wG,IF={URLSearchParams:_w,getState:fw},WF=ar,gF=WF.set,vF=WF.getterFor("URL"),SF=IF.URLSearchParams,RF=IF.getState,YF=oF.URL,JF=oF.TypeError,xF=oF.parseInt,KF=Math.floor,LF=Math.pow,NF=uF("".charAt),HF=uF(/./.exec),kF=uF([].join),CF=uF(1..toString),UF=uF([].pop),TF=uF([].push),wF=uF("".replace),FF=uF([].shift),zF=uF("".split),jF=uF("".slice),MF=uF("".toLowerCase),PF=uF([].unshift),QF="Invalid scheme",BF="Invalid host",EF="Invalid port",DF=/[a-z]/i,OF=/[\d+-.a-z]/i,AF=/\d/,_F=/^0x/i,qF=/^[0-7]+$/,$F=/^\d+$/,ez=/^[\da-f]+$/i,tz=/[\0\t\n\r #%/:<>?@[\\\]^|]/,nz=/[\0\t\n\r #/:<>?@[\\\]^|]/,rz=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,iz=/[\t\n\r]/g,cz=function(e){var t,n,r,i;if("number"==typeof e){for(t=[],n=0;n<4;n++)PF(t,e%256),e=KF(e/256);return kF(t,".")}if("object"==a(e)){for(t="",r=function(e){for(var t=null,n=1,r=null,i=0,c=0;c<8;c++)0!==e[c]?(i>n&&(t=r,n=i),r=null,i=0):(null===r&&(r=c),++i);return i>n&&(t=r,n=i),t}(e),n=0;n<8;n++)i&&0===e[n]||(i&&(i=!1),r===n?(t+=n?":":"::",i=!0):(t+=CF(e[n],16),n<7&&(t+=":")));return"["+t+"]"}return e},az={},oz=ZF({},az,{" ":1,'"':1,"<":1,">":1,"`":1}),lz=ZF({},oz,{"#":1,"?":1,"{":1,"}":1}),uz=ZF({},lz,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),sz=function(e,t){var n=yF(e,0);return n>32&&n<127&&!hF(t,e)?e:encodeURIComponent(e)},dz={ftp:21,file:null,http:80,https:443,ws:80,wss:443},mz=function(e,t){var n;return 2==e.length&&HF(DF,NF(e,0))&&(":"==(n=NF(e,1))||!t&&"|"==n)},hz=function(e){var t;return e.length>1&&mz(jF(e,0,2))&&(2==e.length||"/"===(t=NF(e,2))||"\\"===t||"?"===t||"#"===t)},Zz=function(e){return"."===e||"%2e"===MF(e)},bz={},pz={},yz={},Xz={},fz={},Vz={},Gz={},Iz={},Wz={},gz={},vz={},Sz={},Rz={},Yz={},Jz={},xz={},Kz={},Lz={},Nz={},Hz={},kz={},Cz=function e(t,n,r){var i,c,a,o=fF(t);if(n){if(c=this.parse(o))throw JF(c);this.searchParams=null}else{if(void 0!==r&&(i=new e(r,!0)),c=this.parse(o,null,i))throw JF(c);(a=RF(new SF)).bindURL(this),this.searchParams=a}};Cz.prototype={type:"URL",parse:function(e,t,n){var r,i,c,a,o,l=this,u=t||bz,s=0,d="",m=!1,h=!1,Z=!1;for(e=fF(e),t||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,e=wF(e,rz,"")),e=wF(e,iz,""),r=bF(e);s<=r.length;){switch(i=r[s],u){case bz:if(!i||!HF(DF,i)){if(t)return QF;u=yz;continue}d+=MF(i),u=pz;break;case pz:if(i&&(HF(OF,i)||"+"==i||"-"==i||"."==i))d+=MF(i);else{if(":"!=i){if(t)return QF;d="",u=yz,s=0;continue}if(t&&(l.isSpecial()!=hF(dz,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,t)return void(l.isSpecial()&&dz[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?u=Yz:l.isSpecial()&&n&&n.scheme==l.scheme?u=Xz:l.isSpecial()?u=Iz:"/"==r[s+1]?(u=fz,s++):(l.cannotBeABaseURL=!0,TF(l.path,""),u=Nz)}break;case yz:if(!n||n.cannotBeABaseURL&&"#"!=i)return QF;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=pF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=kz;break}u="file"==n.scheme?Yz:Vz;continue;case Xz:if("/"!=i||"/"!=r[s+1]){u=Vz;continue}u=Wz,s++;break;case fz:if("/"==i){u=gz;break}u=Lz;continue;case Vz:if(l.scheme=n.scheme,i==rF)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=pF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=Gz;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=pF(n.path),l.query="",u=Hz;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=pF(n.path),l.path.length--,u=Lz;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=pF(n.path),l.query=n.query,l.fragment="",u=kz}break;case Gz:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=Lz;continue}u=gz}else u=Wz;break;case Iz:if(u=Wz,"/"!=i||"/"!=NF(d,s+1))continue;s++;break;case Wz:if("/"!=i&&"\\"!=i){u=gz;continue}break;case gz:if("@"==i){m&&(d="%40"+d),m=!0,c=bF(d);for(var b=0;b<c.length;b++){var p=c[b];if(":"!=p||Z){var y=sz(p,uz);Z?l.password+=y:l.username+=y}else Z=!0}d=""}else if(i==rF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(m&&""==d)return"Invalid authority";s-=bF(d).length+1,d="",u=vz}else d+=i;break;case vz:case Sz:if(t&&"file"==l.scheme){u=xz;continue}if(":"!=i||h){if(i==rF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==d)return BF;if(t&&""==d&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(d))return a;if(d="",u=Kz,t)return;continue}"["==i?h=!0:"]"==i&&(h=!1),d+=i}else{if(""==d)return BF;if(a=l.parseHost(d))return a;if(d="",u=Rz,t==Sz)return}break;case Rz:if(!HF(AF,i)){if(i==rF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||t){if(""!=d){var X=xF(d,10);if(X>65535)return EF;l.port=l.isSpecial()&&X===dz[l.scheme]?null:X,d=""}if(t)return;u=Kz;continue}return EF}d+=i;break;case Yz:if(l.scheme="file","/"==i||"\\"==i)u=Jz;else{if(!n||"file"!=n.scheme){u=Lz;continue}if(i==rF)l.host=n.host,l.path=pF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=pF(n.path),l.query="",u=Hz;else{if("#"!=i){hz(kF(pF(r,s),""))||(l.host=n.host,l.path=pF(n.path),l.shortenPath()),u=Lz;continue}l.host=n.host,l.path=pF(n.path),l.query=n.query,l.fragment="",u=kz}}break;case Jz:if("/"==i||"\\"==i){u=xz;break}n&&"file"==n.scheme&&!hz(kF(pF(r,s),""))&&(mz(n.path[0],!0)?TF(l.path,n.path[0]):l.host=n.host),u=Lz;continue;case xz:if(i==rF||"/"==i||"\\"==i||"?"==i||"#"==i){if(!t&&mz(d))u=Lz;else if(""==d){if(l.host="",t)return;u=Kz}else{if(a=l.parseHost(d))return a;if("localhost"==l.host&&(l.host=""),t)return;d="",u=Kz}continue}d+=i;break;case Kz:if(l.isSpecial()){if(u=Lz,"/"!=i&&"\\"!=i)continue}else if(t||"?"!=i)if(t||"#"!=i){if(i!=rF&&(u=Lz,"/"!=i))continue}else l.fragment="",u=kz;else l.query="",u=Hz;break;case Lz:if(i==rF||"/"==i||"\\"==i&&l.isSpecial()||!t&&("?"==i||"#"==i)){if(".."===(o=MF(o=d))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||TF(l.path,"")):Zz(d)?"/"==i||"\\"==i&&l.isSpecial()||TF(l.path,""):("file"==l.scheme&&!l.path.length&&mz(d)&&(l.host&&(l.host=""),d=NF(d,0)+":"),TF(l.path,d)),d="","file"==l.scheme&&(i==rF||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)FF(l.path);"?"==i?(l.query="",u=Hz):"#"==i&&(l.fragment="",u=kz)}else d+=sz(i,lz);break;case Nz:"?"==i?(l.query="",u=Hz):"#"==i?(l.fragment="",u=kz):i!=rF&&(l.path[0]+=sz(i,az));break;case Hz:t||"#"!=i?i!=rF&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":sz(i,az)):(l.fragment="",u=kz);break;case kz:i!=rF&&(l.fragment+=sz(i,oz))}s++}},parseHost:function(e){var t,n,r;if("["==NF(e,0)){if("]"!=NF(e,e.length-1))return BF;if(t=function(e){var t,n,r,i,c,a,o,l=[0,0,0,0,0,0,0,0],u=0,s=null,d=0,m=function(){return NF(e,d)};if(":"==m()){if(":"!=NF(e,1))return;d+=2,s=++u}for(;m();){if(8==u)return;if(":"!=m()){for(t=n=0;n<4&&HF(ez,m());)t=16*t+xF(m(),16),d++,n++;if("."==m()){if(0==n)return;if(d-=n,u>6)return;for(r=0;m();){if(i=null,r>0){if(!("."==m()&&r<4))return;d++}if(!HF(AF,m()))return;for(;HF(AF,m());){if(c=xF(m(),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(":"==m()){if(d++,!m())return}else if(m())return;l[u++]=t}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}(jF(e,1,-1)),!t)return BF;this.host=t}else if(this.isSpecial()){if(e=XF(e),HF(tz,e))return BF;if(t=function(e){var t,n,r,i,c,a,o,l=zF(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(n=[],r=0;r<t;r++){if(""==(i=l[r]))return e;if(c=10,i.length>1&&"0"==NF(i,0)&&(c=HF(_F,i)?16:8,i=jF(i,8==c?1:2)),""===i)a=0;else{if(!HF(10==c?$F:8==c?qF:ez,i))return e;a=xF(i,c)}TF(n,a)}for(r=0;r<t;r++)if(a=n[r],r==t-1){if(a>=LF(256,5-t))return null}else if(a>255)return null;for(o=UF(n),r=0;r<n.length;r++)o+=n[r]*LF(256,3-r);return o}(e),null===t)return BF;this.host=t}else{if(HF(nz,e))return BF;for(t="",n=bF(e),r=0;r<n.length;r++)t+=sz(n[r],az);this.host=t}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return hF(dz,this.scheme)},shortenPath:function(){var e=this.path,t=e.length;!t||"file"==this.scheme&&1==t&&mz(e[0],!0)||e.length--},serialize:function(){var e=this,t=e.scheme,n=e.username,r=e.password,i=e.host,c=e.port,a=e.path,o=e.query,l=e.fragment,u=t+":";return null!==i?(u+="//",e.includesCredentials()&&(u+=n+(r?":"+r:"")+"@"),u+=cz(i),null!==c&&(u+=":"+c)):"file"==t&&(u+="//"),u+=e.cannotBeABaseURL?a[0]:a.length?"/"+kF(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(e){var t=this.parse(e);if(t)throw JF(t);this.searchParams.update()},getOrigin:function(){var e=this.scheme,t=this.port;if("blob"==e)try{return new Uz(e.path[0]).origin}catch(e){return"null"}return"file"!=e&&this.isSpecial()?e+"://"+cz(this.host)+(null!==t?":"+t:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(e){this.parse(fF(e)+":",bz)},getUsername:function(){return this.username},setUsername:function(e){var t=bF(fF(e));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<t.length;n++)this.username+=sz(t[n],uz)}},getPassword:function(){return this.password},setPassword:function(e){var t=bF(fF(e));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<t.length;n++)this.password+=sz(t[n],uz)}},getHost:function(){var e=this.host,t=this.port;return null===e?"":null===t?cz(e):cz(e)+":"+t},setHost:function(e){this.cannotBeABaseURL||this.parse(e,vz)},getHostname:function(){var e=this.host;return null===e?"":cz(e)},setHostname:function(e){this.cannotBeABaseURL||this.parse(e,Sz)},getPort:function(){var e=this.port;return null===e?"":fF(e)},setPort:function(e){this.cannotHaveUsernamePasswordPort()||(""==(e=fF(e))?this.port=null:this.parse(e,Rz))},getPathname:function(){var e=this.path;return this.cannotBeABaseURL?e[0]:e.length?"/"+kF(e,"/"):""},setPathname:function(e){this.cannotBeABaseURL||(this.path=[],this.parse(e,Kz))},getSearch:function(){var e=this.query;return e?"?"+e:""},setSearch:function(e){""==(e=fF(e))?this.query=null:("?"==NF(e,0)&&(e=jF(e,1)),this.query="",this.parse(e,Hz)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var e=this.fragment;return e?"#"+e:""},setHash:function(e){""!=(e=fF(e))?("#"==NF(e,0)&&(e=jF(e,1)),this.fragment="",this.parse(e,kz)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Uz=function(e){var t=mF(this,Tz),n=GF(arguments.length,1)>1?arguments[1]:void 0,r=gF(t,new Cz(e,!1,n));cF||(t.href=r.serialize(),t.origin=r.getOrigin(),t.protocol=r.getProtocol(),t.username=r.getUsername(),t.password=r.getPassword(),t.host=r.getHost(),t.hostname=r.getHostname(),t.port=r.getPort(),t.pathname=r.getPathname(),t.search=r.getSearch(),t.searchParams=r.getSearchParams(),t.hash=r.getHash())},Tz=Uz.prototype,wz=function(e,t){return{get:function(){return vF(this)[e]()},set:t&&function(e){return vF(this)[t](e)},configurable:!0,enumerable:!0}};if(cF&&(dF(Tz,"href",wz("serialize","setHref")),dF(Tz,"origin",wz("getOrigin")),dF(Tz,"protocol",wz("getProtocol","setProtocol")),dF(Tz,"username",wz("getUsername","setUsername")),dF(Tz,"password",wz("getPassword","setPassword")),dF(Tz,"host",wz("getHost","setHost")),dF(Tz,"hostname",wz("getHostname","setHostname")),dF(Tz,"port",wz("getPort","setPort")),dF(Tz,"pathname",wz("getPathname","setPathname")),dF(Tz,"search",wz("getSearch","setSearch")),dF(Tz,"searchParams",wz("getSearchParams")),dF(Tz,"hash",wz("getHash","setHash"))),sF(Tz,"toJSON",(function(){return vF(this).serialize()}),{enumerable:!0}),sF(Tz,"toString",(function(){return vF(this).serialize()}),{enumerable:!0}),YF){var Fz=YF.createObjectURL,zz=YF.revokeObjectURL;Fz&&sF(Uz,"createObjectURL",lF(Fz,YF)),zz&&sF(Uz,"revokeObjectURL",lF(zz,YF))}VF(Uz,"URL"),iF({global:!0,forced:!aF,sham:!cF},{URL:Uz});var jz=k;function Mz(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}function Pz(e,t,n,r){return new(n||(n=Promise))((function(i,c){function a(e){try{l(r.next(e))}catch(e){c(e)}}function o(e){try{l(r.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,o)}l((r=r.apply(e,t||[])).next())}))}vi({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return jz(URL.prototype.toString,this)}}),e.ResponseMode=void 0,function(e){e.formPost="form_post",e.query="query"}(e.ResponseMode||(e.ResponseMode={}));e.Stores=void 0,function(e){e.ConfigData="config_data",e.OIDCProviderMetaData="oidc_provider_meta_data",e.SessionData="session_data",e.TemporaryData="temporary_data"}(e.Stores||(e.Stores={}));var Qz,Bz="refresh_token_timer",Ez=["RS256","RS512","RS384","PS256"],Dz="code",Oz="session_state",Az="sign_out_url",_z="sign_out_success",qz="state";!function(e){e.Include="include",e.SameOrigin="same-origin",e.Omit="omit"}(Qz||(Qz={}));var $z=d((function e(t,n,r){u(this,e),this.message=r,this.name=n,this.code=t,Object.setPrototypeOf(this,(this instanceof e?this.constructor:void 0).prototype)})),ej=function(){function e(){u(this,e)}return d(e,null,[{key:"filterClaimsFromIDTokenPayload",value:function(e){var t=Object.assign({},e);null==t||delete t.iss,null==t||delete t.aud,null==t||delete t.exp,null==t||delete t.iat,null==t||delete t.acr,null==t||delete t.amr,null==t||delete t.azp,null==t||delete t.auth_time,null==t||delete t.nonce,null==t||delete t.c_hash,null==t||delete t.at_hash,null==t||delete t.nbf,null==t||delete t.isk,null==t||delete t.sid;var n={};return Object.entries(t).forEach((function(e){var t=I(e,2),r=t[0],i=t[1],c=r.split("_").map((function(e,t){return 0===t?e:[e[0].toUpperCase()].concat(W(e.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(e,t){var n=parseInt(e.split("#")[1]);return t?"".concat(t,"_request_").concat(n):"request_".concat(n)}},{key:"extractPKCEKeyFromStateParam",value:function(e){return"pkce_code_verifier#".concat(parseInt(e.split("request_")[1]))}}]),e}();ej.getTenantDomainFromIdTokenPayload=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"@",n=e.sub.split(t);return n.length>2?n[n.length-1]:""};var tj,nj,rj=function(){function e(t,n){var r=this;u(this,e),this._dataLayer=t,this._config=function(){return Pz(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return Pz(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._cryptoHelper=n}return d(e,[{key:"resolveEndpoints",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n={},t.next=3,this._config();case 3:return r=t.sent,t.abrupt("return",(r.endpoints&&Object.keys(r.endpoints).forEach((function(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));n[t]=(null==r?void 0:r.endpoints)?r.endpoints[e]:""})),Object.assign(Object.assign({},e),n)));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"resolveEndpointsExplicitly",value:function(){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.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(e){var t=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));return r.includes(t)}))){e.next=7;break}throw new $z("JS-AUTH_HELPER-REE-NF01","No required endpoints.","Required oidc endpoints are not defined");case 7:return e.abrupt("return",(n.endpoints&&Object.keys(n.endpoints).forEach((function(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),Object.assign({},t)));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"resolveEndpointsByBaseURL",value:function(){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.next=3,this._config();case 3:if(n=e.sent,r=n.baseUrl){e.next=7;break}throw new $z("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(e){var r=e.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())}));t[r]=(null==n?void 0:n.endpoints)?n.endpoints[e]:""})),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")},e.abrupt("return",Object.assign(Object.assign({},i),t));case 10:case"end":return e.stop()}}),e,this)})))}},{key:"validateIdToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,l;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return n=t.sent.jwks_uri,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new $z("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 t.prev=8,t.next=11,fetch(n,{credentials:r.sendCookiesInRequests?Qz.Include:Qz.SameOrigin});case 11:i=t.sent,t.next=17;break;case 14:throw t.prev=14,t.t0=t.catch(8),new $z("JS-AUTH_HELPER-VIT-NE02","Request to jwks endpoint failed.",null!=t.t0?t.t0:"The request sent to get the jwks from the server failed.");case 17:if(200===i.status&&i.ok){t.next=24;break}return t.t1=$z,t.t2="Invalid response status received for jwks request (".concat(i.statusText,")."),t.next=22,i.json();case 22:throw t.t3=t.sent,new t.t1("JS-AUTH_HELPER-VIT-HE03",t.t2,t.t3);case 24:return t.next=26,this._oidcProviderMetaData();case 26:return c=t.sent.issuer,t.next=29,i.json();case 29:return a=t.sent,o=a.keys,t.next=33,this._cryptoHelper.getJWKForTheIdToken(e.split(".")[0],o);case 33:return l=t.sent,t.t4=this._cryptoHelper,t.t5=e,t.t6=l,t.next=39,this._config();case 39:return t.t7=t.sent.clientID,t.t8=null!=c?c:"",t.t9=this._cryptoHelper.decodeIDToken(e).sub,t.next=44,this._config();case 44:return t.t10=t.sent.clockTolerance,t.abrupt("return",t.t4.isValidIdToken.call(t.t4,t.t5,t.t6,t.t7,t.t8,t.t9,t.t10));case 46:case"end":return t.stop()}}),t,this,[[8,14]])})))}},{key:"getAuthenticatedUserInfo",value:function(e){var t,n,r,i,c=this._cryptoHelper.decodeIDToken(e),a=ej.getTenantDomainFromIdTokenPayload(c),o=null!==(t=null==c?void 0:c.username)&&void 0!==t?t:"",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},ej.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(e,t){var n;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.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(t);case 6:return a=r.sent,r.abrupt("return",(c.scope&&c.scope.length>0&&(c.scope.includes("openid")||c.scope.push("openid"),i=c.scope.join(" ")),e.replace("{{token}}",a.access_token).replace("{{username}}",this.getAuthenticatedUserInfo(a.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(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.removeTemporaryData(e);case 2:return t.next=4,this._dataLayer.removeSessionData(e);case 4:case"end":return t.stop()}}),t,this)})))}},{key:"handleTokenResponse",value:function(e,t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(200===e.status&&e.ok){n.next=7;break}return n.t0=$z,n.t1="Invalid response status received for token request (".concat(e.statusText,")."),n.next=5,e.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,e.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 Pz(c,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.setSessionData(r,t);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},e.abrupt("return",Promise.resolve(n));case 4:case"end":return e.stop()}}),e,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,t);case 18:return n.abrupt("return",Promise.resolve(i));case 19:case"end":return n.stop()}}),n,this)})))}},{key:"generatePKCEKey",value:function(e){var t;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryData(e);case 2:return r=n.sent,i=[],Object.keys(r).forEach((function(e){e.startsWith("pkce_code_verifier")&&i.push(e)})),c=i.sort().pop(),n.abrupt("return","pkce_code_verifier#".concat(parseInt(null!==(t=null==c?void 0:c.split("#")[1])&&void 0!==t?t:"-1")+1));case 7:case"end":return n.stop()}}),n,this)})))}}]),e}(),ij=function(){function e(t){u(this,e),this._cryptoUtils=t}return d(e,[{key:"getCodeVerifier",value:function(){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.generateRandomBytes(32))}},{key:"getCodeChallenge",value:function(e){return this._cryptoUtils.base64URLEncode(this._cryptoUtils.hashSha256(e))}},{key:"getJWKForTheIdToken",value:function(e,t){var n,r=JSON.parse(this._cryptoUtils.base64URLDecode(e)),i=S(t);try{for(i.s();!(n=i.n()).done;){var c=n.value;if(r.kid===c.kid)return c}}catch(e){i.e(e)}finally{i.f()}throw new $z("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: "+t.map((function(e){return e.kid})).join(", "))}},{key:"isValidIdToken",value:function(e,t,n,r,i,c){return this._cryptoUtils.verifyJwt(e,t,Ez,n,r,i,c).then((function(e){return e?Promise.resolve(!0):Promise.reject(new $z("JS-CRYPTO_HELPER-IVIT-IV01","Invalid ID token.","ID token validation returned false"))})).catch((function(e){return"ERR_JWT_CLAIM_VALIDATION_FAILED"===(null==e?void 0:e.code)&&"nbf"===(null==e?void 0:e.claim)?Promise.reject(new $z("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new $z("JS-CRYPTO_UTILS-IVIT-IV03","JWT VALIDATION FAILED","JWT validation has been failed"))}))}},{key:"decodeIDToken",value:function(e){try{var t=this._cryptoUtils.base64URLDecode(e.split(".")[1]);return JSON.parse(t)}catch(e){throw new $z("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",e)}}}]),e}(),cj=function(){function e(t,n){var r=this;u(this,e),this._cryptoUtils=n,this._cryptoHelper=new ij(n),this._authenticationHelper=new rj(t,this._cryptoHelper),this._dataLayer=t,this._config=function(){return Pz(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getConfigData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))},this._oidcProviderMetaData=function(){return Pz(r,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getOIDCProviderMetaData();case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))}}return d(e,[{key:"getAuthorizationURL",value:function(e,t){var n,r,i;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,s,d,m,h,Z,b,p,y,X,f,V,G,W,g,v,R;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._dataLayer.getOIDCProviderMetaDataParameter("authorization_endpoint");case 2:return a=c.sent,c.next=5,this._config();case 5:if(o=c.sent,a&&0!==a.trim().length){c.next=8;break}throw new $z("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 l=new URL(a),(u=new Map).set("response_type","code"),u.set("client_id",o.clientID),s="openid",o.scope&&o.scope.length>0&&(o.scope.includes("openid")||o.scope.push("openid"),s=o.scope.join(" ")),u.set("scope",s),u.set("redirect_uri",o.signInRedirectURL),o.responseMode&&u.set("response_mode",o.responseMode),c.next=14,this._authenticationHelper.generatePKCEKey(t);case 14:if(d=c.sent,!o.enablePKCE){c.next=21;break}return m=null===(n=this._cryptoHelper)||void 0===n?void 0:n.getCodeVerifier(),h=null===(r=this._cryptoHelper)||void 0===r?void 0:r.getCodeChallenge(m),c.next=19,this._dataLayer.setTemporaryDataParameter(d,m,t);case 19:u.set("code_challenge_method","S256"),u.set("code_challenge",h);case 21:if(o.prompt&&u.set("prompt",o.prompt),Z=e)for(b=0,p=Object.entries(Z);b<p.length;b++)y=I(p[b],2),X=y[0],f=y[1],""!=X&&""!=f&&"state"!==X&&(V=X.replace(/[A-Z]/g,(function(e){return"_".concat(e.toLowerCase())})),u.set(V,f.toString()));u.set("state",ej.generateStateParamForRequestCorrelation(d,Z?null===(i=Z.state)||void 0===i?void 0:i.toString():"")),G=S(u.entries());try{for(G.s();!(W=G.n()).done;)g=I(W.value,2),v=g[0],R=g[1],l.searchParams.append(v,R)}catch(e){G.e(e)}finally{G.f()}return c.abrupt("return",l.toString());case 28:case"end":return c.stop()}}),c,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l,u;return regeneratorRuntime.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(a=i.sent,c&&0!==c.trim().length){i.next=8;break}throw new $z("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=t,!i.t0){i.next=12;break}return i.next=12,this._dataLayer.setSessionDataParameter("session_state",t,r);case 12:if((o=[]).push("client_id=".concat(a.clientID)),a.clientSecret&&a.clientSecret.trim().length>0&&o.push("client_secret=".concat(a.clientSecret)),l=e,o.push("code=".concat(l)),o.push("grant_type=authorization_code"),o.push("redirect_uri=".concat(a.signInRedirectURL)),i.t1=a.enablePKCE,!i.t1){i.next=29;break}return i.t2=o,i.t3="code_verifier=",i.next=24,this._dataLayer.getTemporaryDataParameter(ej.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(ej.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:o.join("&"),credentials:a.sendCookiesInRequests?Qz.Include:Qz.SameOrigin,headers:new Headers(ej.getTokenRequestHeaders()),method:"POST"});case 32:u=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new $z("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(u.ok){i.next=45;break}return i.t7=$z,i.t8="Requesting access token failed with ".concat(u.statusText),i.next=43,u.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(u,r);case 47:return i.abrupt("return",i.sent);case 48:case"end":return i.stop()}}),i,this,[[29,35]])})))}},{key:"refreshAccessToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.token_endpoint,t.next=5,this._config();case 5:return r=t.sent,t.next=8,this._dataLayer.getSessionData(e);case 8:if((i=t.sent).refresh_token){t.next=11;break}throw new $z("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){t.next=13;break}throw new $z("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)),t.prev=15,t.next=18,fetch(n,{body:c.join("&"),credentials:r.sendCookiesInRequests?Qz.Include:Qz.SameOrigin,headers:new Headers(ej.getTokenRequestHeaders()),method:"POST"});case 18:a=t.sent,t.next=24;break;case 21:throw t.prev=21,t.t0=t.catch(15),new $z("JS-AUTH_CORE-RAT2-NR03","Refresh access token request failed.",null!=t.t0?t.t0:"The request to refresh the access token failed.");case 24:if(a.ok){t.next=31;break}return t.t1=$z,t.t2="Refreshing access token failed with ".concat(a.statusText),t.next=29,a.json();case 29:throw t.t3=t.sent,new t.t1("JS-AUTH_CORE-RAT2-HE04",t.t2,t.t3);case 31:return t.abrupt("return",this._authenticationHelper.handleTokenResponse(a,e));case 32:case"end":return t.stop()}}),t,this,[[15,21]])})))}},{key:"revokeAccessToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._oidcProviderMetaData();case 2:return n=t.sent.revocation_endpoint,t.next=5,this._config();case 5:if(r=t.sent,n&&0!==n.trim().length){t.next=8;break}throw new $z("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)),t.t0=i,t.t1="token=",t.next=14,this._dataLayer.getSessionData(e);case 14:return t.t2=t.sent.access_token,t.t3=t.t1.concat.call(t.t1,t.t2),t.t0.push.call(t.t0,t.t3),i.push("token_type_hint=access_token"),t.prev=18,t.next=21,fetch(n,{body:i.join("&"),credentials:r.sendCookiesInRequests?Qz.Include:Qz.SameOrigin,headers:new Headers(ej.getTokenRequestHeaders()),method:"POST"});case 21:c=t.sent,t.next=27;break;case 24:throw t.prev=24,t.t4=t.catch(18),new $z("JS-AUTH_CORE-RAT3-NE02","The request to revoke access token failed.",null!=t.t4?t.t4:"The request sent to revoke the access token failed.");case 27:if(200===c.status&&c.ok){t.next=34;break}return t.t5=$z,t.t6="Invalid response status received for revoke access token request (".concat(c.statusText,")."),t.next=32,c.json();case 32:throw t.t7=t.sent,new t.t5("JS-AUTH_CORE-RAT3-HE03",t.t6,t.t7);case 34:return t.abrupt("return",(this._authenticationHelper.clearUserSessionData(e),Promise.resolve(c)));case 35:case"end":return t.stop()}}),t,this,[[18,24]])})))}},{key:"requestCustomGrant",value:function(e,t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,s=this;return regeneratorRuntime.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=e.tokenEndpoint&&0!==e.tokenEndpoint.trim().length?e.tokenEndpoint:r.token_endpoint)&&0!==c.trim().length){n.next=8;break}throw new $z("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(e.data).map((function(e){var n=I(e,2),r=n[0],i=n[1];return Pz(s,void 0,void 0,regeneratorRuntime.mark((function e(){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationHelper.replaceCustomGrantTemplateTags(i,t);case 2:return n=e.sent,e.abrupt("return","".concat(r,"=").concat(n));case 4:case"end":return e.stop()}}),e,this)})))})));case 10:if(a=n.sent,o=Object.assign({},ej.getTokenRequestHeaders()),n.t0=e.attachToken,!n.t0){n.next=23;break}return n.t1=Object,n.t2=Object.assign({},o),n.t3="Bearer ",n.next=19,this._dataLayer.getSessionData(t);case 19:n.t4=n.sent.access_token,n.t5=n.t3.concat.call(n.t3,n.t4),n.t6={Authorization:n.t5},o=n.t1.assign.call(n.t1,n.t2,n.t6);case 23:return l={body:a.join("&"),credentials:i.sendCookiesInRequests?Qz.Include:Qz.SameOrigin,headers:new Headers(o),method:"POST"},n.prev=24,n.next=27,fetch(c,l);case 27:u=n.sent,n.next=33;break;case 30:throw n.prev=30,n.t7=n.catch(24),new $z("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===u.status&&u.ok){n.next=40;break}return n.t8=$z,n.t9="Invalid response status received for the custom grant request. (".concat(u.statusText,")"),n.next=38,u.json();case 38:throw n.t10=n.sent,new n.t8("JS-AUTH_CORE-RCG-HE03",n.t9,n.t10);case 40:if(!e.returnsSession){n.next=44;break}n.t11=this._authenticationHelper.handleTokenResponse(u,t),n.next=49;break;case 44:return n.t12=Promise,n.next=47,u.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(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent,r=this._authenticationHelper.getAuthenticatedUserInfo(null==n?void 0:n.id_token),i={allowedScopes:n.scope,sessionState:n.session_state},t.abrupt("return",(Object.keys(r).forEach((function(e){void 0!==r[e]&&""!==r[e]&&null!==r[e]||delete r[e]})),i=Object.assign(Object.assign({},i),r)));case 6:case"end":return t.stop()}}),t,this)})))}},{key:"getDecodedIDToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return n=t.sent.id_token,t.abrupt("return",this._cryptoHelper.decodeIDToken(n));case 4:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.getSessionData(e);case 2:return t.abrupt("return",t.sent.id_token);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCProviderMetaData",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._config();case 2:if(n=t.sent,t.t0=!e,!t.t0){t.next=8;break}return t.next=7,this._dataLayer.getTemporaryDataParameter("op_config_initiated");case 7:t.t0=t.sent;case 8:if(!t.t0){t.next=10;break}return t.abrupt("return",Promise.resolve());case 10:if(!(r=n.wellKnownEndpoint)){t.next=36;break}return t.prev=12,t.next=15,fetch(r);case 15:if(200===(i=t.sent).status&&i.ok){t.next=18;break}throw new Error;case 18:t.next=23;break;case 20:throw t.prev=20,t.t1=t.catch(12),new $z("JS-AUTH_CORE-GOPMD-HE01","Invalid well-known response","The well known endpoint response has been failed with an error.");case 23:return t.t2=this._dataLayer,t.t3=this._authenticationHelper,t.next=27,i.json();case 27:return t.t4=t.sent,t.next=30,t.t3.resolveEndpoints.call(t.t3,t.t4);case 30:return t.t5=t.sent,t.next=33,t.t2.setOIDCProviderMetaData.call(t.t2,t.t5);case 33:return t.next=35,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 35:return t.abrupt("return",Promise.resolve());case 36:if(!n.baseUrl){t.next=52;break}return t.prev=37,t.t6=this._dataLayer,t.next=41,this._authenticationHelper.resolveEndpointsByBaseURL();case 41:return t.t7=t.sent,t.next=44,t.t6.setOIDCProviderMetaData.call(t.t6,t.t7);case 44:t.next=49;break;case 46:throw t.prev=46,t.t8=t.catch(37),new $z("JS-AUTH_CORE-GOPMD-IV02","Resolving endpoints failed.",null!=t.t8?t.t8:"Resolving endpoints by base url failed.");case 49:return t.next=51,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 51:return t.abrupt("return",Promise.resolve());case 52:return t.prev=52,t.t9=this._dataLayer,t.next=56,this._authenticationHelper.resolveEndpointsExplicitly();case 56:return t.t10=t.sent,t.next=59,t.t9.setOIDCProviderMetaData.call(t.t9,t.t10);case 59:t.next=64;break;case 61:throw t.prev=61,t.t11=t.catch(52),new $z("JS-AUTH_CORE-GOPMD-IV03","Resolving endpoints failed.",null!=t.t11?t.t11:"Resolving endpoints by explicitly failed.");case 64:return t.next=66,this._dataLayer.setTemporaryDataParameter("op_config_initiated",!0);case 66:return t.abrupt("return",Promise.resolve());case 67:case"end":return t.stop()}}),t,this,[[12,20],[37,46],[52,61]])})))}},{key:"getOIDCServiceEndpoints",value:function(){var e,t,n,r,i,c,a,o,l,u;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function s(){var d;return regeneratorRuntime.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.next=2,this._oidcProviderMetaData();case 2:return d=s.sent,s.abrupt("return",{authorizationEndpoint:null!==(e=d.authorization_endpoint)&&void 0!==e?e:"",checkSessionIframe:null!==(t=d.check_session_iframe)&&void 0!==t?t:"",endSessionEndpoint:null!==(n=d.end_session_endpoint)&&void 0!==n?n:"",introspectionEndpoint:null!==(r=d.introspection_endpoint)&&void 0!==r?r:"",issuer:null!==(i=d.issuer)&&void 0!==i?i:"",jwksUri:null!==(c=d.jwks_uri)&&void 0!==c?c:"",registrationEndpoint:null!==(a=d.registration_endpoint)&&void 0!==a?a:"",revocationEndpoint:null!==(o=d.revocation_endpoint)&&void 0!==o?o:"",tokenEndpoint:null!==(l=d.token_endpoint)&&void 0!==l?l:"",userinfoEndpoint:null!==(u=d.userinfo_endpoint)&&void 0!==u?u:""});case 4:case"end":return s.stop()}}),s,this)})))}},{key:"getSignOutURL",value:function(e){var t,n,r;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._oidcProviderMetaData();case 2:if(i.t1=t=i.sent,i.t0=null===i.t1,i.t0){i.next=6;break}i.t0=void 0===t;case 6:if(!i.t0){i.next=10;break}i.t2=void 0,i.next=11;break;case 10:i.t2=t.end_session_endpoint;case 11:return c=i.t2,i.next=14,this._config();case 14:if(a=i.sent,c&&0!==c.trim().length){i.next=17;break}throw new $z("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(e);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((o=i.t5)&&0!==o.trim().length){i.next=31;break}throw new $z("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((l=null!==(r=null==a?void 0:a.signOutRedirectURL)&&void 0!==r?r:null==a?void 0:a.signInRedirectURL)&&0!==l.trim().length){i.next=34;break}throw new $z("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(o,"&post_logout_redirect_uri=").concat(l,"&state=sign_out_success"));case 35:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getSignOutURL(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t,this)})))}},{key:"clearUserSessionData",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationHelper.clearUserSessionData(e);case 2:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(e){var t;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getSessionData(e);case 2:if(n.t1=t=n.sent,n.t0=null===n.t1,n.t0){n.next=6;break}n.t0=void 0===t;case 6:if(!n.t0){n.next=10;break}n.t2=void 0,n.next=11;break;case 10:n.t2=t.access_token;case 11:return n.abrupt("return",n.t2);case 12:case"end":return n.stop()}}),n,this)})))}},{key:"isAuthenticated",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.t0=Boolean,t.next=3,this.getAccessToken(e);case 3:return t.t1=t.sent,t.abrupt("return",(0,t.t0)(t.t1));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._dataLayer.getTemporaryDataParameter(ej.extractPKCEKeyFromStateParam(e),t);case 2:return n.abrupt("return",n.sent);case 3:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._dataLayer.setTemporaryDataParameter(ej.extractPKCEKeyFromStateParam(t),e,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._dataLayer.setConfigData(e);case 2:return t.next=4,this.getOIDCProviderMetaData(!0);case 4:case"end":return t.stop()}}),t,this)})))}}]),e}(),aj=function(){function t(e,n){u(this,t),this._id=e,this._store=n}return d(t,[{key:"setDataInBulk",value:function(e,t){var n;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);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),a=Object.assign(Object.assign({},c),t),o=JSON.stringify(a),r.next=17,this._store.setData(e,o);case 17:case"end":return r.stop()}}),r,this)})))}},{key:"setValue",value:function(e,t,n){var r;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c,a,o,l;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._store.getData(e);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,a=c&&JSON.parse(c),o=Object.assign(Object.assign({},a),m({},t,n)),l=JSON.stringify(o),i.next=17,this._store.setData(e,l);case 17:case"end":return i.stop()}}),i,this)})))}},{key:"removeValue",value:function(e,t){var n;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(e);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(a=Object.assign({},c))[t],o=JSON.stringify(a),r.next=18,this._store.setData(e,o);case 18:case"end":return r.stop()}}),r,this)})))}},{key:"_resolveKey",value:function(e,t){return t?"".concat(e,"-").concat(this._id,"-").concat(t):"".concat(e,"-").concat(this._id)}},{key:"setConfigData",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.setDataInBulk(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"setOIDCProviderMetaData",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setTemporaryData",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.TemporaryData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"setSessionData",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:this.setDataInBulk(this._resolveKey(e.Stores.SessionData,n),t);case 1:case"end":return r.stop()}}),r,this)})))}},{key:"getConfigData",value:function(){var t;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,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 t;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.t0=JSON,n.next=3,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 3:if(n.t2=t=n.sent,n.t1=null!==n.t2,!n.t1){n.next=7;break}n.t1=void 0!==t;case 7:if(!n.t1){n.next=11;break}n.t3=t,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(t){var n;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.TemporaryData,t));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(t){var n;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.t0=JSON,r.next=3,this._store.getData(this._resolveKey(e.Stores.SessionData,t));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 Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.ConfigData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeOIDCProviderMetaData",value:function(){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._store.removeData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:case"end":return t.stop()}}),t,this)})))}},{key:"removeTemporaryData",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.TemporaryData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeSessionData",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.removeData(this._resolveKey(e.Stores.SessionData,t));case 2:case"end":return n.stop()}}),n,this)})))}},{key:"getConfigDataParameter",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.ConfigData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getOIDCProviderMetaDataParameter",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._store.getData(this._resolveKey(e.Stores.OIDCProviderMetaData));case 2:return r=n.sent,n.abrupt("return",r&&JSON.parse(r)[t]);case 4:case"end":return n.stop()}}),n,this)})))}},{key:"getTemporaryDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.TemporaryData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"getSessionDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._store.getData(this._resolveKey(e.Stores.SessionData,n));case 2:return i=r.sent,r.abrupt("return",i&&JSON.parse(i)[t]);case 4:case"end":return r.stop()}}),r,this)})))}},{key:"setConfigDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.ConfigData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setOIDCProviderMetaDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.setValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"setTemporaryDataParameter",value:function(t,n,r){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.TemporaryData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"setSessionDataParameter",value:function(t,n,r){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this.setValue(this._resolveKey(e.Stores.SessionData,r),t,n);case 2:case"end":return i.stop()}}),i,this)})))}},{key:"removeConfigDataParameter",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.ConfigData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeOIDCProviderMetaDataParameter",value:function(t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.removeValue(this._resolveKey(e.Stores.OIDCProviderMetaData),t);case 2:case"end":return n.stop()}}),n,this)})))}},{key:"removeTemporaryDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.TemporaryData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"removeSessionDataParameter",value:function(t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.removeValue(this._resolveKey(e.Stores.SessionData,n),t);case 2:case"end":return r.stop()}}),r,this)})))}}]),t}(),oj={clockTolerance:300,enablePKCE:!0,responseMode:e.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},lj=function(){function e(t,n){u(this,e),e._instanceID?e._instanceID+=1:e._instanceID=0,this._dataLayer=new aj("instance_".concat(e._instanceID),t),this._authenticationCore=new cj(this._dataLayer,n),e._authenticationCore=new cj(this._dataLayer,n)}return d(e,[{key:"initialize",value:function(e){var t,n,r;return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,this._dataLayer.setConfigData(Object.assign(Object.assign(Object.assign({},oj),e),{scope:[].concat(W(null!==(t=oj.scope)&&void 0!==t?t:[]),W(null!==(r=null===(n=e.scope)||void 0===n?void 0:n.filter((function(e){var t;return!(null===(t=null==oj?void 0:oj.scope)||void 0===t?void 0:t.includes(e))})))&&void 0!==r?r:[]))}));case 2:case"end":return i.stop()}}),i,this)})))}},{key:"getDataLayer",value:function(){return this._dataLayer}},{key:"getAuthorizationURL",value:function(e,t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i=this;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return null==(r=Object.assign({},e))||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,t),n.next=9;break;case 8:n.t0=this._authenticationCore.getOIDCProviderMetaData(null==e?void 0:e.forceInit).then((function(){return i._authenticationCore.getAuthorizationURL(r,t)}));case 9:return n.abrupt("return",n.t0);case 10:case"end":return n.stop()}}),n,this)})))}},{key:"requestAccessToken",value:function(e,t,n,r){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function i(){var c=this;return regeneratorRuntime.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(e,t,n,r),i.next=7;break;case 6:i.t0=this._authenticationCore.getOIDCProviderMetaData(!1).then((function(){return c._authenticationCore.requestAccessToken(e,t,n,r)}));case 7:return i.abrupt("return",i.t0);case 8:case"end":return i.stop()}}),i,this)})))}},{key:"signOut",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.signOut(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getSignOutURL",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getSignOutURL(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this._authenticationCore.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e,this)})))}},{key:"getDecodedIDToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getDecodedIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getIDToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getBasicUserInfo",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getBasicUserInfo(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"revokeAccessToken",value:function(e){return this._authenticationCore.revokeAccessToken(e)}},{key:"refreshAccessToken",value:function(e){return this._authenticationCore.refreshAccessToken(e)}},{key:"getAccessToken",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.getAccessToken(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"requestCustomGrant",value:function(e,t){return this._authenticationCore.requestCustomGrant(e,t)}},{key:"isAuthenticated",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",this._authenticationCore.isAuthenticated(e));case 1:case"end":return t.stop()}}),t,this)})))}},{key:"getPKCECode",value:function(e,t){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",this._authenticationCore.getPKCECode(e,t));case 1:case"end":return n.stop()}}),n,this)})))}},{key:"setPKCECode",value:function(e,t,n){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this._authenticationCore.setPKCECode(e,t,n);case 2:case"end":return r.stop()}}),r,this)})))}},{key:"updateConfig",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.updateConfig(e);case 2:case"end":return t.stop()}}),t,this)})))}}],[{key:"isSignOutSuccessful",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&!r}},{key:"didSignOutFail",value:function(e){var t=new URL(e),n=t.searchParams.get("state"),r=Boolean(t.searchParams.get("error"));return!!n&&"sign_out_success"===n&&r}},{key:"clearUserSessionData",value:function(e){return Pz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._authenticationCore.clearUserSessionData(e);case 2:case"end":return t.stop()}}),t,this)})))}}]),e}(),uj="sign-out",sj="get_auth_url",dj="check_session_signed_in",mj="check_session_signed_out",hj="set_session_state_from_iframe";e.Storage=void 0,(tj=e.Storage||(e.Storage={})).LocalStorage="localStorage",tj.SessionStorage="sessionStorage",tj.WebWorker="webWorker",tj.BrowserMemory="browserMemory",e.Hooks=void 0,(nj=e.Hooks||(e.Hooks={})).SignIn="sign-in",nj.SignOut="sign-out",nj.Initialize="initialize",nj.HttpRequestStart="http-request-start",nj.HttpRequestFinish="http-request-finish",nj.HttpRequestError="http-request-error",nj.HttpRequestSuccess="http-request-success",nj.RevokeAccessToken="revoke-access-token",nj.CustomGrant="custom-grant",nj.SignOutFailed="sign-out-failed";var Zj,bj,pj,yj,Xj,fj,Vj,Gj,Ij,Wj,gj,vj,Sj,Rj,Yj,Jj,xj,Kj="rpIFrame",Lj="promptNoneIFrame",Nj="Y2hlY2tTZXNzaW9u",Hj="sign-in-silently",kj="initialized-silent-sign-in",Cj="promptNoneRequestSent",Uj="error",Tj="error_description",wj="custom_grant_config",Fj="state",zj="Access token is invalid",jj=function(){function e(t){u(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer()}return d(e,[{key:"refreshAccessTokenAutomatically",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getSessionData();case 2:if(!(t=e.sent).refresh_token){e.next=9;break}return n=parseInt(t.expires_in),r=setTimeout((function(){return Mz(i,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._authenticationClient.refreshAccessToken();case 2:case"end":return e.stop()}}),e,this)})))}),1e3*(n<=10?n:n-10)),e.next=9,this._dataLayer.setTemporaryDataParameter(Bz,JSON.stringify(r));case 9:case"end":return e.stop()}}),e,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._dataLayer.getTemporaryDataParameter(Bz);case 2:if(!e.sent){e.next=9;break}return e.t0=JSON,e.next=6,this._dataLayer.getTemporaryDataParameter(Bz);case 6:e.t1=e.sent,t=e.t0.parse.call(e.t0,e.t1),clearTimeout(t);case 9:case"end":return e.stop()}}),e,this)})))}}]),e}(),Mj=function(){function e(){u(this,e)}return d(e,null,[{key:"removeAuthorizationCode",value:function(){var e=location.href;history.pushState({},document.title,e.replace(/\?code=.*$/,""))}},{key:"getPKCE",value:function(e){var t;return null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:""}},{key:"setPKCE",value:function(e,t){sessionStorage.setItem(e,t)}},{key:"setSignOutURL",value:function(e){sessionStorage.setItem(Az,e)}},{key:"getSignOutURL",value:function(){var e;return null!==(e=sessionStorage.getItem(Az))&&void 0!==e?e:""}},{key:"removePKCE",value:function(e){sessionStorage.removeItem(e)}},{key:"canContinueSignIn",value:function(t,n){return!(t&&!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()&&!n)}},{key:"isInitializedSilentSignIn",value:function(){return e.isSilentStatePresentInURL()}},{key:"wasSignInCalled",value:function(){return!(!e.hasErrorInURL()&&!e.hasAuthSearchParamsInURL()||this.isSilentStatePresentInURL())}},{key:"wasSilentSignInCalled",value:function(){var e=sessionStorage.getItem(kj),t=e?JSON.parse(e):null;return Boolean(t)}},{key:"isSignOutSuccessful",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!lj.isSignOutSuccessful(window.location.href)){e.next=6;break}return t=window.location.href.split("?")[0],history.pushState({},document.title,t),e.next=5,lj.clearUserSessionData();case 5:return e.abrupt("return",!0);case 6:return e.abrupt("return",!1);case 7:case"end":return e.stop()}}),e)})))}},{key:"didSignOutFail",value:function(){if(lj.didSignOutFail(window.location.href)){var e=new URL(window.location.href),t=e.searchParams.get(Uj),n=e.searchParams.get(Tj),r=window.location.href.split("?")[0];return history.pushState({},document.title,r),{description:null!=n?n:"",error:null!=t?t:""}}return!1}},{key:"isSilentStatePresentInURL",value:function(){var e,t=new URL(window.location.href).searchParams.get("state");return null!==(e=null==t?void 0:t.includes(Hj))&&void 0!==e&&e}},{key:"hasAuthSearchParamsInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.search,t=/[?&]code=[^&]+/;return t.test(e)}},{key:"hasErrorInURL",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.href,t=new URL(e);return!!t.searchParams.get(Uj)&&t.searchParams.get(Fj)!==_z}},{key:"canSendPromptNoneRequest",value:function(){var e=sessionStorage.getItem(Cj);return!(e?JSON.parse(e):null)}},{key:"setPromptNoneRequestSent",value:function(e){sessionStorage.setItem(Cj,JSON.stringify(e))}},{key:"waitTillPageRedirect",value:function(e){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=null!=e?e:3e3,t.next=3,new Promise((function(e){return setTimeout(e,1e3*n)}));case 3:case"end":return t.stop()}}),t)})))}}]),e}(),Pj=(vj=function(e,t,n,r,i,c,a){Zj=e,bj=t,pj=n,Xj=c,fj=i,gj=a,(yj=r)>-1&&Sj(),fj>-1&&(i=setInterval((function(){Jj()}),1e3*fj))},Sj=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i,c,a,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,pj();case 2:r=t.sent,Boolean(Zj)&&Boolean(r)&&(i="".concat(Zj," ").concat(r),c=document.getElementById(Kj),a=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.getElementById(n),null==(o=a.contentWindow)||o.postMessage(i,bj));case 4:case"end":return t.stop()}}),t)})))},bj&&Zj&&Xj){e.next=3;break}return e.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(Kj),(null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(n)).src=bj+"?client_id="+Zj+"&redirect_uri="+Xj,e.next=9,r();case 9:Gj=setInterval(r,1e3*yj),Yj();case 11:case"end":return e.stop()}}),e)})))},Rj=function(){clearInterval(Gj),clearInterval(void 0)},Yj=function(){null===window||void 0===window||window.addEventListener("message",(function(e){var t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if((r=bj)&&!((null==r?void 0:r.indexOf(e.origin))<0)&&(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.type)!==hj){n.next=3;break}return n.abrupt("return");case 3:if("unchanged"!==e.data){n.next=6;break}n.next=13;break;case 6:if("error"!==e.data){n.next=12;break}return n.next=9,Vj();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===e.data&&Jj();case 13:case"end":return n.stop()}}),n)})))}),!1)},Jj=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r=document.getElementById(Kj),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(Lj),!Mj.canSendPromptNoneRequest()){t.next=10;break}return Mj.setPromptNoneRequestSent(!0),c=function e(t){var n,r,i;(null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.type)===hj&&(Wj(null!==(i=null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.data)&&void 0!==i?i:""),null===window||void 0===window||window.removeEventListener("message",e))},Ij!==e.Storage.BrowserMemory&&Ij!==e.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),t.next=8,gj({prompt:"none",responseMode:"query",state:Nj});case 8:a=t.sent,i.src=a;case 10:case"end":return t.stop()}}),t)})))},xj=function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,s,d,m;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(c=new URL(window.location.href).searchParams.get(Fj),a=new URL(window.location.href).searchParams.get(Oz),o=window.parent.parent,null===c||!c.includes(Nj)&&!c.includes(Hj)){n.next=48;break}if(null===(l=new URL(window.location.href).searchParams.get("code"))||0===l.length){n.next=32;break}if(!c.includes(Hj)){n.next=15;break}return u={data:{code:l,sessionState:null!=a?a:"",state:c},type:dj},sessionStorage.setItem(kj,"false"),o.postMessage(u,o.origin),Mj.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,Mj.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(s=new URL(window.location.href).searchParams.get("session_state"),Ij!==e.Storage.LocalStorage&&Ij!==e.Storage.SessionStorage){n.next=23;break}if(n.t0=t,!n.t0){n.next=21;break}return n.next=21,t(s);case 21:n.next=25;break;case 23:d={data:null!=s?s:"",type:hj},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(d);case 25:return Mj.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,Mj.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(Hj)){n.next=40;break}return m={type:mj},window.parent.parent.postMessage(m,o.origin),Mj.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,Mj.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return Mj.setPromptNoneRequestSent(!1),n.next=43,Vj();case 43:return o.location.href=n.sent,window.location.href="about:blank",n.next=47,Mj.waitTillPageRedirect();case 47:return n.abrupt("return",!0);case 48:return n.abrupt("return",!1);case 49:case"end":return n.stop()}}),n)})))},function(e,t,n){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:(c=document.createElement("iframe")).setAttribute("id",Kj),c.style.display="none",a=!1,c.onload=function(){var e,t,n,r,i=null==(c=document.getElementById(Kj))?void 0:c.contentDocument,o=null==i?void 0:i.createElement("iframe");o&&(o.setAttribute("id","opIFrame"),o.style.display="none");var l=null==i?void 0:i.createElement("iframe");l&&(l.setAttribute("id",Lj),l.style.display="none"),o&&(null===(t=null===(e=null==c?void 0:c.contentDocument)||void 0===e?void 0:e.body)||void 0===t||t.appendChild(o)),l&&(null===(r=null===(n=null==c?void 0:c.contentDocument)||void 0===n?void 0:n.body)||void 0===r||r.appendChild(l)),a=!0},null===(i=null===document||void 0===document?void 0:document.body)||void 0===i||i.appendChild(c),Vj=e,Ij=t,Wj=n,o=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 10:if(!1!==a){r.next=15;break}return r.next=13,o();case 13:r.next=10;break;case 15:return r.abrupt("return",{initialize:vj,receivePromptNoneResponse:xj,reset:Rj});case 16:case"end":return r.stop()}}),r)})))}),Qj={exports:{}},Bj=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];return e.apply(t,n)}},Ej=Bj,Dj=Object.prototype.toString;function Oj(e){return Array.isArray(e)}function Aj(e){return void 0===e}function _j(e){return"[object ArrayBuffer]"===Dj.call(e)}function qj(e){return null!==e&&"object"===a(e)}function $j(e){if("[object Object]"!==Dj.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function eM(e){return"[object Function]"===Dj.call(e)}function tM(e,t){if(null!=e)if("object"!==a(e)&&(e=[e]),Oj(e))for(var n=0,r=e.length;n<r;n++)t.call(null,e[n],n,e);else for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(null,e[i],i,e)}var nM={isArray:Oj,isArrayBuffer:_j,isBuffer:function(e){return null!==e&&!Aj(e)&&null!==e.constructor&&!Aj(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"[object FormData]"===Dj.call(e)},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&_j(e.buffer)},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:qj,isPlainObject:$j,isUndefined:Aj,isDate:function(e){return"[object Date]"===Dj.call(e)},isFile:function(e){return"[object File]"===Dj.call(e)},isBlob:function(e){return"[object Blob]"===Dj.call(e)},isFunction:eM,isStream:function(e){return qj(e)&&eM(e.pipe)},isURLSearchParams:function(e){return"[object URLSearchParams]"===Dj.call(e)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:tM,merge:function e(){var t={};function n(n,r){$j(t[r])&&$j(n)?t[r]=e(t[r],n):$j(n)?t[r]=e({},n):Oj(n)?t[r]=n.slice():t[r]=n}for(var r=0,i=arguments.length;r<i;r++)tM(arguments[r],n);return t},extend:function(e,t,n){return tM(t,(function(t,r){e[r]=n&&"function"==typeof t?Ej(t,n):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},rM=nM;function iM(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var cM=function(e,t,n){if(!t)return e;var r;if(n)r=n(t);else if(rM.isURLSearchParams(t))r=t.toString();else{var i=[];rM.forEach(t,(function(e,t){null!=e&&(rM.isArray(e)?t+="[]":e=[e],rM.forEach(e,(function(e){rM.isDate(e)?e=e.toISOString():rM.isObject(e)&&(e=JSON.stringify(e)),i.push(iM(t)+"="+iM(e))})))})),r=i.join("&")}if(r){var c=e.indexOf("#");-1!==c&&(e=e.slice(0,c)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e},aM=nM;function oM(){this.handlers=[]}oM.prototype.use=function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1},oM.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},oM.prototype.forEach=function(e){aM.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var lM=oM,uM="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function sM(){throw new Error("setTimeout has not been defined")}function dM(){throw new Error("clearTimeout has not been defined")}var mM=sM,hM=dM;function ZM(e){if(mM===setTimeout)return setTimeout(e,0);if((mM===sM||!mM)&&setTimeout)return mM=setTimeout,setTimeout(e,0);try{return mM(e,0)}catch(t){try{return mM.call(null,e,0)}catch(t){return mM.call(this,e,0)}}}"function"==typeof uM.setTimeout&&(mM=setTimeout),"function"==typeof uM.clearTimeout&&(hM=clearTimeout);var bM,pM=[],yM=!1,XM=-1;function fM(){yM&&bM&&(yM=!1,bM.length?pM=bM.concat(pM):XM=-1,pM.length&&VM())}function VM(){if(!yM){var e=ZM(fM);yM=!0;for(var t=pM.length;t;){for(bM=pM,pM=[];++XM<t;)bM&&bM[XM].run();XM=-1,t=pM.length}bM=null,yM=!1,function(e){if(hM===clearTimeout)return clearTimeout(e);if((hM===dM||!hM)&&clearTimeout)return hM=clearTimeout,clearTimeout(e);try{hM(e)}catch(t){try{return hM.call(null,e)}catch(t){return hM.call(this,e)}}}(e)}}function GM(e,t){this.fun=e,this.array=t}GM.prototype.run=function(){this.fun.apply(null,this.array)};function IM(){}var WM=IM,gM=IM,vM=IM,SM=IM,RM=IM,YM=IM,JM=IM;var xM=uM.performance||{},KM=xM.now||xM.mozNow||xM.msNow||xM.oNow||xM.webkitNow||function(){return(new Date).getTime()};var LM=new Date;var NM={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];pM.push(new GM(e,t)),1!==pM.length||yM||ZM(VM)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:WM,addListener:gM,once:vM,off:SM,removeListener:RM,removeAllListeners:YM,emit:JM,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*KM.call(xM),n=Math.floor(t),r=Math.floor(t%1*1e9);return e&&(n-=e[0],(r-=e[1])<0&&(n--,r+=1e9)),[n,r]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-LM)/1e3}},HM=NM,kM=nM,CM=function(e,t,n,r,i){return e.config=t,n&&(e.code=n),e.request=r,e.response=i,e.isAxiosError=!0,e.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}},e},UM={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},TM=CM,wM=function(e,t,n,r,i){var c=new Error(e);return TM(c,t,n,r,i)},FM=wM,zM=nM,jM=zM.isStandardBrowserEnv()?{write:function(e,t,n,r,i,c){var a=[];a.push(e+"="+encodeURIComponent(t)),zM.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),zM.isString(r)&&a.push("path="+r),zM.isString(i)&&a.push("domain="+i),!0===c&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},MM=function(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)},PM=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},QM=nM,BM=["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"],EM=nM,DM=EM.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var r=e;return t&&(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 e=r(window.location.href),function(t){var n=EM.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0};function OM(e){this.message=e}OM.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},OM.prototype.__CANCEL__=!0;var AM=OM,_M=nM,qM=function(e,t,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(FM("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)},$M=jM,eP=cM,tP=function(e,t){return e&&!MM(t)?PM(e,t):t},nP=function(e){var t,n,r,i={};return e?(QM.forEach(e.split("\n"),(function(e){if(r=e.indexOf(":"),t=QM.trim(e.substr(0,r)).toLowerCase(),n=QM.trim(e.substr(r+1)),t){if(i[t]&&BM.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}})),i):i},rP=DM,iP=wM,cP=UM,aP=AM,oP=function(e){return new Promise((function(t,n){var r,i=e.data,c=e.headers,a=e.responseType;function o(){e.cancelToken&&e.cancelToken.unsubscribe(r),e.signal&&e.signal.removeEventListener("abort",r)}_M.isFormData(i)&&delete c["Content-Type"];var l=new XMLHttpRequest;if(e.auth){var u=e.auth.username||"",s=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";c.Authorization="Basic "+btoa(u+":"+s)}var d=tP(e.baseURL,e.url);function m(){if(l){var r="getAllResponseHeaders"in l?nP(l.getAllResponseHeaders()):null,i={data:a&&"text"!==a&&"json"!==a?l.response:l.responseText,status:l.status,statusText:l.statusText,headers:r,config:e,request:l};qM((function(e){t(e),o()}),(function(e){n(e),o()}),i),l=null}}if(l.open(e.method.toUpperCase(),eP(d,e.params,e.paramsSerializer),!0),l.timeout=e.timeout,"onloadend"in l?l.onloadend=m:l.onreadystatechange=function(){l&&4===l.readyState&&(0!==l.status||l.responseURL&&0===l.responseURL.indexOf("file:"))&&setTimeout(m)},l.onabort=function(){l&&(n(iP("Request aborted",e,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(iP("Network Error",e,null,l)),l=null},l.ontimeout=function(){var t=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",r=e.transitional||cP;e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),n(iP(t,e,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},_M.isStandardBrowserEnv()){var h=(e.withCredentials||rP(d))&&e.xsrfCookieName?$M.read(e.xsrfCookieName):void 0;h&&(c[e.xsrfHeaderName]=h)}"setRequestHeader"in l&&_M.forEach(c,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete c[t]:l.setRequestHeader(t,e)})),_M.isUndefined(e.withCredentials)||(l.withCredentials=!!e.withCredentials),a&&"json"!==a&&(l.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&l.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&l.upload&&l.upload.addEventListener("progress",e.onUploadProgress),(e.cancelToken||e.signal)&&(r=function(e){l&&(n(!e||e&&e.type?new aP("canceled"):e),l.abort(),l=null)},e.cancelToken&&e.cancelToken.subscribe(r),e.signal&&(e.signal.aborted?r():e.signal.addEventListener("abort",r))),i||(i=null),l.send(i)}))},lP=nM,uP=function(e,t){kM.forEach(e,(function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])}))},sP=CM,dP={"Content-Type":"application/x-www-form-urlencoded"};function mP(e,t){!lP.isUndefined(e)&&lP.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var hP,ZP={transitional:UM,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==HM&&"[object process]"===Object.prototype.toString.call(HM))&&(hP=oP),hP),transformRequest:[function(e,t){return uP(t,"Accept"),uP(t,"Content-Type"),lP.isFormData(e)||lP.isArrayBuffer(e)||lP.isBuffer(e)||lP.isStream(e)||lP.isFile(e)||lP.isBlob(e)?e:lP.isArrayBufferView(e)?e.buffer:lP.isURLSearchParams(e)?(mP(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):lP.isObject(e)||t&&"application/json"===t["Content-Type"]?(mP(t,"application/json"),function(e,t,n){if(lP.isString(e))try{return(t||JSON.parse)(e),lP.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||ZP.transitional,n=t&&t.silentJSONParsing,r=t&&t.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&lP.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(i){if("SyntaxError"===e.name)throw sP(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};lP.forEach(["delete","get","head"],(function(e){ZP.headers[e]={}})),lP.forEach(["post","put","patch"],(function(e){ZP.headers[e]=lP.merge(dP)}));var bP=ZP,pP=nM,yP=bP,XP=function(e){return!(!e||!e.__CANCEL__)},fP=nM,VP=function(e,t,n){var r=this||yP;return pP.forEach(n,(function(n){e=n.call(r,e,t)})),e},GP=XP,IP=bP,WP=AM;function gP(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new WP("canceled")}var vP=nM,SP=function(e,t){t=t||{};var n={};function r(e,t){return vP.isPlainObject(e)&&vP.isPlainObject(t)?vP.merge(e,t):vP.isPlainObject(t)?vP.merge({},t):vP.isArray(t)?t.slice():t}function i(n){return vP.isUndefined(t[n])?vP.isUndefined(e[n])?void 0:r(void 0,e[n]):r(e[n],t[n])}function c(e){if(!vP.isUndefined(t[e]))return r(void 0,t[e])}function a(n){return vP.isUndefined(t[n])?vP.isUndefined(e[n])?void 0:r(void 0,e[n]):r(void 0,t[n])}function o(n){return n in t?r(e[n],t[n]):n in e?r(void 0,e[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 vP.forEach(Object.keys(e).concat(Object.keys(t)),(function(e){var t=l[e]||i,r=t(e);vP.isUndefined(r)&&t!==o||(n[e]=r)})),n},RP="0.26.1",YP=RP,JP={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){JP[e]=function(n){return a(n)===e||"a"+(t<1?"n ":" ")+e}}));var xP={};JP.transitional=function(e,t,n){function r(e,t){return"[Axios v"+YP+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,i,c){if(!1===e)throw new Error(r(i," has been removed"+(t?" in "+t:"")));return t&&!xP[i]&&(xP[i]=!0,console.warn(r(i," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,i,c)}};var KP={assertOptions:function(e,t,n){if("object"!==a(e))throw new TypeError("options must be an object");for(var r=Object.keys(e),i=r.length;i-- >0;){var c=r[i],o=t[c];if(o){var l=e[c],u=void 0===l||o(l,c,e);if(!0!==u)throw new TypeError("option "+c+" must be "+u)}else if(!0!==n)throw Error("Unknown option "+c)}},validators:JP},LP=nM,NP=cM,HP=lM,kP=function(e){return gP(e),e.headers=e.headers||{},e.data=VP.call(e,e.data,e.headers,e.transformRequest),e.headers=fP.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),fP.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||IP.adapter)(e).then((function(t){return gP(e),t.data=VP.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return GP(t)||(gP(e),t&&t.response&&(t.response.data=VP.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},CP=SP,UP=KP,TP=UP.validators;function wP(e){this.defaults=e,this.interceptors={request:new HP,response:new HP}}wP.prototype.request=function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},(t=CP(this.defaults,t)).method?t.method=t.method.toLowerCase():this.defaults.method?t.method=this.defaults.method.toLowerCase():t.method="get";var n=t.transitional;void 0!==n&&UP.assertOptions(n,{silentJSONParsing:TP.transitional(TP.boolean),forcedJSONParsing:TP.transitional(TP.boolean),clarifyTimeoutError:TP.transitional(TP.boolean)},!1);var r=[],i=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(i=i&&e.synchronous,r.unshift(e.fulfilled,e.rejected))}));var c,a=[];if(this.interceptors.response.forEach((function(e){a.push(e.fulfilled,e.rejected)})),!i){var o=[kP,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(a),c=Promise.resolve(t);o.length;)c=c.then(o.shift(),o.shift());return c}for(var l=t;r.length;){var u=r.shift(),s=r.shift();try{l=u(l)}catch(e){s(e);break}}try{c=kP(l)}catch(e){return Promise.reject(e)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},wP.prototype.getUri=function(e){return e=CP(this.defaults,e),NP(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},LP.forEach(["delete","get","head","options"],(function(e){wP.prototype[e]=function(t,n){return this.request(CP(n||{},{method:e,url:t,data:(n||{}).data}))}})),LP.forEach(["post","put","patch"],(function(e){wP.prototype[e]=function(t,n,r){return this.request(CP(r||{},{method:e,url:t,data:n}))}}));var FP=wP,zP=AM;function jP(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;this.promise.then((function(e){if(n._listeners){var t,r=n._listeners.length;for(t=0;t<r;t++)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e){n.reason||(n.reason=new zP(e),t(n.reason))}))}jP.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},jP.prototype.subscribe=function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]},jP.prototype.unsubscribe=function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}},jP.source=function(){var e,t=new jP((function(t){e=t}));return{token:t,cancel:e}};var MP=jP,PP=nM,QP=nM,BP=Bj,EP=FP,DP=SP;var OP=function e(t){var n=new EP(t),r=BP(EP.prototype.request,n);return QP.extend(r,EP.prototype,n),QP.extend(r,n),r.create=function(n){return e(DP(t,n))},r}(bP);OP.Axios=EP,OP.Cancel=AM,OP.CancelToken=MP,OP.isCancel=XP,OP.VERSION=RP,OP.all=function(e){return Promise.all(e)},OP.spread=function(e){return function(t){return e.apply(null,t)}},OP.isAxiosError=function(e){return PP.isObject(e)&&!0===e.isAxiosError},Qj.exports=OP,Qj.exports.default=OP;var AP,_P=Qj.exports;var qP=AP=function(){function e(){u(this,e),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 d(e,[{key:"requestHandler",value:function(e){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.attachToken(e);case 2:return(null==e?void 0:e.shouldEncodeToFormData)&&(n=null==e?void 0:e.data,r=new FormData,Object.keys(n).forEach((function(e){r.append(e,n[e])})),e.data=r),AP.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(e),t.abrupt("return",e);case 5:case"end":return t.stop()}}),t,this)})))}},{key:"errorHandler",value:function(e){throw AP.isHandlerEnabled&&(this.requestErrorCallback&&"function"==typeof this.requestErrorCallback&&this.requestErrorCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"successHandler",value:function(e){return AP.isHandlerEnabled&&(this.requestSuccessCallback&&"function"==typeof this.requestSuccessCallback&&this.requestSuccessCallback(e),this.requestFinishCallback&&"function"==typeof this.requestFinishCallback&&this.requestFinishCallback()),e}},{key:"init",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=arguments.length>1?arguments[1]:void 0;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:AP.isHandlerEnabled=e,this.attachToken=t;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){AP.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){AP.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:AP.DEFAULT_HANDLER_DISABLE_TIMEOUT;AP.isHandlerEnabled=!1,setTimeout((function(){AP.isHandlerEnabled=!0}),e)}},{key:"setHttpRequestStartCallback",value:function(e){this.requestStartCallback=e}},{key:"setHttpRequestSuccessCallback",value:function(e){this.requestSuccessCallback=e}},{key:"setHttpRequestErrorCallback",value:function(e){this.requestErrorCallback=e}},{key:"setHttpRequestFinishCallback",value:function(e){this.requestFinishCallback=e}}],[{key:"getInstance",value:function(){var e=this;return this.axiosInstance||(this.axiosInstance=_P.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new AP),this.axiosInstance.interceptors.request.use((function(t){return Mz(e,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.clientInstance.requestHandler(t);case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)})))})),this.axiosInstance.interceptors.response.use((function(t){return e.clientInstance.successHandler(t)}),(function(t){return e.clientInstance.errorHandler(t)})),this.axiosInstance.all=_P.all,this.axiosInstance.spread=_P.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}}]),e}();qP.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,qP=AP=function(e,t,n,r){var i,c=arguments.length,o=c<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":a(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(o=(c<3?i(o):c>3?i(t,n,o):i(t,n))||o);return c>3&&o&&Object.defineProperty(t,n,o),o}([function(e){}],qP);var $P=function(){function e(){u(this,e)}return d(e,[{key:"setData",value:function(e,t){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:localStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=localStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:localStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),eQ=function(){function e(){u(this,e),this._data=new Map}return d(e,[{key:"setData",value:function(e,t){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:this._data.set(e,t);case 1:case"end":return n.stop()}}),n,this)})))}},{key:"getData",value:function(e){var t,n;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.abrupt("return",null!==(n=null===(t=this._data)||void 0===t?void 0:t.get(e))&&void 0!==n?n:"{}");case 1:case"end":return r.stop()}}),r,this)})))}},{key:"removeData",value:function(e){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:this._data.delete(e);case 1:case"end":return t.stop()}}),t,this)})))}}]),e}(),tQ=function(){function e(){u(this,e)}return d(e,[{key:"setData",value:function(e,t){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:sessionStorage.setItem(e,t);case 1:case"end":return n.stop()}}),n)})))}},{key:"getData",value:function(e){var t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",null!==(t=sessionStorage.getItem(e))&&void 0!==t?t:"{}");case 1:case"end":return n.stop()}}),n)})))}},{key:"removeData",value:function(e){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:sessionStorage.removeItem(e);case 1:case"end":return t.stop()}}),t)})))}}]),e}(),nQ=[],rQ=[],iQ="undefined"!=typeof Uint8Array?Uint8Array:Array,cQ=!1;function aQ(){cQ=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)nQ[t]=e[t],rQ[e.charCodeAt(t)]=t;rQ["-".charCodeAt(0)]=62,rQ["_".charCodeAt(0)]=63}function oQ(e,t,n){for(var r,i,c=[],a=t;a<n;a+=3)r=(e[a]<<16)+(e[a+1]<<8)+e[a+2],c.push(nQ[(i=r)>>18&63]+nQ[i>>12&63]+nQ[i>>6&63]+nQ[63&i]);return c.join("")}function lQ(e){var t;cQ||aQ();for(var n=e.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(oQ(e,o,o+a>l?l:o+a));return 1===r?(t=e[n-1],i+=nQ[t>>2],i+=nQ[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=nQ[t>>10],i+=nQ[t>>4&63],i+=nQ[t<<2&63],i+="="),c.push(i),c.join("")}function uQ(e,t,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,m=n?-1:1,h=e[t+d];for(d+=m,c=h&(1<<-s)-1,h>>=-s,s+=o;s>0;c=256*c+e[t+d],d+=m,s-=8);for(a=c&(1<<-s)-1,c>>=-s,s+=r;s>0;a=256*a+e[t+d],d+=m,s-=8);if(0===c)c=1-u;else{if(c===l)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),c-=u}return(h?-1:1)*a*Math.pow(2,c-r)}function sQ(e,t,n,r,i,c){var a,o,l,u=8*c-i-1,s=(1<<u)-1,d=s>>1,m=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:c-1,Z=r?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,a=s):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+d>=1?m/l:m*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=s?(o=0,a=s):a+d>=1?(o=(t*l-1)*Math.pow(2,i),a+=d):(o=t*Math.pow(2,d-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&o,h+=Z,o/=256,i-=8);for(a=a<<i|o,u+=i;u>0;e[n+h]=255&a,h+=Z,a/=256,u-=8);e[n+h-Z]|=128*b}var dQ={}.toString,mQ=Array.isArray||function(e){return"[object Array]"==dQ.call(e)};pQ.TYPED_ARRAY_SUPPORT=void 0===uM.TYPED_ARRAY_SUPPORT||uM.TYPED_ARRAY_SUPPORT;var hQ=ZQ();function ZQ(){return pQ.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function bQ(e,t){if(ZQ()<t)throw new RangeError("Invalid typed array length");return pQ.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=pQ.prototype:(null===e&&(e=new pQ(t)),e.length=t),e}function pQ(e,t,n){if(!(pQ.TYPED_ARRAY_SUPPORT||this instanceof pQ))return new pQ(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return fQ(this,e)}return yQ(this,e,t,n)}function yQ(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);pQ.TYPED_ARRAY_SUPPORT?(e=t).__proto__=pQ.prototype:e=VQ(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!pQ.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|WQ(t,n),i=(e=bQ(e,r)).write(t,n);i!==r&&(e=e.slice(0,i));return e}(e,t,n):function(e,t){if(IQ(t)){var n=0|GQ(t.length);return 0===(e=bQ(e,n)).length||t.copy(e,0,0,n),e}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?bQ(e,0):VQ(e,t);if("Buffer"===t.type&&mQ(t.data))return VQ(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function XQ(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function fQ(e,t){if(XQ(t),e=bQ(e,t<0?0:0|GQ(t)),!pQ.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function VQ(e,t){var n=t.length<0?0:0|GQ(t.length);e=bQ(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function GQ(e){if(e>=ZQ())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ZQ().toString(16)+" bytes");return 0|e}function IQ(e){return!(null==e||!e._isBuffer)}function WQ(e,t){if(IQ(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return AQ(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return _Q(e).length;default:if(r)return AQ(e).length;t=(""+t).toLowerCase(),r=!0}}function gQ(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return wQ(this,t,n);case"utf8":case"utf-8":return kQ(this,t,n);case"ascii":return UQ(this,t,n);case"latin1":case"binary":return TQ(this,t,n);case"base64":return HQ(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return FQ(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function vQ(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function SQ(e,t,n,r,i){if(0===e.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:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=pQ.from(t,r)),IQ(t))return 0===t.length?-1:RQ(e,t,n,r,i);if("number"==typeof t)return t&=255,pQ.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):RQ(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function RQ(e,t,n,r,i){var c,a=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,o/=2,l/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){var s=-1;for(c=n;c<o;c++)if(u(e,c)===u(t,-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,m=0;m<l;m++)if(u(e,c+m)!==u(t,m)){d=!1;break}if(d)return c}return-1}function YQ(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r))>i&&(r=i):r=i;var c=t.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(t.substr(2*a,2),16);if(isNaN(o))return a;e[n+a]=o}return a}function JQ(e,t,n,r){return qQ(AQ(t,e.length-n),e,n,r)}function xQ(e,t,n,r){return qQ(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function KQ(e,t,n,r){return xQ(e,t,n,r)}function LQ(e,t,n,r){return qQ(_Q(t),e,n,r)}function NQ(e,t,n,r){return qQ(function(e,t){for(var n,r,i,c=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(n=e.charCodeAt(a))>>8,i=n%256,c.push(i),c.push(r);return c}(t,e.length-n),e,n,r)}function HQ(e,t,n){return 0===t&&n===e.length?lQ(e):lQ(e.slice(t,n))}function kQ(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i<n;){var c,a,o,l,u=e[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=e[i+1]))&&(l=(31&u)<<6|63&c)>127&&(s=l);break;case 3:c=e[i+1],a=e[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=e[i+1],a=e[i+2],o=e[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(e){var t=e.length;if(t<=CQ)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=CQ));return n}(r)}pQ.poolSize=8192,pQ._augment=function(e){return e.__proto__=pQ.prototype,e},pQ.from=function(e,t,n){return yQ(null,e,t,n)},pQ.TYPED_ARRAY_SUPPORT&&(pQ.prototype.__proto__=Uint8Array.prototype,pQ.__proto__=Uint8Array),pQ.alloc=function(e,t,n){return function(e,t,n,r){return XQ(t),t<=0?bQ(e,t):void 0!==n?"string"==typeof r?bQ(e,t).fill(n,r):bQ(e,t).fill(n):bQ(e,t)}(null,e,t,n)},pQ.allocUnsafe=function(e){return fQ(null,e)},pQ.allocUnsafeSlow=function(e){return fQ(null,e)},pQ.isBuffer=$Q,pQ.compare=function(e,t){if(!IQ(e)||!IQ(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,c=Math.min(n,r);i<c;++i)if(e[i]!==t[i]){n=e[i],r=t[i];break}return n<r?-1:r<n?1:0},pQ.isEncoding=function(e){switch(String(e).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}},pQ.concat=function(e,t){if(!mQ(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return pQ.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=pQ.allocUnsafe(t),i=0;for(n=0;n<e.length;++n){var c=e[n];if(!IQ(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},pQ.byteLength=WQ,pQ.prototype._isBuffer=!0,pQ.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)vQ(this,t,t+1);return this},pQ.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)vQ(this,t,t+3),vQ(this,t+1,t+2);return this},pQ.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)vQ(this,t,t+7),vQ(this,t+1,t+6),vQ(this,t+2,t+5),vQ(this,t+3,t+4);return this},pQ.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?kQ(this,0,e):gQ.apply(this,arguments)},pQ.prototype.equals=function(e){if(!IQ(e))throw new TypeError("Argument must be a Buffer");return this===e||0===pQ.compare(this,e)},pQ.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},pQ.prototype.compare=function(e,t,n,r,i){if(!IQ(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var c=(i>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),o=Math.min(c,a),l=this.slice(r,i),u=e.slice(t,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},pQ.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},pQ.prototype.indexOf=function(e,t,n){return SQ(this,e,t,n,!0)},pQ.prototype.lastIndexOf=function(e,t,n){return SQ(this,e,t,n,!1)},pQ.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var c=!1;;)switch(r){case"hex":return YQ(this,e,t,n);case"utf8":case"utf-8":return JQ(this,e,t,n);case"ascii":return xQ(this,e,t,n);case"latin1":case"binary":return KQ(this,e,t,n);case"base64":return LQ(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return NQ(this,e,t,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},pQ.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var CQ=4096;function UQ(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(127&e[i]);return r}function TQ(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;i<n;++i)r+=String.fromCharCode(e[i]);return r}function wQ(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var i="",c=t;c<n;++c)i+=OQ(e[c]);return i}function FQ(e,t,n){for(var r=e.slice(t,n),i="",c=0;c<r.length;c+=2)i+=String.fromCharCode(r[c]+256*r[c+1]);return i}function zQ(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function jQ(e,t,n,r,i,c){if(!IQ(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<c)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function MQ(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,c=Math.min(e.length-n,2);i<c;++i)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function PQ(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,c=Math.min(e.length-n,4);i<c;++i)e[n+i]=t>>>8*(r?i:3-i)&255}function QQ(e,t,n,r,i,c){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function BQ(e,t,n,r,i){return i||QQ(e,0,n,4),sQ(e,t,n,r,23,4),n+4}function EQ(e,t,n,r,i){return i||QQ(e,0,n,8),sQ(e,t,n,r,52,8),n+8}pQ.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),pQ.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=pQ.prototype;else{var i=t-e;n=new pQ(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+e]}return n},pQ.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||zQ(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r},pQ.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||zQ(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},pQ.prototype.readUInt8=function(e,t){return t||zQ(e,1,this.length),this[e]},pQ.prototype.readUInt16LE=function(e,t){return t||zQ(e,2,this.length),this[e]|this[e+1]<<8},pQ.prototype.readUInt16BE=function(e,t){return t||zQ(e,2,this.length),this[e]<<8|this[e+1]},pQ.prototype.readUInt32LE=function(e,t){return t||zQ(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},pQ.prototype.readUInt32BE=function(e,t){return t||zQ(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},pQ.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||zQ(e,t,this.length);for(var r=this[e],i=1,c=0;++c<t&&(i*=256);)r+=this[e+c]*i;return r>=(i*=128)&&(r-=Math.pow(2,8*t)),r},pQ.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||zQ(e,t,this.length);for(var r=t,i=1,c=this[e+--r];r>0&&(i*=256);)c+=this[e+--r]*i;return c>=(i*=128)&&(c-=Math.pow(2,8*t)),c},pQ.prototype.readInt8=function(e,t){return t||zQ(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},pQ.prototype.readInt16LE=function(e,t){t||zQ(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},pQ.prototype.readInt16BE=function(e,t){t||zQ(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},pQ.prototype.readInt32LE=function(e,t){return t||zQ(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},pQ.prototype.readInt32BE=function(e,t){return t||zQ(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},pQ.prototype.readFloatLE=function(e,t){return t||zQ(e,4,this.length),uQ(this,e,!0,23,4)},pQ.prototype.readFloatBE=function(e,t){return t||zQ(e,4,this.length),uQ(this,e,!1,23,4)},pQ.prototype.readDoubleLE=function(e,t){return t||zQ(e,8,this.length),uQ(this,e,!0,52,8)},pQ.prototype.readDoubleBE=function(e,t){return t||zQ(e,8,this.length),uQ(this,e,!1,52,8)},pQ.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||jQ(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,c=0;for(this[t]=255&e;++c<n&&(i*=256);)this[t+c]=e/i&255;return t+n},pQ.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||jQ(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,c=1;for(this[t+i]=255&e;--i>=0&&(c*=256);)this[t+i]=e/c&255;return t+n},pQ.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,1,255,0),pQ.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},pQ.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,2,65535,0),pQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):MQ(this,e,t,!0),t+2},pQ.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,2,65535,0),pQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):MQ(this,e,t,!1),t+2},pQ.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,4,4294967295,0),pQ.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):PQ(this,e,t,!0),t+4},pQ.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,4,4294967295,0),pQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):PQ(this,e,t,!1),t+4},pQ.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);jQ(this,e,t,n,i-1,-i)}var c=0,a=1,o=0;for(this[t]=255&e;++c<n&&(a*=256);)e<0&&0===o&&0!==this[t+c-1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},pQ.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);jQ(this,e,t,n,i-1,-i)}var c=n-1,a=1,o=0;for(this[t+c]=255&e;--c>=0&&(a*=256);)e<0&&0===o&&0!==this[t+c+1]&&(o=1),this[t+c]=(e/a>>0)-o&255;return t+n},pQ.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,1,127,-128),pQ.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},pQ.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,2,32767,-32768),pQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):MQ(this,e,t,!0),t+2},pQ.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,2,32767,-32768),pQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):MQ(this,e,t,!1),t+2},pQ.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,4,2147483647,-2147483648),pQ.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):PQ(this,e,t,!0),t+4},pQ.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||jQ(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),pQ.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):PQ(this,e,t,!1),t+4},pQ.prototype.writeFloatLE=function(e,t,n){return BQ(this,e,t,!0,n)},pQ.prototype.writeFloatBE=function(e,t,n){return BQ(this,e,t,!1,n)},pQ.prototype.writeDoubleLE=function(e,t,n){return EQ(this,e,t,!0,n)},pQ.prototype.writeDoubleBE=function(e,t,n){return EQ(this,e,t,!1,n)},pQ.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<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),e.length-t<r-n&&(r=e.length-t+n);var i,c=r-n;if(this===e&&n<t&&t<r)for(i=c-1;i>=0;--i)e[i+t]=this[i+n];else if(c<1e3||!pQ.TYPED_ARRAY_SUPPORT)for(i=0;i<c;++i)e[i+t]=this[i+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+c),t);return c},pQ.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!pQ.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var c;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(c=t;c<n;++c)this[c]=e;else{var a=IQ(e)?e:AQ(new pQ(e,r).toString()),o=a.length;for(c=0;c<n-t;++c)this[c+t]=a[c%o]}return this};var DQ=/[^+\/0-9A-Za-z-_]/g;function OQ(e){return e<16?"0"+e.toString(16):e.toString(16)}function AQ(e,t){var n;t=t||1/0;for(var r=e.length,i=null,c=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&c.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&c.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&c.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&c.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;c.push(n)}else if(n<2048){if((t-=2)<0)break;c.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=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((t-=4)<0)break;c.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return c}function _Q(e){return function(e){var t,n,r,i,c,a;cQ||aQ();var o=e.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");c="="===e[o-2]?2:"="===e[o-1]?1:0,a=new iQ(3*o/4-c),r=c>0?o-4:o;var l=0;for(t=0,n=0;t<r;t+=4,n+=3)i=rQ[e.charCodeAt(t)]<<18|rQ[e.charCodeAt(t+1)]<<12|rQ[e.charCodeAt(t+2)]<<6|rQ[e.charCodeAt(t+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=rQ[e.charCodeAt(t)]<<2|rQ[e.charCodeAt(t+1)]>>4,a[l++]=255&i):1===c&&(i=rQ[e.charCodeAt(t)]<<10|rQ[e.charCodeAt(t+1)]<<4|rQ[e.charCodeAt(t+2)]>>2,a[l++]=i>>8&255,a[l++]=255&i),a}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(DQ,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function qQ(e,t,n,r){for(var i=0;i<r&&!(i+n>=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function $Q(e){return null!=e&&(!!e._isBuffer||eB(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&eB(e.slice(0,0))}(e))}function eB(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var tB=Object.freeze({__proto__:null,Buffer:pQ,INSPECT_MAX_BYTES:50,SlowBuffer:function(e){return+e!=e&&(e=0),pQ.alloc(+e)},isBuffer:$Q,kMaxLength:hQ}),nB={exports:{}},rB={},iB={};Object.defineProperty(iB,"__esModule",{value:!0}),iB.default=function(e){var t=e.length,n=t%4;if(!n)return e;var r=t,i=4-n,c=t+i,a=pQ.alloc(c);for(a.write(e);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(rB,"__esModule",{value:!0});var cB=iB;function aB(e,t){return void 0===t&&(t="utf8"),pQ.isBuffer(e)?lB(e.toString("base64")):lB(pQ.from(e,t).toString("base64"))}function oB(e){return e=e.toString(),cB.default(e).replace(/\-/g,"+").replace(/_/g,"/")}function lB(e){return e.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var uB,sB=aB;sB.encode=aB,sB.decode=function(e,t){return void 0===t&&(t="utf8"),pQ.from(oB(e),"base64").toString(t)},sB.toBase64=oB,sB.fromBase64=lB,sB.toBuffer=function(e){return pQ.from(oB(e),"base64")},rB.default=sB,(uB=nB).exports=rB.default,uB.exports.default=uB.exports;var dB=nB.exports,mB={exports:{}};!function(e){!function(t,n){var r={};!function(e){e.__esModule=!0,e.digestLength=32,e.blockSize=64;var t=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(e,n,r,i,c){for(var a,o,l,u,s,d,m,h,Z,b,p,y,X;c>=64;){for(a=n[0],o=n[1],l=n[2],u=n[3],s=n[4],d=n[5],m=n[6],h=n[7],b=0;b<16;b++)p=i+4*b,e[b]=(255&r[p])<<24|(255&r[p+1])<<16|(255&r[p+2])<<8|255&r[p+3];for(b=16;b<64;b++)y=((Z=e[b-2])>>>17|Z<<15)^(Z>>>19|Z<<13)^Z>>>10,X=((Z=e[b-15])>>>7|Z<<25)^(Z>>>18|Z<<14)^Z>>>3,e[b]=(y+e[b-7]|0)+(X+e[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&m)|0)+(h+(t[b]+e[b]|0)|0)|0,X=((a>>>2|a<<30)^(a>>>13|a<<19)^(a>>>22|a<<10))+(a&o^a&l^o&l)|0,h=m,m=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]+=m,n[7]+=h,i+=64,c-=64}return i}var r=function(){function t(){this.digestLength=e.digestLength,this.blockSize=e.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 t.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},t.prototype.clean=function(){for(var e=0;e<this.buffer.length;e++)this.buffer[e]=0;for(e=0;e<this.temp.length;e++)this.temp[e]=0;this.reset()},t.prototype.update=function(e,t){if(void 0===t&&(t=e.length),this.finished)throw new Error("SHA256: can't update because hash was finished.");var r=0;if(this.bytesHashed+=t,this.bufferLength>0){for(;this.bufferLength<64&&t>0;)this.buffer[this.bufferLength++]=e[r++],t--;64===this.bufferLength&&(n(this.temp,this.state,this.buffer,0,64),this.bufferLength=0)}for(t>=64&&(r=n(this.temp,this.state,e,r,t),t%=64);t>0;)this.buffer[this.bufferLength++]=e[r++],t--;return this},t.prototype.finish=function(e){if(!this.finished){var t=this.bytesHashed,r=this.bufferLength,i=t/536870912|0,c=t<<3,a=t%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++)e[4*o+0]=this.state[o]>>>24&255,e[4*o+1]=this.state[o]>>>16&255,e[4*o+2]=this.state[o]>>>8&255,e[4*o+3]=this.state[o]>>>0&255;return this},t.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},t.prototype._saveState=function(e){for(var t=0;t<this.state.length;t++)e[t]=this.state[t]},t.prototype._restoreState=function(e,t){for(var n=0;n<this.state.length;n++)this.state[n]=e[n];this.bytesHashed=t,this.finished=!1,this.bufferLength=0},t}();e.Hash=r;var i=function(){function e(e){this.inner=new r,this.outer=new r,this.blockSize=this.inner.blockSize,this.digestLength=this.inner.digestLength;var t=new Uint8Array(this.blockSize);if(e.length>this.blockSize)(new r).update(e).finish(t).clean();else for(var n=0;n<e.length;n++)t[n]=e[n];for(n=0;n<t.length;n++)t[n]^=54;this.inner.update(t);for(n=0;n<t.length;n++)t[n]^=106;this.outer.update(t),this.istate=new Uint32Array(8),this.ostate=new Uint32Array(8),this.inner._saveState(this.istate),this.outer._saveState(this.ostate);for(n=0;n<t.length;n++)t[n]=0}return e.prototype.reset=function(){return this.inner._restoreState(this.istate,this.inner.blockSize),this.outer._restoreState(this.ostate,this.outer.blockSize),this},e.prototype.clean=function(){for(var e=0;e<this.istate.length;e++)this.ostate[e]=this.istate[e]=0;this.inner.clean(),this.outer.clean()},e.prototype.update=function(e){return this.inner.update(e),this},e.prototype.finish=function(e){return this.outer.finished?this.outer.finish(e):(this.inner.finish(e),this.outer.update(e,this.digestLength).finish(e)),this},e.prototype.digest=function(){var e=new Uint8Array(this.digestLength);return this.finish(e),e},e}();function c(e){var t=(new r).update(e),n=t.digest();return t.clean(),n}function a(e,t){var n=new i(e).update(t),r=n.digest();return n.clean(),r}function o(e,t,n,r){var i=r[0];if(0===i)throw new Error("hkdf: cannot expand more");t.reset(),i>1&&t.update(e),n&&t.update(n),t.update(r),t.finish(e),r[0]++}e.HMAC=i,e.hash=c,e.default=c,e.hmac=a;var l=new Uint8Array(e.digestLength);function u(e,t,n,r){void 0===t&&(t=l),void 0===r&&(r=32);for(var c=new Uint8Array([1]),u=a(t,e),s=new i(u),d=new Uint8Array(s.digestLength),m=d.length,h=new Uint8Array(r),Z=0;Z<r;Z++)m===d.length&&(o(d,s,n,c),m=0),h[Z]=d[m++];return s.clean(),d.fill(0),c.fill(0),h}function s(e,t,n,r){for(var c=new i(e),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 m=d+1;o[0]=m>>>24&255,o[1]=m>>>16&255,o[2]=m>>>8&255,o[3]=m>>>0&255,c.reset(),c.update(t),c.update(o),c.finish(u);for(var h=0;h<a;h++)l[h]=u[h];for(h=2;h<=n;h++){c.reset(),c.update(u).finish(u);for(var Z=0;Z<a;Z++)l[Z]^=u[Z]}for(h=0;h<a&&d*a+h<r;h++)s[d*a+h]=l[h]}for(d=0;d<a;d++)l[d]=u[d]=0;for(d=0;d<4;d++)o[d]=0;return c.clean(),s}e.hkdf=u,e.pbkdf2=s}(r);var i=r.default;for(var c in r)i[c]=r[c];e.exports=i}()}(mB);var hB=n(mB.exports),ZB=crypto,bB=function(e){return e instanceof CryptoKey},pB=new TextEncoder,yB=new TextDecoder;function XB(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=t.reduce((function(e,t){return e+t.length}),0),i=new Uint8Array(r),c=0;return t.forEach((function(e){i.set(e,c),c+=e.length})),i}var fB=function(e){var t=e;t instanceof Uint8Array&&(t=yB.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/").replace(/\s/g,"");try{return function(e){for(var t=atob(e),n=new Uint8Array(t.length),r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}(t)}catch(e){throw new TypeError("The input to be decoded is not correctly encoded.")}},VB=function(e){h(n,e);var t=G(n);function n(e){var r,i;return u(this,n),(r=t.call(this,e)).code="ERR_JOSE_GENERIC",r.name=r.constructor.name,null===(i=Error.captureStackTrace)||void 0===i||i.call(Error,f(r),r.constructor),r}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_GENERIC"}}]),n}(X(Error)),GB=function(e){h(n,e);var t=G(n);function n(e){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 u(this,n),(r=t.call(this,e)).code="ERR_JWT_CLAIM_VALIDATION_FAILED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_CLAIM_VALIDATION_FAILED"}}]),n}(VB),IB=function(e){h(n,e);var t=G(n);function n(e){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 u(this,n),(r=t.call(this,e)).code="ERR_JWT_EXPIRED",r.claim=i,r.reason=c,r}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_EXPIRED"}}]),n}(VB),WB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_ALG_NOT_ALLOWED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_ALG_NOT_ALLOWED"}}]),n}(VB),gB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JOSE_NOT_SUPPORTED",e}return d(n,null,[{key:"code",get:function(){return"ERR_JOSE_NOT_SUPPORTED"}}]),n}(VB),vB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_INVALID"}}]),n}(VB),SB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWT_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWT_INVALID"}}]),n}(VB),RB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_INVALID",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_INVALID"}}]),n}(VB),YB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_NO_MATCHING_KEY",e.message="no applicable key found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_NO_MATCHING_KEY"}}]),n}(VB),JB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWKS_MULTIPLE_MATCHING_KEYS",e.message="multiple matching keys found in the JSON Web Key Set",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWKS_MULTIPLE_MATCHING_KEYS"}}]),n}(VB),xB=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED",e.message="signature verification failed",e}return d(n,null,[{key:"code",get:function(){return"ERR_JWS_SIGNATURE_VERIFICATION_FAILED"}}]),n}(VB);function KB(){return"function"==typeof WebSocketPair}function LB(){try{return void 0!==HM.versions.node}catch(e){return!1}}function NB(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"algorithm.name";return new TypeError("CryptoKey does not support this operation, its ".concat(t," must be ").concat(e))}function HB(e,t){return e.name===t}function kB(e){return parseInt(e.name.slice(4),10)}function CB(e){switch(e){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function UB(e,t){if(t.length&&!t.some((function(t){return e.usages.includes(t)}))){var n="CryptoKey does not support this operation, its usages must include ";if(t.length>2){var r=t.pop();n+="one of ".concat(t.join(", "),", or ").concat(r,".")}else 2===t.length?n+="one of ".concat(t[0]," or ").concat(t[1],"."):n+="".concat(t[0],".");throw new TypeError(n)}}var TB=function(e){for(var t="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();t+="one of type ".concat(r.join(", "),", or ").concat(c,".")}else 2===r.length?t+="one of type ".concat(r[0]," or ").concat(r[1],"."):t+="of type ".concat(r[0],".");return null==e?t+=" Received ".concat(e):"function"==typeof e&&e.name?t+=" Received function ".concat(e.name):"object"===a(e)&&null!=e&&e.constructor&&e.constructor.name&&(t+=" Received an instance of ".concat(e.constructor.name)),t},wB=function(e){return bB(e)},FB=["CryptoKey"],zB=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r,i=t.filter(Boolean);if(0===i.length||1===i.length)return!0;var c,a=S(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(e){a.e(e)}finally{a.f()}return!0};function jB(e){if("object"!==a(t=e)||null===t||"[object Object]"!==Object.prototype.toString.call(e))return!1;var t;if(null===Object.getPrototypeOf(e))return!0;for(var n=e;null!==Object.getPrototypeOf(n);)n=Object.getPrototypeOf(n);return Object.getPrototypeOf(e)===n}var MB=function(e,t){if(e.startsWith("RS")||e.startsWith("PS")){var n=t.algorithm.modulusLength;if("number"!=typeof n||n<2048)throw new TypeError("".concat(e," requires key modulusLength to be 2048 bits or larger"))}};function PB(e){var t,n;switch(e.kty){case"oct":switch(e.alg){case"HS256":case"HS384":case"HS512":t={name:"HMAC",hash:"SHA-".concat(e.alg.slice(-3))},n=["sign","verify"];break;case"A128CBC-HS256":case"A192CBC-HS384":case"A256CBC-HS512":throw new gB("".concat(e.alg," keys cannot be imported as CryptoKey instances"));case"A128GCM":case"A192GCM":case"A256GCM":case"A128GCMKW":case"A192GCMKW":case"A256GCMKW":t={name:"AES-GCM"},n=["encrypt","decrypt"];break;case"A128KW":case"A192KW":case"A256KW":t={name:"AES-KW"},n=["wrapKey","unwrapKey"];break;case"PBES2-HS256+A128KW":case"PBES2-HS384+A192KW":case"PBES2-HS512+A256KW":t={name:"PBKDF2"},n=["deriveBits"];break;default:throw new gB('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"RSA":switch(e.alg){case"PS256":case"PS384":case"PS512":t={name:"RSA-PSS",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":t={name:"RSASSA-PKCS1-v1_5",hash:"SHA-".concat(e.alg.slice(-3))},n=e.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":t={name:"RSA-OAEP",hash:"SHA-".concat(parseInt(e.alg.slice(-3),10)||1)},n=e.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new gB('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case"EC":switch(e.alg){case"ES256":t={name:"ECDSA",namedCurve:"P-256"},n=e.d?["sign"]:["verify"];break;case"ES384":t={name:"ECDSA",namedCurve:"P-384"},n=e.d?["sign"]:["verify"];break;case"ES512":t={name:"ECDSA",namedCurve:"P-521"},n=e.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":t={name:"ECDH",namedCurve:e.crv},n=e.d?["deriveBits"]:[];break;default:throw new gB('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(KB()||LB())&&"OKP":if("EdDSA"!==e.alg)throw new gB('Invalid or unsupported JWK "alg" (Algorithm) Parameter value');switch(e.crv){case"Ed25519":t={name:"NODE-ED25519",namedCurve:"NODE-ED25519"},n=e.d?["sign"]:["verify"];break;case LB()&&"Ed448":t={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=e.d?["sign"]:["verify"];break;default:throw new gB('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new gB('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:t,keyUsages:n}}var QB=function(){var e=l(regeneratorRuntime.mark((function e(t){var n,r,i,a,o,l,u,s,d;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=PB(t),o=a.algorithm,l=a.keyUsages,u=[o,null!==(r=t.ext)&&void 0!==r&&r,null!==(i=t.key_ops)&&void 0!==i?i:l],"PBKDF2"!==o.name){e.next=4;break}return e.abrupt("return",(s=ZB.subtle).importKey.apply(s,["raw",fB(t.k)].concat(u)));case 4:return delete(d=c({},t)).alg,e.abrupt("return",(n=ZB.subtle).importKey.apply(n,["jwk",d].concat(u)));case 7:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function BB(e,t,n){return EB.apply(this,arguments)}function EB(){return(EB=l(regeneratorRuntime.mark((function e(t,n,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(jB(t)){e.next=2;break}throw new TypeError("JWK must be an object");case 2:if(n||(n=t.alg),"string"==typeof n&&n){e.next=5;break}throw new TypeError('"alg" argument is required when "jwk.alg" is not present');case 5:e.t0=t.kty,e.next="oct"===e.t0?8:"RSA"===e.t0?14:"EC"===e.t0||"OKP"===e.t0?16:17;break;case 8:if("string"==typeof t.k&&t.k){e.next=10;break}throw new TypeError('missing "k" (Key Value) Parameter value');case 10:if(null!=r||(r=!0!==t.ext),!r){e.next=13;break}return e.abrupt("return",QB(c(c({},t),{},{alg:n,ext:!1})));case 13:return e.abrupt("return",fB(t.k));case 14:if(void 0===t.oth){e.next=16;break}throw new gB('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return e.abrupt("return",QB(c(c({},t),{},{alg:n})));case 17:throw new gB('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var DB=function(e,t,n){e.startsWith("HS")||"dir"===e||e.startsWith("PBES2")||/^A\d{3}(?:GCM)?KW$/.test(e)?function(e){if(!(e instanceof Uint8Array)){if(!wB(e))throw new TypeError(TB.apply(void 0,[e].concat(W(FB),["Uint8Array"])));if("secret"!==e.type)throw new TypeError("".concat(FB.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(t):function(e,t){if(!wB(e))throw new TypeError(TB.apply(void 0,[e].concat(W(FB))));if("secret"===e.type)throw new TypeError("".concat(FB.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===t&&"public"===e.type)throw new TypeError("".concat(FB.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===t&&"public"===e.type)throw new TypeError("".concat(FB.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(e.algorithm&&"verify"===t&&"private"===e.type)throw new TypeError("".concat(FB.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(e.algorithm&&"encrypt"===t&&"private"===e.type)throw new TypeError("".concat(FB.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(t,n)};function OB(e,t,n,r,i){if(void 0!==i.crit&&void 0===r.crit)throw new e('"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(e){return"string"!=typeof e||0===e.length})))throw new e('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');var c;c=void 0!==n?new Map([].concat(W(Object.entries(n)),W(t.entries()))):t;var a,o=S(r.crit);try{for(o.s();!(a=o.n()).done;){var l=a.value;if(!c.has(l))throw new gB('Extension Header Parameter "'.concat(l,'" is not recognized'));if(void 0===i[l])throw new e('Extension Header Parameter "'.concat(l,'" is missing'));if(c.get(l)&&void 0===r[l])throw new e('Extension Header Parameter "'.concat(l,'" MUST be integrity protected'))}}catch(e){o.e(e)}finally{o.f()}return new Set(r.crit)}var AB=function(e,t){if(void 0!==t&&(!Array.isArray(t)||t.some((function(e){return"string"!=typeof e}))))throw new TypeError('"'.concat(e,'" option must be an array of strings'));if(t)return new Set(t)};function _B(e,t){var n="SHA-".concat(e.slice(-3));switch(e){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:e.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:t.namedCurve};case(KB()||LB())&&"EdDSA":var r=t.namedCurve;return{name:r,namedCurve:r};default:throw new gB("alg ".concat(e," is not supported either by JOSE or your javascript runtime"))}}function qB(e,t,n){if(bB(t))return function(e,t){switch(t){case"HS256":case"HS384":case"HS512":if(!HB(e.algorithm,"HMAC"))throw NB("HMAC");var n=parseInt(t.slice(2),10);if(kB(e.algorithm.hash)!==n)throw NB("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!HB(e.algorithm,"RSASSA-PKCS1-v1_5"))throw NB("RSASSA-PKCS1-v1_5");var r=parseInt(t.slice(2),10);if(kB(e.algorithm.hash)!==r)throw NB("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!HB(e.algorithm,"RSA-PSS"))throw NB("RSA-PSS");var i=parseInt(t.slice(2),10);if(kB(e.algorithm.hash)!==i)throw NB("SHA-".concat(i),"algorithm.hash");break;case LB()&&"EdDSA":if("NODE-ED25519"!==e.algorithm.name&&"NODE-ED448"!==e.algorithm.name)throw NB("NODE-ED25519 or NODE-ED448");break;case KB()&&"EdDSA":if(!HB(e.algorithm,"NODE-ED25519"))throw NB("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!HB(e.algorithm,"ECDSA"))throw NB("ECDSA");var c=CB(t);if(e.algorithm.namedCurve!==c)throw NB(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];UB(e,o)}(t,e,n),t;if(t instanceof Uint8Array){if(!e.startsWith("HS"))throw new TypeError(TB.apply(void 0,[t].concat(W(FB))));return ZB.subtle.importKey("raw",t,{hash:"SHA-".concat(e.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(TB.apply(void 0,[t].concat(W(FB),["Uint8Array"])))}var $B=function(){var e=l(regeneratorRuntime.mark((function e(t,n,r,i){var c,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,qB(t,n,"verify");case 2:return c=e.sent,MB(t,c),a=_B(t,c.algorithm),e.prev=5,e.next=8,ZB.subtle.verify(a,c,r,i);case 8:return e.abrupt("return",e.sent);case 11:return e.prev=11,e.t0=e.catch(5),e.abrupt("return",!1);case 14:case"end":return e.stop()}}),e,null,[[5,11]])})));return function(t,n,r,i){return e.apply(this,arguments)}}();function eE(e,t,n){return tE.apply(this,arguments)}function tE(){return tE=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l,u,s,d,m,h,Z,b,p,y;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(jB(t)){e.next=2;break}throw new vB("Flattened JWS must be an object");case 2:if(void 0!==t.protected||void 0!==t.header){e.next=4;break}throw new vB('Flattened JWS must have either of the "protected" or "header" members');case 4:if(void 0===t.protected||"string"==typeof t.protected){e.next=6;break}throw new vB("JWS Protected Header incorrect type");case 6:if(void 0!==t.payload){e.next=8;break}throw new vB("JWS Payload missing");case 8:if("string"==typeof t.signature){e.next=10;break}throw new vB("JWS Signature missing or incorrect type");case 10:if(void 0===t.header||jB(t.header)){e.next=12;break}throw new vB("JWS Unprotected Header incorrect type");case 12:if(a={},!t.protected){e.next=22;break}o=fB(t.protected),e.prev=15,a=JSON.parse(yB.decode(o)),e.next=22;break;case 19:throw e.prev=19,e.t0=e.catch(15),new vB("JWS Protected Header is invalid");case 22:if(zB(a,t.header)){e.next=24;break}throw new vB("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(l=c(c({},a),t.header),u=OB(vB,new Map([["b64",!0]]),null==r?void 0:r.crit,a,l),s=!0,!u.has("b64")){e.next=31;break}if("boolean"==typeof(s=a.b64)){e.next=31;break}throw new vB('The "b64" (base64url-encode payload) Header Parameter must be a boolean');case 31:if("string"==typeof(d=l.alg)&&d){e.next=34;break}throw new vB('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&AB("algorithms",r.algorithms))||m.has(d)){e.next=37;break}throw new WB('"alg" (Algorithm) Header Parameter not allowed');case 37:if(!s){e.next=42;break}if("string"==typeof t.payload){e.next=40;break}throw new vB("JWS Payload must be a string");case 40:e.next=44;break;case 42:if("string"==typeof t.payload||t.payload instanceof Uint8Array){e.next=44;break}throw new vB("JWS Payload must be a string or an Uint8Array instance");case 44:if(h=!1,"function"!=typeof n){e.next=50;break}return e.next=48,n(a,t);case 48:n=e.sent,h=!0;case 50:return DB(d,n,"verify"),Z=XB(pB.encode(null!==(i=t.protected)&&void 0!==i?i:""),pB.encode("."),"string"==typeof t.payload?pB.encode(t.payload):t.payload),b=fB(t.signature),e.next=55,$B(d,n,b,Z);case 55:if(e.sent){e.next=58;break}throw new xB;case 58:if(p=s?fB(t.payload):"string"==typeof t.payload?pB.encode(t.payload):t.payload,y={payload:p},void 0!==t.protected&&(y.protectedHeader=a),void 0!==t.header&&(y.unprotectedHeader=t.header),!h){e.next=64;break}return e.abrupt("return",c(c({},y),{},{key:n}));case 64:return e.abrupt("return",y);case 65:case"end":return e.stop()}}),e,null,[[15,19]])}))),tE.apply(this,arguments)}function nE(e,t,n){return rE.apply(this,arguments)}function rE(){return rE=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l,u,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t instanceof Uint8Array&&(t=yB.decode(t)),"string"==typeof t){e.next=3;break}throw new vB("Compact JWS must be a string or Uint8Array");case 3:if(i=t.split("."),a=i[0],o=i[1],l=i[2],3===i.length){e.next=6;break}throw new vB("Invalid Compact JWS");case 6:return e.next=8,eE({payload:o,protected:a,signature:l},n,r);case 8:if(u=e.sent,s={payload:u.payload,protectedHeader:u.protectedHeader},"function"!=typeof n){e.next=12;break}return e.abrupt("return",c(c({},s),{},{key:u.key}));case 12:return e.abrupt("return",s);case 13:case"end":return e.stop()}}),e)}))),rE.apply(this,arguments)}var iE=function(e){return Math.floor(e.getTime()/1e3)},cE=86400,aE=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,oE=function(e){var t=aE.exec(e);if(!t)throw new TypeError("Invalid time period format");var n=parseFloat(t[1]);switch(t[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*cE);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},lE=function(e){return e.toLowerCase().replace(/^application\//,"")},uE=function(e,t){return"string"==typeof e?t.includes(e):!!Array.isArray(e)&&t.some(Set.prototype.has.bind(new Set(e)))},sE=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof e.typ||lE(e.typ)!==lE(i)))throw new GB('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(yB.decode(t))}catch(e){}if(!jB(n))throw new SB("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 GB('unexpected "iss" claim value',"iss","check_failed");var o=r.subject;if(o&&n.sub!==o)throw new GB('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!uE(n.aud,"string"==typeof u?[u]:u))throw new GB('unexpected "aud" claim value',"aud","check_failed");switch(a(r.clockTolerance)){case"string":l=oE(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=iE(s||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new GB('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new GB('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>d+l)throw new GB('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new GB('"exp" claim must be a number',"exp","invalid");if(n.exp<=d-l)throw new IB('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var m=d-n.iat,h="number"==typeof r.maxTokenAge?r.maxTokenAge:oE(r.maxTokenAge);if(m-l>h)throw new IB('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(m<0-l)throw new GB('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function dE(){return dE=l(regeneratorRuntime.mark((function e(t,n,r){var i,a,o,l;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,nE(t,n,r);case 2:if(a=e.sent,!(null===(i=a.protectedHeader.crit)||void 0===i?void 0:i.includes("b64"))||!1!==a.protectedHeader.b64){e.next=5;break}throw new SB("JWTs MUST NOT use unencoded payload");case 5:if(o=sE(a.protectedHeader,a.payload,r),l={payload:o,protectedHeader:a.protectedHeader},"function"!=typeof n){e.next=9;break}return e.abrupt("return",c(c({},l),{},{key:a.key}));case 9:return e.abrupt("return",l);case 10:case"end":return e.stop()}}),e)}))),dE.apply(this,arguments)}function mE(e){switch("string"==typeof e&&e.slice(0,2)){case"RS":case"PS":return"RSA";case"ES":return"EC";case"Ed":return"OKP";default:throw new gB('Unsupported "alg" value for a JSON Web Key Set')}}function hE(e){return jB(e)}var ZE=function(){function e(t){if(u(this,e),this._cached=new WeakMap,!function(e){return e&&"object"===a(e)&&Array.isArray(e.keys)&&e.keys.every(hE)}(t))throw new RB("JSON Web Key Set malformed");var n;this._jwks=(n=t,"function"==typeof structuredClone?structuredClone(n):JSON.parse(JSON.stringify(n)))}var t;return d(e,[{key:"getKey",value:(t=l(regeneratorRuntime.mark((function e(t,n){var r,i,a,o,l,u,s,d,m;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=c(c({},t),n.header),i=r.alg,a=r.kid,o=mE(i),l=this._jwks.keys.filter((function(e){var t=o===e.kty;if(t&&"string"==typeof a&&(t=a===e.kid),t&&"string"==typeof e.alg&&(t=i===e.alg),t&&"string"==typeof e.use&&(t="sig"===e.use),t&&Array.isArray(e.key_ops)&&(t=e.key_ops.includes("verify")),t&&"EdDSA"===i&&(t="Ed25519"===e.crv||"Ed448"===e.crv),t)switch(i){case"ES256":t="P-256"===e.crv;break;case"ES256K":t="secp256k1"===e.crv;break;case"ES384":t="P-384"===e.crv;break;case"ES512":t="P-521"===e.crv}return t})),u=l[0],0!==(s=l.length)){e.next=8;break}throw new YB;case 8:if(1===s){e.next=10;break}throw new JB;case 10:if(void 0!==(d=this._cached.get(u)||this._cached.set(u,{}).get(u))[i]){e.next=18;break}return e.next=14,BB(c(c({},u),{},{ext:!0}),i);case 14:if(!((m=e.sent)instanceof Uint8Array||"public"!==m.type)){e.next=17;break}throw new RB("JSON Web Key Set members must be public keys");case 17:d[i]=m;case 18:return e.abrupt("return",d[i]);case 19:case"end":return e.stop()}}),e,this)}))),function(e,n){return t.apply(this,arguments)})}]),e}();var bE={exports:{}},pE={exports:{}},yE=r(tB);!function(e,t){var n=yE,r=n.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function c(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=n:(i(n,t),t.Buffer=c),c.prototype=Object.create(r.prototype),i(r,c),c.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},c.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},c.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},c.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}}(pE,pE.exports);var XE=65536,fE=4294967295;var VE=pE.exports.Buffer,GE=t.crypto||t.msCrypto;GE&&GE.getRandomValues?bE.exports=function(e,t){if(e>fE)throw new RangeError("requested too many random bytes");var n=VE.allocUnsafe(e);if(e>0)if(e>XE)for(var r=0;r<e;r+=XE)GE.getRandomValues(n.slice(r,r+XE));else GE.getRandomValues(n);if("function"==typeof t)return HM.nextTick((function(){t(null,n)}));return n}:bE.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var IE=bE.exports,WE=function(){function e(){u(this,e)}return d(e,[{key:"base64URLEncode",value:function(e){return dB.encode(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(e){return dB.decode(e).toString()}},{key:"hashSha256",value:function(e){return pQ.from(hB((new TextEncoder).encode(e)))}},{key:"generateRandomBytes",value:function(e){return IE(e)}},{key:"verifyJwt",value:function(e,t,n,r,i,c,a){return function(e,t,n){return dE.apply(this,arguments)}(e,(o={keys:[t]},ZE.prototype.getKey.bind(new ZE(o))),{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),e}(),gE=function(t){switch(t){case e.Storage.LocalStorage:return new $P;case e.Storage.SessionStorage:return new tQ;case e.Storage.BrowserMemory:return new eQ;default:return new tQ}},vE=function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,s,d,m,h,Z,b,p,y,X,f,V,G,I,g,v,R,Y,J,x,K,L,N,H,k,C,U,T,w,F,z,j;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return i=gE(t.storage),c=new WE,a=new lj(i,c),n.next=5,a.initialize(t);case 5:return o=new jj(a),l=a.getDataLayer(),n.next=9,Pj((function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.signOut());case 1:case"end":return e.stop()}}),e)})))}),null!==(r=t.storage)&&void 0!==r?r:e.Storage.SessionStorage,(function(e){return l.setSessionDataParameter(Oz,null!=e?e:"")}));case 9:if(u=n.sent,s=!1,d=qP.getInstance(),m=!0,b=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!Object.assign({attachToken:!0},e).attachToken){t.next=11;break}return t.t0=Object,t.t1=Object.assign({},e.headers),t.t2="Bearer ",t.next=7,a.getAccessToken();case 7:t.t3=t.sent,t.t4=t.t2.concat.call(t.t2,t.t3),t.t5={Authorization:t.t4},e.headers=t.t0.assign.call(t.t0,t.t1,t.t5);case 11:case"end":return t.stop()}}),t)})))},n.t0=null==d?void 0:d.init,!n.t0){n.next=18;break}return n.next=18,d.init(!0,b);case 18:return p=function(e){(null==d?void 0:d.setHttpRequestStartCallback)&&d.setHttpRequestStartCallback(e)},y=function(e){(null==d?void 0:d.setHttpRequestSuccessCallback)&&d.setHttpRequestSuccessCallback(e)},X=function(e){(null==d?void 0:d.setHttpRequestFinishCallback)&&d.setHttpRequestFinishCallback(e),Z=e},f=function(e){h=e},V=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,a,o,u;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=!1,t.next=3,l.getConfigData();case 3:return c=t.sent,a=0,t.t0=[],t.t1=W,t.next=9,null==c?void 0:c.resourceServerURLs;case 9:if(t.t3=n=t.sent,t.t2=null!==t.t3,!t.t2){t.next=13;break}t.t2=void 0!==n;case 13:if(!t.t2){t.next=17;break}t.t4=n,t.next=18;break;case 17:t.t4=[];case 18:t.t5=t.t4,t.t6=(0,t.t1)(t.t5),t.t7=[c.baseUrl],o=t.t0.concat.call(t.t0,t.t6,t.t7);case 22:if(!(a<o.length)){t.next=30;break}if(!(u=o[a])||!(null===(r=null==e?void 0:e.url)||void 0===r?void 0:r.startsWith(u))){t.next=27;break}return i=!0,t.abrupt("break",30);case 27:a++,t.next=22;break;case 30:if(!i){t.next=34;break}return t.abrupt("return",d.request(e).then((function(e){return Promise.resolve(e)})).catch((function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(401!==(null===(r=null==t?void 0:t.response)||void 0===r?void 0:r.status)&&(null==t?void 0:t.response)){n.next=31;break}return n.prev=1,n.next=4,K();case 4:a=n.sent,n.next=15;break;case 7:if(n.prev=7,n.t0=n.catch(1),!m){n.next=14;break}if("function"!=typeof h){n.next=13;break}return n.next=13,h(Object.assign(Object.assign({},t),{code:zj}));case 13:"function"==typeof Z&&Z();case 14:throw new $z("SPA-MAIN_THREAD_CLIENT-HR-SE01",null!==(i=null===n.t0||void 0===n.t0?void 0:n.t0.name)&&void 0!==i?i:"Refresh token request failed.",null!==(c=null===n.t0||void 0===n.t0?void 0:n.t0.message)&&void 0!==c?c:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!a){n.next=31;break}return n.prev=16,n.next=19,d.request(e);case 19:return o=n.sent,n.abrupt("return",Promise.resolve(o));case 23:if(n.prev=23,n.t1=n.catch(16),!m){n.next=30;break}if("function"!=typeof h){n.next=29;break}return n.next=29,h(n.t1);case 29:"function"==typeof Z&&Z();case 30:return n.abrupt("return",Promise.reject(n.t1));case 31:if(!m){n.next=36;break}if("function"!=typeof h){n.next=35;break}return n.next=35,h(t);case 35:"function"==typeof Z&&Z();case 36:return n.abrupt("return",Promise.reject(t));case 37:case"end":return n.stop()}}),n,null,[[1,7],[16,23]])})))})));case 34:throw new $z("SPA-MAIN_THREAD_CLIENT-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 t.stop()}}),t)})))},G=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,u,s,b,p,y,X,f,V;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return c=!0,t.next=3,l.getConfigData();case 3:o=t.sent,u=S(e),t.prev=5,u.s();case 7:if((s=u.n()).done){t.next=50;break}return b=s.value,p=!1,y=0,t.t0=[],t.t1=W,t.next=15,o;case 15:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=19;break}t.t3=void 0===n;case 19:if(!t.t3){t.next=23;break}t.t5=void 0,t.next=24;break;case 23:t.t5=n.resourceServerURLs;case 24:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=28;break}t.t2=void 0!==r;case 28:if(!t.t2){t.next=32;break}t.t7=r,t.next=33;break;case 32:t.t7=[];case 33:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[o.baseUrl],X=t.t0.concat.call(t.t0,t.t9,t.t10);case 37:if(!(y<X.length)){t.next=45;break}if(!(f=X[y])||!(null===(i=b.url)||void 0===i?void 0:i.startsWith(f))){t.next=42;break}return p=!0,t.abrupt("break",45);case 42:y++,t.next=37;break;case 45:if(p){t.next=48;break}return c=!1,t.abrupt("break",50);case 48:t.next=7;break;case 50:t.next=55;break;case 52:t.prev=52,t.t11=t.catch(5),u.e(t.t11);case 55:return t.prev=55,u.f(),t.finish(55);case 58:if(V=[],!c){t.next=64;break}return e.forEach((function(e){V.push(d.request(e))})),t.abrupt("return",(null==d?void 0:d.all)&&d.all(V).then((function(e){return Promise.resolve(e)})).catch((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(401!==(null===(n=null==e?void 0:e.response)||void 0===n?void 0:n.status)&&(null==e?void 0:e.response)){t.next=17;break}return t.prev=1,t.next=4,a.refreshAccessToken();case 4:c=t.sent,t.next=15;break;case 7:if(t.prev=7,t.t0=t.catch(1),!m){t.next=14;break}if("function"!=typeof h){t.next=13;break}return t.next=13,h(Object.assign(Object.assign({},e),{code:zj}));case 13:"function"==typeof Z&&Z();case 14:throw new $z("SPA-MAIN_THREAD_CLIENT-HRA-SE01",null!==(r=null===t.t0||void 0===t.t0?void 0:t.t0.name)&&void 0!==r?r:"Refresh token request failed.",null!==(i=null===t.t0||void 0===t.t0?void 0:t.t0.message)&&void 0!==i?i:"An error occurred while trying to refresh the access token following a 401 response from the server.");case 15:if(!c){t.next=17;break}return t.abrupt("return",d.all&&d.all(V).then((function(e){return Promise.resolve(e)})).catch((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!m){t.next=5;break}if("function"!=typeof h){t.next=4;break}return t.next=4,h(e);case 4:"function"==typeof Z&&Z();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))})));case 17:if(!m){t.next=22;break}if("function"!=typeof h){t.next=21;break}return t.next=21,h(e);case 21:"function"==typeof Z&&Z();case 22:return t.abrupt("return",Promise.reject(e));case 23:case"end":return t.stop()}}),t,null,[[1,7]])})))})));case 64:throw new $z("SPA-MAIN_THREAD_CLIENT-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 t.stop()}}),t,null,[[5,52,55,58]])})))},I=function(){return d},g=function(){return(null==d?void 0:d.enableHandler)&&d.enableHandler(),m=!0,!0},v=function(){return(null==d?void 0:d.disableHandler)&&d.disableHandler(),m=!1,!0},R=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getOIDCServiceEndpoints();case 2:return i=e.sent,e.next=5,l.getConfigData();case 5:c=e.sent,u.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.getBasicUserInfo();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",a.getAuthorizationURL(e));case 1:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},Y=function(t,n,r,i){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var s,d,m,h,Z,b,p,y,X,f;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,l.getConfigData();case 2:return h=c.sent,c.next=5,u.receivePromptNoneResponse((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.setSessionDataParameter(Oz,null!=e?e:"");case 2:return t.abrupt("return");case 3:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:return c.next=10,a.isAuthenticated();case 10:if(!c.sent){c.next=19;break}return o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),h.enableOIDCSessionManagement&&R(),c.t0=Promise,c.next=17,a.getBasicUserInfo();case 17:return c.t1=c.sent,c.abrupt("return",c.t0.resolve.call(c.t0,c.t1));case 19:if((null==h?void 0:h.responseMode)===e.ResponseMode.formPost&&n?(Z=n,b=null!=r?r:"",p=null!=i?i:""):(Z=null!==(s=new URL(window.location.href).searchParams.get(Dz))&&void 0!==s?s:"",b=null!==(d=new URL(window.location.href).searchParams.get(Oz))&&void 0!==d?d:"",p=null!==(m=new URL(window.location.href).searchParams.get(qz))&&void 0!==m?m:"",Mj.removeAuthorizationCode()),!Z||!p){c.next=22;break}return c.abrupt("return",N(Z,b,p));case 22:if(y=new URL(window.location.href).searchParams.get(Uj),X=new URL(window.location.href).searchParams.get(Tj),!y){c.next=30;break}throw(f=new URL(window.location.href)).searchParams.delete(Uj),f.searchParams.delete(Tj),history.pushState(null,document.title,f.toString()),new $z("SPA-MAIN_THREAD_CLIENT-SI-SE01",y,null!=X?X:"");case 30:return c.abrupt("return",a.getAuthorizationURL(t).then((function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(h.storage!==e.Storage.BrowserMemory||!h.enablePKCE){n.next=8;break}return r=ej.extractPKCEKeyFromStateParam(p),n.t0=Mj,n.t1=r,n.next=6,a.getPKCECode(p);case 6:n.t2=n.sent,n.t0.setPKCE.call(n.t0,n.t1,n.t2);case 8:return location.href=t,n.next=11,Mj.waitTillPageRedirect();case 11:return n.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 12:case"end":return n.stop()}}),n)})))})));case 31:case"end":return c.stop()}}),c)})))},J=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,a.isAuthenticated();case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}e.t0=!s;case 5:if(!e.t0){e.next=11;break}return e.next=8,a.signOut();case 8:location.href=e.sent,e.next=18;break;case 11:return location.href=Mj.getSignOutURL(),e.next=14,l.removeOIDCProviderMetaData();case 14:return e.next=16,l.removeTemporaryData();case 16:return e.next=18,l.removeSessionData();case 18:return o.clearRefreshTokenTimeout(),e.next=21,Mj.waitTillPageRedirect();case 21:return e.abrupt("return",!0);case 22:case"end":return e.stop()}}),e)})))},x=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,u,d,m,h;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=!0,u=!1,!(null==e?void 0:e.tokenEndpoint)){t.next=39;break}return c=!1,d=0,t.t0=[],t.t1=W,t.next=9,l.getConfigData();case 9:if(t.t4=n=t.sent,t.t3=null===t.t4,t.t3){t.next=13;break}t.t3=void 0===n;case 13:if(!t.t3){t.next=17;break}t.t5=void 0,t.next=18;break;case 17:t.t5=n.resourceServerURLs;case 18:if(t.t6=r=t.t5,t.t2=null!==t.t6,!t.t2){t.next=22;break}t.t2=void 0!==r;case 22:if(!t.t2){t.next=26;break}t.t7=r,t.next=27;break;case 26:t.t7=[];case 27:t.t8=t.t7,t.t9=(0,t.t1)(t.t8),t.t10=[e.baseUrl],m=t.t0.concat.call(t.t0,t.t9,t.t10);case 31:if(!(d<m.length)){t.next=39;break}if(!(h=m[d])||!(null===(i=e.tokenEndpoint)||void 0===i?void 0:i.startsWith(h))){t.next=36;break}return u=!0,t.abrupt("break",39);case 36:d++,t.next=31;break;case 39:if(e.shouldReplayAfterRefresh&&l.setTemporaryDataParameter(wj,JSON.stringify(e)),!c&&!u){t.next=44;break}return t.abrupt("return",a.requestCustomGrant(e).then((function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e.preventSignOutURLUpdate&&(s=!0),!e.returnsSession){n.next=6;break}return o.refreshAccessTokenAutomatically(),n.abrupt("return",a.getBasicUserInfo());case 6:return n.abrupt("return",t);case 7:case"end":return n.stop()}}),n)})))})).catch((function(e){return Promise.reject(e)})));case 44:return t.abrupt("return",Promise.reject(new $z("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 t.stop()}}),t)})))},K=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,a.refreshAccessToken();case 3:return e.next=5,j();case 5:if(!(t=e.sent)){e.next=9;break}return e.next=9,x(t);case 9:return o.refreshAccessTokenAutomatically(),e.abrupt("return",a.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,null,[[0,13]])})))},L=function(){return a.revokeAccessToken().then((function(){return u.reset(),o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},N=function(t,n,r){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function i(){var c,u;return regeneratorRuntime.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,l.getConfigData();case 2:if((c=i.sent).storage!==e.Storage.BrowserMemory||!c.enablePKCE){i.next=7;break}return u=Mj.getPKCE(ej.extractPKCEKeyFromStateParam(r)),i.next=7,a.setPKCECode(ej.extractPKCEKeyFromStateParam(r),u);case 7:return i.abrupt("return",a.requestAccessToken(t,n,r).then((function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.t0=Mj,e.next=3,a.getSignOutURL();case 3:return e.t1=e.sent,e.t0.setSignOutURL.call(e.t0,e.t1),o.clearRefreshTokenTimeout(),o.refreshAccessTokenAutomatically(),c.enableOIDCSessionManagement&&R(),e.abrupt("return",a.getBasicUserInfo());case 9:case"end":return e.stop()}}),e)})))})).catch((function(e){return Promise.reject(e)})));case 8:case"end":return i.stop()}}),i)})))},H=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c,o,s,d,m;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:if(r=t.sent,!Mj.isInitializedSilentSignIn()){t.next=7;break}return t.next=6,u.receivePromptNoneResponse();case 6:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(Kj),c=null===(n=null==i?void 0:i.contentDocument)||void 0===n?void 0:n.getElementById(Lj),t.prev=9,t.next=12,a.getAuthorizationURL({prompt:"none",state:Hj});case 12:if(o=t.sent,(s=new URL(o)).searchParams.set("response_mode","query"),d=s.toString(),r.storage!==e.Storage.BrowserMemory||!r.enablePKCE){t.next=24;break}return m=s.searchParams.get(qz),t.t0=Mj,t.t1=ej.extractPKCEKeyFromStateParam(null!=m?m:""),t.next=22,a.getPKCECode(null!=m?m:"");case 22:t.t2=t.sent,t.t0.setPKCE.call(t.t0,t.t1,t.t2);case 24:c.src=d,t.next=30;break;case 27:return t.prev=27,t.t3=t.catch(9),t.abrupt("return",Promise.reject(t.t3));case 30:return t.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(u=i.data)?void 0:u.type)==mj&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==u?void 0:u.type)==dj&&(null===(a=null==u?void 0:u.data)||void 0===a?void 0:a.code)&&N(u.data.code,null===(o=null==u?void 0:u.data)||void 0===o?void 0:o.sessionState,null===(l=null==u?void 0:u.data)||void 0===l?void 0:l.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 31:case"end":return t.stop()}}),t,null,[[9,27]])})))},k=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getBasicUserInfo());case 1:case"end":return e.stop()}}),e)})))},C=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getDecodedIDToken());case 1:case"end":return e.stop()}}),e)})))},U=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getIDToken());case 1:case"end":return e.stop()}}),e)})))},T=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getOIDCServiceEndpoints());case 1:case"end":return e.stop()}}),e)})))},w=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.getAccessToken());case 1:case"end":return e.stop()}}),e)})))},F=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",a.isAuthenticated());case 1:case"end":return e.stop()}}),e)})))},z=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,l.getConfigData();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),t.next=7,a.updateConfig(i);case 7:i.enableOIDCSessionManagement&&r&&(u.reset(),R());case 8:case"end":return t.stop()}}),t)})))},j=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.getTemporaryDataParameter(wj);case 2:if(!(t=e.sent)){e.next=7;break}return e.abrupt("return",JSON.parse(t));case 7:return e.abrupt("return",null);case 8:case"end":return e.stop()}}),e)})))},n.abrupt("return",{disableHttpHandler:v,enableHttpHandler:g,getAccessToken:w,getBasicUserInfo:k,getDecodedIDToken:C,getHttpClient:I,getIDToken:U,getOIDCServiceEndpoints:T,httpRequest:V,httpRequestAll:G,isAuthenticated:F,refreshAccessToken:K,requestCustomGrant:x,revokeAccessToken:L,setHttpRequestErrorCallback:f,setHttpRequestFinishCallback:X,setHttpRequestStartCallback:p,setHttpRequestSuccessCallback:y,signIn:Y,signOut:J,trySignInSilently:H,updateConfig:z});case 44:case"end":return n.stop()}}),n)})))};function SE(e,t,n){var r=void 0===t?null:t,i=function(e,t){var n=atob(e);if(t){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}(e,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 RE,YE,JE,xE,KE=(RE="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dSh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKGUpe3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxyKGUpfWZ1bmN0aW9uIG4oZSx0LHIsbixhLG8saSl7dHJ5e3ZhciBzPWVbb10oaSksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBhKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihhLG8pe3ZhciBpPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe24oaSxhLG8scyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe24oaSxhLG8scyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHMoZSx0LHIpe3JldHVybiB0JiZpKGUucHJvdG90eXBlLHQpLHImJmkoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGMoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmbChlLHQpfWZ1bmN0aW9uIGYoZSl7cmV0dXJuIGY9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sZihlKX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGwoZSx0KX1mdW5jdGlvbiBoKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBwKGUsdCxyKXtyZXR1cm4gcD1oKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmbChhLHIucHJvdG90eXBlKSxhfSxwLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBkKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIHAoZSxhcmd1bWVudHMsZih0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGwobixlKX0sZChlKX1mdW5jdGlvbiB2KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiBnKGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gdihlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PWgoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWYoZSk7aWYodCl7dmFyIGE9Zih0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZyh0aGlzLHIpfX1mdW5jdGlvbiB5KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxvPVtdLGk9ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEoaT0obj1yLm5leHQoKSkuZG9uZSkmJihvLnB1c2gobi52YWx1ZSksIXR8fG8ubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gb30oZSx0KXx8dyhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gayhlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHcoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gdyhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gayhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP2soZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIGsoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj13KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gaT1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLG89ZX0sZjpmdW5jdGlvbigpe3RyeXtpfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBfKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLG8pe2Z1bmN0aW9uIGkoZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtvKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKGkscyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIHgoZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGEsbyl7ZnVuY3Rpb24gaShlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKGUpe28oZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2goZSl7byhlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/YShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiByP3Q6bmV3IHIoKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4oaSxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9dmFyIFM7IWZ1bmN0aW9uKGUpe2UuZm9ybVBvc3Q9ImZvcm1fcG9zdCIsZS5xdWVyeT0icXVlcnkifShTfHwoUz17fSkpO3ZhciBFOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0oRXx8KEU9e30pKTt2YXIgVCxBPSJyZWZyZXNoX3Rva2VuX3RpbWVyIixDPVsiUlMyNTYiLCJSUzUxMiIsIlJTMzg0IiwiUFMyNTYiXTshZnVuY3Rpb24oZSl7ZS5JbmNsdWRlPSJpbmNsdWRlIixlLlNhbWVPcmlnaW49InNhbWUtb3JpZ2luIixlLk9taXQ9Im9taXQifShUfHwoVD17fSkpO3ZhciBEPXMoKGZ1bmN0aW9uIGUodCxyLG4pe28odGhpcyxlKSx0aGlzLm1lc3NhZ2U9bix0aGlzLm5hbWU9cix0aGlzLmNvZGU9dCxPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywodGhpcyBpbnN0YW5jZW9mIGU/dGhpcy5jb25zdHJ1Y3Rvcjp2b2lkIDApLnByb3RvdHlwZSl9KSksTz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJmaWx0ZXJDbGFpbXNGcm9tSURUb2tlblBheWxvYWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PU9iamVjdC5hc3NpZ24oe30sZSk7bnVsbD09dHx8ZGVsZXRlIHQuaXNzLG51bGw9PXR8fGRlbGV0ZSB0LmF1ZCxudWxsPT10fHxkZWxldGUgdC5leHAsbnVsbD09dHx8ZGVsZXRlIHQuaWF0LG51bGw9PXR8fGRlbGV0ZSB0LmFjcixudWxsPT10fHxkZWxldGUgdC5hbXIsbnVsbD09dHx8ZGVsZXRlIHQuYXpwLG51bGw9PXR8fGRlbGV0ZSB0LmF1dGhfdGltZSxudWxsPT10fHxkZWxldGUgdC5ub25jZSxudWxsPT10fHxkZWxldGUgdC5jX2hhc2gsbnVsbD09dHx8ZGVsZXRlIHQuYXRfaGFzaCxudWxsPT10fHxkZWxldGUgdC5uYmYsbnVsbD09dHx8ZGVsZXRlIHQuaXNrLG51bGw9PXR8fGRlbGV0ZSB0LnNpZDt2YXIgcj17fTtyZXR1cm4gT2JqZWN0LmVudHJpZXModCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9eShlLDIpLG49dFswXSxhPXRbMV0sbz1uLnNwbGl0KCJfIikubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiAwPT09dD9lOltlWzBdLnRvVXBwZXJDYXNlKCldLmNvbmNhdChiKGUuc2xpY2UoMSkpKS5qb2luKCIiKX0pKS5qb2luKCIiKTtyW29dPWF9KSkscn19LHtrZXk6ImdldFRva2VuUmVxdWVzdEhlYWRlcnMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJue0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9fX0se2tleToiZ2VuZXJhdGVTdGF0ZVBhcmFtRm9yUmVxdWVzdENvcnJlbGF0aW9uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXBhcnNlSW50KGUuc3BsaXQoIiMiKVsxXSk7cmV0dXJuIHQ/IiIuY29uY2F0KHQsIl9yZXF1ZXN0XyIpLmNvbmNhdChyKToicmVxdWVzdF8iLmNvbmNhdChyKX19LHtrZXk6ImV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiJwa2NlX2NvZGVfdmVyaWZpZXIjIi5jb25jYXQocGFyc2VJbnQoZS5zcGxpdCgicmVxdWVzdF8iKVsxXSkpfX1dKSxlfSgpO08uZ2V0VGVuYW50RG9tYWluRnJvbUlkVG9rZW5QYXlsb2FkPWZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXToiQCIscj1lLnN1Yi5zcGxpdCh0KTtyZXR1cm4gci5sZW5ndGg+Mj9yW3IubGVuZ3RoLTFdOiIifTt2YXIgUCxJLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7dmFyIG49dGhpcztvKHRoaXMsZSksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSx0aGlzLl9jcnlwdG9IZWxwZXI9cn1yZXR1cm4gcyhlLFt7a2V5OiJyZXNvbHZlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHI9e30sdC5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIiwobi5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG4uZW5kcG9pbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTtyW3RdPShudWxsPT1uP3ZvaWQgMDpuLmVuZHBvaW50cyk/bi5lbmRwb2ludHNbZV06IiJ9KSksT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGUpLHIpKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzRXhwbGljaXRseSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gdD17fSxlLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6aWYocj1lLnNlbnQsbj1bImF1dGhvcml6YXRpb25fZW5kcG9pbnQiLCJlbmRfc2Vzc2lvbl9lbmRwb2ludCIsImp3a3NfdXJpIiwiY2hlY2tfc2Vzc2lvbl9pZnJhbWUiLCJyZXZvY2F0aW9uX2VuZHBvaW50IiwidG9rZW5fZW5kcG9pbnQiLCJpc3N1ZXIiLCJ1c2VyaW5mb19lbmRwb2ludCJdLHIuZW5kcG9pbnRzJiZPYmplY3Qua2V5cyhudWxsPT1yP3ZvaWQgMDpyLmVuZHBvaW50cykuZXZlcnkoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3JldHVybiBuLmluY2x1ZGVzKHQpfSkpKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9IRUxQRVItUkVFLU5GMDEiLCJObyByZXF1aXJlZCBlbmRwb2ludHMuIiwiUmVxdWlyZWQgb2lkYyBlbmRwb2ludHMgYXJlIG5vdCBkZWZpbmVkIik7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIiwoci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKHIuZW5kcG9pbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTt0W25dPShudWxsPT1yP3ZvaWQgMDpyLmVuZHBvaW50cyk/ci5lbmRwb2ludHNbZV06IiJ9KSksT2JqZWN0LmFzc2lnbih7fSx0KSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVzb2x2ZUVuZHBvaW50c0J5QmFzZVVSTCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdCxyLG4sYTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihyPWUuc2VudCxuPXIuYmFzZVVybCl7ZS5uZXh0PTc7YnJlYWt9dGhyb3cgbmV3IEQoIkpTLUFVVEhfSEVMUEVSX1JFQk8tTkYwMSIsIkJhc2UgVVJMIG5vdCBkZWZpbmVkLiIsIkJhc2UgVVJMIGlzIG5vdCBkZWZpbmVkIGluIEF1dGhDbGllbnQgY29uZmlnLiIpO2Nhc2UgNzpyZXR1cm4gci5lbmRwb2ludHMmJk9iamVjdC5rZXlzKHIuZW5kcG9pbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbj1lLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKTt0W25dPShudWxsPT1yP3ZvaWQgMDpyLmVuZHBvaW50cyk/ci5lbmRwb2ludHNbZV06IiJ9KSksYT17YXV0aG9yaXphdGlvbl9lbmRwb2ludDoiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL2F1dGhvcml6ZSIpLGVuZF9zZXNzaW9uX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vaWRjL2xvZ291dCIpLGlzc3VlcjoiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL3Rva2VuIiksandrc191cmk6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29hdXRoMi9qd2tzIiksY2hlY2tfc2Vzc2lvbl9pZnJhbWU6IiIuY29uY2F0KG4pLmNvbmNhdCgiL29pZGMvY2hlY2tzZXNzaW9uIikscmV2b2NhdGlvbl9lbmRwb2ludDoiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL3Jldm9rZSIpLHRva2VuX2VuZHBvaW50OiIiLmNvbmNhdChuKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSx1c2VyaW5mb19lbmRwb2ludDoiIi5jb25jYXQobikuY29uY2F0KCIvb2F1dGgyL3VzZXJpbmZvIil9LGUuYWJydXB0KCJyZXR1cm4iLE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxhKSx0KSk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToidmFsaWRhdGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLGEsbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50Lmp3a3NfdXJpLHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihuPXQuc2VudCxyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9ODticmVha310aHJvdyBuZXcgRCgiSlNfQVVUSF9IRUxQRVItVklULU5GMDEiLCJKV0tTIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyBKV0tTIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIEpXS1MgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiB0LnByZXY9OCx0Lm5leHQ9MTEsZmV0Y2gocix7Y3JlZGVudGlhbHM6bi5zZW5kQ29va2llc0luUmVxdWVzdHM/VC5JbmNsdWRlOlQuU2FtZU9yaWdpbn0pO2Nhc2UgMTE6YT10LnNlbnQsdC5uZXh0PTE3O2JyZWFrO2Nhc2UgMTQ6dGhyb3cgdC5wcmV2PTE0LHQudDA9dC5jYXRjaCg4KSxuZXcgRCgiSlMtQVVUSF9IRUxQRVItVklULU5FMDIiLCJSZXF1ZXN0IHRvIGp3a3MgZW5kcG9pbnQgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgandrcyBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMTc6aWYoMjAwPT09YS5zdGF0dXMmJmEub2spe3QubmV4dD0yNDticmVha31yZXR1cm4gdC50MT1ELHQudDI9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciBqd2tzIHJlcXVlc3QgKCIuY29uY2F0KGEuc3RhdHVzVGV4dCwiKS4iKSx0Lm5leHQ9MjIsYS5qc29uKCk7Y2FzZSAyMjp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9IRUxQRVItVklULUhFMDMiLHQudDIsdC50Myk7Y2FzZSAyNDpyZXR1cm4gdC5uZXh0PTI2LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyNjpyZXR1cm4gbz10LnNlbnQuaXNzdWVyLHQubmV4dD0yOSxhLmpzb24oKTtjYXNlIDI5OnJldHVybiBpPXQuc2VudCxzPWkua2V5cyx0Lm5leHQ9MzMsdGhpcy5fY3J5cHRvSGVscGVyLmdldEpXS0ZvclRoZUlkVG9rZW4oZS5zcGxpdCgiLiIpWzBdLHMpO2Nhc2UgMzM6cmV0dXJuIHU9dC5zZW50LHQudDQ9dGhpcy5fY3J5cHRvSGVscGVyLHQudDU9ZSx0LnQ2PXUsdC5uZXh0PTM5LHRoaXMuX2NvbmZpZygpO2Nhc2UgMzk6cmV0dXJuIHQudDc9dC5zZW50LmNsaWVudElELHQudDg9bnVsbCE9bz9vOiIiLHQudDk9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSkuc3ViLHQubmV4dD00NCx0aGlzLl9jb25maWcoKTtjYXNlIDQ0OnJldHVybiB0LnQxMD10LnNlbnQuY2xvY2tUb2xlcmFuY2UsdC5hYnJ1cHQoInJldHVybiIsdC50NC5pc1ZhbGlkSWRUb2tlbi5jYWxsKHQudDQsdC50NSx0LnQ2LHQudDcsdC50OCx0LnQ5LHQudDEwKSk7Y2FzZSA0NjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzgsMTRdXSl9KSkpfX0se2tleToiZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyLG4sYSxvPXRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKGUpLGk9Ty5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQobykscz1udWxsIT09KHQ9bnVsbD09bz92b2lkIDA6by51c2VybmFtZSkmJnZvaWQgMCE9PXQ/dDoiIix1PW51bGwhPT0ocj1vLmdpdmVuX25hbWUpJiZ2b2lkIDAhPT1yP3I6IiIsYz1udWxsIT09KG49by5mYW1pbHlfbmFtZSkmJnZvaWQgMCE9PW4/bjoiIixmPXUmJmM/IiIuY29uY2F0KHUsIiAiKS5jb25jYXQoYyk6dXx8Y3x8IiIsbD1udWxsIT09KGE9by5wcmVmZXJyZWRfdXNlcm5hbWUpJiZ2b2lkIDAhPT1hP2E6ZjtyZXR1cm4gT2JqZWN0LmFzc2lnbih7ZGlzcGxheU5hbWU6bCx0ZW5hbnREb21haW46aSx1c2VybmFtZTpzfSxPLmZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZChvKSl9fSx7a2V5OiJyZXBsYWNlQ3VzdG9tR3JhbnRUZW1wbGF0ZVRhZ3MiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsbyxpO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9Im9wZW5pZCIsbi5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOnJldHVybiBvPW4uc2VudCxuLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSA2OnJldHVybiBpPW4uc2VudCxuLmFicnVwdCgicmV0dXJuIiwoby5zY29wZSYmby5zY29wZS5sZW5ndGg+MCYmKG8uc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHxvLnNjb3BlLnB1c2goIm9wZW5pZCIpLGE9by5zY29wZS5qb2luKCIgIikpLGUucmVwbGFjZSgie3t0b2tlbn19IixpLmFjY2Vzc190b2tlbikucmVwbGFjZSgie3t1c2VybmFtZX19Iix0aGlzLmdldEF1dGhlbnRpY2F0ZWRVc2VySW5mbyhpLmlkX3Rva2VuKS51c2VybmFtZSkucmVwbGFjZSgie3tzY29wZX19IixhKS5yZXBsYWNlKCJ7e2NsaWVudElEfX0iLG8uY2xpZW50SUQpLnJlcGxhY2UoInt7Y2xpZW50U2VjcmV0fX0iLG51bGwhPT0ocj1vLmNsaWVudFNlY3JldCkmJnZvaWQgMCE9PXI/cjoiIikpKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlVGVtcG9yYXJ5RGF0YShlKTtjYXNlIDI6cmV0dXJuIHQubmV4dD00LHRoaXMuX2RhdGFMYXllci5yZW1vdmVTZXNzaW9uRGF0YShlKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImhhbmRsZVRva2VuUmVzcG9uc2UiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDppZigyMDA9PT1lLnN0YXR1cyYmZS5vayl7ci5uZXh0PTc7YnJlYWt9cmV0dXJuIHIudDA9RCxyLnQxPSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoZS5zdGF0dXNUZXh0LCIpLiIpLHIubmV4dD01LGUuanNvbigpO2Nhc2UgNTp0aHJvdyByLnQyPXIuc2VudCxuZXcgci50MCgiSlMtQVVUSF9IRUxQRVItSFRSLU5FMDEiLHIudDEsci50Mik7Y2FzZSA3OnJldHVybiByLm5leHQ9OSxlLmpzb24oKTtjYXNlIDk6cmV0dXJuKG49ci5zZW50KS5jcmVhdGVkX2F0PShuZXcgRGF0ZSkuZ2V0VGltZSgpLHIubmV4dD0xMyx0aGlzLl9jb25maWcoKTtjYXNlIDEzOmlmKCFyLnNlbnQudmFsaWRhdGVJRFRva2VuKXtyLm5leHQ9MTU7YnJlYWt9cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHRoaXMudmFsaWRhdGVJZFRva2VuKG4uaWRfdG9rZW4pLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHgobyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKG4sdCk7Y2FzZSAyOnJldHVybiByPXthY2Nlc3NUb2tlbjpuLmFjY2Vzc190b2tlbixjcmVhdGVkQXQ6bi5jcmVhdGVkX2F0LGV4cGlyZXNJbjpuLmV4cGlyZXNfaW4saWRUb2tlbjpuLmlkX3Rva2VuLHJlZnJlc2hUb2tlbjpuLnJlZnJlc2hfdG9rZW4sc2NvcGU6bi5zY29wZSx0b2tlblR5cGU6bi50b2tlbl90eXBlfSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUocikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDE1OnJldHVybiBhPXthY2Nlc3NUb2tlbjpuLmFjY2Vzc190b2tlbixjcmVhdGVkQXQ6bi5jcmVhdGVkX2F0LGV4cGlyZXNJbjpuLmV4cGlyZXNfaW4saWRUb2tlbjpuLmlkX3Rva2VuLHJlZnJlc2hUb2tlbjpuLnJlZnJlc2hfdG9rZW4sc2NvcGU6bi5zY29wZSx0b2tlblR5cGU6bi50b2tlbl90eXBlfSxyLm5leHQ9MTgsdGhpcy5fZGF0YUxheWVyLnNldFNlc3Npb25EYXRhKG4sdCk7Y2FzZSAxODpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKGEpKTtjYXNlIDE5OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZW5lcmF0ZVBLQ0VLZXkiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YShlKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LGE9W10sT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5zdGFydHNXaXRoKCJwa2NlX2NvZGVfdmVyaWZpZXIiKSYmYS5wdXNoKGUpfSkpLG89YS5zb3J0KCkucG9wKCksci5hYnJ1cHQoInJldHVybiIsInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChudWxsIT09KHQ9bnVsbD09bz92b2lkIDA6by5zcGxpdCgiIyIpWzFdKSYmdm9pZCAwIT09dD90OiItMSIpKzEpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19XSksZX0oKSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtvKHRoaXMsZSksdGhpcy5fY3J5cHRvVXRpbHM9dH1yZXR1cm4gcyhlLFt7a2V5OiJnZXRDb2RlVmVyaWZpZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTEVuY29kZSh0aGlzLl9jcnlwdG9VdGlscy5nZW5lcmF0ZVJhbmRvbUJ5dGVzKDMyKSl9fSx7a2V5OiJnZXRDb2RlQ2hhbGxlbmdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmhhc2hTaGEyNTYoZSkpfX0se2tleToiZ2V0SldLRm9yVGhlSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcixuPUpTT04ucGFyc2UodGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRGVjb2RlKGUpKSxhPVIodCk7dHJ5e2ZvcihhLnMoKTshKHI9YS5uKCkpLmRvbmU7KXt2YXIgbz1yLnZhbHVlO2lmKG4ua2lkPT09by5raWQpcmV0dXJuIG99fWNhdGNoKGUpe2EuZShlKX1maW5hbGx5e2EuZigpfXRocm93IG5ldyBEKCJKUy1DUllQVE9fVVRJTC1HSkZUSVQtSVYwMSIsImtpZCBub3QgZm91bmQuIiwiRmFpbGVkIHRvIGZpbmQgdGhlICdraWQnIHNwZWNpZmllZCBpbiB0aGUgaWRfdG9rZW4uICdraWQnIGZvdW5kIGluIHRoZSBoZWFkZXIgOiAiK24ua2lkKyIsIEV4cGVjdGVkIHZhbHVlczogIit0Lm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2lkfSkpLmpvaW4oIiwgIikpfX0se2tleToiaXNWYWxpZElkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMudmVyaWZ5Snd0KGUsdCxDLHIsbixhLG8pLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlP1Byb21pc2UucmVzb2x2ZSghMCk6UHJvbWlzZS5yZWplY3QobmV3IEQoIkpTLUNSWVBUT19IRUxQRVItSVZJVC1JVjAxIiwiSW52YWxpZCBJRCB0b2tlbi4iLCJJRCB0b2tlbiB2YWxpZGF0aW9uIHJldHVybmVkIGZhbHNlIikpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCI9PT0obnVsbD09ZT92b2lkIDA6ZS5jb2RlKSYmIm5iZiI9PT0obnVsbD09ZT92b2lkIDA6ZS5jbGFpbSk/UHJvbWlzZS5yZWplY3QobmV3IEQoIkpTLUNSWVBUT19VVElMUy1JVklULUlWMDIiLCJKV1QgTkJGIENMQUlNIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIE5CRiBjbGFpbSB2YWxpZGF0aW9uIGhhcyBiZWVuIGZhaWxlZCIpKTpQcm9taXNlLnJlamVjdChuZXcgRCgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMyIsIkpXVCBWQUxJREFUSU9OIEZBSUxFRCIsIkpXVCB2YWxpZGF0aW9uIGhhcyBiZWVuIGZhaWxlZCIpKX0pKX19LHtrZXk6ImRlY29kZUlEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3RyeXt2YXIgdD10aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZS5zcGxpdCgiLiIpWzFdKTtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChlKXt0aHJvdyBuZXcgRCgiSlMtQ1JZUFRPX1VUSUwtRElULUlWMDEiLCJEZWNvZGluZyBJRCB0b2tlbiBmYWlsZWQuIixlKX19fV0pLGV9KCksSD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXt2YXIgbj10aGlzO28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz1yLHRoaXMuX2NyeXB0b0hlbHBlcj1uZXcgTChyKSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcj1uZXcgVSh0LHRoaXMuX2NyeXB0b0hlbHBlciksdGhpcy5fZGF0YUxheWVyPXQsdGhpcy5fY29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHgobix2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1yZXR1cm4gcyhlLFt7a2V5OiJnZXRBdXRob3JpemF0aW9uVVJMIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG4sYTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgaSxzLHUsYyxmLGwsaCxwLGQsdixnLG0sYix3LGssXyx4LFMsRSxUO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlcigiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIpO2Nhc2UgMjpyZXR1cm4gaT1vLnNlbnQsby5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9by5zZW50LGkmJjAhPT1pLnRyaW0oKS5sZW5ndGgpe28ubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR0FVLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGVuZHBvaW50IGZvdW5kLiIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSBmcm9tIHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSBhdXRob3JpemF0aW9uIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4gdT1uZXcgVVJMKGkpLChjPW5ldyBNYXApLnNldCgicmVzcG9uc2VfdHlwZSIsImNvZGUiKSxjLnNldCgiY2xpZW50X2lkIixzLmNsaWVudElEKSxmPSJvcGVuaWQiLHMuc2NvcGUmJnMuc2NvcGUubGVuZ3RoPjAmJihzLnNjb3BlLmluY2x1ZGVzKCJvcGVuaWQiKXx8cy5zY29wZS5wdXNoKCJvcGVuaWQiKSxmPXMuc2NvcGUuam9pbigiICIpKSxjLnNldCgic2NvcGUiLGYpLGMuc2V0KCJyZWRpcmVjdF91cmkiLHMuc2lnbkluUmVkaXJlY3RVUkwpLHMucmVzcG9uc2VNb2RlJiZjLnNldCgicmVzcG9uc2VfbW9kZSIscy5yZXNwb25zZU1vZGUpLG8ubmV4dD0xNCx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZW5lcmF0ZVBLQ0VLZXkodCk7Y2FzZSAxNDppZihsPW8uc2VudCwhcy5lbmFibGVQS0NFKXtvLm5leHQ9MjE7YnJlYWt9cmV0dXJuIGg9bnVsbD09PShyPXRoaXMuX2NyeXB0b0hlbHBlcil8fHZvaWQgMD09PXI/dm9pZCAwOnIuZ2V0Q29kZVZlcmlmaWVyKCkscD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlQ2hhbGxlbmdlKGgpLG8ubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihsLGgsdCk7Y2FzZSAxOTpjLnNldCgiY29kZV9jaGFsbGVuZ2VfbWV0aG9kIiwiUzI1NiIpLGMuc2V0KCJjb2RlX2NoYWxsZW5nZSIscCk7Y2FzZSAyMTppZihzLnByb21wdCYmYy5zZXQoInByb21wdCIscy5wcm9tcHQpLGQ9ZSlmb3Iodj0wLGc9T2JqZWN0LmVudHJpZXMoZCk7djxnLmxlbmd0aDt2KyspbT15KGdbdl0sMiksYj1tWzBdLHc9bVsxXSwiIiE9YiYmIiIhPXcmJiJzdGF0ZSIhPT1iJiYoaz1iLnJlcGxhY2UoL1tBLVpdL2csKGZ1bmN0aW9uKGUpe3JldHVybiJfIi5jb25jYXQoZS50b0xvd2VyQ2FzZSgpKX0pKSxjLnNldChrLHcudG9TdHJpbmcoKSkpO2Muc2V0KCJzdGF0ZSIsTy5nZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24obCxkP251bGw9PT0oYT1kLnN0YXRlKXx8dm9pZCAwPT09YT92b2lkIDA6YS50b1N0cmluZygpOiIiKSksXz1SKGMuZW50cmllcygpKTt0cnl7Zm9yKF8ucygpOyEoeD1fLm4oKSkuZG9uZTspUz15KHgudmFsdWUsMiksRT1TWzBdLFQ9U1sxXSx1LnNlYXJjaFBhcmFtcy5hcHBlbmQoRSxUKX1jYXRjaChlKXtfLmUoZSl9ZmluYWxseXtfLmYoKX1yZXR1cm4gby5hYnJ1cHQoInJldHVybiIsdS50b1N0cmluZygpKTtjYXNlIDI4OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvLGkscyx1LGM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihhKXtmb3IoOzspc3dpdGNoKGEucHJldj1hLm5leHQpe2Nhc2UgMDpyZXR1cm4gYS5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG89YS5zZW50LnRva2VuX2VuZHBvaW50LGEubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihpPWEuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXthLm5leHQ9ODticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDEtTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6aWYoYS50MD10LCFhLnQwKXthLm5leHQ9MTI7YnJlYWt9cmV0dXJuIGEubmV4dD0xMix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIoInNlc3Npb25fc3RhdGUiLHQsbik7Y2FzZSAxMjppZigocz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KGkuY2xpZW50SUQpKSxpLmNsaWVudFNlY3JldCYmaS5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZzLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoaS5jbGllbnRTZWNyZXQpKSx1PWUscy5wdXNoKCJjb2RlPSIuY29uY2F0KHUpKSxzLnB1c2goImdyYW50X3R5cGU9YXV0aG9yaXphdGlvbl9jb2RlIikscy5wdXNoKCJyZWRpcmVjdF91cmk9Ii5jb25jYXQoaS5zaWduSW5SZWRpcmVjdFVSTCkpLGEudDE9aS5lbmFibGVQS0NFLCFhLnQxKXthLm5leHQ9Mjk7YnJlYWt9cmV0dXJuIGEudDI9cyxhLnQzPSJjb2RlX3ZlcmlmaWVyPSIsYS5uZXh0PTI0LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKE8uZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShyKSxuKTtjYXNlIDI0OnJldHVybiBhLnQ0PWEuc2VudCxhLnQ1PWEudDMuY29uY2F0LmNhbGwoYS50MyxhLnQ0KSxhLnQyLnB1c2guY2FsbChhLnQyLGEudDUpLGEubmV4dD0yOSx0aGlzLl9kYXRhTGF5ZXIucmVtb3ZlVGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihPLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0ociksbik7Y2FzZSAyOTpyZXR1cm4gYS5wcmV2PTI5LGEubmV4dD0zMixmZXRjaChvLHtib2R5OnMuam9pbigiJiIpLGNyZWRlbnRpYWxzOmkuc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMzI6Yz1hLnNlbnQsYS5uZXh0PTM4O2JyZWFrO2Nhc2UgMzU6dGhyb3cgYS5wcmV2PTM1LGEudDY9YS5jYXRjaCgyOSksbmV3IEQoIkpTLUFVVEhfQ09SRS1SQVQxLU5FMDIiLCJSZXF1ZXN0aW5nIGFjY2VzcyB0b2tlbiBmYWlsZWQiLG51bGwhPWEudDY/YS50NjoiVGhlIHJlcXVlc3QgdG8gZ2V0IHRoZSBhY2Nlc3MgdG9rZW4gZnJvbSB0aGUgc2VydmVyIGZhaWxlZC4iKTtjYXNlIDM4OmlmKGMub2spe2EubmV4dD00NTticmVha31yZXR1cm4gYS50Nz1ELGEudDg9IlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCB3aXRoICIuY29uY2F0KGMuc3RhdHVzVGV4dCksYS5uZXh0PTQzLGMuanNvbigpO2Nhc2UgNDM6dGhyb3cgYS50OT1hLnNlbnQsbmV3IGEudDcoIkpTLUFVVEhfQ09SRS1SQVQxLUhFMDMiLGEudDgsYS50OSk7Y2FzZSA0NTpyZXR1cm4gYS5uZXh0PTQ3LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmhhbmRsZVRva2VuUmVzcG9uc2UoYyxuKTtjYXNlIDQ3OnJldHVybiBhLmFicnVwdCgicmV0dXJuIixhLnNlbnQpO2Nhc2UgNDg6Y2FzZSJlbmQiOnJldHVybiBhLnN0b3AoKX19KSxhLHRoaXMsW1syOSwzNV1dKX0pKSl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LnRva2VuX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTpyZXR1cm4gbj10LnNlbnQsdC5uZXh0PTgsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgODppZigoYT10LnNlbnQpLnJlZnJlc2hfdG9rZW4pe3QubmV4dD0xMTticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDItTkYwMSIsIk5vIHJlZnJlc2ggdG9rZW4gZm91bmQuIiwiVGhlcmUgd2FzIG5vIHJlZnJlc2ggdG9rZW4gZm91bmQuIEFzZ2FyZGVvIGRvZXNuJ3QgcmV0dXJuIGEgcmVmcmVzaCB0b2tlbiBpZiB0aGUgcmVmcmVzaCB0b2tlbiBncmFudCBpcyBub3QgZW5hYmxlZC4iKTtjYXNlIDExOmlmKHImJjAhPT1yLnRyaW0oKS5sZW5ndGgpe3QubmV4dD0xMzticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDItTkYwMiIsIk5vIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCB3YXMgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZWZyZXNoIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgMTM6cmV0dXJuKG89W10pLnB1c2goImNsaWVudF9pZD0iLmNvbmNhdChuLmNsaWVudElEKSksby5wdXNoKCJyZWZyZXNoX3Rva2VuPSIuY29uY2F0KGEucmVmcmVzaF90b2tlbikpLG8ucHVzaCgiZ3JhbnRfdHlwZT1yZWZyZXNoX3Rva2VuIiksbi5jbGllbnRTZWNyZXQmJm4uY2xpZW50U2VjcmV0LnRyaW0oKS5sZW5ndGg+MCYmby5wdXNoKCJjbGllbnRfc2VjcmV0PSIuY29uY2F0KG4uY2xpZW50U2VjcmV0KSksdC5wcmV2PTE1LHQubmV4dD0xOCxmZXRjaChyLHtib2R5Om8uam9pbigiJiIpLGNyZWRlbnRpYWxzOm4uc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMTg6aT10LnNlbnQsdC5uZXh0PTI0O2JyZWFrO2Nhc2UgMjE6dGhyb3cgdC5wcmV2PTIxLHQudDA9dC5jYXRjaCgxNSksbmV3IEQoIkpTLUFVVEhfQ09SRS1SQVQyLU5SMDMiLCJSZWZyZXNoIGFjY2VzcyB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPXQudDA/dC50MDoiVGhlIHJlcXVlc3QgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZhaWxlZC4iKTtjYXNlIDI0OmlmKGkub2spe3QubmV4dD0zMTticmVha31yZXR1cm4gdC50MT1ELHQudDI9IlJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCB3aXRoICIuY29uY2F0KGkuc3RhdHVzVGV4dCksdC5uZXh0PTI5LGkuanNvbigpO2Nhc2UgMjk6dGhyb3cgdC50Mz10LnNlbnQsbmV3IHQudDEoIkpTLUFVVEhfQ09SRS1SQVQyLUhFMDQiLHQudDIsdC50Myk7Y2FzZSAzMTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShpLGUpKTtjYXNlIDMyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTUsMjFdXSl9KSkpfX0se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5yZXZvY2F0aW9uX2VuZHBvaW50LHQubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihuPXQuc2VudCxyJiYwIT09ci50cmltKCkubGVuZ3RoKXt0Lm5leHQ9ODticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9DT1JFLVJBVDMtTkYwMSIsIk5vIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgZm91bmQuIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODpyZXR1cm4oYT1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KG4uY2xpZW50SUQpKSx0LnQwPWEsdC50MT0idG9rZW49Iix0Lm5leHQ9MTQsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMTQ6cmV0dXJuIHQudDI9dC5zZW50LmFjY2Vzc190b2tlbix0LnQzPXQudDEuY29uY2F0LmNhbGwodC50MSx0LnQyKSx0LnQwLnB1c2guY2FsbCh0LnQwLHQudDMpLGEucHVzaCgidG9rZW5fdHlwZV9oaW50PWFjY2Vzc190b2tlbiIpLHQucHJldj0xOCx0Lm5leHQ9MjEsZmV0Y2gocix7Ym9keTphLmpvaW4oIiYiKSxjcmVkZW50aWFsczpuLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9ULkluY2x1ZGU6VC5TYW1lT3JpZ2luLGhlYWRlcnM6bmV3IEhlYWRlcnMoTy5nZXRUb2tlblJlcXVlc3RIZWFkZXJzKCkpLG1ldGhvZDoiUE9TVCJ9KTtjYXNlIDIxOm89dC5zZW50LHQubmV4dD0yNzticmVhaztjYXNlIDI0OnRocm93IHQucHJldj0yNCx0LnQ0PXQuY2F0Y2goMTgpLG5ldyBEKCJKUy1BVVRIX0NPUkUtUkFUMy1ORTAyIiwiVGhlIHJlcXVlc3QgdG8gcmV2b2tlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIixudWxsIT10LnQ0P3QudDQ6IlRoZSByZXF1ZXN0IHNlbnQgdG8gcmV2b2tlIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjc6aWYoMjAwPT09by5zdGF0dXMmJm8ub2spe3QubmV4dD0zNDticmVha31yZXR1cm4gdC50NT1ELHQudDY9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciByZXZva2UgYWNjZXNzIHRva2VuIHJlcXVlc3QgKCIuY29uY2F0KG8uc3RhdHVzVGV4dCwiKS4iKSx0Lm5leHQ9MzIsby5qc29uKCk7Y2FzZSAzMjp0aHJvdyB0LnQ3PXQuc2VudCxuZXcgdC50NSgiSlMtQVVUSF9DT1JFLVJBVDMtSEUwMyIsdC50Nix0LnQ3KTtjYXNlIDM0OnJldHVybiB0LmFicnVwdCgicmV0dXJuIiwodGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSksUHJvbWlzZS5yZXNvbHZlKG8pKSk7Y2FzZSAzNTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzE4LDI0XV0pfSkpKX19LHtrZXk6InJlcXVlc3RDdXN0b21HcmFudCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8saSxzLHUsYyxmPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIubmV4dD01LHRoaXMuX2NvbmZpZygpO2Nhc2UgNTppZihhPXIuc2VudCwobz1lLnRva2VuRW5kcG9pbnQmJjAhPT1lLnRva2VuRW5kcG9pbnQudHJpbSgpLmxlbmd0aD9lLnRva2VuRW5kcG9pbnQ6bi50b2tlbl9lbmRwb2ludCkmJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtUkNHLU5GMDEiLCJUb2tlbiBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gdG9rZW4gZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiByLm5leHQ9MTAsUHJvbWlzZS5hbGwoT2JqZWN0LmVudHJpZXMoZS5kYXRhKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciByPXkoZSwyKSxuPXJbMF0sYT1yWzFdO3JldHVybiB4KGYsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciByO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyhhLHQpO2Nhc2UgMjpyZXR1cm4gcj1lLnNlbnQsZS5hYnJ1cHQoInJldHVybiIsIiIuY29uY2F0KG4sIj0iKS5jb25jYXQocikpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpKTtjYXNlIDEwOmlmKGk9ci5zZW50LHM9T2JqZWN0LmFzc2lnbih7fSxPLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksci50MD1lLmF0dGFjaFRva2VuLCFyLnQwKXtyLm5leHQ9MjM7YnJlYWt9cmV0dXJuIHIudDE9T2JqZWN0LHIudDI9T2JqZWN0LmFzc2lnbih7fSxzKSxyLnQzPSJCZWFyZXIgIixyLm5leHQ9MTksdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKHQpO2Nhc2UgMTk6ci50ND1yLnNlbnQuYWNjZXNzX3Rva2VuLHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDY9e0F1dGhvcml6YXRpb246ci50NX0scz1yLnQxLmFzc2lnbi5jYWxsKHIudDEsci50MixyLnQ2KTtjYXNlIDIzOnJldHVybiB1PXtib2R5Omkuam9pbigiJiIpLGNyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1QuSW5jbHVkZTpULlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhzKSxtZXRob2Q6IlBPU1QifSxyLnByZXY9MjQsci5uZXh0PTI3LGZldGNoKG8sdSk7Y2FzZSAyNzpjPXIuc2VudCxyLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMDp0aHJvdyByLnByZXY9MzAsci50Nz1yLmNhdGNoKDI0KSxuZXcgRCgiSlMtQVVUSF9DT1JFLVJDRy1ORTAyIiwiVGhlIGN1c3RvbSBncmFudCByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPXIudDc/ci50NzoiVGhlIHJlcXVlc3Qgc2VudCB0byBnZXQgdGhlIGN1c3RvbSBncmFudCBmYWlsZWQuIik7Y2FzZSAzMzppZigyMDA9PT1jLnN0YXR1cyYmYy5vayl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLnQ4PUQsci50OT0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHRoZSBjdXN0b20gZ3JhbnQgcmVxdWVzdC4gKCIuY29uY2F0KGMuc3RhdHVzVGV4dCwiKSIpLHIubmV4dD0zOCxjLmpzb24oKTtjYXNlIDM4OnRocm93IHIudDEwPXIuc2VudCxuZXcgci50OCgiSlMtQVVUSF9DT1JFLVJDRy1IRTAzIixyLnQ5LHIudDEwKTtjYXNlIDQwOmlmKCFlLnJldHVybnNTZXNzaW9uKXtyLm5leHQ9NDQ7YnJlYWt9ci50MTE9dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShjLHQpLHIubmV4dD00OTticmVhaztjYXNlIDQ0OnJldHVybiByLnQxMj1Qcm9taXNlLHIubmV4dD00NyxjLmpzb24oKTtjYXNlIDQ3OnIudDEzPXIuc2VudCxyLnQxMT1yLnQxMi5yZXNvbHZlLmNhbGwoci50MTIsci50MTMpO2Nhc2UgNDk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDExKTtjYXNlIDUwOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzLFtbMjQsMzBdXSl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LG49dGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKG51bGw9PXI/dm9pZCAwOnIuaWRfdG9rZW4pLGE9e2FsbG93ZWRTY29wZXM6ci5zY29wZSxzZXNzaW9uU3RhdGU6ci5zZXNzaW9uX3N0YXRlfSx0LmFicnVwdCgicmV0dXJuIiwoT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09bltlXSYmIiIhPT1uW2VdJiZudWxsIT09bltlXXx8ZGVsZXRlIG5bZV19KSksYT1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sYSksbikpKTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiByPXQuc2VudC5pZF90b2tlbix0LmFicnVwdCgicmV0dXJuIix0aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihyKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQuaWRfdG9rZW4pO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9jb25maWcoKTtjYXNlIDI6aWYocj10LnNlbnQsdC50MD0hZSwhdC50MCl7dC5uZXh0PTg7YnJlYWt9cmV0dXJuIHQubmV4dD03LHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSA3OnQudDA9dC5zZW50O2Nhc2UgODppZighdC50MCl7dC5uZXh0PTEwO2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSAxMDppZighKG49ci53ZWxsS25vd25FbmRwb2ludCkpe3QubmV4dD0zNjticmVha31yZXR1cm4gdC5wcmV2PTEyLHQubmV4dD0xNSxmZXRjaChuKTtjYXNlIDE1OmlmKDIwMD09PShhPXQuc2VudCkuc3RhdHVzJiZhLm9rKXt0Lm5leHQ9MTg7YnJlYWt9dGhyb3cgbmV3IEVycm9yO2Nhc2UgMTg6dC5uZXh0PTIzO2JyZWFrO2Nhc2UgMjA6dGhyb3cgdC5wcmV2PTIwLHQudDE9dC5jYXRjaCgxMiksbmV3IEQoIkpTLUFVVEhfQ09SRS1HT1BNRC1IRTAxIiwiSW52YWxpZCB3ZWxsLWtub3duIHJlc3BvbnNlIiwiVGhlIHdlbGwga25vd24gZW5kcG9pbnQgcmVzcG9uc2UgaGFzIGJlZW4gZmFpbGVkIHdpdGggYW4gZXJyb3IuIik7Y2FzZSAyMzpyZXR1cm4gdC50Mj10aGlzLl9kYXRhTGF5ZXIsdC50Mz10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlcix0Lm5leHQ9MjcsYS5qc29uKCk7Y2FzZSAyNzpyZXR1cm4gdC50ND10LnNlbnQsdC5uZXh0PTMwLHQudDMucmVzb2x2ZUVuZHBvaW50cy5jYWxsKHQudDMsdC50NCk7Y2FzZSAzMDpyZXR1cm4gdC50NT10LnNlbnQsdC5uZXh0PTMzLHQudDIuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQyLHQudDUpO2Nhc2UgMzM6cmV0dXJuIHQubmV4dD0zNSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgMzU6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDM2OmlmKCFyLmJhc2VVcmwpe3QubmV4dD01MjticmVha31yZXR1cm4gdC5wcmV2PTM3LHQudDY9dGhpcy5fZGF0YUxheWVyLHQubmV4dD00MSx0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5yZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMKCk7Y2FzZSA0MTpyZXR1cm4gdC50Nz10LnNlbnQsdC5uZXh0PTQ0LHQudDYuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQ2LHQudDcpO2Nhc2UgNDQ6dC5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDY6dGhyb3cgdC5wcmV2PTQ2LHQudDg9dC5jYXRjaCgzNyksbmV3IEQoIkpTLUFVVEhfQ09SRS1HT1BNRC1JVjAyIiwiUmVzb2x2aW5nIGVuZHBvaW50cyBmYWlsZWQuIixudWxsIT10LnQ4P3QudDg6IlJlc29sdmluZyBlbmRwb2ludHMgYnkgYmFzZSB1cmwgZmFpbGVkLiIpO2Nhc2UgNDk6cmV0dXJuIHQubmV4dD01MSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgNTE6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDUyOnJldHVybiB0LnByZXY9NTIsdC50OT10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTU2LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5KCk7Y2FzZSA1NjpyZXR1cm4gdC50MTA9dC5zZW50LHQubmV4dD01OSx0LnQ5LnNldE9JRENQcm92aWRlck1ldGFEYXRhLmNhbGwodC50OSx0LnQxMCk7Y2FzZSA1OTp0Lm5leHQ9NjQ7YnJlYWs7Y2FzZSA2MTp0aHJvdyB0LnByZXY9NjEsdC50MTE9dC5jYXRjaCg1MiksbmV3IEQoIkpTLUFVVEhfQ09SRS1HT1BNRC1JVjAzIiwiUmVzb2x2aW5nIGVuZHBvaW50cyBmYWlsZWQuIixudWxsIT10LnQxMT90LnQxMToiUmVzb2x2aW5nIGVuZHBvaW50cyBieSBleHBsaWNpdGx5IGZhaWxlZC4iKTtjYXNlIDY0OnJldHVybiB0Lm5leHQ9NjYsdGhpcy5fZGF0YUxheWVyLnNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiLCEwKTtjYXNlIDY2OnJldHVybiB0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoKSk7Y2FzZSA2NzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzEyLDIwXSxbMzcsNDZdLFs1Miw2MV1dKX0pKSl9fSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZSx0LHIsbixhLG8saSxzLHUsYztyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGYoKXt2YXIgbDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGYpe2Zvcig7Oylzd2l0Y2goZi5wcmV2PWYubmV4dCl7Y2FzZSAwOnJldHVybiBmLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbD1mLnNlbnQsZi5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25FbmRwb2ludDpudWxsIT09KGU9bC5hdXRob3JpemF0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09ZT9lOiIiLGNoZWNrU2Vzc2lvbklmcmFtZTpudWxsIT09KHQ9bC5jaGVja19zZXNzaW9uX2lmcmFtZSkmJnZvaWQgMCE9PXQ/dDoiIixlbmRTZXNzaW9uRW5kcG9pbnQ6bnVsbCE9PShyPWwuZW5kX3Nlc3Npb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1yP3I6IiIsaW50cm9zcGVjdGlvbkVuZHBvaW50Om51bGwhPT0obj1sLmludHJvc3BlY3Rpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1uP246IiIsaXNzdWVyOm51bGwhPT0oYT1sLmlzc3VlcikmJnZvaWQgMCE9PWE/YToiIixqd2tzVXJpOm51bGwhPT0obz1sLmp3a3NfdXJpKSYmdm9pZCAwIT09bz9vOiIiLHJlZ2lzdHJhdGlvbkVuZHBvaW50Om51bGwhPT0oaT1sLnJlZ2lzdHJhdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWk/aToiIixyZXZvY2F0aW9uRW5kcG9pbnQ6bnVsbCE9PShzPWwucmV2b2NhdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PXM/czoiIix0b2tlbkVuZHBvaW50Om51bGwhPT0odT1sLnRva2VuX2VuZHBvaW50KSYmdm9pZCAwIT09dT91OiIiLHVzZXJpbmZvRW5kcG9pbnQ6bnVsbCE9PShjPWwudXNlcmluZm9fZW5kcG9pbnQpJiZ2b2lkIDAhPT1jP2M6IiJ9KTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiBmLnN0b3AoKX19KSxmLHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjppZihhLnQxPXQ9YS5zZW50LGEudDA9bnVsbD09PWEudDEsYS50MCl7YS5uZXh0PTY7YnJlYWt9YS50MD12b2lkIDA9PT10O2Nhc2UgNjppZighYS50MCl7YS5uZXh0PTEwO2JyZWFrfWEudDI9dm9pZCAwLGEubmV4dD0xMTticmVhaztjYXNlIDEwOmEudDI9dC5lbmRfc2Vzc2lvbl9lbmRwb2ludDtjYXNlIDExOnJldHVybiBvPWEudDIsYS5uZXh0PTE0LHRoaXMuX2NvbmZpZygpO2Nhc2UgMTQ6aWYoaT1hLnNlbnQsbyYmMCE9PW8udHJpbSgpLmxlbmd0aCl7YS5uZXh0PTE3O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAxIiwiU2lnbi1vdXQgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHNpZ24tb3V0IGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHNpZ24tb3V0IGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgMTc6cmV0dXJuIGEubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxOTppZihhLnQ0PXI9YS5zZW50LGEudDM9bnVsbD09PWEudDQsYS50Myl7YS5uZXh0PTIzO2JyZWFrfWEudDM9dm9pZCAwPT09cjtjYXNlIDIzOmlmKCFhLnQzKXthLm5leHQ9Mjc7YnJlYWt9YS50NT12b2lkIDAsYS5uZXh0PTI4O2JyZWFrO2Nhc2UgMjc6YS50NT1yLmlkX3Rva2VuO2Nhc2UgMjg6aWYoKHM9YS50NSkmJjAhPT1zLnRyaW0oKS5sZW5ndGgpe2EubmV4dD0zMTticmVha310aHJvdyBuZXcgRCgiSlMtQVVUSF9DT1JFLUdTT1UtTkYwMiIsIklEIHRva2VuIG5vdCBmb3VuZC4iLCJObyBJRCB0b2tlbiBjb3VsZCBiZSBmb3VuZC4gRWl0aGVyIHRoZSBzZXNzaW9uIGluZm9ybWF0aW9uIGlzIGxvc3Qgb3IgeW91IGhhdmUgbm90IHNpZ25lZCBpbi4iKTtjYXNlIDMxOmlmKCh1PW51bGwhPT0obj1udWxsPT1pP3ZvaWQgMDppLnNpZ25PdXRSZWRpcmVjdFVSTCkmJnZvaWQgMCE9PW4/bjpudWxsPT1pP3ZvaWQgMDppLnNpZ25JblJlZGlyZWN0VVJMKSYmMCE9PXUudHJpbSgpLmxlbmd0aCl7YS5uZXh0PTM0O2JyZWFrfXRocm93IG5ldyBEKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAzIiwiTm8gc2lnbi1vdXQgcmVkaXJlY3QgVVJMIGZvdW5kLiIsIlRoZSBzaWduLW91dCByZWRpcmVjdCBVUkwgY2Fubm90IGJlIGZvdW5kIG9yIHRoZSBVUkwgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIE5vIHNpZ24taW4gcmVkaXJlY3QgVVJMIGhhcyBiZWVuIGZvdW5kIGVpdGhlci4gIik7Y2FzZSAzNDpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsIiIuY29uY2F0KG8sIj9pZF90b2tlbl9oaW50PSIpLmNvbmNhdChzLCImcG9zdF9sb2dvdXRfcmVkaXJlY3RfdXJpPSIpLmNvbmNhdCh1LCImc3RhdGU9c2lnbl9vdXRfc3VjY2VzcyIpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLmdldFNpZ25PdXRVUkwoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6aWYoci50MT10PXIuc2VudCxyLnQwPW51bGw9PT1yLnQxLHIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwPT09dDtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPXZvaWQgMCxyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPXQuYWNjZXNzX3Rva2VuO2Nhc2UgMTE6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDIpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1Cb29sZWFuLHQubmV4dD0zLHRoaXMuZ2V0QWNjZXNzVG9rZW4oZSk7Y2FzZSAzOnJldHVybiB0LnQxPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIiwoMCx0LnQwKSh0LnQxKSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihPLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0oZSksdCk7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihPLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCksZSxyKTtjYXNlIDI6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG4uc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSghMCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksTT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksdGhpcy5faWQ9dCx0aGlzLl9zdG9yZT1yfXJldHVybiBzKGUsW3trZXk6InNldERhdGFJbkJ1bGsiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsbyxpLHM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihuKXtmb3IoOzspc3dpdGNoKG4ucHJldj1uLm5leHQpe2Nhc2UgMDpyZXR1cm4gbi5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYobi50MT1yPW4uc2VudCxuLnQwPW51bGwhPT1uLnQxLCFuLnQwKXtuLm5leHQ9NjticmVha31uLnQwPXZvaWQgMCE9PXI7Y2FzZSA2OmlmKCFuLnQwKXtuLm5leHQ9MTA7YnJlYWt9bi50Mj1yLG4ubmV4dD0xMTticmVhaztjYXNlIDEwOm4udDI9bnVsbDtjYXNlIDExOnJldHVybiBhPW4udDIsbz1hJiZKU09OLnBhcnNlKGEpLGk9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LG8pLHQpLHM9SlNPTi5zdHJpbmdpZnkoaSksbi5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxzKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBvLGkscyxjO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKGEudDE9bj1hLnNlbnQsYS50MD1udWxsIT09YS50MSwhYS50MCl7YS5uZXh0PTY7YnJlYWt9YS50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighYS50MCl7YS5uZXh0PTEwO2JyZWFrfWEudDI9bixhLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDphLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gbz1hLnQyLGk9byYmSlNPTi5wYXJzZShvKSxzPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSx1KHt9LHQscikpLGM9SlNPTi5zdHJpbmdpZnkocyksYS5uZXh0PTE3LHRoaXMuX3N0b3JlLnNldERhdGEoZSxjKTtjYXNlIDE3OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcjtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxvLGkscztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihuLnQxPXI9bi5zZW50LG4udDA9bnVsbCE9PW4udDEsIW4udDApe24ubmV4dD02O2JyZWFrfW4udDA9dm9pZCAwIT09cjtjYXNlIDY6aWYoIW4udDApe24ubmV4dD0xMDticmVha31uLnQyPXIsbi5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6bi50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGE9bi50MixvPWEmJkpTT04ucGFyc2UoYSksZGVsZXRlKGk9T2JqZWN0LmFzc2lnbih7fSxvKSlbdF0scz1KU09OLnN0cmluZ2lmeShpKSxuLm5leHQ9MTgsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHMpO2Nhc2UgMTg6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6Il9yZXNvbHZlS2V5Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0PyIiLmNvbmNhdChlLCItIikuY29uY2F0KHRoaXMuX2lkLCItIikuY29uY2F0KHQpOiIiLmNvbmNhdChlLCItIikuY29uY2F0KHRoaXMuX2lkKX19LHtrZXk6InNldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJzZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDp0aGlzLnNldERhdGFJbkJ1bGsodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCksZSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAzOmlmKHQudDI9ZT10LnNlbnQsdC50MT1udWxsIT09dC50MiwhdC50MSl7dC5uZXh0PTc7YnJlYWt9dC50MT12b2lkIDAhPT1lO2Nhc2UgNzppZighdC50MSl7dC5uZXh0PTExO2JyZWFrfXQudDM9ZSx0Lm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTp0LnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gdC50ND10LnQzLHQuYWJydXB0KCJyZXR1cm4iLHQudDAucGFyc2UuY2FsbCh0LnQwLHQudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUpTT04sdC5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFRlbXBvcmFyeURhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDM6aWYoci50Mj10PXIuc2VudCxyLnQxPW51bGwhPT1yLnQyLCFyLnQxKXtyLm5leHQ9NzticmVha31yLnQxPXZvaWQgMCE9PXQ7Y2FzZSA3OmlmKCFyLnQxKXtyLm5leHQ9MTE7YnJlYWt9ci50Mz10LHIubmV4dD0xMjticmVhaztjYXNlIDExOnIudDM9bnVsbDtjYXNlIDEyOnJldHVybiByLnQ0PXIudDMsci5hYnJ1cHQoInJldHVybiIsci50MC5wYXJzZS5jYWxsKHIudDAsci50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6ImdldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLnQwPUpTT04sci5uZXh0PTMsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlQ29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlVGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuVGVtcG9yYXJ5RGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUucmVtb3ZlRGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsZSkpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0Q29uZmlnRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuQ29uZmlnRGF0YSkpO2Nhc2UgMjpyZXR1cm4gcj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsciYmSlNPTi5wYXJzZShyKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHI7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpKTtjYXNlIDI6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLHImJkpTT04ucGFyc2UocilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHQpKTtjYXNlIDI6cmV0dXJuIG49ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLG4mJkpTT04ucGFyc2UobilbZV0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YSh0aGlzLl9yZXNvbHZlS2V5KEUuU2Vzc2lvbkRhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gbj1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLkNvbmZpZ0RhdGEpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJzZXRPSURDUHJvdmlkZXJNZXRhRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InNldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLnNldFZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5UZW1wb3JhcnlEYXRhLHIpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4ubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlNlc3Npb25EYXRhLHIpLGUsdCk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gbi5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5PSURDUHJvdmlkZXJNZXRhRGF0YSksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShFLlRlbXBvcmFyeURhdGEsdCksZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLnJlbW92ZVZhbHVlKHRoaXMuX3Jlc29sdmVLZXkoRS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19XSksZX0oKSxqPXtjbG9ja1RvbGVyYW5jZTozMDAsZW5hYmxlUEtDRTohMCxyZXNwb25zZU1vZGU6Uy5xdWVyeSxzY29wZTpbIm9wZW5pZCJdLHNlbmRDb29raWVzSW5SZXF1ZXN0czohMCx2YWxpZGF0ZUlEVG9rZW46ITB9LE49ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLGUuX2luc3RhbmNlSUQ/ZS5faW5zdGFuY2VJRCs9MTplLl9pbnN0YW5jZUlEPTAsdGhpcy5fZGF0YUxheWVyPW5ldyBNKCJpbnN0YW5jZV8iLmNvbmNhdChlLl9pbnN0YW5jZUlEKSx0KSx0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmU9bmV3IEgodGhpcy5fZGF0YUxheWVyLHIpLGUuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgSCh0aGlzLl9kYXRhTGF5ZXIscil9cmV0dXJuIHMoZSxbe2tleToiaW5pdGlhbGl6ZSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQscixuO3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oYSl7Zm9yKDs7KXN3aXRjaChhLnByZXY9YS5uZXh0KXtjYXNlIDA6cmV0dXJuIGEubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRDb25maWdEYXRhKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGopLGUpLHtzY29wZTpbXS5jb25jYXQoYihudWxsIT09KHQ9ai5zY29wZSkmJnZvaWQgMCE9PXQ/dDpbXSksYihudWxsIT09KG49bnVsbD09PShyPWUuc2NvcGUpfHx2b2lkIDA9PT1yP3ZvaWQgMDpyLmZpbHRlcigoZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIShudWxsPT09KHQ9bnVsbD09aj92b2lkIDA6ai5zY29wZSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuaW5jbHVkZXMoZSkpfSkpKSYmdm9pZCAwIT09bj9uOltdKSl9KSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREYXRhTGF5ZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RhdGFMYXllcn19LHtrZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYT10aGlzO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIG51bGw9PShuPU9iamVjdC5hc3NpZ24oe30sZSkpfHxkZWxldGUgbi5mb3JjZUluaXQsci5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDQ6aWYoIXIuc2VudCl7ci5uZXh0PTg7YnJlYWt9ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChuLHQpLHIubmV4dD05O2JyZWFrO2Nhc2UgODpyLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YShudWxsPT1lP3ZvaWQgMDplLmZvcmNlSW5pdCkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gYS5fYXV0aGVudGljYXRpb25Db3JlLmdldEF1dGhvcml6YXRpb25VUkwobix0KX0pKTtjYXNlIDk6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIudDApO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIG89dGhpcztyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGEpe2Zvcig7Oylzd2l0Y2goYS5wcmV2PWEubmV4dCl7Y2FzZSAwOnJldHVybiBhLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgMjppZighYS5zZW50KXthLm5leHQ9NjticmVha31hLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LHIsbiksYS5uZXh0PTc7YnJlYWs7Y2FzZSA2OmEudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCExKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEFjY2Vzc1Rva2VuKGUsdCxyLG4pfSkpO2Nhc2UgNzpyZXR1cm4gYS5hYnJ1cHQoInJldHVybiIsYS50MCk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gYS5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJzaWduT3V0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2lnbk91dChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRTaWduT3V0VVJMIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0U2lnbk91dFVSTChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDU2VydmljZUVuZHBvaW50cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldERlY29kZWRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRJRFRva2VuKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldEJhc2ljVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRCYXNpY1VzZXJJbmZvKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJldm9rZUFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJldm9rZUFjY2Vzc1Rva2VuKGUpfX0se2tleToicmVmcmVzaEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlZnJlc2hBY2Nlc3NUb2tlbihlKX19LHtrZXk6ImdldEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QWNjZXNzVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVxdWVzdEN1c3RvbUdyYW50KGUsdCl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB4KHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5pc0F1dGhlbnRpY2F0ZWQoZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldFBLQ0VDb2RlKGUsdCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToic2V0UEtDRUNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuc2V0UEtDRUNvZGUoZSx0LHIpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToidXBkYXRlQ29uZmlnIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geCh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUudXBkYXRlQ29uZmlnKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dLFt7a2V5OiJpc1NpZ25PdXRTdWNjZXNzZnVsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmIW59fSx7a2V5OiJkaWRTaWduT3V0RmFpbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IFVSTChlKSxyPXQuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSxuPUJvb2xlYW4odC5zZWFyY2hQYXJhbXMuZ2V0KCJlcnJvciIpKTtyZXR1cm4hIXImJiJzaWduX291dF9zdWNjZXNzIj09PXImJm59fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHgodGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmNsZWFyVXNlclNlc3Npb25EYXRhKGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX1dKSxlfSgpLHE9ImluaXQiOyFmdW5jdGlvbihlKXtlLkxvY2FsU3RvcmFnZT0ibG9jYWxTdG9yYWdlIixlLlNlc3Npb25TdG9yYWdlPSJzZXNzaW9uU3RvcmFnZSIsZS5XZWJXb3JrZXI9IndlYldvcmtlciIsZS5Ccm93c2VyTWVtb3J5PSJicm93c2VyTWVtb3J5In0oUHx8KFA9e30pKSxmdW5jdGlvbihlKXtlLlNpZ25Jbj0ic2lnbi1pbiIsZS5TaWduT3V0PSJzaWduLW91dCIsZS5Jbml0aWFsaXplPSJpbml0aWFsaXplIixlLkh0dHBSZXF1ZXN0U3RhcnQ9Imh0dHAtcmVxdWVzdC1zdGFydCIsZS5IdHRwUmVxdWVzdEZpbmlzaD0iaHR0cC1yZXF1ZXN0LWZpbmlzaCIsZS5IdHRwUmVxdWVzdEVycm9yPSJodHRwLXJlcXVlc3QtZXJyb3IiLGUuSHR0cFJlcXVlc3RTdWNjZXNzPSJodHRwLXJlcXVlc3Qtc3VjY2VzcyIsZS5SZXZva2VBY2Nlc3NUb2tlbj0icmV2b2tlLWFjY2Vzcy10b2tlbiIsZS5DdXN0b21HcmFudD0iY3VzdG9tLWdyYW50IixlLlNpZ25PdXRGYWlsZWQ9InNpZ24tb3V0LWZhaWxlZCJ9KEl8fChJPXt9KSk7dmFyIEs9ImN1c3RvbV9ncmFudF9jb25maWciLEo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gcyhlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LHIsbixhPXRoaXM7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiByPXBhcnNlSW50KHQuZXhwaXJlc19pbiksbj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBfKGEsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihyPD0xMD9yOnItMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBLEpTT04uc3RyaW5naWZ5KG4pKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihBKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksQj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxudWxsLFt7a2V5OiJnZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm57YmxvYjoobnVsbD09ZT92b2lkIDA6ZS5kYXRhKWluc3RhbmNlb2YgQmxvYj9udWxsPT1lP3ZvaWQgMDplLmRhdGE6bnVsbCxkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMH19fSx7a2V5OiJnZW5lcmF0ZUZhaWx1cmVNZXNzYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4obnVsbD09ZT92b2lkIDA6ZS50b0pTT04pJiZkZWxldGUgZS50b0pTT04se2Vycm9yOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksc3VjY2VzczohMX19fV0pLGV9KCksRj0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIFcoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX1mdW5jdGlvbiB6KGUpe2lmKGUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuLmdldD9uOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfSkpLHR9dmFyIFY9e2V4cG9ydHM6e319LFk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHI9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLG49MDtuPHIubGVuZ3RoO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5hcHBseSh0LHIpfX0sRz1ZLFg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztmdW5jdGlvbiAkKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIFooZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gUShlKXtyZXR1cm4iW29iamVjdCBBcnJheUJ1ZmZlcl0iPT09WC5jYWxsKGUpfWZ1bmN0aW9uIGVlKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PT1yKGUpfWZ1bmN0aW9uIHRlKGUpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09WC5jYWxsKGUpKXJldHVybiExO3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIHJlKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1YLmNhbGwoZSl9ZnVuY3Rpb24gbmUoZSx0KXtpZihudWxsIT1lKWlmKCJvYmplY3QiIT09cihlKSYmKGU9W2VdKSwkKGUpKWZvcih2YXIgbj0wLGE9ZS5sZW5ndGg7bjxhO24rKyl0LmNhbGwobnVsbCxlW25dLG4sZSk7ZWxzZSBmb3IodmFyIG8gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxvKSYmdC5jYWxsKG51bGwsZVtvXSxvLGUpfXZhciBhZT17aXNBcnJheTokLGlzQXJyYXlCdWZmZXI6USxpc0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWUmJiFaKGUpJiZudWxsIT09ZS5jb25zdHJ1Y3RvciYmIVooZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZvcm1EYXRhXSI9PT1YLmNhbGwoZSl9LGlzQXJyYXlCdWZmZXJWaWV3OmZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJkFycmF5QnVmZmVyLmlzVmlldz9BcnJheUJ1ZmZlci5pc1ZpZXcoZSk6ZSYmZS5idWZmZXImJlEoZS5idWZmZXIpfSxpc1N0cmluZzpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV9LGlzTnVtYmVyOmZ1bmN0aW9uKGUpe3JldHVybiJudW1iZXIiPT10eXBlb2YgZX0saXNPYmplY3Q6ZWUsaXNQbGFpbk9iamVjdDp0ZSxpc1VuZGVmaW5lZDpaLGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1YLmNhbGwoZSl9LGlzRmlsZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBGaWxlXSI9PT1YLmNhbGwoZSl9LGlzQmxvYjpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBCbG9iXSI9PT1YLmNhbGwoZSl9LGlzRnVuY3Rpb246cmUsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIGVlKGUpJiZyZShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdIj09PVguY2FsbChlKX0saXNTdGFuZGFyZEJyb3dzZXJFbnY6ZnVuY3Rpb24oKXtyZXR1cm4oInVuZGVmaW5lZCI9PXR5cGVvZiBuYXZpZ2F0b3J8fCJSZWFjdE5hdGl2ZSIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5hdGl2ZVNjcmlwdCIhPT1uYXZpZ2F0b3IucHJvZHVjdCYmIk5TIiE9PW5hdmlnYXRvci5wcm9kdWN0KSYmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50KX0sZm9yRWFjaDpuZSxtZXJnZTpmdW5jdGlvbiBlKCl7dmFyIHQ9e307ZnVuY3Rpb24gcihyLG4pe3RlKHRbbl0pJiZ0ZShyKT90W25dPWUodFtuXSxyKTp0ZShyKT90W25dPWUoe30scik6JChyKT90W25dPXIuc2xpY2UoKTp0W25dPXJ9Zm9yKHZhciBuPTAsYT1hcmd1bWVudHMubGVuZ3RoO248YTtuKyspbmUoYXJndW1lbnRzW25dLHIpO3JldHVybiB0fSxleHRlbmQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBuZSh0LChmdW5jdGlvbih0LG4pe2Vbbl09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHQ/Ryh0LHIpOnR9KSksZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihlKXtyZXR1cm4gNjUyNzk9PT1lLmNoYXJDb2RlQXQoMCkmJihlPWUuc2xpY2UoMSkpLGV9fSxvZT1hZTtmdW5jdGlvbiBpZShlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX12YXIgc2U9ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuO2lmKHIpbj1yKHQpO2Vsc2UgaWYob2UuaXNVUkxTZWFyY2hQYXJhbXModCkpbj10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgYT1bXTtvZS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUsdCl7bnVsbCE9ZSYmKG9lLmlzQXJyYXkoZSk/dCs9IltdIjplPVtlXSxvZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe29lLmlzRGF0ZShlKT9lPWUudG9JU09TdHJpbmcoKTpvZS5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLGEucHVzaChpZSh0KSsiPSIraWUoZSkpfSkpKX0pKSxuPWEuam9pbigiJiIpfWlmKG4pe3ZhciBvPWUuaW5kZXhPZigiIyIpOy0xIT09byYmKGU9ZS5zbGljZSgwLG8pKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStufXJldHVybiBlfSx1ZT1hZTtmdW5jdGlvbiBjZSgpe3RoaXMuaGFuZGxlcnM9W119Y2UucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIXImJnIuc3luY2hyb25vdXMscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sY2UucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSxjZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXt1ZS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfTt2YXIgZmU9Y2UsbGU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtmdW5jdGlvbiBoZSgpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHBlKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX12YXIgZGU9aGUsdmU9cGU7ZnVuY3Rpb24gZ2UoZSl7aWYoZGU9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGRlPT09aGV8fCFkZSkmJnNldFRpbWVvdXQpcmV0dXJuIGRlPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gZGUoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGRlLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBkZS5jYWxsKHRoaXMsZSwwKX19fSJmdW5jdGlvbiI9PXR5cGVvZiBsZS5zZXRUaW1lb3V0JiYoZGU9c2V0VGltZW91dCksImZ1bmN0aW9uIj09dHlwZW9mIGxlLmNsZWFyVGltZW91dCYmKHZlPWNsZWFyVGltZW91dCk7dmFyIG1lLHllPVtdLGJlPSExLHdlPS0xO2Z1bmN0aW9uIGtlKCl7YmUmJm1lJiYoYmU9ITEsbWUubGVuZ3RoP3llPW1lLmNvbmNhdCh5ZSk6d2U9LTEseWUubGVuZ3RoJiZSZSgpKX1mdW5jdGlvbiBSZSgpe2lmKCFiZSl7dmFyIGU9Z2Uoa2UpO2JlPSEwO2Zvcih2YXIgdD15ZS5sZW5ndGg7dDspe2ZvcihtZT15ZSx5ZT1bXTsrK3dlPHQ7KW1lJiZtZVt3ZV0ucnVuKCk7d2U9LTEsdD15ZS5sZW5ndGh9bWU9bnVsbCxiZT0hMSxmdW5jdGlvbihlKXtpZih2ZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKCh2ZT09PXBlfHwhdmUpJiZjbGVhclRpbWVvdXQpcmV0dXJuIHZlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3ZlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gdmUuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiB2ZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIF9lKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9X2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIHhlKCl7fXZhciBTZT14ZSxFZT14ZSxUZT14ZSxBZT14ZSxDZT14ZSxEZT14ZSxPZT14ZTt2YXIgUGU9bGUucGVyZm9ybWFuY2V8fHt9LEllPVBlLm5vd3x8UGUubW96Tm93fHxQZS5tc05vd3x8UGUub05vd3x8UGUud2Via2l0Tm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTt2YXIgVWU9bmV3IERhdGU7dmFyIExlPXtuZXh0VGljazpmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO3llLnB1c2gobmV3IF9lKGUsdCkpLDEhPT15ZS5sZW5ndGh8fGJlfHxnZShSZSl9LHRpdGxlOiJicm93c2VyIixicm93c2VyOiEwLGVudjp7fSxhcmd2OltdLHZlcnNpb246IiIsdmVyc2lvbnM6e30sb246U2UsYWRkTGlzdGVuZXI6RWUsb25jZTpUZSxvZmY6QWUscmVtb3ZlTGlzdGVuZXI6Q2UscmVtb3ZlQWxsTGlzdGVuZXJzOkRlLGVtaXQ6T2UsYmluZGluZzpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGN3ZDpmdW5jdGlvbigpe3JldHVybiIvIn0sY2hkaXI6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sdW1hc2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0saHJ0aW1lOmZ1bmN0aW9uKGUpe3ZhciB0PS4wMDEqSWUuY2FsbChQZSkscj1NYXRoLmZsb29yKHQpLG49TWF0aC5mbG9vcih0JTEqMWU5KTtyZXR1cm4gZSYmKHItPWVbMF0sKG4tPWVbMV0pPDAmJihyLS0sbis9MWU5KSksW3Isbl19LHBsYXRmb3JtOiJicm93c2VyIixyZWxlYXNlOnt9LGNvbmZpZzp7fSx1cHRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUtVWUpLzFlM319LEhlPUxlLE1lPWFlLGplPWZ1bmN0aW9uKGUsdCxyLG4sYSl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPWEsZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfSxOZT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0scWU9amUsS2U9ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgbz1uZXcgRXJyb3IoZSk7cmV0dXJuIHFlKG8sdCxyLG4sYSl9LEplPUtlLEJlPWFlLEZlPUJlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/e3dyaXRlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvKXt2YXIgaT1bXTtpLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxCZS5pc051bWJlcihyKSYmaS5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUocikudG9HTVRTdHJpbmcoKSksQmUuaXNTdHJpbmcobikmJmkucHVzaCgicGF0aD0iK24pLEJlLmlzU3RyaW5nKGEpJiZpLnB1c2goImRvbWFpbj0iK2EpLCEwPT09byYmaS5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9aS5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX0sV2U9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChlKX0semU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrdC5yZXBsYWNlKC9eXC8rLywiIik6ZX0sVmU9YWUsWWU9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSxHZT1hZSxYZT1HZS5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGUsdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIG4oZSl7dmFyIG49ZTtyZXR1cm4gdCYmKHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXIuaHJlZiksci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnIuaHJlZixwcm90b2NvbDpyLnByb3RvY29sP3IucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnIuaG9zdCxzZWFyY2g6ci5zZWFyY2g/ci5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpyLmhhc2g/ci5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ci5ob3N0bmFtZSxwb3J0OnIucG9ydCxwYXRobmFtZToiLyI9PT1yLnBhdGhuYW1lLmNoYXJBdCgwKT9yLnBhdGhuYW1lOiIvIityLnBhdGhuYW1lfX1yZXR1cm4gZT1uKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXt2YXIgcj1HZS5pc1N0cmluZyh0KT9uKHQpOnQ7cmV0dXJuIHIucHJvdG9jb2w9PT1lLnByb3RvY29sJiZyLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9O2Z1bmN0aW9uICRlKGUpe3RoaXMubWVzc2FnZT1lfSRlLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSwkZS5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgWmU9JGUsUWU9YWUsZXQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuY29uZmlnLnZhbGlkYXRlU3RhdHVzO3Iuc3RhdHVzJiZuJiYhbihyLnN0YXR1cyk/dChKZSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Iuc3RhdHVzLHIuY29uZmlnLG51bGwsci5yZXF1ZXN0LHIpKTplKHIpfSx0dD1GZSxydD1zZSxudD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhV2UodCk/emUoZSx0KTp0fSxhdD1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYT17fTtyZXR1cm4gZT8oVmUuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihuPWUuaW5kZXhPZigiOiIpLHQ9VmUudHJpbShlLnN1YnN0cigwLG4pKS50b0xvd2VyQ2FzZSgpLHI9VmUudHJpbShlLnN1YnN0cihuKzEpKSx0KXtpZihhW3RdJiZZZS5pbmRleE9mKHQpPj0wKXJldHVybjthW3RdPSJzZXQtY29va2llIj09PXQ/KGFbdF0/YVt0XTpbXSkuY29uY2F0KFtyXSk6YVt0XT9hW3RdKyIsICIrcjpyfX0pKSxhKTphfSxvdD1YZSxpdD1LZSxzdD1OZSx1dD1aZSxjdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG4sYT1lLmRhdGEsbz1lLmhlYWRlcnMsaT1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiBzKCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShuKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pfVFlLmlzRm9ybURhdGEoYSkmJmRlbGV0ZSBvWyJDb250ZW50LVR5cGUiXTt2YXIgdT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgYz1lLmF1dGgudXNlcm5hbWV8fCIiLGY9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtvLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShjKyI6IitmKX12YXIgbD1udChlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIGgoKXtpZih1KXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIHU/YXQodS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxhPXtkYXRhOmkmJiJ0ZXh0IiE9PWkmJiJqc29uIiE9PWk/dS5yZXNwb25zZTp1LnJlc3BvbnNlVGV4dCxzdGF0dXM6dS5zdGF0dXMsc3RhdHVzVGV4dDp1LnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6dX07ZXQoKGZ1bmN0aW9uKGUpe3QoZSkscygpfSksKGZ1bmN0aW9uKGUpe3IoZSkscygpfSksYSksdT1udWxsfX1pZih1Lm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSxydChsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHUudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiB1P3Uub25sb2FkZW5kPWg6dS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt1JiY0PT09dS5yZWFkeVN0YXRlJiYoMCE9PXUuc3RhdHVzfHx1LnJlc3BvbnNlVVJMJiYwPT09dS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChoKX0sdS5vbmFib3J0PWZ1bmN0aW9uKCl7dSYmKHIoaXQoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsKX0sdS5vbmVycm9yPWZ1bmN0aW9uKCl7cihpdCgiTmV0d29yayBFcnJvciIsZSxudWxsLHUpKSx1PW51bGx9LHUub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLG49ZS50cmFuc2l0aW9uYWx8fHN0O2UudGltZW91dEVycm9yTWVzc2FnZSYmKHQ9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKGl0KHQsZSxuLmNsYXJpZnlUaW1lb3V0RXJyb3I/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbH0sUWUuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIHA9KGUud2l0aENyZWRlbnRpYWxzfHxvdChsKSkmJmUueHNyZkNvb2tpZU5hbWU/dHQucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7cCYmKG9bZS54c3JmSGVhZGVyTmFtZV09cCl9InNldFJlcXVlc3RIZWFkZXIiaW4gdSYmUWUuZm9yRWFjaChvLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWEmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBvW3RdOnUuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLFFlLmlzVW5kZWZpbmVkKGUud2l0aENyZWRlbnRpYWxzKXx8KHUud2l0aENyZWRlbnRpYWxzPSEhZS53aXRoQ3JlZGVudGlhbHMpLGkmJiJqc29uIiE9PWkmJih1LnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZ1LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGUub25VcGxvYWRQcm9ncmVzcyYmdS51cGxvYWQmJnUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uVXBsb2FkUHJvZ3Jlc3MpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihuPWZ1bmN0aW9uKGUpe3UmJihyKCFlfHxlJiZlLnR5cGU/bmV3IHV0KCJjYW5jZWxlZCIpOmUpLHUuYWJvcnQoKSx1PW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShuKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ/bigpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuKSkpLGF8fChhPW51bGwpLHUuc2VuZChhKX0pKX0sZnQ9YWUsbHQ9ZnVuY3Rpb24oZSx0KXtNZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LGh0PWplLHB0PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gZHQoZSx0KXshZnQuaXNVbmRlZmluZWQoZSkmJmZ0LmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciB2dCxndD17dHJhbnNpdGlvbmFsOk5lLGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHx2b2lkIDAhPT1IZSYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEhlKSkmJih2dD1jdCksdnQpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7cmV0dXJuIGx0KHQsIkFjY2VwdCIpLGx0KHQsIkNvbnRlbnQtVHlwZSIpLGZ0LmlzRm9ybURhdGEoZSl8fGZ0LmlzQXJyYXlCdWZmZXIoZSl8fGZ0LmlzQnVmZmVyKGUpfHxmdC5pc1N0cmVhbShlKXx8ZnQuaXNGaWxlKGUpfHxmdC5pc0Jsb2IoZSk/ZTpmdC5pc0FycmF5QnVmZmVyVmlldyhlKT9lLmJ1ZmZlcjpmdC5pc1VSTFNlYXJjaFBhcmFtcyhlKT8oZHQodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOmZ0LmlzT2JqZWN0KGUpfHx0JiYiYXBwbGljYXRpb24vanNvbiI9PT10WyJDb250ZW50LVR5cGUiXT8oZHQodCwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKGUsdCxyKXtpZihmdC5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLGZ0LnRyaW0oZSl9Y2F0Y2goZSl7aWYoIlN5bnRheEVycm9yIiE9PWUubmFtZSl0aHJvdyBlfXJldHVybihyfHxKU09OLnN0cmluZ2lmeSkoZSl9KGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJhbnNpdGlvbmFsfHxndC50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxhPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihhfHxuJiZmdC5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKGEpe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgaHQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtmdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXtndC5oZWFkZXJzW2VdPXt9fSkpLGZ0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7Z3QuaGVhZGVyc1tlXT1mdC5tZXJnZShwdCl9KSk7dmFyIG10PWd0LHl0PWFlLGJ0PW10LHd0PWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLl9fQ0FOQ0VMX18pfSxrdD1hZSxSdD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpc3x8YnQ7cmV0dXJuIHl0LmZvckVhY2gociwoZnVuY3Rpb24ocil7ZT1yLmNhbGwobixlLHQpfSkpLGV9LF90PXd0LHh0PW10LFN0PVplO2Z1bmN0aW9uIEV0KGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBTdCgiY2FuY2VsZWQiKX12YXIgVHQ9YWUsQXQ9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciByPXt9O2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gVHQuaXNQbGFpbk9iamVjdChlKSYmVHQuaXNQbGFpbk9iamVjdCh0KT9UdC5tZXJnZShlLHQpOlR0LmlzUGxhaW5PYmplY3QodCk/VHQubWVyZ2Uoe30sdCk6VHQuaXNBcnJheSh0KT90LnNsaWNlKCk6dH1mdW5jdGlvbiBhKHIpe3JldHVybiBUdC5pc1VuZGVmaW5lZCh0W3JdKT9UdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bihlW3JdLHRbcl0pfWZ1bmN0aW9uIG8oZSl7aWYoIVR0LmlzVW5kZWZpbmVkKHRbZV0pKXJldHVybiBuKHZvaWQgMCx0W2VdKX1mdW5jdGlvbiBpKHIpe3JldHVybiBUdC5pc1VuZGVmaW5lZCh0W3JdKT9UdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bih2b2lkIDAsdFtyXSl9ZnVuY3Rpb24gcyhyKXtyZXR1cm4gciBpbiB0P24oZVtyXSx0W3JdKTpyIGluIGU/bih2b2lkIDAsZVtyXSk6dm9pZCAwfXZhciB1PXt1cmw6byxtZXRob2Q6byxkYXRhOm8sYmFzZVVSTDppLHRyYW5zZm9ybVJlcXVlc3Q6aSx0cmFuc2Zvcm1SZXNwb25zZTppLHBhcmFtc1NlcmlhbGl6ZXI6aSx0aW1lb3V0OmksdGltZW91dE1lc3NhZ2U6aSx3aXRoQ3JlZGVudGlhbHM6aSxhZGFwdGVyOmkscmVzcG9uc2VUeXBlOmkseHNyZkNvb2tpZU5hbWU6aSx4c3JmSGVhZGVyTmFtZTppLG9uVXBsb2FkUHJvZ3Jlc3M6aSxvbkRvd25sb2FkUHJvZ3Jlc3M6aSxkZWNvbXByZXNzOmksbWF4Q29udGVudExlbmd0aDppLG1heEJvZHlMZW5ndGg6aSx0cmFuc3BvcnQ6aSxodHRwQWdlbnQ6aSxodHRwc0FnZW50OmksY2FuY2VsVG9rZW46aSxzb2NrZXRQYXRoOmkscmVzcG9uc2VFbmNvZGluZzppLHZhbGlkYXRlU3RhdHVzOnN9O3JldHVybiBUdC5mb3JFYWNoKE9iamVjdC5rZXlzKGUpLmNvbmNhdChPYmplY3Qua2V5cyh0KSksKGZ1bmN0aW9uKGUpe3ZhciB0PXVbZV18fGEsbj10KGUpO1R0LmlzVW5kZWZpbmVkKG4pJiZ0IT09c3x8KHJbZV09bil9KSkscn0sQ3Q9IjAuMjYuMSIsRHQ9Q3QsT3Q9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe090W2VdPWZ1bmN0aW9uKG4pe3JldHVybiByKG4pPT09ZXx8ImEiKyh0PDE/Im4gIjoiICIpK2V9fSkpO3ZhciBQdD17fTtPdC50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4iW0F4aW9zIHYiK0R0KyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrZSsiJyIrdCsocj8iLiAiK3I6IiIpfXJldHVybiBmdW5jdGlvbihyLGEsbyl7aWYoITE9PT1lKXRocm93IG5ldyBFcnJvcihuKGEsIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpKTtyZXR1cm4gdCYmIVB0W2FdJiYoUHRbYV09ITAsY29uc29sZS53YXJuKG4oYSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGEsbyl9fTt2YXIgSXQ9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvYmplY3QiIT09cihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBhPU9iamVjdC5rZXlzKGUpLG89YS5sZW5ndGg7by0tID4wOyl7dmFyIGk9YVtvXSxzPXRbaV07aWYocyl7dmFyIHU9ZVtpXSxjPXZvaWQgMD09PXV8fHModSxpLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitpKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1uKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK2kpfX0sdmFsaWRhdG9yczpPdH0sVXQ9YWUsTHQ9c2UsSHQ9ZmUsTXQ9ZnVuY3Rpb24oZSl7cmV0dXJuIEV0KGUpLGUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LGUuZGF0YT1SdC5jYWxsKGUsZS5kYXRhLGUuaGVhZGVycyxlLnRyYW5zZm9ybVJlcXVlc3QpLGUuaGVhZGVycz1rdC5tZXJnZShlLmhlYWRlcnMuY29tbW9ufHx7fSxlLmhlYWRlcnNbZS5tZXRob2RdfHx7fSxlLmhlYWRlcnMpLGt0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sKGZ1bmN0aW9uKHQpe2RlbGV0ZSBlLmhlYWRlcnNbdF19KSksKGUuYWRhcHRlcnx8eHQuYWRhcHRlcikoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIEV0KGUpLHQuZGF0YT1SdC5jYWxsKGUsdC5kYXRhLHQuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSksKGZ1bmN0aW9uKHQpe3JldHVybiBfdCh0KXx8KEV0KGUpLHQmJnQucmVzcG9uc2UmJih0LnJlc3BvbnNlLmRhdGE9UnQuY2FsbChlLHQucmVzcG9uc2UuZGF0YSx0LnJlc3BvbnNlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdCh0KX0pKX0sanQ9QXQsTnQ9SXQscXQ9TnQudmFsaWRhdG9ycztmdW5jdGlvbiBLdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEh0LHJlc3BvbnNlOm5ldyBIdH19S3QucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09dHlwZW9mIGU/KHQ9dHx8e30pLnVybD1lOnQ9ZXx8e30sKHQ9anQodGhpcy5kZWZhdWx0cyx0KSkubWV0aG9kP3QubWV0aG9kPXQubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q/dC5tZXRob2Q9dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTp0Lm1ldGhvZD0iZ2V0Ijt2YXIgcj10LnRyYW5zaXRpb25hbDt2b2lkIDAhPT1yJiZOdC5hc3NlcnRPcHRpb25zKHIse3NpbGVudEpTT05QYXJzaW5nOnF0LnRyYW5zaXRpb25hbChxdC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjpxdC50cmFuc2l0aW9uYWwocXQuYm9vbGVhbil9LCExKTt2YXIgbj1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUucnVuV2hlbiYmITE9PT1lLnJ1bldoZW4odCl8fChhPWEmJmUuc3luY2hyb25vdXMsbi51bnNoaWZ0KGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpKX0pKTt2YXIgbyxpPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kucHVzaChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKX0pKSwhYSl7dmFyIHM9W010LHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KHMsbikscz1zLmNvbmNhdChpKSxvPVByb21pc2UucmVzb2x2ZSh0KTtzLmxlbmd0aDspbz1vLnRoZW4ocy5zaGlmdCgpLHMuc2hpZnQoKSk7cmV0dXJuIG99Zm9yKHZhciB1PXQ7bi5sZW5ndGg7KXt2YXIgYz1uLnNoaWZ0KCksZj1uLnNoaWZ0KCk7dHJ5e3U9Yyh1KX1jYXRjaChlKXtmKGUpO2JyZWFrfX10cnl7bz1NdCh1KX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9Zm9yKDtpLmxlbmd0aDspbz1vLnRoZW4oaS5zaGlmdCgpLGkuc2hpZnQoKSk7cmV0dXJuIG99LEt0LnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9anQodGhpcy5kZWZhdWx0cyxlKSxMdChlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cPy8sIiIpfSxVdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24oZSl7S3QucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChqdChyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToocnx8e30pLmRhdGF9KSl9fSkpLFV0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7S3QucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KGp0KG58fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOnJ9KSl9fSkpO3ZhciBKdD1LdCxCdD1aZTtmdW5jdGlvbiBGdChlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0PWV9KSk7dmFyIHI9dGhpczt0aGlzLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7aWYoci5fbGlzdGVuZXJzKXt2YXIgdCxuPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKXIuX2xpc3RlbmVyc1t0XShlKTtyLl9saXN0ZW5lcnM9bnVsbH19KSksdGhpcy5wcm9taXNlLnRoZW49ZnVuY3Rpb24oZSl7dmFyIHQsbj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ci5zdWJzY3JpYmUoZSksdD1lfSkpLnRoZW4oZSk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZSh0KX0sbn0sZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgQnQoZSksdChyLnJlYXNvbikpfSkpfUZ0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LEZ0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dGhpcy5yZWFzb24/ZSh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19LEZ0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLl9saXN0ZW5lcnMpe3ZhciB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0sRnQuc291cmNlPWZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgRnQoKGZ1bmN0aW9uKHQpe2U9dH0pKTtyZXR1cm57dG9rZW46dCxjYW5jZWw6ZX19O3ZhciBXdD1GdCx6dD1hZSxWdD1hZSxZdD1ZLEd0PUp0LFh0PUF0O3ZhciAkdD1mdW5jdGlvbiBlKHQpe3ZhciByPW5ldyBHdCh0KSxuPVl0KEd0LnByb3RvdHlwZS5yZXF1ZXN0LHIpO3JldHVybiBWdC5leHRlbmQobixHdC5wcm90b3R5cGUsciksVnQuZXh0ZW5kKG4sciksbi5jcmVhdGU9ZnVuY3Rpb24ocil7cmV0dXJuIGUoWHQodCxyKSl9LG59KG10KTskdC5BeGlvcz1HdCwkdC5DYW5jZWw9WmUsJHQuQ2FuY2VsVG9rZW49V3QsJHQuaXNDYW5jZWw9d3QsJHQuVkVSU0lPTj1DdCwkdC5hbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UuYWxsKGUpfSwkdC5zcHJlYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KG51bGwsdCl9fSwkdC5pc0F4aW9zRXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIHp0LmlzT2JqZWN0KGUpJiYhMD09PWUuaXNBeGlvc0Vycm9yfSxWLmV4cG9ydHM9JHQsVi5leHBvcnRzLmRlZmF1bHQ9JHQ7dmFyIFp0LFF0PVYuZXhwb3J0czt2YXIgZXI9WnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpLHRoaXMuYXR0YWNoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCl9LHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdGhpcy5pbml0PXRoaXMuaW5pdC5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrPXRoaXMuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrLmJpbmQodGhpcyksdGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrLmJpbmQodGhpcyl9cmV0dXJuIHMoZSxbe2tleToicmVxdWVzdEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG47cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5hdHRhY2hUb2tlbihlKTtjYXNlIDI6cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuc2hvdWxkRW5jb2RlVG9Gb3JtRGF0YSkmJihyPW51bGw9PWU/dm9pZCAwOmUuZGF0YSxuPW5ldyBGb3JtRGF0YSxPYmplY3Qua2V5cyhyKS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLmFwcGVuZChlLHJbZV0pfSkpLGUuZGF0YT1uKSxadC5pc0hhbmRsZXJFbmFibGVkJiZ0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayhlKSx0LmFicnVwdCgicmV0dXJuIixlKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImVycm9ySGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhyb3cgWnQuaXNIYW5kbGVyRW5hYmxlZCYmKHRoaXMucmVxdWVzdEVycm9yQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiZ0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrKGUpLHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJnRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrKCkpLGV9fSx7a2V5OiJzdWNjZXNzSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFp0LmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2smJnRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToiaW5pdCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0hKGFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdKXx8YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDA7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpadC5pc0hhbmRsZXJFbmFibGVkPWUsdGhpcy5hdHRhY2hUb2tlbj10O2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsdGhpcyl9KSkpfX0se2tleToiZW5hYmxlSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oKXtadC5pc0hhbmRsZXJFbmFibGVkPSEwfX0se2tleToiZGlzYWJsZUhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKCl7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMX19LHtrZXk6ImRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlp0LkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ7WnQuaXNIYW5kbGVyRW5hYmxlZD0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe1p0LmlzSGFuZGxlckVuYWJsZWQ9ITB9KSxlKX19LHtrZXk6InNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1lfX0se2tleToic2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWV9fSx7a2V5OiJzZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaz1lfX1dLFt7a2V5OiJnZXRJbnN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiB0aGlzLmF4aW9zSW5zdGFuY2V8fCh0aGlzLmF4aW9zSW5zdGFuY2U9UXQuY3JlYXRlKHt3aXRoQ3JlZGVudGlhbHM6ITB9KSx0aGlzLmNsaWVudEluc3RhbmNlfHwodGhpcy5jbGllbnRJbnN0YW5jZT1uZXcgWnQpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVxdWVzdC51c2UoKGZ1bmN0aW9uKHQpe3JldHVybiBfKGUsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuY2xpZW50SW5zdGFuY2UucmVxdWVzdEhhbmRsZXIodCk7Y2FzZSAyOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixlLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSkpLHRoaXMuYXhpb3NJbnN0YW5jZS5pbnRlcmNlcHRvcnMucmVzcG9uc2UudXNlKChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5zdWNjZXNzSGFuZGxlcih0KX0pLChmdW5jdGlvbih0KXtyZXR1cm4gZS5jbGllbnRJbnN0YW5jZS5lcnJvckhhbmRsZXIodCl9KSksdGhpcy5heGlvc0luc3RhbmNlLmFsbD1RdC5hbGwsdGhpcy5heGlvc0luc3RhbmNlLnNwcmVhZD1RdC5zcHJlYWQsdGhpcy5heGlvc0luc3RhbmNlLmluaXQ9dGhpcy5jbGllbnRJbnN0YW5jZS5pbml0LHRoaXMuYXhpb3NJbnN0YW5jZS5lbmFibGVIYW5kbGVyPXRoaXMuY2xpZW50SW5zdGFuY2UuZW5hYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXI9dGhpcy5jbGllbnRJbnN0YW5jZS5kaXNhYmxlSGFuZGxlcix0aGlzLmF4aW9zSW5zdGFuY2UuZGlzYWJsZUhhbmRsZXJXaXRoVGltZW91dD10aGlzLmNsaWVudEluc3RhbmNlLmRpc2FibGVIYW5kbGVyV2l0aFRpbWVvdXQsdGhpcy5heGlvc0luc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLmNsaWVudEluc3RhbmNlLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5jbGllbnRJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayx0aGlzLmF4aW9zSW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RFcnJvckNhbGxiYWNrLHRoaXMuYXhpb3NJbnN0YW5jZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrPXRoaXMuY2xpZW50SW5zdGFuY2Uuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayksdGhpcy5heGlvc0luc3RhbmNlfX1dKSxlfSgpO2VyLkRFRkFVTFRfSEFORExFUl9ESVNBQkxFX1RJTUVPVVQ9MWUzLGVyPVp0PWZ1bmN0aW9uKGUsdCxuLGEpe3ZhciBvLGk9YXJndW1lbnRzLmxlbmd0aCxzPWk8Mz90Om51bGw9PT1hP2E9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOmE7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0PyJ1bmRlZmluZWQiOnIoUmVmbGVjdCkpJiYiZnVuY3Rpb24iPT10eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSlzPVJlZmxlY3QuZGVjb3JhdGUoZSx0LG4sYSk7ZWxzZSBmb3IodmFyIHU9ZS5sZW5ndGgtMTt1Pj0wO3UtLSkobz1lW3VdKSYmKHM9KGk8Mz9vKHMpOmk+Mz9vKHQsbixzKTpvKHQsbikpfHxzKTtyZXR1cm4gaT4zJiZzJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHMpLHN9KFtmdW5jdGlvbihlKXt9XSxlcik7dmFyIHRyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLl9kYXRhPW5ldyBNYXB9cmV0dXJuIHMoZSxbe2tleToic2V0RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gXyh0aGlzLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuX2RhdGEuc2V0KGUsdCk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscix0aGlzKX0pKSl9fSx7a2V5OiJnZXREYXRhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxyO3JldHVybiBfKHRoaXMsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIG4uYWJydXB0KCJyZXR1cm4iLG51bGwhPT0ocj1udWxsPT09KHQ9dGhpcy5fZGF0YSl8fHZvaWQgMD09PXQ/dm9pZCAwOnQuZ2V0KGUpKSYmdm9pZCAwIT09cj9yOiJ7fSIpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVtb3ZlRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIF8odGhpcyx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDp0aGlzLl9kYXRhLmRlbGV0ZShlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxycj1bXSxucj1bXSxhcj0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvcj0hMTtmdW5jdGlvbiBpcigpe29yPSEwO2Zvcih2YXIgZT0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIsdD0wLHI9ZS5sZW5ndGg7dDxyOysrdClyclt0XT1lW3RdLG5yW2UuY2hhckNvZGVBdCh0KV09dDtuclsiLSIuY2hhckNvZGVBdCgwKV09NjIsbnJbIl8iLmNoYXJDb2RlQXQoMCldPTYzfWZ1bmN0aW9uIHNyKGUsdCxyKXtmb3IodmFyIG4sYSxvPVtdLGk9dDtpPHI7aSs9MyluPShlW2ldPDwxNikrKGVbaSsxXTw8OCkrZVtpKzJdLG8ucHVzaChyclsoYT1uKT4+MTgmNjNdK3JyW2E+PjEyJjYzXStyclthPj42JjYzXStycls2MyZhXSk7cmV0dXJuIG8uam9pbigiIil9ZnVuY3Rpb24gdXIoZSl7dmFyIHQ7b3J8fGlyKCk7Zm9yKHZhciByPWUubGVuZ3RoLG49ciUzLGE9IiIsbz1bXSxpPTE2MzgzLHM9MCx1PXItbjtzPHU7cys9aSlvLnB1c2goc3IoZSxzLHMraT51P3U6cytpKSk7cmV0dXJuIDE9PT1uPyh0PWVbci0xXSxhKz1yclt0Pj4yXSxhKz1yclt0PDw0JjYzXSxhKz0iPT0iKToyPT09biYmKHQ9KGVbci0yXTw8OCkrZVtyLTFdLGErPXJyW3Q+PjEwXSxhKz1yclt0Pj40JjYzXSxhKz1yclt0PDwyJjYzXSxhKz0iPSIpLG8ucHVzaChhKSxvLmpvaW4oIiIpfWZ1bmN0aW9uIGNyKGUsdCxyLG4sYSl7dmFyIG8saSxzPTgqYS1uLTEsdT0oMTw8cyktMSxjPXU+PjEsZj0tNyxsPXI/YS0xOjAsaD1yPy0xOjEscD1lW3QrbF07Zm9yKGwrPWgsbz1wJigxPDwtZiktMSxwPj49LWYsZis9cztmPjA7bz0yNTYqbytlW3QrbF0sbCs9aCxmLT04KTtmb3IoaT1vJigxPDwtZiktMSxvPj49LWYsZis9bjtmPjA7aT0yNTYqaStlW3QrbF0sbCs9aCxmLT04KTtpZigwPT09bylvPTEtYztlbHNle2lmKG89PT11KXJldHVybiBpP05hTjoxLzAqKHA/LTE6MSk7aSs9TWF0aC5wb3coMixuKSxvLT1jfXJldHVybihwPy0xOjEpKmkqTWF0aC5wb3coMixvLW4pfWZ1bmN0aW9uIGZyKGUsdCxyLG4sYSxvKXt2YXIgaSxzLHUsYz04Km8tYS0xLGY9KDE8PGMpLTEsbD1mPj4xLGg9MjM9PT1hP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDpvLTEsZD1uPzE6LTEsdj10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKHQ9TWF0aC5hYnModCksaXNOYU4odCl8fHQ9PT0xLzA/KHM9aXNOYU4odCk/MTowLGk9Zik6KGk9TWF0aC5mbG9vcihNYXRoLmxvZyh0KS9NYXRoLkxOMiksdCoodT1NYXRoLnBvdygyLC1pKSk8MSYmKGktLSx1Kj0yKSwodCs9aStsPj0xP2gvdTpoKk1hdGgucG93KDIsMS1sKSkqdT49MiYmKGkrKyx1Lz0yKSxpK2w+PWY/KHM9MCxpPWYpOmkrbD49MT8ocz0odCp1LTEpKk1hdGgucG93KDIsYSksaSs9bCk6KHM9dCpNYXRoLnBvdygyLGwtMSkqTWF0aC5wb3coMixhKSxpPTApKTthPj04O2VbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixhLT04KTtmb3IoaT1pPDxhfHMsYys9YTtjPjA7ZVtyK3BdPTI1NSZpLHArPWQsaS89MjU2LGMtPTgpO2VbcitwLWRdfD0xMjgqdn12YXIgbHI9e30udG9TdHJpbmcsaHI9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09bHIuY2FsbChlKX07Z3IuVFlQRURfQVJSQVlfU1VQUE9SVD12b2lkIDA9PT1sZS5UWVBFRF9BUlJBWV9TVVBQT1JUfHxsZS5UWVBFRF9BUlJBWV9TVVBQT1JUO3ZhciBwcj1kcigpO2Z1bmN0aW9uIGRyKCl7cmV0dXJuIGdyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/MjE0NzQ4MzY0NzoxMDczNzQxODIzfWZ1bmN0aW9uIHZyKGUsdCl7aWYoZHIoKTx0KXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHR5cGVkIGFycmF5IGxlbmd0aCIpO3JldHVybiBnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyhlPW5ldyBVaW50OEFycmF5KHQpKS5fX3Byb3RvX189Z3IucHJvdG90eXBlOihudWxsPT09ZSYmKGU9bmV3IGdyKHQpKSxlLmxlbmd0aD10KSxlfWZ1bmN0aW9uIGdyKGUsdCxyKXtpZighKGdyLlRZUEVEX0FSUkFZX1NVUFBPUlR8fHRoaXMgaW5zdGFuY2VvZiBncikpcmV0dXJuIG5ldyBncihlLHQscik7aWYoIm51bWJlciI9PXR5cGVvZiBlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJZiBlbmNvZGluZyBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpO3JldHVybiBicih0aGlzLGUpfXJldHVybiBtcih0aGlzLGUsdCxyKX1mdW5jdGlvbiBtcihlLHQscixuKXtpZigibnVtYmVyIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignInZhbHVlIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpO3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgQXJyYXlCdWZmZXImJnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9mdW5jdGlvbihlLHQscixuKXtpZih0LmJ5dGVMZW5ndGgscjwwfHx0LmJ5dGVMZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ29mZnNldCcgaXMgb3V0IG9mIGJvdW5kcyIpO2lmKHQuYnl0ZUxlbmd0aDxyKyhufHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiJ2xlbmd0aCcgaXMgb3V0IG9mIGJvdW5kcyIpO3Q9dm9pZCAwPT09ciYmdm9pZCAwPT09bj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1uP25ldyBVaW50OEFycmF5KHQscik6bmV3IFVpbnQ4QXJyYXkodCxyLG4pO2dyLlRZUEVEX0FSUkFZX1NVUFBPUlQ/KGU9dCkuX19wcm90b19fPWdyLnByb3RvdHlwZTplPXdyKGUsdCk7cmV0dXJuIGV9KGUsdCxyLG4pOiJzdHJpbmciPT10eXBlb2YgdD9mdW5jdGlvbihlLHQscil7InN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fChyPSJ1dGY4Iik7aWYoIWdyLmlzRW5jb2RpbmcocikpdGhyb3cgbmV3IFR5cGVFcnJvcignImVuY29kaW5nIiBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGVuY29kaW5nJyk7dmFyIG49MHxfcih0LHIpLGE9KGU9dnIoZSxuKSkud3JpdGUodCxyKTthIT09biYmKGU9ZS5zbGljZSgwLGEpKTtyZXR1cm4gZX0oZSx0LHIpOmZ1bmN0aW9uKGUsdCl7aWYoUnIodCkpe3ZhciByPTB8a3IodC5sZW5ndGgpO3JldHVybiAwPT09KGU9dnIoZSxyKSkubGVuZ3RofHx0LmNvcHkoZSwwLDAsciksZX1pZih0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZ0LmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHwibGVuZ3RoImluIHQpcmV0dXJuIm51bWJlciIhPXR5cGVvZiB0Lmxlbmd0aHx8KG49dC5sZW5ndGgpIT1uP3ZyKGUsMCk6d3IoZSx0KTtpZigiQnVmZmVyIj09PXQudHlwZSYmaHIodC5kYXRhKSlyZXR1cm4gd3IoZSx0LmRhdGEpfXZhciBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4iKX0oZSx0KX1mdW5jdGlvbiB5cihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKTtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJzaXplIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpfWZ1bmN0aW9uIGJyKGUsdCl7aWYoeXIodCksZT12cihlLHQ8MD8wOjB8a3IodCkpLCFnci5UWVBFRF9BUlJBWV9TVVBQT1JUKWZvcih2YXIgcj0wO3I8dDsrK3IpZVtyXT0wO3JldHVybiBlfWZ1bmN0aW9uIHdyKGUsdCl7dmFyIHI9dC5sZW5ndGg8MD8wOjB8a3IodC5sZW5ndGgpO2U9dnIoZSxyKTtmb3IodmFyIG49MDtuPHI7bis9MSllW25dPTI1NSZ0W25dO3JldHVybiBlfWZ1bmN0aW9uIGtyKGUpe2lmKGU+PWRyKCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHgiK2RyKCkudG9TdHJpbmcoMTYpKyIgYnl0ZXMiKTtyZXR1cm4gMHxlfWZ1bmN0aW9uIFJyKGUpe3JldHVybiEobnVsbD09ZXx8IWUuX2lzQnVmZmVyKX1mdW5jdGlvbiBfcihlLHQpe2lmKFJyKGUpKXJldHVybiBlLmxlbmd0aDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3JiYoQXJyYXlCdWZmZXIuaXNWaWV3KGUpfHxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKXJldHVybiBlLmJ5dGVMZW5ndGg7InN0cmluZyIhPXR5cGVvZiBlJiYoZT0iIitlKTt2YXIgcj1lLmxlbmd0aDtpZigwPT09cilyZXR1cm4gMDtmb3IodmFyIG49ITE7Oylzd2l0Y2godCl7Y2FzZSJhc2NpaSI6Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gcjtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2Ugdm9pZCAwOnJldHVybiBYcihlKS5sZW5ndGg7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiAyKnI7Y2FzZSJoZXgiOnJldHVybiByPj4+MTtjYXNlImJhc2U2NCI6cmV0dXJuICRyKGUpLmxlbmd0aDtkZWZhdWx0OmlmKG4pcmV0dXJuIFhyKGUpLmxlbmd0aDt0PSgiIit0KS50b0xvd2VyQ2FzZSgpLG49ITB9fWZ1bmN0aW9uIHhyKGUsdCxyKXt2YXIgbj0hMTtpZigodm9pZCAwPT09dHx8dDwwKSYmKHQ9MCksdD50aGlzLmxlbmd0aClyZXR1cm4iIjtpZigodm9pZCAwPT09cnx8cj50aGlzLmxlbmd0aCkmJihyPXRoaXMubGVuZ3RoKSxyPD0wKXJldHVybiIiO2lmKChyPj4+PTApPD0odD4+Pj0wKSlyZXR1cm4iIjtmb3IoZXx8KGU9InV0ZjgiKTs7KXN3aXRjaChlKXtjYXNlImhleCI6cmV0dXJuIE5yKHRoaXMsdCxyKTtjYXNlInV0ZjgiOmNhc2UidXRmLTgiOnJldHVybiBMcih0aGlzLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIE1yKHRoaXMsdCxyKTtjYXNlImxhdGluMSI6Y2FzZSJiaW5hcnkiOnJldHVybiBqcih0aGlzLHQscik7Y2FzZSJiYXNlNjQiOnJldHVybiBVcih0aGlzLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBxcih0aGlzLHQscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrZSk7ZT0oZSsiIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBTcihlLHQscil7dmFyIG49ZVt0XTtlW3RdPWVbcl0sZVtyXT1ufWZ1bmN0aW9uIEVyKGUsdCxyLG4sYSl7aWYoMD09PWUubGVuZ3RoKXJldHVybi0xO2lmKCJzdHJpbmciPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCkscj0rcixpc05hTihyKSYmKHI9YT8wOmUubGVuZ3RoLTEpLHI8MCYmKHI9ZS5sZW5ndGgrcikscj49ZS5sZW5ndGgpe2lmKGEpcmV0dXJuLTE7cj1lLmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighYSlyZXR1cm4tMTtyPTB9aWYoInN0cmluZyI9PXR5cGVvZiB0JiYodD1nci5mcm9tKHQsbikpLFJyKHQpKXJldHVybiAwPT09dC5sZW5ndGg/LTE6VHIoZSx0LHIsbixhKTtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQmPTI1NSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUJiYiZnVuY3Rpb24iPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9hP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChlLHQscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChlLHQscik6VHIoZSxbdF0scixuLGEpO3Rocm93IG5ldyBUeXBlRXJyb3IoInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlciIpfWZ1bmN0aW9uIFRyKGUsdCxyLG4sYSl7dmFyIG8saT0xLHM9ZS5sZW5ndGgsdT10Lmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoInVjczIiPT09KG49U3RyaW5nKG4pLnRvTG93ZXJDYXNlKCkpfHwidWNzLTIiPT09bnx8InV0ZjE2bGUiPT09bnx8InV0Zi0xNmxlIj09PW4pKXtpZihlLmxlbmd0aDwyfHx0Lmxlbmd0aDwyKXJldHVybi0xO2k9MixzLz0yLHUvPTIsci89Mn1mdW5jdGlvbiBjKGUsdCl7cmV0dXJuIDE9PT1pP2VbdF06ZS5yZWFkVUludDE2QkUodCppKX1pZihhKXt2YXIgZj0tMTtmb3Iobz1yO288cztvKyspaWYoYyhlLG8pPT09Yyh0LC0xPT09Zj8wOm8tZikpe2lmKC0xPT09ZiYmKGY9byksby1mKzE9PT11KXJldHVybiBmKml9ZWxzZS0xIT09ZiYmKG8tPW8tZiksZj0tMX1lbHNlIGZvcihyK3U+cyYmKHI9cy11KSxvPXI7bz49MDtvLS0pe2Zvcih2YXIgbD0hMCxoPTA7aDx1O2grKylpZihjKGUsbytoKSE9PWModCxoKSl7bD0hMTticmVha31pZihsKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIEFyKGUsdCxyLG4pe3I9TnVtYmVyKHIpfHwwO3ZhciBhPWUubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmEmJihuPWEpOm49YTt2YXIgbz10Lmxlbmd0aDtpZihvJTIhPTApdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBoZXggc3RyaW5nIik7bj5vLzImJihuPW8vMik7Zm9yKHZhciBpPTA7aTxuOysraSl7dmFyIHM9cGFyc2VJbnQodC5zdWJzdHIoMippLDIpLDE2KTtpZihpc05hTihzKSlyZXR1cm4gaTtlW3IraV09c31yZXR1cm4gaX1mdW5jdGlvbiBDcihlLHQscixuKXtyZXR1cm4gWnIoWHIodCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gRHIoZSx0LHIsbil7cmV0dXJuIFpyKGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpdC5wdXNoKDI1NSZlLmNoYXJDb2RlQXQocikpO3JldHVybiB0fSh0KSxlLHIsbil9ZnVuY3Rpb24gT3IoZSx0LHIsbil7cmV0dXJuIERyKGUsdCxyLG4pfWZ1bmN0aW9uIFByKGUsdCxyLG4pe3JldHVybiBacigkcih0KSxlLHIsbil9ZnVuY3Rpb24gSXIoZSx0LHIsbil7cmV0dXJuIFpyKGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLG4sYSxvPVtdLGk9MDtpPGUubGVuZ3RoJiYhKCh0LT0yKTwwKTsrK2kpbj0ocj1lLmNoYXJDb2RlQXQoaSkpPj44LGE9ciUyNTYsby5wdXNoKGEpLG8ucHVzaChuKTtyZXR1cm4gb30odCxlLmxlbmd0aC1yKSxlLHIsbil9ZnVuY3Rpb24gVXIoZSx0LHIpe3JldHVybiAwPT09dCYmcj09PWUubGVuZ3RoP3VyKGUpOnVyKGUuc2xpY2UodCxyKSl9ZnVuY3Rpb24gTHIoZSx0LHIpe3I9TWF0aC5taW4oZS5sZW5ndGgscik7Zm9yKHZhciBuPVtdLGE9dDthPHI7KXt2YXIgbyxpLHMsdSxjPWVbYV0sZj1udWxsLGw9Yz4yMzk/NDpjPjIyMz8zOmM+MTkxPzI6MTtpZihhK2w8PXIpc3dpdGNoKGwpe2Nhc2UgMTpjPDEyOCYmKGY9Yyk7YnJlYWs7Y2FzZSAyOjEyOD09KDE5MiYobz1lW2ErMV0pKSYmKHU9KDMxJmMpPDw2fDYzJm8pPjEyNyYmKGY9dSk7YnJlYWs7Y2FzZSAzOm89ZVthKzFdLGk9ZVthKzJdLDEyOD09KDE5MiZvKSYmMTI4PT0oMTkyJmkpJiYodT0oMTUmYyk8PDEyfCg2MyZvKTw8Nnw2MyZpKT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihmPXUpO2JyZWFrO2Nhc2UgNDpvPWVbYSsxXSxpPWVbYSsyXSxzPWVbYSszXSwxMjg9PSgxOTImbykmJjEyOD09KDE5MiZpKSYmMTI4PT0oMTkyJnMpJiYodT0oMTUmYyk8PDE4fCg2MyZvKTw8MTJ8KDYzJmkpPDw2fDYzJnMpPjY1NTM1JiZ1PDExMTQxMTImJihmPXUpfW51bGw9PT1mPyhmPTY1NTMzLGw9MSk6Zj42NTUzNSYmKGYtPTY1NTM2LG4ucHVzaChmPj4+MTAmMTAyM3w1NTI5NiksZj01NjMyMHwxMDIzJmYpLG4ucHVzaChmKSxhKz1sfXJldHVybiBmdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aDtpZih0PD1IcilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsZSk7dmFyIHI9IiIsbj0wO2Zvcig7bjx0OylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxlLnNsaWNlKG4sbis9SHIpKTtyZXR1cm4gcn0obil9Z3IucG9vbFNpemU9ODE5Mixnci5fYXVnbWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX189Z3IucHJvdG90eXBlLGV9LGdyLmZyb209ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBtcihudWxsLGUsdCxyKX0sZ3IuVFlQRURfQVJSQVlfU1VQUE9SVCYmKGdyLnByb3RvdHlwZS5fX3Byb3RvX189VWludDhBcnJheS5wcm90b3R5cGUsZ3IuX19wcm90b19fPVVpbnQ4QXJyYXkpLGdyLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIHlyKHQpLHQ8PTA/dnIoZSx0KTp2b2lkIDAhPT1yPyJzdHJpbmciPT10eXBlb2Ygbj92cihlLHQpLmZpbGwocixuKTp2cihlLHQpLmZpbGwocik6dnIoZSx0KX0obnVsbCxlLHQscil9LGdyLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKGUpe3JldHVybiBicihudWxsLGUpfSxnci5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24oZSl7cmV0dXJuIGJyKG51bGwsZSl9LGdyLmlzQnVmZmVyPVFyLGdyLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtpZighUnIoZSl8fCFScih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzIik7aWYoZT09PXQpcmV0dXJuIDA7Zm9yKHZhciByPWUubGVuZ3RoLG49dC5sZW5ndGgsYT0wLG89TWF0aC5taW4ocixuKTthPG87KythKWlmKGVbYV0hPT10W2FdKXtyPWVbYV0sbj10W2FdO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sZ3IuaXNFbmNvZGluZz1mdW5jdGlvbihlKXtzd2l0Y2goU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UiaGV4IjpjYXNlInV0ZjgiOmNhc2UidXRmLTgiOmNhc2UiYXNjaWkiOmNhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6Y2FzZSJiYXNlNjQiOmNhc2UidWNzMiI6Y2FzZSJ1Y3MtMiI6Y2FzZSJ1dGYxNmxlIjpjYXNlInV0Zi0xNmxlIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sZ3IuY29uY2F0PWZ1bmN0aW9uKGUsdCl7aWYoIWhyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09ZS5sZW5ndGgpcmV0dXJuIGdyLmFsbG9jKDApO3ZhciByO2lmKHZvaWQgMD09PXQpZm9yKHQ9MCxyPTA7cjxlLmxlbmd0aDsrK3IpdCs9ZVtyXS5sZW5ndGg7dmFyIG49Z3IuYWxsb2NVbnNhZmUodCksYT0wO2ZvcihyPTA7cjxlLmxlbmd0aDsrK3Ipe3ZhciBvPWVbcl07aWYoIVJyKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtvLmNvcHkobixhKSxhKz1vLmxlbmd0aH1yZXR1cm4gbn0sZ3IuYnl0ZUxlbmd0aD1fcixnci5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLGdyLnByb3RvdHlwZS5zd2FwMTY9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTIpU3IodGhpcyx0LHQrMSk7cmV0dXJuIHRoaXN9LGdyLnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxlbmd0aDtpZihlJTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzIik7Zm9yKHZhciB0PTA7dDxlO3QrPTQpU3IodGhpcyx0LHQrMyksU3IodGhpcyx0KzEsdCsyKTtyZXR1cm4gdGhpc30sZ3IucHJvdG90eXBlLnN3YXA2ND1mdW5jdGlvbigpe3ZhciBlPXRoaXMubGVuZ3RoO2lmKGUlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMiKTtmb3IodmFyIHQ9MDt0PGU7dCs9OClTcih0aGlzLHQsdCs3KSxTcih0aGlzLHQrMSx0KzYpLFNyKHRoaXMsdCsyLHQrNSksU3IodGhpcyx0KzMsdCs0KTtyZXR1cm4gdGhpc30sZ3IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGU9MHx0aGlzLmxlbmd0aDtyZXR1cm4gMD09PWU/IiI6MD09PWFyZ3VtZW50cy5sZW5ndGg/THIodGhpcywwLGUpOnhyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ3IucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbihlKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO3JldHVybiB0aGlzPT09ZXx8MD09PWdyLmNvbXBhcmUodGhpcyxlKX0sZ3IucHJvdG90eXBlLmluc3BlY3Q9ZnVuY3Rpb24oKXt2YXIgZT0iIjtyZXR1cm4gdGhpcy5sZW5ndGg+MCYmKGU9dGhpcy50b1N0cmluZygiaGV4IiwwLDUwKS5tYXRjaCgvLnsyfS9nKS5qb2luKCIgIiksdGhpcy5sZW5ndGg+NTAmJihlKz0iIC4uLiAiKSksIjxCdWZmZXIgIitlKyI+In0sZ3IucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0LHIsbixhKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciIpO2lmKHZvaWQgMD09PXQmJih0PTApLHZvaWQgMD09PXImJihyPWU/ZS5sZW5ndGg6MCksdm9pZCAwPT09biYmKG49MCksdm9pZCAwPT09YSYmKGE9dGhpcy5sZW5ndGgpLHQ8MHx8cj5lLmxlbmd0aHx8bjwwfHxhPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJvdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihuPj1hJiZ0Pj1yKXJldHVybiAwO2lmKG4+PWEpcmV0dXJuLTE7aWYodD49cilyZXR1cm4gMTtpZih0aGlzPT09ZSlyZXR1cm4gMDtmb3IodmFyIG89KGE+Pj49MCktKG4+Pj49MCksaT0ocj4+Pj0wKS0odD4+Pj0wKSxzPU1hdGgubWluKG8saSksdT10aGlzLnNsaWNlKG4sYSksYz1lLnNsaWNlKHQsciksZj0wO2Y8czsrK2YpaWYodVtmXSE9PWNbZl0pe289dVtmXSxpPWNbZl07YnJlYWt9cmV0dXJuIG88aT8tMTppPG8/MTowfSxnci5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZSx0LHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKGUsdCxyKX0sZ3IucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBFcih0aGlzLGUsdCxyLCEwKX0sZ3IucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRXIodGhpcyxlLHQsciwhMSl9LGdyLnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbihlLHQscixuKXtpZih2b2lkIDA9PT10KW49InV0ZjgiLHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2UgaWYodm9pZCAwPT09ciYmInN0cmluZyI9PXR5cGVvZiB0KW49dCxyPXRoaXMubGVuZ3RoLHQ9MDtlbHNle2lmKCFpc0Zpbml0ZSh0KSl0aHJvdyBuZXcgRXJyb3IoIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkIik7dHw9MCxpc0Zpbml0ZShyKT8ocnw9MCx2b2lkIDA9PT1uJiYobj0idXRmOCIpKToobj1yLHI9dm9pZCAwKX12YXIgYT10aGlzLmxlbmd0aC10O2lmKCh2b2lkIDA9PT1yfHxyPmEpJiYocj1hKSxlLmxlbmd0aD4wJiYocjwwfHx0PDApfHx0PnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcyIpO258fChuPSJ1dGY4Iik7Zm9yKHZhciBvPSExOzspc3dpdGNoKG4pe2Nhc2UiaGV4IjpyZXR1cm4gQXIodGhpcyxlLHQscik7Y2FzZSJ1dGY4IjpjYXNlInV0Zi04IjpyZXR1cm4gQ3IodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIERyKHRoaXMsZSx0LHIpO2Nhc2UibGF0aW4xIjpjYXNlImJpbmFyeSI6cmV0dXJuIE9yKHRoaXMsZSx0LHIpO2Nhc2UiYmFzZTY0IjpyZXR1cm4gUHIodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiBJcih0aGlzLGUsdCxyKTtkZWZhdWx0OmlmKG8pdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBlbmNvZGluZzogIituKTtuPSgiIituKS50b0xvd2VyQ2FzZSgpLG89ITB9fSxnci5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IkJ1ZmZlciIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTt2YXIgSHI9NDA5NjtmdW5jdGlvbiBNcihlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGE9dDthPHI7KythKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMTI3JmVbYV0pO3JldHVybiBufWZ1bmN0aW9uIGpyKGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgYT10O2E8cjsrK2Epbis9U3RyaW5nLmZyb21DaGFyQ29kZShlW2FdKTtyZXR1cm4gbn1mdW5jdGlvbiBOcihlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBhPSIiLG89dDtvPHI7KytvKWErPUdyKGVbb10pO3JldHVybiBhfWZ1bmN0aW9uIHFyKGUsdCxyKXtmb3IodmFyIG49ZS5zbGljZSh0LHIpLGE9IiIsbz0wO288bi5sZW5ndGg7bys9MilhKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bb10rMjU2Km5bbysxXSk7cmV0dXJuIGF9ZnVuY3Rpb24gS3IoZSx0LHIpe2lmKGUlMSE9MHx8ZTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJvZmZzZXQgaXMgbm90IHVpbnQiKTtpZihlK3Q+cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCIpfWZ1bmN0aW9uIEpyKGUsdCxyLG4sYSxvKXtpZighUnIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKHQ+YXx8dDxvKXRocm93IG5ldyBSYW5nZUVycm9yKCcidmFsdWUiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIEJyKGUsdCxyLG4pe3Q8MCYmKHQ9NjU1MzUrdCsxKTtmb3IodmFyIGE9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsMik7YTxvOysrYSllW3IrYV09KHQmMjU1PDw4KihuP2E6MS1hKSk+Pj44KihuP2E6MS1hKX1mdW5jdGlvbiBGcihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGE9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7YTxvOysrYSllW3IrYV09dD4+PjgqKG4/YTozLWEpJjI1NX1mdW5jdGlvbiBXcihlLHQscixuLGEsbyl7aWYocituPmUubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbmRleCBvdXQgb2YgcmFuZ2UiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpfWZ1bmN0aW9uIHpyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fFdyKGUsMCxyLDQpLGZyKGUsdCxyLG4sMjMsNCkscis0fWZ1bmN0aW9uIFZyKGUsdCxyLG4sYSl7cmV0dXJuIGF8fFdyKGUsMCxyLDgpLGZyKGUsdCxyLG4sNTIsOCkscis4fWdyLnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbihlLHQpe3ZhciByLG49dGhpcy5sZW5ndGg7aWYoKGU9fn5lKTwwPyhlKz1uKTwwJiYoZT0wKTplPm4mJihlPW4pLCh0PXZvaWQgMD09PXQ/bjp+fnQpPDA/KHQrPW4pPDAmJih0PTApOnQ+biYmKHQ9biksdDxlJiYodD1lKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPWdyLnByb3RvdHlwZTtlbHNle3ZhciBhPXQtZTtyPW5ldyBncihhLHZvaWQgMCk7Zm9yKHZhciBvPTA7bzxhOysrbylyW29dPXRoaXNbbytlXX1yZXR1cm4gcn0sZ3IucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxvPTA7KytvPHQmJihhKj0yNTYpOyluKz10aGlzW2Urb10qYTtyZXR1cm4gbn0sZ3IucHJvdG90eXBlLnJlYWRVSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxhPTE7dD4wJiYoYSo9MjU2KTspbis9dGhpc1tlKy0tdF0qYTtyZXR1cm4gbn0sZ3IucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDEsdGhpcy5sZW5ndGgpLHRoaXNbZV19LGdyLnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwyLHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OH0sZ3IucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSxnci5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksKHRoaXNbZV18dGhpc1tlKzFdPDw4fHRoaXNbZSsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbZSszXX0sZ3IucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbZV0rKHRoaXNbZSsxXTw8MTZ8dGhpc1tlKzJdPDw4fHRoaXNbZSszXSl9LGdyLnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGE9MSxvPTA7KytvPHQmJihhKj0yNTYpOyluKz10aGlzW2Urb10qYTtyZXR1cm4gbj49KGEqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LGdyLnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxLcihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10LGE9MSxvPXRoaXNbZSstLW5dO24+MCYmKGEqPTI1Nik7KW8rPXRoaXNbZSstLW5dKmE7cmV0dXJuIG8+PShhKj0xMjgpJiYoby09TWF0aC5wb3coMiw4KnQpKSxvfSxnci5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1tlXT8tMSooMjU1LXRoaXNbZV0rMSk6dGhpc1tlXX0sZ3IucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKGUsdCl7dHx8S3IoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZ3IucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKGUsdCl7dHx8S3IoZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2UrMV18dGhpc1tlXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sZ3IucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksdGhpc1tlXXx0aGlzW2UrMV08PDh8dGhpc1tlKzJdPDwxNnx0aGlzW2UrM108PDI0fSxnci5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8S3IoZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LGdyLnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxLcihlLDQsdGhpcy5sZW5ndGgpLGNyKHRoaXMsZSwhMCwyMyw0KX0sZ3IucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsNCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCExLDIzLDQpfSxnci5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsOCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCEwLDUyLDgpfSxnci5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fEtyKGUsOCx0aGlzLmxlbmd0aCksY3IodGhpcyxlLCExLDUyLDgpfSxnci5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxKcih0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBhPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoYSo9MjU2KTspdGhpc1t0K29dPWUvYSYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8SnIodGhpcyxlLHQscixNYXRoLnBvdygyLDgqciktMSwwKTt2YXIgYT1yLTEsbz0xO2Zvcih0aGlzW3QrYV09MjU1JmU7LS1hPj0wJiYobyo9MjU2KTspdGhpc1t0K2FdPWUvbyYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsMSwyNTUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVHx8KGU9TWF0aC5mbG9vcihlKSksdGhpc1t0XT0yNTUmZSx0KzF9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsNjU1MzUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT0yNTUmZSx0aGlzW3QrMV09ZT4+PjgpOkJyKHRoaXMsZSx0LCEwKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsNjU1MzUsMCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkJyKHRoaXMsZSx0LCExKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3QrM109ZT4+PjI0LHRoaXNbdCsyXT1lPj4+MTYsdGhpc1t0KzFdPWU+Pj44LHRoaXNbdF09MjU1JmUpOkZyKHRoaXMsZSx0LCEwKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOkZyKHRoaXMsZSx0LCExKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUludExFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7SnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBvPTAsaT0xLHM9MDtmb3IodGhpc1t0XT0yNTUmZTsrK288ciYmKGkqPTI1Nik7KWU8MCYmMD09PXMmJjAhPT10aGlzW3Qrby0xXSYmKHM9MSksdGhpc1t0K29dPShlL2k+PjApLXMmMjU1O3JldHVybiB0K3J9LGdyLnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGE9TWF0aC5wb3coMiw4KnItMSk7SnIodGhpcyxlLHQscixhLTEsLWEpfXZhciBvPXItMSxpPTEscz0wO2Zvcih0aGlzW3Qrb109MjU1JmU7LS1vPj0wJiYoaSo9MjU2KTspZTwwJiYwPT09cyYmMCE9PXRoaXNbdCtvKzFdJiYocz0xKSx0aGlzW3Qrb109KGUvaT4+MCktcyYyNTU7cmV0dXJuIHQrcn0sZ3IucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwxLDEyNywtMTI4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUfHwoZT1NYXRoLmZsb29yKGUpKSxlPDAmJihlPTI1NStlKzEpLHRoaXNbdF09MjU1JmUsdCsxfSxnci5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fEpyKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCk6QnIodGhpcyxlLHQsITApLHQrMn0sZ3IucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxKcih0aGlzLGUsdCwyLDMyNzY3LC0zMjc2OCksZ3IuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOkJyKHRoaXMsZSx0LCExKSx0KzJ9LGdyLnByb3RvdHlwZS53cml0ZUludDMyTEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkZyKHRoaXMsZSx0LCEwKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8SnIodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSxnci5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPWU+Pj4yNCx0aGlzW3QrMV09ZT4+PjE2LHRoaXNbdCsyXT1lPj4+OCx0aGlzW3QrM109MjU1JmUpOkZyKHRoaXMsZSx0LCExKSx0KzR9LGdyLnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB6cih0aGlzLGUsdCwhMCxyKX0sZ3IucHJvdG90eXBlLndyaXRlRmxvYXRCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHpyKHRoaXMsZSx0LCExLHIpfSxnci5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCEwLHIpfSxnci5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIFZyKHRoaXMsZSx0LCExLHIpfSxnci5wcm90b3R5cGUuY29weT1mdW5jdGlvbihlLHQscixuKXtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLHQ+PWUubGVuZ3RoJiYodD1lLmxlbmd0aCksdHx8KHQ9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT1lLmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigidGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcyIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInNvdXJjZUVuZCBvdXQgb2YgYm91bmRzIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLGUubGVuZ3RoLXQ8bi1yJiYobj1lLmxlbmd0aC10K3IpO3ZhciBhLG89bi1yO2lmKHRoaXM9PT1lJiZyPHQmJnQ8bilmb3IoYT1vLTE7YT49MDstLWEpZVthK3RdPXRoaXNbYStyXTtlbHNlIGlmKG88MWUzfHwhZ3IuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoYT0wO2E8bzsrK2EpZVthK3RdPXRoaXNbYStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LGdyLnByb3RvdHlwZS5maWxsPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKCJzdHJpbmciPT10eXBlb2YgZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0PyhuPXQsdD0wLHI9dGhpcy5sZW5ndGgpOiJzdHJpbmciPT10eXBlb2YgciYmKG49cixyPXRoaXMubGVuZ3RoKSwxPT09ZS5sZW5ndGgpe3ZhciBhPWUuY2hhckNvZGVBdCgwKTthPDI1NiYmKGU9YSl9aWYodm9pZCAwIT09biYmInN0cmluZyIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09dHlwZW9mIG4mJiFnci5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT10eXBlb2YgZSYmKGUmPTI1NSk7aWYodDwwfHx0aGlzLmxlbmd0aDx0fHx0aGlzLmxlbmd0aDxyKXRocm93IG5ldyBSYW5nZUVycm9yKCJPdXQgb2YgcmFuZ2UgaW5kZXgiKTtpZihyPD10KXJldHVybiB0aGlzO3ZhciBvO2lmKHQ+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsZXx8KGU9MCksIm51bWJlciI9PXR5cGVvZiBlKWZvcihvPXQ7bzxyOysrbyl0aGlzW29dPWU7ZWxzZXt2YXIgaT1ScihlKT9lOlhyKG5ldyBncihlLG4pLnRvU3RyaW5nKCkpLHM9aS5sZW5ndGg7Zm9yKG89MDtvPHItdDsrK28pdGhpc1tvK3RdPWlbbyVzXX1yZXR1cm4gdGhpc307dmFyIFlyPS9bXitcLzAtOUEtWmEtei1fXS9nO2Z1bmN0aW9uIEdyKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBYcihlLHQpe3ZhciByO3Q9dHx8MS8wO2Zvcih2YXIgbj1lLmxlbmd0aCxhPW51bGwsbz1bXSxpPTA7aTxuOysraSl7aWYoKHI9ZS5jaGFyQ29kZUF0KGkpKT41NTI5NSYmcjw1NzM0NCl7aWYoIWEpe2lmKHI+NTYzMTkpeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihpKzE9PT1uKXsodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9YT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxhPXI7Y29udGludWV9cj02NTUzNisoYS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBhJiYodC09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoYT1udWxsLHI8MTI4KXtpZigodC09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKCh0LT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigodC09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY29kZSBwb2ludCIpO2lmKCh0LT00KTwwKWJyZWFrO28ucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIG99ZnVuY3Rpb24gJHIoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLG8saTtvcnx8aXIoKTt2YXIgcz1lLmxlbmd0aDtpZihzJTQ+MCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQiKTtvPSI9Ij09PWVbcy0yXT8yOiI9Ij09PWVbcy0xXT8xOjAsaT1uZXcgYXIoMypzLzQtbyksbj1vPjA/cy00OnM7dmFyIHU9MDtmb3IodD0wLHI9MDt0PG47dCs9NCxyKz0zKWE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MTh8bnJbZS5jaGFyQ29kZUF0KHQrMSldPDwxMnxucltlLmNoYXJDb2RlQXQodCsyKV08PDZ8bnJbZS5jaGFyQ29kZUF0KHQrMyldLGlbdSsrXT1hPj4xNiYyNTUsaVt1KytdPWE+PjgmMjU1LGlbdSsrXT0yNTUmYTtyZXR1cm4gMj09PW8/KGE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MnxucltlLmNoYXJDb2RlQXQodCsxKV0+PjQsaVt1KytdPTI1NSZhKToxPT09byYmKGE9bnJbZS5jaGFyQ29kZUF0KHQpXTw8MTB8bnJbZS5jaGFyQ29kZUF0KHQrMSldPDw0fG5yW2UuY2hhckNvZGVBdCh0KzIpXT4+MixpW3UrK109YT4+OCYyNTUsaVt1KytdPTI1NSZhKSxpfShmdW5jdGlvbihlKXtpZigoZT1mdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfShlKS5yZXBsYWNlKFlyLCIiKSkubGVuZ3RoPDIpcmV0dXJuIiI7Zm9yKDtlLmxlbmd0aCU0IT0wOyllKz0iPSI7cmV0dXJuIGV9KGUpKX1mdW5jdGlvbiBacihlLHQscixuKXtmb3IodmFyIGE9MDthPG4mJiEoYStyPj10Lmxlbmd0aHx8YT49ZS5sZW5ndGgpOysrYSl0W2Ercl09ZVthXTtyZXR1cm4gYX1mdW5jdGlvbiBRcihlKXtyZXR1cm4gbnVsbCE9ZSYmKCEhZS5faXNCdWZmZXJ8fGVuKGUpfHxmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZS5yZWFkRmxvYXRMRSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2xpY2UmJmVuKGUuc2xpY2UoMCwwKSl9KGUpKX1mdW5jdGlvbiBlbihlKXtyZXR1cm4hIWUuY29uc3RydWN0b3ImJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfXZhciB0bj1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxCdWZmZXI6Z3IsSU5TUEVDVF9NQVhfQllURVM6NTAsU2xvd0J1ZmZlcjpmdW5jdGlvbihlKXtyZXR1cm4rZSE9ZSYmKGU9MCksZ3IuYWxsb2MoK2UpfSxpc0J1ZmZlcjpRcixrTWF4TGVuZ3RoOnByfSkscm49e2V4cG9ydHM6e319LG5uPXt9LGFuPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhbiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksYW4uZGVmYXVsdD1mdW5jdGlvbihlKXt2YXIgdD1lLmxlbmd0aCxyPXQlNDtpZighcilyZXR1cm4gZTt2YXIgbj10LGE9NC1yLG89dCthLGk9Z3IuYWxsb2Mobyk7Zm9yKGkud3JpdGUoZSk7YS0tOylpLndyaXRlKCI9IixuKyspO3JldHVybiBpLnRvU3RyaW5nKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShubiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG9uPWFuO2Z1bmN0aW9uIHNuKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQmJih0PSJ1dGY4IiksZ3IuaXNCdWZmZXIoZSk/Y24oZS50b1N0cmluZygiYmFzZTY0IikpOmNuKGdyLmZyb20oZSx0KS50b1N0cmluZygiYmFzZTY0IikpfWZ1bmN0aW9uIHVuKGUpe3JldHVybiBlPWUudG9TdHJpbmcoKSxvbi5kZWZhdWx0KGUpLnJlcGxhY2UoL1wtL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKX1mdW5jdGlvbiBjbihlKXtyZXR1cm4gZS5yZXBsYWNlKC89L2csIiIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIil9dmFyIGZuLGxuPXNuO2xuLmVuY29kZT1zbixsbi5kZWNvZGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9InV0ZjgiKSxnci5mcm9tKHVuKGUpLCJiYXNlNjQiKS50b1N0cmluZyh0KX0sbG4udG9CYXNlNjQ9dW4sbG4uZnJvbUJhc2U2ND1jbixsbi50b0J1ZmZlcj1mdW5jdGlvbihlKXtyZXR1cm4gZ3IuZnJvbSh1bihlKSwiYmFzZTY0Iil9LG5uLmRlZmF1bHQ9bG4sKGZuPXJuKS5leHBvcnRzPW5uLmRlZmF1bHQsZm4uZXhwb3J0cy5kZWZhdWx0PWZuLmV4cG9ydHM7dmFyIGhuPXJuLmV4cG9ydHMscG49e2V4cG9ydHM6e319OyFmdW5jdGlvbihlKXshZnVuY3Rpb24odCxyKXt2YXIgbj17fTshZnVuY3Rpb24oZSl7ZS5fX2VzTW9kdWxlPSEwLGUuZGlnZXN0TGVuZ3RoPTMyLGUuYmxvY2tTaXplPTY0O3ZhciB0PW5ldyBVaW50MzJBcnJheShbMTExNjM1MjQwOCwxODk5NDQ3NDQxLDMwNDkzMjM0NzEsMzkyMTAwOTU3Myw5NjE5ODcxNjMsMTUwODk3MDk5MywyNDUzNjM1NzQ4LDI4NzA3NjMyMjEsMzYyNDM4MTA4MCwzMTA1OTg0MDEsNjA3MjI1Mjc4LDE0MjY4ODE5ODcsMTkyNTA3ODM4OCwyMTYyMDc4MjA2LDI2MTQ4ODgxMDMsMzI0ODIyMjU4MCwzODM1MzkwNDAxLDQwMjIyMjQ3NzQsMjY0MzQ3MDc4LDYwNDgwNzYyOCw3NzAyNTU5ODMsMTI0OTE1MDEyMiwxNTU1MDgxNjkyLDE5OTYwNjQ5ODYsMjU1NDIyMDg4MiwyODIxODM0MzQ5LDI5NTI5OTY4MDgsMzIxMDMxMzY3MSwzMzM2NTcxODkxLDM1ODQ1Mjg3MTEsMTEzOTI2OTkzLDMzODI0MTg5NSw2NjYzMDcyMDUsNzczNTI5OTEyLDEyOTQ3NTczNzIsMTM5NjE4MjI5MSwxNjk1MTgzNzAwLDE5ODY2NjEwNTEsMjE3NzAyNjM1MCwyNDU2OTU2MDM3LDI3MzA0ODU5MjEsMjgyMDMwMjQxMSwzMjU5NzMwODAwLDMzNDU3NjQ3NzEsMzUxNjA2NTgxNywzNjAwMzUyODA0LDQwOTQ1NzE5MDksMjc1NDIzMzQ0LDQzMDIyNzczNCw1MDY5NDg2MTYsNjU5MDYwNTU2LDg4Mzk5Nzg3Nyw5NTgxMzk1NzEsMTMyMjgyMjIxOCwxNTM3MDAyMDYzLDE3NDc4NzM3NzksMTk1NTU2MjIyMiwyMDI0MTA0ODE1LDIyMjc3MzA0NTIsMjM2MTg1MjQyNCwyNDI4NDM2NDc0LDI3NTY3MzQxODcsMzIwNDAzMTQ3OSwzMzI5MzI1Mjk4XSk7ZnVuY3Rpb24gcihlLHIsbixhLG8pe2Zvcih2YXIgaSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seTtvPj02NDspe2ZvcihpPXJbMF0scz1yWzFdLHU9clsyXSxjPXJbM10sZj1yWzRdLGw9cls1XSxoPXJbNl0scD1yWzddLHY9MDt2PDE2O3YrKylnPWErNCp2LGVbdl09KDI1NSZuW2ddKTw8MjR8KDI1NSZuW2crMV0pPDwxNnwoMjU1Jm5bZysyXSk8PDh8MjU1Jm5bZyszXTtmb3Iodj0xNjt2PDY0O3YrKyltPSgoZD1lW3YtMl0pPj4+MTd8ZDw8MTUpXihkPj4+MTl8ZDw8MTMpXmQ+Pj4xMCx5PSgoZD1lW3YtMTVdKT4+Pjd8ZDw8MjUpXihkPj4+MTh8ZDw8MTQpXmQ+Pj4zLGVbdl09KG0rZVt2LTddfDApKyh5K2Vbdi0xNl18MCk7Zm9yKHY9MDt2PDY0O3YrKyltPSgoKGY+Pj42fGY8PDI2KV4oZj4+PjExfGY8PDIxKV4oZj4+PjI1fGY8PDcpKSsoZiZsXn5mJmgpfDApKyhwKyh0W3ZdK2Vbdl18MCl8MCl8MCx5PSgoaT4+PjJ8aTw8MzApXihpPj4+MTN8aTw8MTkpXihpPj4+MjJ8aTw8MTApKSsoaSZzXmkmdV5zJnUpfDAscD1oLGg9bCxsPWYsZj1jK218MCxjPXUsdT1zLHM9aSxpPW0reXwwO3JbMF0rPWksclsxXSs9cyxyWzJdKz11LHJbM10rPWMscls0XSs9ZixyWzVdKz1sLHJbNl0rPWgscls3XSs9cCxhKz02NCxvLT02NH1yZXR1cm4gYX12YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt0aGlzLmRpZ2VzdExlbmd0aD1lLmRpZ2VzdExlbmd0aCx0aGlzLmJsb2NrU2l6ZT1lLmJsb2NrU2l6ZSx0aGlzLnN0YXRlPW5ldyBJbnQzMkFycmF5KDgpLHRoaXMudGVtcD1uZXcgSW50MzJBcnJheSg2NCksdGhpcy5idWZmZXI9bmV3IFVpbnQ4QXJyYXkoMTI4KSx0aGlzLmJ1ZmZlckxlbmd0aD0wLHRoaXMuYnl0ZXNIYXNoZWQ9MCx0aGlzLmZpbmlzaGVkPSExLHRoaXMucmVzZXQoKX1yZXR1cm4gdC5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGF0ZVswXT0xNzc5MDMzNzAzLHRoaXMuc3RhdGVbMV09MzE0NDEzNDI3Nyx0aGlzLnN0YXRlWzJdPTEwMTM5MDQyNDIsdGhpcy5zdGF0ZVszXT0yNzczNDgwNzYyLHRoaXMuc3RhdGVbNF09MTM1OTg5MzExOSx0aGlzLnN0YXRlWzVdPTI2MDA4MjI5MjQsdGhpcy5zdGF0ZVs2XT01Mjg3MzQ2MzUsdGhpcy5zdGF0ZVs3XT0xNTQxNDU5MjI1LHRoaXMuYnVmZmVyTGVuZ3RoPTAsdGhpcy5ieXRlc0hhc2hlZD0wLHRoaXMuZmluaXNoZWQ9ITEsdGhpc30sdC5wcm90b3R5cGUuY2xlYW49ZnVuY3Rpb24oKXtmb3IodmFyIGU9MDtlPHRoaXMuYnVmZmVyLmxlbmd0aDtlKyspdGhpcy5idWZmZXJbZV09MDtmb3IoZT0wO2U8dGhpcy50ZW1wLmxlbmd0aDtlKyspdGhpcy50ZW1wW2VdPTA7dGhpcy5yZXNldCgpfSx0LnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSx0KXtpZih2b2lkIDA9PT10JiYodD1lLmxlbmd0aCksdGhpcy5maW5pc2hlZCl0aHJvdyBuZXcgRXJyb3IoIlNIQTI1NjogY2FuJ3QgdXBkYXRlIGJlY2F1c2UgaGFzaCB3YXMgZmluaXNoZWQuIik7dmFyIG49MDtpZih0aGlzLmJ5dGVzSGFzaGVkKz10LHRoaXMuYnVmZmVyTGVuZ3RoPjApe2Zvcig7dGhpcy5idWZmZXJMZW5ndGg8NjQmJnQ+MDspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJMZW5ndGgrK109ZVtuKytdLHQtLTs2ND09PXRoaXMuYnVmZmVyTGVuZ3RoJiYocih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLDY0KSx0aGlzLmJ1ZmZlckxlbmd0aD0wKX1mb3IodD49NjQmJihuPXIodGhpcy50ZW1wLHRoaXMuc3RhdGUsZSxuLHQpLHQlPTY0KTt0PjA7KXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyTGVuZ3RoKytdPWVbbisrXSx0LS07cmV0dXJuIHRoaXN9LHQucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbihlKXtpZighdGhpcy5maW5pc2hlZCl7dmFyIHQ9dGhpcy5ieXRlc0hhc2hlZCxuPXRoaXMuYnVmZmVyTGVuZ3RoLGE9dC81MzY4NzA5MTJ8MCxvPXQ8PDMsaT10JTY0PDU2PzY0OjEyODt0aGlzLmJ1ZmZlcltuXT0xMjg7Zm9yKHZhciBzPW4rMTtzPGktODtzKyspdGhpcy5idWZmZXJbc109MDt0aGlzLmJ1ZmZlcltpLThdPWE+Pj4yNCYyNTUsdGhpcy5idWZmZXJbaS03XT1hPj4+MTYmMjU1LHRoaXMuYnVmZmVyW2ktNl09YT4+PjgmMjU1LHRoaXMuYnVmZmVyW2ktNV09YT4+PjAmMjU1LHRoaXMuYnVmZmVyW2ktNF09bz4+PjI0JjI1NSx0aGlzLmJ1ZmZlcltpLTNdPW8+Pj4xNiYyNTUsdGhpcy5idWZmZXJbaS0yXT1vPj4+OCYyNTUsdGhpcy5idWZmZXJbaS0xXT1vPj4+MCYyNTUscih0aGlzLnRlbXAsdGhpcy5zdGF0ZSx0aGlzLmJ1ZmZlciwwLGkpLHRoaXMuZmluaXNoZWQ9ITB9Zm9yKHM9MDtzPDg7cysrKWVbNCpzKzBdPXRoaXMuc3RhdGVbc10+Pj4yNCYyNTUsZVs0KnMrMV09dGhpcy5zdGF0ZVtzXT4+PjE2JjI1NSxlWzQqcysyXT10aGlzLnN0YXRlW3NdPj4+OCYyNTUsZVs0KnMrM109dGhpcy5zdGF0ZVtzXT4+PjAmMjU1O3JldHVybiB0aGlzfSx0LnByb3RvdHlwZS5kaWdlc3Q9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgVWludDhBcnJheSh0aGlzLmRpZ2VzdExlbmd0aCk7cmV0dXJuIHRoaXMuZmluaXNoKGUpLGV9LHQucHJvdG90eXBlLl9zYXZlU3RhdGU9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx0aGlzLnN0YXRlLmxlbmd0aDt0KyspZVt0XT10aGlzLnN0YXRlW3RdfSx0LnByb3RvdHlwZS5fcmVzdG9yZVN0YXRlPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPTA7cjx0aGlzLnN0YXRlLmxlbmd0aDtyKyspdGhpcy5zdGF0ZVtyXT1lW3JdO3RoaXMuYnl0ZXNIYXNoZWQ9dCx0aGlzLmZpbmlzaGVkPSExLHRoaXMuYnVmZmVyTGVuZ3RoPTB9LHR9KCk7ZS5IYXNoPW47dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuaW5uZXI9bmV3IG4sdGhpcy5vdXRlcj1uZXcgbix0aGlzLmJsb2NrU2l6ZT10aGlzLmlubmVyLmJsb2NrU2l6ZSx0aGlzLmRpZ2VzdExlbmd0aD10aGlzLmlubmVyLmRpZ2VzdExlbmd0aDt2YXIgdD1uZXcgVWludDhBcnJheSh0aGlzLmJsb2NrU2l6ZSk7aWYoZS5sZW5ndGg+dGhpcy5ibG9ja1NpemUpKG5ldyBuKS51cGRhdGUoZSkuZmluaXNoKHQpLmNsZWFuKCk7ZWxzZSBmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl0W3JdPWVbcl07Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl0W3JdXj01NDt0aGlzLmlubmVyLnVwZGF0ZSh0KTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl1ePTEwNjt0aGlzLm91dGVyLnVwZGF0ZSh0KSx0aGlzLmlzdGF0ZT1uZXcgVWludDMyQXJyYXkoOCksdGhpcy5vc3RhdGU9bmV3IFVpbnQzMkFycmF5KDgpLHRoaXMuaW5uZXIuX3NhdmVTdGF0ZSh0aGlzLmlzdGF0ZSksdGhpcy5vdXRlci5fc2F2ZVN0YXRlKHRoaXMub3N0YXRlKTtmb3Iocj0wO3I8dC5sZW5ndGg7cisrKXRbcl09MH1yZXR1cm4gZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbm5lci5fcmVzdG9yZVN0YXRlKHRoaXMuaXN0YXRlLHRoaXMuaW5uZXIuYmxvY2tTaXplKSx0aGlzLm91dGVyLl9yZXN0b3JlU3RhdGUodGhpcy5vc3RhdGUsdGhpcy5vdXRlci5ibG9ja1NpemUpLHRoaXN9LGUucHJvdG90eXBlLmNsZWFuPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPTA7ZTx0aGlzLmlzdGF0ZS5sZW5ndGg7ZSsrKXRoaXMub3N0YXRlW2VdPXRoaXMuaXN0YXRlW2VdPTA7dGhpcy5pbm5lci5jbGVhbigpLHRoaXMub3V0ZXIuY2xlYW4oKX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmlubmVyLnVwZGF0ZShlKSx0aGlzfSxlLnByb3RvdHlwZS5maW5pc2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3V0ZXIuZmluaXNoZWQ/dGhpcy5vdXRlci5maW5pc2goZSk6KHRoaXMuaW5uZXIuZmluaXNoKGUpLHRoaXMub3V0ZXIudXBkYXRlKGUsdGhpcy5kaWdlc3RMZW5ndGgpLmZpbmlzaChlKSksdGhpc30sZS5wcm90b3R5cGUuZGlnZXN0PWZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkodGhpcy5kaWdlc3RMZW5ndGgpO3JldHVybiB0aGlzLmZpbmlzaChlKSxlfSxlfSgpO2Z1bmN0aW9uIG8oZSl7dmFyIHQ9KG5ldyBuKS51cGRhdGUoZSkscj10LmRpZ2VzdCgpO3JldHVybiB0LmNsZWFuKCkscn1mdW5jdGlvbiBpKGUsdCl7dmFyIHI9bmV3IGEoZSkudXBkYXRlKHQpLG49ci5kaWdlc3QoKTtyZXR1cm4gci5jbGVhbigpLG59ZnVuY3Rpb24gcyhlLHQscixuKXt2YXIgYT1uWzBdO2lmKDA9PT1hKXRocm93IG5ldyBFcnJvcigiaGtkZjogY2Fubm90IGV4cGFuZCBtb3JlIik7dC5yZXNldCgpLGE+MSYmdC51cGRhdGUoZSksciYmdC51cGRhdGUociksdC51cGRhdGUobiksdC5maW5pc2goZSksblswXSsrfWUuSE1BQz1hLGUuaGFzaD1vLGUuZGVmYXVsdD1vLGUuaG1hYz1pO3ZhciB1PW5ldyBVaW50OEFycmF5KGUuZGlnZXN0TGVuZ3RoKTtmdW5jdGlvbiBjKGUsdCxyLG4pe3ZvaWQgMD09PXQmJih0PXUpLHZvaWQgMD09PW4mJihuPTMyKTtmb3IodmFyIG89bmV3IFVpbnQ4QXJyYXkoWzFdKSxjPWkodCxlKSxmPW5ldyBhKGMpLGw9bmV3IFVpbnQ4QXJyYXkoZi5kaWdlc3RMZW5ndGgpLGg9bC5sZW5ndGgscD1uZXcgVWludDhBcnJheShuKSxkPTA7ZDxuO2QrKyloPT09bC5sZW5ndGgmJihzKGwsZixyLG8pLGg9MCkscFtkXT1sW2grK107cmV0dXJuIGYuY2xlYW4oKSxsLmZpbGwoMCksby5maWxsKDApLHB9ZnVuY3Rpb24gZihlLHQscixuKXtmb3IodmFyIG89bmV3IGEoZSksaT1vLmRpZ2VzdExlbmd0aCxzPW5ldyBVaW50OEFycmF5KDQpLHU9bmV3IFVpbnQ4QXJyYXkoaSksYz1uZXcgVWludDhBcnJheShpKSxmPW5ldyBVaW50OEFycmF5KG4pLGw9MDtsKmk8bjtsKyspe3ZhciBoPWwrMTtzWzBdPWg+Pj4yNCYyNTUsc1sxXT1oPj4+MTYmMjU1LHNbMl09aD4+PjgmMjU1LHNbM109aD4+PjAmMjU1LG8ucmVzZXQoKSxvLnVwZGF0ZSh0KSxvLnVwZGF0ZShzKSxvLmZpbmlzaChjKTtmb3IodmFyIHA9MDtwPGk7cCsrKXVbcF09Y1twXTtmb3IocD0yO3A8PXI7cCsrKXtvLnJlc2V0KCksby51cGRhdGUoYykuZmluaXNoKGMpO2Zvcih2YXIgZD0wO2Q8aTtkKyspdVtkXV49Y1tkXX1mb3IocD0wO3A8aSYmbCppK3A8bjtwKyspZltsKmkrcF09dVtwXX1mb3IobD0wO2w8aTtsKyspdVtsXT1jW2xdPTA7Zm9yKGw9MDtsPDQ7bCsrKXNbbF09MDtyZXR1cm4gby5jbGVhbigpLGZ9ZS5oa2RmPWMsZS5wYmtkZjI9Zn0obik7dmFyIGE9bi5kZWZhdWx0O2Zvcih2YXIgbyBpbiBuKWFbb109bltvXTtlLmV4cG9ydHM9YX0oKX0ocG4pO3ZhciBkbj1XKHBuLmV4cG9ydHMpLHZuPWNyeXB0byxnbj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIENyeXB0b0tleX0sbW49bmV3IFRleHRFbmNvZGVyLHluPW5ldyBUZXh0RGVjb2RlcjtmdW5jdGlvbiBibigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuPXQucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlK3QubGVuZ3RofSksMCksYT1uZXcgVWludDhBcnJheShuKSxvPTA7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YS5zZXQoZSxvKSxvKz1lLmxlbmd0aH0pKSxhfXZhciB3bj1mdW5jdGlvbihlKXt2YXIgdD1lO3QgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYodD15bi5kZWNvZGUodCkpLHQ9dC5yZXBsYWNlKC8tL2csIisiKS5yZXBsYWNlKC9fL2csIi8iKS5yZXBsYWNlKC9ccy9nLCIiKTt0cnl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hdG9iKGUpLHI9bmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgpLG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn0odCl9Y2F0Y2goZSl7dGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIGlucHV0IHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLiIpfX0sa249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcihlKXt2YXIgbixhO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KT1NFX0dFTkVSSUMiLG4ubmFtZT1uLmNvbnN0cnVjdG9yLm5hbWUsbnVsbD09PShhPUVycm9yLmNhcHR1cmVTdGFja1RyYWNlKXx8dm9pZCAwPT09YXx8YS5jYWxsKEVycm9yLHYobiksbi5jb25zdHJ1Y3Rvciksbn1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSk9TRV9HRU5FUklDIn19XSkscn0oZChFcnJvcikpLFJuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoZSl7dmFyIG4sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InVuc3BlY2lmaWVkIixpPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToidW5zcGVjaWZpZWQiO3JldHVybiBvKHRoaXMsciksKG49dC5jYWxsKHRoaXMsZSkpLmNvZGU9IkVSUl9KV1RfQ0xBSU1fVkFMSURBVElPTl9GQUlMRUQiLG4uY2xhaW09YSxuLnJlYXNvbj1pLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9DTEFJTV9WQUxJREFUSU9OX0ZBSUxFRCJ9fV0pLHJ9KGtuKSxfbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKGUpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJ1bnNwZWNpZmllZCIsaT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06InVuc3BlY2lmaWVkIjtyZXR1cm4gbyh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5jb2RlPSJFUlJfSldUX0VYUElSRUQiLG4uY2xhaW09YSxuLnJlYXNvbj1pLG59cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXVF9FWFBJUkVEIn19XSkscn0oa24pLHhuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9BTEdfTk9UX0FMTE9XRUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pPU0VfQUxHX05PVF9BTExPV0VEIn19XSkscn0oa24pLFNuPWZ1bmN0aW9uKGUpe2MocixlKTt2YXIgdD1tKHIpO2Z1bmN0aW9uIHIoKXt2YXIgZTtyZXR1cm4gbyh0aGlzLHIpLChlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKS5jb2RlPSJFUlJfSk9TRV9OT1RfU1VQUE9SVEVEIixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KT1NFX05PVF9TVVBQT1JURUQifX1dKSxyfShrbiksRW49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1NfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldTX0lOVkFMSUQifX1dKSxyfShrbiksVG49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1RfSU5WQUxJRCIsZX1yZXR1cm4gcyhyLG51bGwsW3trZXk6ImNvZGUiLGdldDpmdW5jdGlvbigpe3JldHVybiJFUlJfSldUX0lOVkFMSUQifX1dKSxyfShrbiksQW49ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV0tTX0lOVkFMSUQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXS1NfSU5WQUxJRCJ9fV0pLHJ9KGtuKSxDbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfTk9fTUFUQ0hJTkdfS0VZIixlLm1lc3NhZ2U9Im5vIGFwcGxpY2FibGUga2V5IGZvdW5kIGluIHRoZSBKU09OIFdlYiBLZXkgU2V0IixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX05PX01BVENISU5HX0tFWSJ9fV0pLHJ9KGtuKSxEbj1mdW5jdGlvbihlKXtjKHIsZSk7dmFyIHQ9bShyKTtmdW5jdGlvbiByKCl7dmFyIGU7cmV0dXJuIG8odGhpcyxyKSwoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSkuY29kZT0iRVJSX0pXS1NfTVVMVElQTEVfTUFUQ0hJTkdfS0VZUyIsZS5tZXNzYWdlPSJtdWx0aXBsZSBtYXRjaGluZyBrZXlzIGZvdW5kIGluIHRoZSBKU09OIFdlYiBLZXkgU2V0IixlfXJldHVybiBzKHIsbnVsbCxbe2tleToiY29kZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIkVSUl9KV0tTX01VTFRJUExFX01BVENISU5HX0tFWVMifX1dKSxyfShrbiksT249ZnVuY3Rpb24oZSl7YyhyLGUpO3ZhciB0PW0ocik7ZnVuY3Rpb24gcigpe3ZhciBlO3JldHVybiBvKHRoaXMsciksKGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cykpLmNvZGU9IkVSUl9KV1NfU0lHTkFUVVJFX1ZFUklGSUNBVElPTl9GQUlMRUQiLGUubWVzc2FnZT0ic2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQiLGV9cmV0dXJuIHMocixudWxsLFt7a2V5OiJjb2RlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iRVJSX0pXU19TSUdOQVRVUkVfVkVSSUZJQ0FUSU9OX0ZBSUxFRCJ9fV0pLHJ9KGtuKTtmdW5jdGlvbiBQbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBXZWJTb2NrZXRQYWlyfWZ1bmN0aW9uIEluKCl7dHJ5e3JldHVybiB2b2lkIDAhPT1IZS52ZXJzaW9ucy5ub2RlfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBVbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06ImFsZ29yaXRobS5uYW1lIjtyZXR1cm4gbmV3IFR5cGVFcnJvcigiQ3J5cHRvS2V5IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGVyYXRpb24sIGl0cyAiLmNvbmNhdCh0LCIgbXVzdCBiZSAiKS5jb25jYXQoZSkpfWZ1bmN0aW9uIExuKGUsdCl7cmV0dXJuIGUubmFtZT09PXR9ZnVuY3Rpb24gSG4oZSl7cmV0dXJuIHBhcnNlSW50KGUubmFtZS5zbGljZSg0KSwxMCl9ZnVuY3Rpb24gTW4oZSl7c3dpdGNoKGUpe2Nhc2UiRVMyNTYiOnJldHVybiJQLTI1NiI7Y2FzZSJFUzM4NCI6cmV0dXJuIlAtMzg0IjtjYXNlIkVTNTEyIjpyZXR1cm4iUC01MjEiO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJ1bnJlYWNoYWJsZSIpfX1mdW5jdGlvbiBqbihlLHQpe2lmKHQubGVuZ3RoJiYhdC5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gZS51c2FnZXMuaW5jbHVkZXModCl9KSkpe3ZhciByPSJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiwgaXRzIHVzYWdlcyBtdXN0IGluY2x1ZGUgIjtpZih0Lmxlbmd0aD4yKXt2YXIgbj10LnBvcCgpO3IrPSJvbmUgb2YgIi5jb25jYXQodC5qb2luKCIsICIpLCIsIG9yICIpLmNvbmNhdChuLCIuIil9ZWxzZSAyPT09dC5sZW5ndGg/cis9Im9uZSBvZiAiLmNvbmNhdCh0WzBdLCIgb3IgIikuY29uY2F0KHRbMV0sIi4iKTpyKz0iIi5jb25jYXQodFswXSwiLiIpO3Rocm93IG5ldyBUeXBlRXJyb3Iocil9fXZhciBObj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9IktleSBtdXN0IGJlICIsbj1hcmd1bWVudHMubGVuZ3RoLGE9bmV3IEFycmF5KG4+MT9uLTE6MCksbz0xO288bjtvKyspYVtvLTFdPWFyZ3VtZW50c1tvXTtpZihhLmxlbmd0aD4yKXt2YXIgaT1hLnBvcCgpO3QrPSJvbmUgb2YgdHlwZSAiLmNvbmNhdChhLmpvaW4oIiwgIiksIiwgb3IgIikuY29uY2F0KGksIi4iKX1lbHNlIDI9PT1hLmxlbmd0aD90Kz0ib25lIG9mIHR5cGUgIi5jb25jYXQoYVswXSwiIG9yICIpLmNvbmNhdChhWzFdLCIuIik6dCs9Im9mIHR5cGUgIi5jb25jYXQoYVswXSwiLiIpO3JldHVybiBudWxsPT1lP3QrPSIgUmVjZWl2ZWQgIi5jb25jYXQoZSk6ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUubmFtZT90Kz0iIFJlY2VpdmVkIGZ1bmN0aW9uICIuY29uY2F0KGUubmFtZSk6Im9iamVjdCI9PT1yKGUpJiZudWxsIT1lJiZlLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWUmJih0Kz0iIFJlY2VpdmVkIGFuIGluc3RhbmNlIG9mICIuY29uY2F0KGUuY29uc3RydWN0b3IubmFtZSkpLHR9LHFuPWZ1bmN0aW9uKGUpe3JldHVybiBnbihlKX0sS249WyJDcnlwdG9LZXkiXSxKbj1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3ZhciBuLGE9dC5maWx0ZXIoQm9vbGVhbik7aWYoMD09PWEubGVuZ3RofHwxPT09YS5sZW5ndGgpcmV0dXJuITA7dmFyIG8saT1SKGEpO3RyeXtmb3IoaS5zKCk7IShvPWkubigpKS5kb25lOyl7dmFyIHM9by52YWx1ZSx1PU9iamVjdC5rZXlzKHMpO2lmKG4mJjAhPT1uLnNpemUpZm9yKHZhciBjPTAsZj11O2M8Zi5sZW5ndGg7YysrKXt2YXIgbD1mW2NdO2lmKG4uaGFzKGwpKXJldHVybiExO24uYWRkKGwpfWVsc2Ugbj1uZXcgU2V0KHUpfX1jYXRjaChlKXtpLmUoZSl9ZmluYWxseXtpLmYoKX1yZXR1cm4hMH07ZnVuY3Rpb24gQm4oZSl7aWYoIm9iamVjdCIhPT1yKHQ9ZSl8fG51bGw9PT10fHwiW29iamVjdCBPYmplY3RdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSlyZXR1cm4hMTt2YXIgdDtpZihudWxsPT09T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpKXJldHVybiEwO2Zvcih2YXIgbj1lO251bGwhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2Yobik7KW49T2JqZWN0LmdldFByb3RvdHlwZU9mKG4pO3JldHVybiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSk9PT1ufXZhciBGbj1mdW5jdGlvbihlLHQpe2lmKGUuc3RhcnRzV2l0aCgiUlMiKXx8ZS5zdGFydHNXaXRoKCJQUyIpKXt2YXIgcj10LmFsZ29yaXRobS5tb2R1bHVzTGVuZ3RoO2lmKCJudW1iZXIiIT10eXBlb2Ygcnx8cjwyMDQ4KXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KGUsIiByZXF1aXJlcyBrZXkgbW9kdWx1c0xlbmd0aCB0byBiZSAyMDQ4IGJpdHMgb3IgbGFyZ2VyIikpfX07ZnVuY3Rpb24gV24oZSl7dmFyIHQscjtzd2l0Y2goZS5rdHkpe2Nhc2Uib2N0Ijpzd2l0Y2goZS5hbGcpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOnQ9e25hbWU6IkhNQUMiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPVsic2lnbiIsInZlcmlmeSJdO2JyZWFrO2Nhc2UiQTEyOENCQy1IUzI1NiI6Y2FzZSJBMTkyQ0JDLUhTMzg0IjpjYXNlIkEyNTZDQkMtSFM1MTIiOnRocm93IG5ldyBTbigiIi5jb25jYXQoZS5hbGcsIiBrZXlzIGNhbm5vdCBiZSBpbXBvcnRlZCBhcyBDcnlwdG9LZXkgaW5zdGFuY2VzIikpO2Nhc2UiQTEyOEdDTSI6Y2FzZSJBMTkyR0NNIjpjYXNlIkEyNTZHQ00iOmNhc2UiQTEyOEdDTUtXIjpjYXNlIkExOTJHQ01LVyI6Y2FzZSJBMjU2R0NNS1ciOnQ9e25hbWU6IkFFUy1HQ00ifSxyPVsiZW5jcnlwdCIsImRlY3J5cHQiXTticmVhaztjYXNlIkExMjhLVyI6Y2FzZSJBMTkyS1ciOmNhc2UiQTI1NktXIjp0PXtuYW1lOiJBRVMtS1cifSxyPVsid3JhcEtleSIsInVud3JhcEtleSJdO2JyZWFrO2Nhc2UiUEJFUzItSFMyNTYrQTEyOEtXIjpjYXNlIlBCRVMyLUhTMzg0K0ExOTJLVyI6Y2FzZSJQQkVTMi1IUzUxMitBMjU2S1ciOnQ9e25hbWU6IlBCS0RGMiJ9LHI9WyJkZXJpdmVCaXRzIl07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiUlNBIjpzd2l0Y2goZS5hbGcpe2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOnQ9e25hbWU6IlJTQS1QU1MiLGhhc2g6IlNIQS0iLmNvbmNhdChlLmFsZy5zbGljZSgtMykpfSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiUlMyNTYiOmNhc2UiUlMzODQiOmNhc2UiUlM1MTIiOnQ9e25hbWU6IlJTQVNTQS1QS0NTMS12MV81IixoYXNoOiJTSEEtIi5jb25jYXQoZS5hbGcuc2xpY2UoLTMpKX0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIlJTQS1PQUVQIjpjYXNlIlJTQS1PQUVQLTI1NiI6Y2FzZSJSU0EtT0FFUC0zODQiOmNhc2UiUlNBLU9BRVAtNTEyIjp0PXtuYW1lOiJSU0EtT0FFUCIsaGFzaDoiU0hBLSIuY29uY2F0KHBhcnNlSW50KGUuYWxnLnNsaWNlKC0zKSwxMCl8fDEpfSxyPWUuZD9bImRlY3J5cHQiLCJ1bndyYXBLZXkiXTpbImVuY3J5cHQiLCJ3cmFwS2V5Il07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJhbGciIChBbGdvcml0aG0pIFBhcmFtZXRlciB2YWx1ZScpfWJyZWFrO2Nhc2UiRUMiOnN3aXRjaChlLmFsZyl7Y2FzZSJFUzI1NiI6dD17bmFtZToiRUNEU0EiLG5hbWVkQ3VydmU6IlAtMjU2In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIkVTMzg0Ijp0PXtuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZToiUC0zODQifSxyPWUuZD9bInNpZ24iXTpbInZlcmlmeSJdO2JyZWFrO2Nhc2UiRVM1MTIiOnQ9e25hbWU6IkVDRFNBIixuYW1lZEN1cnZlOiJQLTUyMSJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7Y2FzZSJFQ0RILUVTIjpjYXNlIkVDREgtRVMrQTEyOEtXIjpjYXNlIkVDREgtRVMrQTE5MktXIjpjYXNlIkVDREgtRVMrQTI1NktXIjp0PXtuYW1lOiJFQ0RIIixuYW1lZEN1cnZlOmUuY3J2fSxyPWUuZD9bImRlcml2ZUJpdHMiXTpbXTticmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyl9YnJlYWs7Y2FzZShQbigpfHxJbigpKSYmIk9LUCI6aWYoIkVkRFNBIiE9PWUuYWxnKXRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImFsZyIgKEFsZ29yaXRobSkgUGFyYW1ldGVyIHZhbHVlJyk7c3dpdGNoKGUuY3J2KXtjYXNlIkVkMjU1MTkiOnQ9e25hbWU6Ik5PREUtRUQyNTUxOSIsbmFtZWRDdXJ2ZToiTk9ERS1FRDI1NTE5In0scj1lLmQ/WyJzaWduIl06WyJ2ZXJpZnkiXTticmVhaztjYXNlIEluKCkmJiJFZDQ0OCI6dD17bmFtZToiTk9ERS1FRDQ0OCIsbmFtZWRDdXJ2ZToiTk9ERS1FRDQ0OCJ9LHI9ZS5kP1sic2lnbiJdOlsidmVyaWZ5Il07YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ0ludmFsaWQgb3IgdW5zdXBwb3J0ZWQgSldLICJjcnYiIChTdWJ0eXBlIG9mIEtleSBQYWlyKSBQYXJhbWV0ZXIgdmFsdWUnKX1icmVhaztkZWZhdWx0OnRocm93IG5ldyBTbignSW52YWxpZCBvciB1bnN1cHBvcnRlZCBKV0sgImt0eSIgKEtleSBUeXBlKSBQYXJhbWV0ZXIgdmFsdWUnKX1yZXR1cm57YWxnb3JpdGhtOnQsa2V5VXNhZ2VzOnJ9fXZhciB6bj1mdW5jdGlvbigpe3ZhciBlPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocil7dmFyIG4sYSxvLGkscyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYoaT1XbihyKSxzPWkuYWxnb3JpdGhtLHU9aS5rZXlVc2FnZXMsYz1bcyxudWxsIT09KGE9ci5leHQpJiZ2b2lkIDAhPT1hJiZhLG51bGwhPT0obz1yLmtleV9vcHMpJiZ2b2lkIDAhPT1vP286dV0sIlBCS0RGMiIhPT1zLm5hbWUpe2UubmV4dD00O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIiwoZj12bi5zdWJ0bGUpLmltcG9ydEtleS5hcHBseShmLFsicmF3Iix3bihyLmspXS5jb25jYXQoYykpKTtjYXNlIDQ6cmV0dXJuIGRlbGV0ZShsPXQoe30scikpLmFsZyxlLmFicnVwdCgicmV0dXJuIiwobj12bi5zdWJ0bGUpLmltcG9ydEtleS5hcHBseShuLFsiandrIixsXS5jb25jYXQoYykpKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gVm4oZSx0LHIpe3JldHVybiBZbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gWW4oKXtyZXR1cm4oWW49YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihCbihyKSl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcigiSldLIG11c3QgYmUgYW4gb2JqZWN0Iik7Y2FzZSAyOmlmKG58fChuPXIuYWxnKSwic3RyaW5nIj09dHlwZW9mIG4mJm4pe2UubmV4dD01O2JyZWFrfXRocm93IG5ldyBUeXBlRXJyb3IoJyJhbGciIGFyZ3VtZW50IGlzIHJlcXVpcmVkIHdoZW4gImp3ay5hbGciIGlzIG5vdCBwcmVzZW50Jyk7Y2FzZSA1OmUudDA9ci5rdHksZS5uZXh0PSJvY3QiPT09ZS50MD84OiJSU0EiPT09ZS50MD8xNDoiRUMiPT09ZS50MHx8Ik9LUCI9PT1lLnQwPzE2OjE3O2JyZWFrO2Nhc2UgODppZigic3RyaW5nIj09dHlwZW9mIHIuayYmci5rKXtlLm5leHQ9MTA7YnJlYWt9dGhyb3cgbmV3IFR5cGVFcnJvcignbWlzc2luZyAiayIgKEtleSBWYWx1ZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSAxMDppZihudWxsIT1hfHwoYT0hMCE9PXIuZXh0KSwhYSl7ZS5uZXh0PTEzO2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix6bih0KHQoe30scikse30se2FsZzpuLGV4dDohMX0pKSk7Y2FzZSAxMzpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsd24oci5rKSk7Y2FzZSAxNDppZih2b2lkIDA9PT1yLm90aCl7ZS5uZXh0PTE2O2JyZWFrfXRocm93IG5ldyBTbignUlNBIEpXSyAib3RoIiAoT3RoZXIgUHJpbWVzIEluZm8pIFBhcmFtZXRlciB2YWx1ZSBpcyBub3Qgc3VwcG9ydGVkJyk7Y2FzZSAxNjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsem4odCh0KHt9LHIpLHt9LHthbGc6bn0pKSk7Y2FzZSAxNzp0aHJvdyBuZXcgU24oJ1Vuc3VwcG9ydGVkICJrdHkiIChLZXkgVHlwZSkgUGFyYW1ldGVyIHZhbHVlJyk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBHbj1mdW5jdGlvbihlLHQscil7ZS5zdGFydHNXaXRoKCJIUyIpfHwiZGlyIj09PWV8fGUuc3RhcnRzV2l0aCgiUEJFUzIiKXx8L15BXGR7M30oPzpHQ00pP0tXJC8udGVzdChlKT9mdW5jdGlvbihlKXtpZighKGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSl7aWYoIXFuKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoTm4uYXBwbHkodm9pZCAwLFtlXS5jb25jYXQoYihLbiksWyJVaW50OEFycmF5Il0pKSk7aWYoInNlY3JldCIhPT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBzeW1tZXRyaWMgYWxnb3JpdGhtcyBtdXN0IGJlIG9mIHR5cGUgInNlY3JldCInKSl9fSh0KTpmdW5jdGlvbihlLHQpe2lmKCFxbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KGIoS24pKSkpO2lmKCJzZWNyZXQiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG1zIG11c3Qgbm90IGJlIG9mIHR5cGUgInNlY3JldCInKSk7aWYoInNpZ24iPT09dCYmInB1YmxpYyI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBzaWduaW5nIG11c3QgYmUgb2YgdHlwZSAicHJpdmF0ZSInKSk7aWYoImRlY3J5cHQiPT09dCYmInB1YmxpYyI9PT1lLnR5cGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiIi5jb25jYXQoS24uam9pbigiIG9yICIpLCcgaW5zdGFuY2VzIGZvciBhc3ltbWV0cmljIGFsZ29yaXRobSBkZWNyeXB0aW9uIG11c3QgYmUgb2YgdHlwZSAicHJpdmF0ZSInKSk7aWYoZS5hbGdvcml0aG0mJiJ2ZXJpZnkiPT09dCYmInByaXZhdGUiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gdmVyaWZ5aW5nIG11c3QgYmUgb2YgdHlwZSAicHVibGljIicpKTtpZihlLmFsZ29yaXRobSYmImVuY3J5cHQiPT09dCYmInByaXZhdGUiPT09ZS50eXBlKXRocm93IG5ldyBUeXBlRXJyb3IoIiIuY29uY2F0KEtuLmpvaW4oIiBvciAiKSwnIGluc3RhbmNlcyBmb3IgYXN5bW1ldHJpYyBhbGdvcml0aG0gZW5jcnlwdGlvbiBtdXN0IGJlIG9mIHR5cGUgInB1YmxpYyInKSl9KHQscil9O2Z1bmN0aW9uIFhuKGUsdCxyLG4sYSl7aWYodm9pZCAwIT09YS5jcml0JiZ2b2lkIDA9PT1uLmNyaXQpdGhyb3cgbmV3IGUoJyJjcml0IiAoQ3JpdGljYWwpIEhlYWRlciBQYXJhbWV0ZXIgTVVTVCBiZSBpbnRlZ3JpdHkgcHJvdGVjdGVkJyk7aWYoIW58fHZvaWQgMD09PW4uY3JpdClyZXR1cm4gbmV3IFNldDtpZighQXJyYXkuaXNBcnJheShuLmNyaXQpfHwwPT09bi5jcml0Lmxlbmd0aHx8bi5jcml0LnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZXx8MD09PWUubGVuZ3RofSkpKXRocm93IG5ldyBlKCciY3JpdCIgKENyaXRpY2FsKSBIZWFkZXIgUGFyYW1ldGVyIE1VU1QgYmUgYW4gYXJyYXkgb2Ygbm9uLWVtcHR5IHN0cmluZ3Mgd2hlbiBwcmVzZW50Jyk7dmFyIG87bz12b2lkIDAhPT1yP25ldyBNYXAoW10uY29uY2F0KGIoT2JqZWN0LmVudHJpZXMocikpLGIodC5lbnRyaWVzKCkpKSk6dDt2YXIgaSxzPVIobi5jcml0KTt0cnl7Zm9yKHMucygpOyEoaT1zLm4oKSkuZG9uZTspe3ZhciB1PWkudmFsdWU7aWYoIW8uaGFzKHUpKXRocm93IG5ldyBTbignRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgaXMgbm90IHJlY29nbml6ZWQnKSk7aWYodm9pZCAwPT09YVt1XSl0aHJvdyBuZXcgZSgnRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgaXMgbWlzc2luZycpKTtpZihvLmdldCh1KSYmdm9pZCAwPT09blt1XSl0aHJvdyBuZXcgZSgnRXh0ZW5zaW9uIEhlYWRlciBQYXJhbWV0ZXIgIicuY29uY2F0KHUsJyIgTVVTVCBiZSBpbnRlZ3JpdHkgcHJvdGVjdGVkJykpfX1jYXRjaChlKXtzLmUoZSl9ZmluYWxseXtzLmYoKX1yZXR1cm4gbmV3IFNldChuLmNyaXQpfXZhciAkbj1mdW5jdGlvbihlLHQpe2lmKHZvaWQgMCE9PXQmJighQXJyYXkuaXNBcnJheSh0KXx8dC5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGV9KSkpKXRocm93IG5ldyBUeXBlRXJyb3IoJyInLmNvbmNhdChlLCciIG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKSk7aWYodClyZXR1cm4gbmV3IFNldCh0KX07ZnVuY3Rpb24gWm4oZSx0KXt2YXIgcj0iU0hBLSIuY29uY2F0KGUuc2xpY2UoLTMpKTtzd2l0Y2goZSl7Y2FzZSJIUzI1NiI6Y2FzZSJIUzM4NCI6Y2FzZSJIUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJITUFDIn07Y2FzZSJQUzI1NiI6Y2FzZSJQUzM4NCI6Y2FzZSJQUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJSU0EtUFNTIixzYWx0TGVuZ3RoOmUuc2xpY2UoLTMpPj4zfTtjYXNlIlJTMjU2IjpjYXNlIlJTMzg0IjpjYXNlIlJTNTEyIjpyZXR1cm57aGFzaDpyLG5hbWU6IlJTQVNTQS1QS0NTMS12MV81In07Y2FzZSJFUzI1NiI6Y2FzZSJFUzM4NCI6Y2FzZSJFUzUxMiI6cmV0dXJue2hhc2g6cixuYW1lOiJFQ0RTQSIsbmFtZWRDdXJ2ZTp0Lm5hbWVkQ3VydmV9O2Nhc2UoUG4oKXx8SW4oKSkmJiJFZERTQSI6dmFyIG49dC5uYW1lZEN1cnZlO3JldHVybntuYW1lOm4sbmFtZWRDdXJ2ZTpufTtkZWZhdWx0OnRocm93IG5ldyBTbigiYWxnICIuY29uY2F0KGUsIiBpcyBub3Qgc3VwcG9ydGVkIGVpdGhlciBieSBKT1NFIG9yIHlvdXIgamF2YXNjcmlwdCBydW50aW1lIikpfX1mdW5jdGlvbiBRbihlLHQscil7aWYoZ24odCkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQpe2Nhc2UiSFMyNTYiOmNhc2UiSFMzODQiOmNhc2UiSFM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiSE1BQyIpKXRocm93IFVuKCJITUFDIik7dmFyIHI9cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoSG4oZS5hbGdvcml0aG0uaGFzaCkhPT1yKXRocm93IFVuKCJTSEEtIi5jb25jYXQociksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSJSUzI1NiI6Y2FzZSJSUzM4NCI6Y2FzZSJSUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJSU0FTU0EtUEtDUzEtdjFfNSIpKXRocm93IFVuKCJSU0FTU0EtUEtDUzEtdjFfNSIpO3ZhciBuPXBhcnNlSW50KHQuc2xpY2UoMiksMTApO2lmKEhuKGUuYWxnb3JpdGhtLmhhc2gpIT09bil0aHJvdyBVbigiU0hBLSIuY29uY2F0KG4pLCJhbGdvcml0aG0uaGFzaCIpO2JyZWFrO2Nhc2UiUFMyNTYiOmNhc2UiUFMzODQiOmNhc2UiUFM1MTIiOmlmKCFMbihlLmFsZ29yaXRobSwiUlNBLVBTUyIpKXRocm93IFVuKCJSU0EtUFNTIik7dmFyIGE9cGFyc2VJbnQodC5zbGljZSgyKSwxMCk7aWYoSG4oZS5hbGdvcml0aG0uaGFzaCkhPT1hKXRocm93IFVuKCJTSEEtIi5jb25jYXQoYSksImFsZ29yaXRobS5oYXNoIik7YnJlYWs7Y2FzZSBJbigpJiYiRWREU0EiOmlmKCJOT0RFLUVEMjU1MTkiIT09ZS5hbGdvcml0aG0ubmFtZSYmIk5PREUtRUQ0NDgiIT09ZS5hbGdvcml0aG0ubmFtZSl0aHJvdyBVbigiTk9ERS1FRDI1NTE5IG9yIE5PREUtRUQ0NDgiKTticmVhaztjYXNlIFBuKCkmJiJFZERTQSI6aWYoIUxuKGUuYWxnb3JpdGhtLCJOT0RFLUVEMjU1MTkiKSl0aHJvdyBVbigiTk9ERS1FRDI1NTE5Iik7YnJlYWs7Y2FzZSJFUzI1NiI6Y2FzZSJFUzM4NCI6Y2FzZSJFUzUxMiI6aWYoIUxuKGUuYWxnb3JpdGhtLCJFQ0RTQSIpKXRocm93IFVuKCJFQ0RTQSIpO3ZhciBvPU1uKHQpO2lmKGUuYWxnb3JpdGhtLm5hbWVkQ3VydmUhPT1vKXRocm93IFVuKG8sImFsZ29yaXRobS5uYW1lZEN1cnZlIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJDcnlwdG9LZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhdGlvbiIpfWZvcih2YXIgaT1hcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KGk+Mj9pLTI6MCksdT0yO3U8aTt1Kyspc1t1LTJdPWFyZ3VtZW50c1t1XTtqbihlLHMpfSh0LGUsciksdDtpZih0IGluc3RhbmNlb2YgVWludDhBcnJheSl7aWYoIWUuc3RhcnRzV2l0aCgiSFMiKSl0aHJvdyBuZXcgVHlwZUVycm9yKE5uLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KGIoS24pKSkpO3JldHVybiB2bi5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHQse2hhc2g6IlNIQS0iLmNvbmNhdChlLnNsaWNlKC0zKSksbmFtZToiSE1BQyJ9LCExLFtyXSl9dGhyb3cgbmV3IFR5cGVFcnJvcihObi5hcHBseSh2b2lkIDAsW3RdLmNvbmNhdChiKEtuKSxbIlVpbnQ4QXJyYXkiXSkpKX12YXIgZWE9ZnVuY3Rpb24oKXt2YXIgZT1hKHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKHQscixuLGEpe3ZhciBvLGk7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsUW4odCxyLCJ2ZXJpZnkiKTtjYXNlIDI6cmV0dXJuIG89ZS5zZW50LEZuKHQsbyksaT1abih0LG8uYWxnb3JpdGhtKSxlLnByZXY9NSxlLm5leHQ9OCx2bi5zdWJ0bGUudmVyaWZ5KGksbyxuLGEpO2Nhc2UgODpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDExOnJldHVybiBlLnByZXY9MTEsZS50MD1lLmNhdGNoKDUpLGUuYWJydXB0KCJyZXR1cm4iLCExKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNSwxMV1dKX0pKSk7cmV0dXJuIGZ1bmN0aW9uKHQscixuLGEpe3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCk7ZnVuY3Rpb24gdGEoZSx0LHIpe3JldHVybiByYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcmEoKXtyZXR1cm4gcmE9YShyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZShyLG4sYSl7dmFyIG8saSxzLHUsYyxmLGwsaCxwLGQsdixnLG07cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihCbihyKSl7ZS5uZXh0PTI7YnJlYWt9dGhyb3cgbmV3IEVuKCJGbGF0dGVuZWQgSldTIG11c3QgYmUgYW4gb2JqZWN0Iik7Y2FzZSAyOmlmKHZvaWQgMCE9PXIucHJvdGVjdGVkfHx2b2lkIDAhPT1yLmhlYWRlcil7ZS5uZXh0PTQ7YnJlYWt9dGhyb3cgbmV3IEVuKCdGbGF0dGVuZWQgSldTIG11c3QgaGF2ZSBlaXRoZXIgb2YgdGhlICJwcm90ZWN0ZWQiIG9yICJoZWFkZXIiIG1lbWJlcnMnKTtjYXNlIDQ6aWYodm9pZCAwPT09ci5wcm90ZWN0ZWR8fCJzdHJpbmciPT10eXBlb2Ygci5wcm90ZWN0ZWQpe2UubmV4dD02O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFByb3RlY3RlZCBIZWFkZXIgaW5jb3JyZWN0IHR5cGUiKTtjYXNlIDY6aWYodm9pZCAwIT09ci5wYXlsb2FkKXtlLm5leHQ9ODticmVha310aHJvdyBuZXcgRW4oIkpXUyBQYXlsb2FkIG1pc3NpbmciKTtjYXNlIDg6aWYoInN0cmluZyI9PXR5cGVvZiByLnNpZ25hdHVyZSl7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBFbigiSldTIFNpZ25hdHVyZSBtaXNzaW5nIG9yIGluY29ycmVjdCB0eXBlIik7Y2FzZSAxMDppZih2b2lkIDA9PT1yLmhlYWRlcnx8Qm4oci5oZWFkZXIpKXtlLm5leHQ9MTI7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIGluY29ycmVjdCB0eXBlIik7Y2FzZSAxMjppZihpPXt9LCFyLnByb3RlY3RlZCl7ZS5uZXh0PTIyO2JyZWFrfXM9d24oci5wcm90ZWN0ZWQpLGUucHJldj0xNSxpPUpTT04ucGFyc2UoeW4uZGVjb2RlKHMpKSxlLm5leHQ9MjI7YnJlYWs7Y2FzZSAxOTp0aHJvdyBlLnByZXY9MTksZS50MD1lLmNhdGNoKDE1KSxuZXcgRW4oIkpXUyBQcm90ZWN0ZWQgSGVhZGVyIGlzIGludmFsaWQiKTtjYXNlIDIyOmlmKEpuKGksci5oZWFkZXIpKXtlLm5leHQ9MjQ7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUHJvdGVjdGVkIGFuZCBKV1MgVW5wcm90ZWN0ZWQgSGVhZGVyIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIGRpc2pvaW50Iik7Y2FzZSAyNDppZih1PXQodCh7fSxpKSxyLmhlYWRlciksYz1YbihFbixuZXcgTWFwKFtbImI2NCIsITBdXSksbnVsbD09YT92b2lkIDA6YS5jcml0LGksdSksZj0hMCwhYy5oYXMoImI2NCIpKXtlLm5leHQ9MzE7YnJlYWt9aWYoImJvb2xlYW4iPT10eXBlb2YoZj1pLmI2NCkpe2UubmV4dD0zMTticmVha310aHJvdyBuZXcgRW4oJ1RoZSAiYjY0IiAoYmFzZTY0dXJsLWVuY29kZSBwYXlsb2FkKSBIZWFkZXIgUGFyYW1ldGVyIG11c3QgYmUgYSBib29sZWFuJyk7Y2FzZSAzMTppZigic3RyaW5nIj09dHlwZW9mKGw9dS5hbGcpJiZsKXtlLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEVuKCdKV1MgImFsZyIgKEFsZ29yaXRobSkgSGVhZGVyIFBhcmFtZXRlciBtaXNzaW5nIG9yIGludmFsaWQnKTtjYXNlIDM0OmlmKCEoaD1hJiYkbigiYWxnb3JpdGhtcyIsYS5hbGdvcml0aG1zKSl8fGguaGFzKGwpKXtlLm5leHQ9Mzc7YnJlYWt9dGhyb3cgbmV3IHhuKCciYWxnIiAoQWxnb3JpdGhtKSBIZWFkZXIgUGFyYW1ldGVyIG5vdCBhbGxvd2VkJyk7Y2FzZSAzNzppZighZil7ZS5uZXh0PTQyO2JyZWFrfWlmKCJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkKXtlLm5leHQ9NDA7YnJlYWt9dGhyb3cgbmV3IEVuKCJKV1MgUGF5bG9hZCBtdXN0IGJlIGEgc3RyaW5nIik7Y2FzZSA0MDplLm5leHQ9NDQ7YnJlYWs7Y2FzZSA0MjppZigic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZHx8ci5wYXlsb2FkIGluc3RhbmNlb2YgVWludDhBcnJheSl7ZS5uZXh0PTQ0O2JyZWFrfXRocm93IG5ldyBFbigiSldTIFBheWxvYWQgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBVaW50OEFycmF5IGluc3RhbmNlIik7Y2FzZSA0NDppZihwPSExLCJmdW5jdGlvbiIhPXR5cGVvZiBuKXtlLm5leHQ9NTA7YnJlYWt9cmV0dXJuIGUubmV4dD00OCxuKGkscik7Y2FzZSA0ODpuPWUuc2VudCxwPSEwO2Nhc2UgNTA6cmV0dXJuIEduKGwsbiwidmVyaWZ5IiksZD1ibihtbi5lbmNvZGUobnVsbCE9PShvPXIucHJvdGVjdGVkKSYmdm9pZCAwIT09bz9vOiIiKSxtbi5lbmNvZGUoIi4iKSwic3RyaW5nIj09dHlwZW9mIHIucGF5bG9hZD9tbi5lbmNvZGUoci5wYXlsb2FkKTpyLnBheWxvYWQpLHY9d24oci5zaWduYXR1cmUpLGUubmV4dD01NSxlYShsLG4sdixkKTtjYXNlIDU1OmlmKGUuc2VudCl7ZS5uZXh0PTU4O2JyZWFrfXRocm93IG5ldyBPbjtjYXNlIDU4OmlmKGc9Zj93bihyLnBheWxvYWQpOiJzdHJpbmciPT10eXBlb2Ygci5wYXlsb2FkP21uLmVuY29kZShyLnBheWxvYWQpOnIucGF5bG9hZCxtPXtwYXlsb2FkOmd9LHZvaWQgMCE9PXIucHJvdGVjdGVkJiYobS5wcm90ZWN0ZWRIZWFkZXI9aSksdm9pZCAwIT09ci5oZWFkZXImJihtLnVucHJvdGVjdGVkSGVhZGVyPXIuaGVhZGVyKSwhcCl7ZS5uZXh0PTY0O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sbSkse30se2tleTpufSkpO2Nhc2UgNjQ6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLG0pO2Nhc2UgNjU6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLG51bGwsW1sxNSwxOV1dKX0pKSkscmEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG5hKGUsdCxyKXtyZXR1cm4gYWEuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIGFhKCl7cmV0dXJuKGFhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBvLGkscyx1LGMsZjtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHIgaW5zdGFuY2VvZiBVaW50OEFycmF5JiYocj15bi5kZWNvZGUocikpLCJzdHJpbmciPT10eXBlb2Ygcil7ZS5uZXh0PTM7YnJlYWt9dGhyb3cgbmV3IEVuKCJDb21wYWN0IEpXUyBtdXN0IGJlIGEgc3RyaW5nIG9yIFVpbnQ4QXJyYXkiKTtjYXNlIDM6aWYobz1yLnNwbGl0KCIuIiksaT1vWzBdLHM9b1sxXSx1PW9bMl0sMz09PW8ubGVuZ3RoKXtlLm5leHQ9NjticmVha310aHJvdyBuZXcgRW4oIkludmFsaWQgQ29tcGFjdCBKV1MiKTtjYXNlIDY6cmV0dXJuIGUubmV4dD04LHRhKHtwYXlsb2FkOnMscHJvdGVjdGVkOmksc2lnbmF0dXJlOnV9LG4sYSk7Y2FzZSA4OmlmKGM9ZS5zZW50LGY9e3BheWxvYWQ6Yy5wYXlsb2FkLHByb3RlY3RlZEhlYWRlcjpjLnByb3RlY3RlZEhlYWRlcn0sImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD0xMjticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdCh0KHt9LGYpLHt9LHtrZXk6Yy5rZXl9KSk7Y2FzZSAxMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZik7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBvYT1mdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlLmdldFRpbWUoKS8xZTMpfSxpYT04NjQwMCxzYT0vXihcZCt8XGQrXC5cZCspID8oc2Vjb25kcz98c2Vjcz98c3xtaW51dGVzP3xtaW5zP3xtfGhvdXJzP3xocnM/fGh8ZGF5cz98ZHx3ZWVrcz98d3x5ZWFycz98eXJzP3x5KSQvaSx1YT1mdW5jdGlvbihlKXt2YXIgdD1zYS5leGVjKGUpO2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgdGltZSBwZXJpb2QgZm9ybWF0Iik7dmFyIHI9cGFyc2VGbG9hdCh0WzFdKTtzd2l0Y2godFsyXS50b0xvd2VyQ2FzZSgpKXtjYXNlInNlYyI6Y2FzZSJzZWNzIjpjYXNlInNlY29uZCI6Y2FzZSJzZWNvbmRzIjpjYXNlInMiOnJldHVybiBNYXRoLnJvdW5kKHIpO2Nhc2UibWludXRlIjpjYXNlIm1pbnV0ZXMiOmNhc2UibWluIjpjYXNlIm1pbnMiOmNhc2UibSI6cmV0dXJuIE1hdGgucm91bmQoNjAqcik7Y2FzZSJob3VyIjpjYXNlImhvdXJzIjpjYXNlImhyIjpjYXNlImhycyI6Y2FzZSJoIjpyZXR1cm4gTWF0aC5yb3VuZCgzNjAwKnIpO2Nhc2UiZGF5IjpjYXNlImRheXMiOmNhc2UiZCI6cmV0dXJuIE1hdGgucm91bmQocippYSk7Y2FzZSJ3ZWVrIjpjYXNlIndlZWtzIjpjYXNlInciOnJldHVybiBNYXRoLnJvdW5kKDYwNDgwMCpyKTtkZWZhdWx0OnJldHVybiBNYXRoLnJvdW5kKDMxNTU3NjAwKnIpfX0sY2E9ZnVuY3Rpb24oZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eYXBwbGljYXRpb25cLy8sIiIpfSxmYT1mdW5jdGlvbihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT90LmluY2x1ZGVzKGUpOiEhQXJyYXkuaXNBcnJheShlKSYmdC5zb21lKFNldC5wcm90b3R5cGUuaGFzLmJpbmQobmV3IFNldChlKSkpfSxsYT1mdW5jdGlvbihlLHQpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOnt9LG89YS50eXA7aWYobyYmKCJzdHJpbmciIT10eXBlb2YgZS50eXB8fGNhKGUudHlwKSE9PWNhKG8pKSl0aHJvdyBuZXcgUm4oJ3VuZXhwZWN0ZWQgInR5cCIgSldUIGhlYWRlciB2YWx1ZScsInR5cCIsImNoZWNrX2ZhaWxlZCIpO3RyeXtuPUpTT04ucGFyc2UoeW4uZGVjb2RlKHQpKX1jYXRjaChlKXt9aWYoIUJuKG4pKXRocm93IG5ldyBUbigiSldUIENsYWltcyBTZXQgbXVzdCBiZSBhIHRvcC1sZXZlbCBKU09OIG9iamVjdCIpO3ZhciBpPWEuaXNzdWVyO2lmKGkmJiEoQXJyYXkuaXNBcnJheShpKT9pOltpXSkuaW5jbHVkZXMobi5pc3MpKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAiaXNzIiBjbGFpbSB2YWx1ZScsImlzcyIsImNoZWNrX2ZhaWxlZCIpO3ZhciBzPWEuc3ViamVjdDtpZihzJiZuLnN1YiE9PXMpdGhyb3cgbmV3IFJuKCd1bmV4cGVjdGVkICJzdWIiIGNsYWltIHZhbHVlJywic3ViIiwiY2hlY2tfZmFpbGVkIik7dmFyIHUsYz1hLmF1ZGllbmNlO2lmKGMmJiFmYShuLmF1ZCwic3RyaW5nIj09dHlwZW9mIGM/W2NdOmMpKXRocm93IG5ldyBSbigndW5leHBlY3RlZCAiYXVkIiBjbGFpbSB2YWx1ZScsImF1ZCIsImNoZWNrX2ZhaWxlZCIpO3N3aXRjaChyKGEuY2xvY2tUb2xlcmFuY2UpKXtjYXNlInN0cmluZyI6dT11YShhLmNsb2NrVG9sZXJhbmNlKTticmVhaztjYXNlIm51bWJlciI6dT1hLmNsb2NrVG9sZXJhbmNlO2JyZWFrO2Nhc2UidW5kZWZpbmVkIjp1PTA7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGNsb2NrVG9sZXJhbmNlIG9wdGlvbiB0eXBlIil9dmFyIGY9YS5jdXJyZW50RGF0ZSxsPW9hKGZ8fG5ldyBEYXRlKTtpZigodm9pZCAwIT09bi5pYXR8fGEubWF4VG9rZW5BZ2UpJiYibnVtYmVyIiE9dHlwZW9mIG4uaWF0KXRocm93IG5ldyBSbignImlhdCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImlhdCIsImludmFsaWQiKTtpZih2b2lkIDAhPT1uLm5iZil7aWYoIm51bWJlciIhPXR5cGVvZiBuLm5iZil0aHJvdyBuZXcgUm4oJyJuYmYiIGNsYWltIG11c3QgYmUgYSBudW1iZXInLCJuYmYiLCJpbnZhbGlkIik7aWYobi5uYmY+bCt1KXRocm93IG5ldyBSbignIm5iZiIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCcsIm5iZiIsImNoZWNrX2ZhaWxlZCIpfWlmKHZvaWQgMCE9PW4uZXhwKXtpZigibnVtYmVyIiE9dHlwZW9mIG4uZXhwKXRocm93IG5ldyBSbignImV4cCIgY2xhaW0gbXVzdCBiZSBhIG51bWJlcicsImV4cCIsImludmFsaWQiKTtpZihuLmV4cDw9bC11KXRocm93IG5ldyBfbignImV4cCIgY2xhaW0gdGltZXN0YW1wIGNoZWNrIGZhaWxlZCcsImV4cCIsImNoZWNrX2ZhaWxlZCIpfWlmKGEubWF4VG9rZW5BZ2Upe3ZhciBoPWwtbi5pYXQscD0ibnVtYmVyIj09dHlwZW9mIGEubWF4VG9rZW5BZ2U/YS5tYXhUb2tlbkFnZTp1YShhLm1heFRva2VuQWdlKTtpZihoLXU+cCl0aHJvdyBuZXcgX24oJyJpYXQiIGNsYWltIHRpbWVzdGFtcCBjaGVjayBmYWlsZWQgKHRvbyBmYXIgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIik7aWYoaDwwLXUpdGhyb3cgbmV3IFJuKCciaWF0IiBjbGFpbSB0aW1lc3RhbXAgY2hlY2sgZmFpbGVkIChpdCBzaG91bGQgYmUgaW4gdGhlIHBhc3QpJywiaWF0IiwiY2hlY2tfZmFpbGVkIil9cmV0dXJuIG59O2Z1bmN0aW9uIGhhKCl7cmV0dXJuKGhhPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuLGEpe3ZhciBvLGkscyx1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLG5hKHIsbixhKTtjYXNlIDI6aWYoaT1lLnNlbnQsIShudWxsPT09KG89aS5wcm90ZWN0ZWRIZWFkZXIuY3JpdCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uaW5jbHVkZXMoImI2NCIpKXx8ITEhPT1pLnByb3RlY3RlZEhlYWRlci5iNjQpe2UubmV4dD01O2JyZWFrfXRocm93IG5ldyBUbigiSldUcyBNVVNUIE5PVCB1c2UgdW5lbmNvZGVkIHBheWxvYWQiKTtjYXNlIDU6aWYocz1sYShpLnByb3RlY3RlZEhlYWRlcixpLnBheWxvYWQsYSksdT17cGF5bG9hZDpzLHByb3RlY3RlZEhlYWRlcjppLnByb3RlY3RlZEhlYWRlcn0sImZ1bmN0aW9uIiE9dHlwZW9mIG4pe2UubmV4dD05O2JyZWFrfXJldHVybiBlLmFicnVwdCgicmV0dXJuIix0KHQoe30sdSkse30se2tleTppLmtleX0pKTtjYXNlIDk6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHUpO2Nhc2UgMTA6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBwYShlKXtzd2l0Y2goInN0cmluZyI9PXR5cGVvZiBlJiZlLnNsaWNlKDAsMikpe2Nhc2UiUlMiOmNhc2UiUFMiOnJldHVybiJSU0EiO2Nhc2UiRVMiOnJldHVybiJFQyI7Y2FzZSJFZCI6cmV0dXJuIk9LUCI7ZGVmYXVsdDp0aHJvdyBuZXcgU24oJ1Vuc3VwcG9ydGVkICJhbGciIHZhbHVlIGZvciBhIEpTT04gV2ViIEtleSBTZXQnKX19ZnVuY3Rpb24gZGEoZSl7cmV0dXJuIEJuKGUpfXZhciB2YT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7aWYobyh0aGlzLGUpLHRoaXMuX2NhY2hlZD1uZXcgV2Vha01hcCwhZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJvYmplY3QiPT09cihlKSYmQXJyYXkuaXNBcnJheShlLmtleXMpJiZlLmtleXMuZXZlcnkoZGEpfSh0KSl0aHJvdyBuZXcgQW4oIkpTT04gV2ViIEtleSBTZXQgbWFsZm9ybWVkIik7dmFyIG47dGhpcy5fandrcz0obj10LCJmdW5jdGlvbiI9PXR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmU/c3RydWN0dXJlZENsb25lKG4pOkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobikpKX12YXIgbjtyZXR1cm4gcyhlLFt7a2V5OiJnZXRLZXkiLHZhbHVlOihuPWEocmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUocixuKXt2YXIgYSxvLGkscyx1LGMsZixsLGg7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDppZihhPXQodCh7fSxyKSxuLmhlYWRlciksbz1hLmFsZyxpPWEua2lkLHM9cGEobyksdT10aGlzLl9qd2tzLmtleXMuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1zPT09ZS5rdHk7aWYodCYmInN0cmluZyI9PXR5cGVvZiBpJiYodD1pPT09ZS5raWQpLHQmJiJzdHJpbmciPT10eXBlb2YgZS5hbGcmJih0PW89PT1lLmFsZyksdCYmInN0cmluZyI9PXR5cGVvZiBlLnVzZSYmKHQ9InNpZyI9PT1lLnVzZSksdCYmQXJyYXkuaXNBcnJheShlLmtleV9vcHMpJiYodD1lLmtleV9vcHMuaW5jbHVkZXMoInZlcmlmeSIpKSx0JiYiRWREU0EiPT09byYmKHQ9IkVkMjU1MTkiPT09ZS5jcnZ8fCJFZDQ0OCI9PT1lLmNydiksdClzd2l0Y2gobyl7Y2FzZSJFUzI1NiI6dD0iUC0yNTYiPT09ZS5jcnY7YnJlYWs7Y2FzZSJFUzI1NksiOnQ9InNlY3AyNTZrMSI9PT1lLmNydjticmVhaztjYXNlIkVTMzg0Ijp0PSJQLTM4NCI9PT1lLmNydjticmVhaztjYXNlIkVTNTEyIjp0PSJQLTUyMSI9PT1lLmNydn1yZXR1cm4gdH0pKSxjPXVbMF0sMCE9PShmPXUubGVuZ3RoKSl7ZS5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IENuO2Nhc2UgODppZigxPT09Zil7ZS5uZXh0PTEwO2JyZWFrfXRocm93IG5ldyBEbjtjYXNlIDEwOmlmKHZvaWQgMCE9PShsPXRoaXMuX2NhY2hlZC5nZXQoYyl8fHRoaXMuX2NhY2hlZC5zZXQoYyx7fSkuZ2V0KGMpKVtvXSl7ZS5uZXh0PTE4O2JyZWFrfXJldHVybiBlLm5leHQ9MTQsVm4odCh0KHt9LGMpLHt9LHtleHQ6ITB9KSxvKTtjYXNlIDE0OmlmKCEoKGg9ZS5zZW50KWluc3RhbmNlb2YgVWludDhBcnJheXx8InB1YmxpYyIhPT1oLnR5cGUpKXtlLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IEFuKCJKU09OIFdlYiBLZXkgU2V0IG1lbWJlcnMgbXVzdCBiZSBwdWJsaWMga2V5cyIpO2Nhc2UgMTc6bFtvXT1oO2Nhc2UgMTg6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGxbb10pO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKSxmdW5jdGlvbihlLHQpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pfV0pLGV9KCk7dmFyIGdhPXtleHBvcnRzOnt9fSxtYT17ZXhwb3J0czp7fX0seWE9eih0bik7IWZ1bmN0aW9uKGUsdCl7dmFyIHI9eWEsbj1yLkJ1ZmZlcjtmdW5jdGlvbiBhKGUsdCl7Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdfWZ1bmN0aW9uIG8oZSx0LHIpe3JldHVybiBuKGUsdCxyKX1uLmZyb20mJm4uYWxsb2MmJm4uYWxsb2NVbnNhZmUmJm4uYWxsb2NVbnNhZmVTbG93P2UuZXhwb3J0cz1yOihhKHIsdCksdC5CdWZmZXI9byksby5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksYShuLG8pLG8uZnJvbT1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyIik7cmV0dXJuIG4oZSx0LHIpfSxvLmFsbG9jPWZ1bmN0aW9uKGUsdCxyKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3ZhciBhPW4oZSk7cmV0dXJuIHZvaWQgMCE9PXQ/InN0cmluZyI9PXR5cGVvZiByP2EuZmlsbCh0LHIpOmEuZmlsbCh0KTphLmZpbGwoMCksYX0sby5hbGxvY1Vuc2FmZT1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiBuKGUpfSxvLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbihlKXtpZigibnVtYmVyIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlciIpO3JldHVybiByLlNsb3dCdWZmZXIoZSl9fShtYSxtYS5leHBvcnRzKTt2YXIgYmE9NjU1MzYsd2E9NDI5NDk2NzI5NTt2YXIga2E9bWEuZXhwb3J0cy5CdWZmZXIsUmE9Ri5jcnlwdG98fEYubXNDcnlwdG87UmEmJlJhLmdldFJhbmRvbVZhbHVlcz9nYS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYoZT53YSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigicmVxdWVzdGVkIHRvbyBtYW55IHJhbmRvbSBieXRlcyIpO3ZhciByPWthLmFsbG9jVW5zYWZlKGUpO2lmKGU+MClpZihlPmJhKWZvcih2YXIgbj0wO248ZTtuKz1iYSlSYS5nZXRSYW5kb21WYWx1ZXMoci5zbGljZShuLG4rYmEpKTtlbHNlIFJhLmdldFJhbmRvbVZhbHVlcyhyKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gSGUubmV4dFRpY2soKGZ1bmN0aW9uKCl7dChudWxsLHIpfSkpO3JldHVybiByfTpnYS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMSIpfTt2YXIgX2EseGE9Z2EuZXhwb3J0cyxTYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtvKHRoaXMsZSl9cmV0dXJuIHMoZSxbe2tleToiYmFzZTY0VVJMRW5jb2RlIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gaG4uZW5jb2RlKGUpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPS9nLCIiKX19LHtrZXk6ImJhc2U2NFVSTERlY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGhuLmRlY29kZShlKS50b1N0cmluZygpfX0se2tleToiaGFzaFNoYTI1NiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGdyLmZyb20oZG4oKG5ldyBUZXh0RW5jb2RlcikuZW5jb2RlKGUpKSl9fSx7a2V5OiJnZW5lcmF0ZVJhbmRvbUJ5dGVzIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4geGEoZSl9fSx7a2V5OiJ2ZXJpZnlKd3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4sYSxvLGkpe3JldHVybiBmdW5jdGlvbihlLHQscil7cmV0dXJuIGhhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0oZSwocz17a2V5czpbdF19LHZhLnByb3RvdHlwZS5nZXRLZXkuYmluZChuZXcgdmEocykpKSx7YWxnb3JpdGhtczpyLGF1ZGllbmNlOm4sY2xvY2tUb2xlcmFuY2U6aSxpc3N1ZXI6YSxzdWJqZWN0Om99KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBQcm9taXNlLnJlc29sdmUoITApfSkpO3ZhciBzfX1dKSxlfSgpLEVhPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixhLG8saSxzLHUsYyxmLGwsaCxwLGQsdixnLG0seSx3LGsseCxTLEUsVCxBLEMsTyxQLEksVSxMLEgsTTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPW5ldyB0cixuPW5ldyBTYSxhPW5ldyBOKHIsbiksdC5uZXh0PTUsYS5pbml0aWFsaXplKGUpO2Nhc2UgNTppZihvPW5ldyBKKGEpLGk9YS5nZXREYXRhTGF5ZXIoKSxzPWVyLmdldEluc3RhbmNlKCksdT1mdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoIU9iamVjdC5hc3NpZ24oe2F0dGFjaFRva2VuOiEwfSxlKS5hdHRhY2hUb2tlbil7dC5uZXh0PTExO2JyZWFrfXJldHVybiB0LnQwPU9iamVjdCx0LnQxPU9iamVjdC5hc3NpZ24oe30sZS5oZWFkZXJzKSx0LnQyPSJCZWFyZXIgIix0Lm5leHQ9NyxhLmdldEFjY2Vzc1Rva2VuKCk7Y2FzZSA3OnQudDM9dC5zZW50LHQudDQ9dC50Mi5jb25jYXQuY2FsbCh0LnQyLHQudDMpLHQudDU9e0F1dGhvcml6YXRpb246dC50NH0sZS5oZWFkZXJzPXQudDAuYXNzaWduLmNhbGwodC50MCx0LnQxLHQudDUpO2Nhc2UgMTE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LHQudDA9bnVsbD09cz92b2lkIDA6cy5pbml0LCF0LnQwKXt0Lm5leHQ9MTM7YnJlYWt9cmV0dXJuIHQubmV4dD0xMyxzLmluaXQoITAsdSk7Y2FzZSAxMzpyZXR1cm4gYz1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2spJiZzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhlKX0sZj1mdW5jdGlvbihlKXsobnVsbD09cz92b2lkIDA6cy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSl9LGw9ZnVuY3Rpb24oZSl7KG51bGw9PXM/dm9pZCAwOnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaykmJnMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhlKX0saD1mdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3ZhciBuLGEsbyx1LGMsZixsO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHU9ITEsYz0wLHIudDA9W10sci50MT1iLHIubmV4dD02LGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgNjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTEwO2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDEwOmlmKCFyLnQzKXtyLm5leHQ9MTQ7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTE1O2JyZWFrO2Nhc2UgMTQ6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDE1OmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0xOTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAxOTppZighci50Mil7ci5uZXh0PTIzO2JyZWFrfXIudDc9YSxyLm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMzpyLnQ3PVtdO2Nhc2UgMjQ6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZj1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAyODppZighKGM8Zi5sZW5ndGgpKXtyLm5leHQ9MzY7YnJlYWt9aWYoIShsPWZbY10pfHwhKG51bGw9PT0obz1udWxsPT10P3ZvaWQgMDp0LnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aChsKSkpe3IubmV4dD0zMzticmVha31yZXR1cm4gdT0hMCxyLmFicnVwdCgiYnJlYWsiLDM2KTtjYXNlIDMzOmMrKyxyLm5leHQ9Mjg7YnJlYWs7Y2FzZSAzNjppZighdSl7ci5uZXh0PTQwO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHIoKXt2YXIgbixhLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKDQwMSE9PShudWxsPT09KG49bnVsbD09ZT92b2lkIDA6ZS5yZXNwb25zZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uc3RhdHVzKSYmKG51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpKXtyLm5leHQ9MTI7YnJlYWt9cmV0dXJuIHIucHJldj0xLHIubmV4dD00LFMoKTtjYXNlIDQ6aT1yLnNlbnQsci5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyByLnByZXY9NyxyLnQwPXIuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUi1TRTAxIixudWxsIT09KGE9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWE/YToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obz1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bz9vOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxMDppZighaSl7ci5uZXh0PTEyO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixzLnJlcXVlc3QodCkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDEyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAxMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHIsbnVsbCxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNDA6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBEKCJTUEEtV09SS0VSX0NPUkUtSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSkscil9KSkpfSxwPWZ1bmN0aW9uKHQpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiByKCl7dmFyIG4sYSxvLHUsYyxmLGwsaCxwLGQsdixnO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dT0hMCxjPVIodCksci5wcmV2PTIsYy5zKCk7Y2FzZSA0OmlmKChmPWMubigpKS5kb25lKXtyLm5leHQ9NDc7YnJlYWt9cmV0dXJuIGw9Zi52YWx1ZSxoPSExLHA9MCxyLnQwPVtdLHIudDE9YixyLm5leHQ9MTIsaS5nZXRDb25maWdEYXRhKCk7Y2FzZSAxMjppZihyLnQ0PW49ci5zZW50LHIudDM9bnVsbD09PXIudDQsci50Myl7ci5uZXh0PTE2O2JyZWFrfXIudDM9dm9pZCAwPT09bjtjYXNlIDE2OmlmKCFyLnQzKXtyLm5leHQ9MjA7YnJlYWt9ci50NT12b2lkIDAsci5uZXh0PTIxO2JyZWFrO2Nhc2UgMjA6ci50NT1uLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDIxOmlmKHIudDY9YT1yLnQ1LHIudDI9bnVsbCE9PXIudDYsIXIudDIpe3IubmV4dD0yNTticmVha31yLnQyPXZvaWQgMCE9PWE7Y2FzZSAyNTppZighci50Mil7ci5uZXh0PTI5O2JyZWFrfXIudDc9YSxyLm5leHQ9MzA7YnJlYWs7Y2FzZSAyOTpyLnQ3PVtdO2Nhc2UgMzA6ci50OD1yLnQ3LHIudDk9KDAsci50MSkoci50OCksci50MTA9W2UuYmFzZVVybF0sZD1yLnQwLmNvbmNhdC5jYWxsKHIudDAsci50OSxyLnQxMCk7Y2FzZSAzNDppZighKHA8ZC5sZW5ndGgpKXtyLm5leHQ9NDI7YnJlYWt9aWYoISh2PWRbcF0pfHwhKG51bGw9PT0obz1sLnVybCl8fHZvaWQgMD09PW8/dm9pZCAwOm8uc3RhcnRzV2l0aCh2KSkpe3IubmV4dD0zOTticmVha31yZXR1cm4gaD0hMCxyLmFicnVwdCgiYnJlYWsiLDQyKTtjYXNlIDM5OnArKyxyLm5leHQ9MzQ7YnJlYWs7Y2FzZSA0MjppZihoKXtyLm5leHQ9NDU7YnJlYWt9cmV0dXJuIHU9ITEsci5hYnJ1cHQoImJyZWFrIiw0Nyk7Y2FzZSA0NTpyLm5leHQ9NDticmVhaztjYXNlIDQ3OnIubmV4dD01MjticmVhaztjYXNlIDQ5OnIucHJldj00OSxyLnQxMT1yLmNhdGNoKDIpLGMuZShyLnQxMSk7Y2FzZSA1MjpyZXR1cm4gci5wcmV2PTUyLGMuZigpLHIuZmluaXNoKDUyKTtjYXNlIDU1OmlmKGc9W10sIXUpe3IubmV4dD02MTticmVha31yZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbihlKXtnLnB1c2gocy5yZXF1ZXN0KGUpKX0pKSxyLmFicnVwdCgicmV0dXJuIiwobnVsbD09cz92b2lkIDA6cy5hbGwpJiZzLmFsbChnKS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gdCgpe3ZhciByLG4sYSxvO3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0ocj1udWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKXx8dm9pZCAwPT09cj92b2lkIDA6ci5zdGF0dXMpKXt0Lm5leHQ9MTI7YnJlYWt9cmV0dXJuIHQucHJldj0xLHQubmV4dD00LFMoKTtjYXNlIDQ6bz10LnNlbnQsdC5uZXh0PTEwO2JyZWFrO2Nhc2UgNzp0aHJvdyB0LnByZXY9Nyx0LnQwPXQuY2F0Y2goMSksbmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1IUkEtU0UwMSIsbnVsbCE9PShuPW51bGw9PT10LnQwfHx2b2lkIDA9PT10LnQwP3ZvaWQgMDp0LnQwLm5hbWUpJiZ2b2lkIDAhPT1uP246IlJlZnJlc2ggdG9rZW4gcmVxdWVzdCBmYWlsZWQuIixudWxsIT09KGE9bnVsbD09PXQudDB8fHZvaWQgMD09PXQudDA/dm9pZCAwOnQudDAubWVzc2FnZSkmJnZvaWQgMCE9PWE/YToiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdHJ5aW5nIHRvIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBmb2xsb3dpbmcgYSA0MDEgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLiIpO2Nhc2UgMTA6aWYoIW8pe3QubmV4dD0xMjticmVha31yZXR1cm4gdC5hYnJ1cHQoInJldHVybiIscy5hbGwmJnMuYWxsKGcpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlc29sdmUoZSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxMjpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgMTM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LG51bGwsW1sxLDddXSl9KSkpfSkpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgRCgiU1BBLVdPUktFUl9DT1JFLUhSQS1JVjAyIiwiUmVxdWVzdCB0byB0aGUgcHJvdmlkZWQgZW5kcG9pbnQgaXMgcHJvaGliaXRlZC4iLCJSZXF1ZXN0cyBjYW4gb25seSBiZSBzZW50IHRvIHJlc291cmNlIHNlcnZlcnMgc3BlY2lmaWVkIGJ5IHRoZSBgcmVzb3VyY2VTZXJ2ZXJVUkxzYCBhdHRyaWJ1dGUgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBTREsuIFRoZSBzcGVjaWZpZWQgZW5kcG9pbnQgaW4gdGhpcyByZXF1ZXN0IGNhbm5vdCBiZSBmb3VuZCBhbW9uZyB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AiKSkpO2Nhc2UgNjI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyLG51bGwsW1syLDQ5LDUyLDU1XV0pfSkpKX0sZD1mdW5jdGlvbigpe3MuZW5hYmxlSGFuZGxlciYmcy5lbmFibGVIYW5kbGVyKCl9LHY9ZnVuY3Rpb24oKXtzLmRpc2FibGVIYW5kbGVyJiZzLmRpc2FibGVIYW5kbGVyKCl9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLmdldEF1dGhvcml6YXRpb25VUkwoZSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgcixuLG8saTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiBuPW5ldyBVUkwoZSksbz1udWxsIT09KHI9bi5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpKSYmdm9pZCAwIT09cj9yOiIiLHQubmV4dD00LGEuZ2V0UEtDRUNvZGUobyk7Y2FzZSA0OnJldHVybiBpPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvblVSTDplLHBrY2U6aX0pO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LG09ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIG8uY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksby5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCksZS5hYnJ1cHQoInJldHVybiIpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0seT1mdW5jdGlvbihlLHQscixuKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcygpe3ZhciB1O3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocyl7Zm9yKDs7KXN3aXRjaChzLnByZXY9cy5uZXh0KXtjYXNlIDA6cmV0dXJuIHMubmV4dD0yLGkuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjppZih1PXMuc2VudCwhcnx8IXUuZW5hYmxlUEtDRSl7cy5uZXh0PTY7YnJlYWt9cmV0dXJuIHMubmV4dD02LGEuc2V0UEtDRUNvZGUocixudWxsIT1uP246IiIpO2Nhc2UgNjppZighZSl7cy5uZXh0PTg7YnJlYWt9cmV0dXJuIHMuYWJydXB0KCJyZXR1cm4iLGEucmVxdWVzdEFjY2Vzc1Rva2VuKGUsbnVsbCE9dD90OiIiLG51bGwhPW4/bjoiJyIpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGEuZ2V0QmFzaWNVc2VySW5mbygpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9KSkpO2Nhc2UgODpyZXR1cm4gcy5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQVQxLU5GMDEiLCJObyBhdXRob3JpemF0aW9uIGNvZGUuIiwiTm8gYXV0aG9yaXphdGlvbiBjb2RlIHdhcyBmb3VuZC4iKSkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIHMuc3RvcCgpfX0pLHMpfSkpKX0sdz1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gby5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxhLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxrPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixhLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIHIsbixzLHUsYyxmLGwsaDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKHU9ITAsYz0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe3QubmV4dD0zOTticmVha31yZXR1cm4gdT0hMSxmPTAsdC50MD1bXSx0LnQxPWIsdC5uZXh0PTksaS5nZXRDb25maWdEYXRhKCk7Y2FzZSA5OmlmKHQudDQ9cj10LnNlbnQsdC50Mz1udWxsPT09dC50NCx0LnQzKXt0Lm5leHQ9MTM7YnJlYWt9dC50Mz12b2lkIDA9PT1yO2Nhc2UgMTM6aWYoIXQudDMpe3QubmV4dD0xNzticmVha310LnQ1PXZvaWQgMCx0Lm5leHQ9MTg7YnJlYWs7Y2FzZSAxNzp0LnQ1PXIucmVzb3VyY2VTZXJ2ZXJVUkxzO2Nhc2UgMTg6aWYodC50Nj1uPXQudDUsdC50Mj1udWxsIT09dC50NiwhdC50Mil7dC5uZXh0PTIyO2JyZWFrfXQudDI9dm9pZCAwIT09bjtjYXNlIDIyOmlmKCF0LnQyKXt0Lm5leHQ9MjY7YnJlYWt9dC50Nz1uLHQubmV4dD0yNzticmVhaztjYXNlIDI2OnQudDc9W107Y2FzZSAyNzp0LnQ4PXQudDcsdC50OT0oMCx0LnQxKSh0LnQ4KSx0LnQxMD1bZS5iYXNlVXJsXSxsPXQudDAuY29uY2F0LmNhbGwodC50MCx0LnQ5LHQudDEwKTtjYXNlIDMxOmlmKCEoZjxsLmxlbmd0aCkpe3QubmV4dD0zOTticmVha31pZighKGg9bFtmXSl8fCEobnVsbD09PShzPWUudG9rZW5FbmRwb2ludCl8fHZvaWQgMD09PXM/dm9pZCAwOnMuc3RhcnRzV2l0aChoKSkpe3QubmV4dD0zNjticmVha31yZXR1cm4gYz0hMCx0LmFicnVwdCgiYnJlYWsiLDM5KTtjYXNlIDM2OmYrKyx0Lm5leHQ9MzE7YnJlYWs7Y2FzZSAzOTppZihlLnNob3VsZFJlcGxheUFmdGVyUmVmcmVzaCYmaS5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEssSlNPTi5zdHJpbmdpZnkoZSkpLCF1JiYhYyl7dC5uZXh0PTQ0O2JyZWFrfXJldHVybiB0LmFicnVwdCgicmV0dXJuIixhLnJlcXVlc3RDdXN0b21HcmFudChlKS50aGVuKChmdW5jdGlvbih0KXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gcigpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD01O2JyZWFrfXJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxyLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA1OnJldHVybiByLmFicnVwdCgicmV0dXJuIix0KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxyKX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSA0NDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QobmV3IEQoIlNQQS1XT1JLRVJfQ09SRS1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxTPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLnByZXY9MCxlLm5leHQ9MyxhLnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMzpyZXR1cm4gZS5uZXh0PTUsTSgpO2Nhc2UgNTppZighKHQ9ZS5zZW50KSl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUubmV4dD05LHgodCk7Y2FzZSA5OnJldHVybiBvLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKSxlLmFicnVwdCgicmV0dXJuIixhLmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gZS5wcmV2PTEzLGUudDA9ZS5jYXRjaCgwKSxlLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlLnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsMTNdXSl9KSkpfSxFPWZ1bmN0aW9uKCl7cmV0dXJuIGEucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBvLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLFByb21pc2UucmVzb2x2ZSghMCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKX0sVD1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQT1mdW5jdGlvbigpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsYS5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEM9ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LE89ZnVuY3Rpb24oKXtyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGEuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxQPWZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0QWNjZXNzVG9rZW4oKX0sST1mdW5jdGlvbigpe3JldHVybiBhLmlzQXV0aGVudGljYXRlZCgpfSxVPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsaS5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxMPWZ1bmN0aW9uKGUpe3JldHVybiBfKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHJlZ2VuZXJhdG9yUnVudGltZS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsYS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxIPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIixpLmdldENvbmZpZ0RhdGEoKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxNPWZ1bmN0aW9uKCl7cmV0dXJuIF8odm9pZCAwLHZvaWQgMCx2b2lkIDAscmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixpLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoSyk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LHQuYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6dixlbmFibGVIdHRwSGFuZGxlcjpkLGdldEFjY2Vzc1Rva2VuOlAsZ2V0QXV0aG9yaXphdGlvblVSTDpnLGdldEJhc2ljVXNlckluZm86VCxnZXRDb25maWdEYXRhOkgsZ2V0RGVjb2RlZElEVG9rZW46QSxnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6TyxnZXRTaWduT3V0VVJMOmssaHR0cFJlcXVlc3Q6aCxodHRwUmVxdWVzdEFsbDpwLGlzQXV0aGVudGljYXRlZDpJLHJlZnJlc2hBY2Nlc3NUb2tlbjpTLHJlcXVlc3RBY2Nlc3NUb2tlbjp5LHJlcXVlc3RDdXN0b21HcmFudDp4LHJldm9rZUFjY2Vzc1Rva2VuOkUsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpjLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmYsc2V0U2Vzc2lvblN0YXRlOlUsc2lnbk91dDp3LHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjptLHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzOTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sVGE9c2VsZjtUYS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhLHI9ZS5wb3J0cztyZXR1cm4gXyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyZWdlbmVyYXRvclJ1bnRpbWUubWFyaygoZnVuY3Rpb24gZSgpe3ZhciBuLGEsbyxpLHMsdTtyZXR1cm4gcmVnZW5lcmF0b3JSdW50aW1lLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOmlmKHM9clswXSx0LnR5cGU9PT1xfHxfYSl7ZS5uZXh0PTQ7YnJlYWt9cmV0dXJuIHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxlLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OmUudDA9dC50eXBlLGUubmV4dD1lLnQwPT09cT83OiJnZXRfYXV0aF91cmwiPT09ZS50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ZS50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PWUudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ZS50MD8yODoic2lnbi1vdXQiPT09ZS50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ZS50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1lLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1lLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PWUudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PWUudDA/NzY6ImdldF9pZF90b2tlbiI9PT1lLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PWUudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1lLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1lLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1lLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ZS50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1lLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ZS50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ZS50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1lLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiBlLnByZXY9Nyx1PU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKSxlLm5leHQ9MTEsRWEodSk7Y2FzZSAxMTooX2E9ZS5zZW50KS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKERhKSxfYS5zZXRIdHRwUmVxdWVzdFN0YXJ0Q2FsbGJhY2soQWEpLF9hLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKENhKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODplLnByZXY9MTgsZS50MT1lLmNhdGNoKDcpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDEpKTtjYXNlIDIxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAyMjpyZXR1cm4gX2EuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT10P3ZvaWQgMDp0LmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI0OnJldHVybiBfYS5yZXF1ZXN0QWNjZXNzVG9rZW4obnVsbD09PShuPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uY29kZSxudWxsPT09KGE9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09YT92b2lkIDA6YS5zZXNzaW9uU3RhdGUsbnVsbD09PShvPW51bGw9PXQ/dm9pZCAwOnQuZGF0YSl8fHZvaWQgMD09PW8/dm9pZCAwOm8ucGtjZSxudWxsPT09KGk9bnVsbD09dD92b2lkIDA6dC5kYXRhKXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGF0ZSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0KHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjg6cmV0dXJuIF9hLmh0dHBSZXF1ZXN0QWxsKHQuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMzA6cmV0dXJuIGUucHJldj0zMCxlLnQyPXMsZS50Mz1CLGUubmV4dD0zNSxfYS5zaWduT3V0KCk7Y2FzZSAzNTplLnQ0PWUuc2VudCxlLnQ1PWUudDMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDMsZS50NCksZS50Mi5wb3N0TWVzc2FnZS5jYWxsKGUudDIsZS50NSksZS5uZXh0PTQzO2JyZWFrO2Nhc2UgNDA6ZS5wcmV2PTQwLGUudDY9ZS5jYXRjaCgzMCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NikpO2Nhc2UgNDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiBfYS5yZXF1ZXN0Q3VzdG9tR3JhbnQodC5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0NjpyZXR1cm4gX2EucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA0ODpyZXR1cm4gZS5wcmV2PTQ4LGUudDc9cyxlLnQ4PUIsZS5uZXh0PTUzLF9hLmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCk7Y2FzZSA1MzplLnQ5PWUuc2VudCxlLnQxMD1lLnQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ4LGUudDkpLGUudDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ3LGUudDEwKSxlLm5leHQ9NjE7YnJlYWs7Y2FzZSA1ODplLnByZXY9NTgsZS50MTE9ZS5jYXRjaCg0OCkscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MTEpKTtjYXNlIDYxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gZS5wcmV2PTYyLGUudDEyPXMsZS50MTM9QixlLm5leHQ9NjcsX2EuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ZS50MTQ9ZS5zZW50LGUudDE1PWUudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQxMyxlLnQxNCksZS50MTIucG9zdE1lc3NhZ2UuY2FsbChlLnQxMixlLnQxNSksZS5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ZS5wcmV2PTcyLGUudDE2PWUuY2F0Y2goNjIpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDE2KSk7Y2FzZSA3NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNzY6cmV0dXJuIGUucHJldj03NixlLnQxNz1zLGUudDE4PUIsZS5uZXh0PTgxLF9hLmdldERlY29kZWRJRFRva2VuKCk7Y2FzZSA4MTplLnQxOT1lLnNlbnQsZS50MjA9ZS50MTguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDE4LGUudDE5KSxlLnQxNy5wb3N0TWVzc2FnZS5jYWxsKGUudDE3LGUudDIwKSxlLm5leHQ9ODk7YnJlYWs7Y2FzZSA4NjplLnByZXY9ODYsZS50MjE9ZS5jYXRjaCg3Nikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50MjEpKTtjYXNlIDg5OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA5MDpyZXR1cm4gZS5wcmV2PTkwLGUudDIyPXMsZS50MjM9QixlLm5leHQ9OTUsX2EuZ2V0SURUb2tlbigpO2Nhc2UgOTU6ZS50MjQ9ZS5zZW50LGUudDI1PWUudDIzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQyMyxlLnQyNCksZS50MjIucG9zdE1lc3NhZ2UuY2FsbChlLnQyMixlLnQyNSksZS5uZXh0PTEwMzticmVhaztjYXNlIDEwMDplLnByZXY9MTAwLGUudDI2PWUuY2F0Y2goOTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gX2EuZW5hYmxlSHR0cEhhbmRsZXIoKSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIF9hLmRpc2FibGVIdHRwSGFuZGxlcigpLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gZS5wcmV2PTExMCxlLnQyNz1zLGUudDI4PUIsZS5uZXh0PTExNSxfYS5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTplLnQyOT1lLnNlbnQsZS50MzA9ZS50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKGUudDI4LGUudDI5KSxlLnQyNy5wb3N0TWVzc2FnZS5jYWxsKGUudDI3LGUudDMwKSxlLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOmUucHJldj0xMjAsZS50MzE9ZS5jYXRjaCgxMTApLHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUudDMxKSk7Y2FzZSAxMjM6cmV0dXJuIGUuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEyNDpyZXR1cm4gZS5wcmV2PTEyNCxlLnQzMj1zLGUudDMzPUIsZS5uZXh0PTEyOSxfYS5nZXRTaWduT3V0VVJMKCk7Y2FzZSAxMjk6ZS50MzQ9ZS5zZW50LGUudDM1PWUudDMzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzMyxlLnQzNCksZS50MzIucG9zdE1lc3NhZ2UuY2FsbChlLnQzMixlLnQzNSksZS5uZXh0PTEzNzticmVhaztjYXNlIDEzNDplLnByZXY9MTM0LGUudDM2PWUuY2F0Y2goMTI0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQzNikpO2Nhc2UgMTM3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMzg6cmV0dXJuIGUucHJldj0xMzgsZS50Mzc9cyxlLnQzOD1CLGUubmV4dD0xNDMsX2EucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAxNDM6ZS50Mzk9ZS5zZW50LGUudDQwPWUudDM4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQzOCxlLnQzOSksZS50MzcucG9zdE1lc3NhZ2UuY2FsbChlLnQzNyxlLnQ0MCksZS5uZXh0PTE1MTticmVhaztjYXNlIDE0ODplLnByZXY9MTQ4LGUudDQxPWUuY2F0Y2goMTM4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3MucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKF9hLnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfXJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTQ6cmV0dXJuIGUucHJldj0xNTQsZS50NDI9cyxlLnQ0Mz1CLGUubmV4dD0xNTksX2Euc2V0U2Vzc2lvblN0YXRlKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNTk6ZS50NDQ9ZS5zZW50LGUudDQ1PWUudDQzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0MyxlLnQ0NCksZS50NDIucG9zdE1lc3NhZ2UuY2FsbChlLnQ0MixlLnQ0NSksZS5uZXh0PTE2NzticmVhaztjYXNlIDE2NDplLnByZXY9MTY0LGUudDQ2PWUuY2F0Y2goMTU0KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ0NikpO2Nhc2UgMTY3OnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNjg6cmV0dXJuIGUucHJldj0xNjgsZS50NDc9cyxlLnQ0OD1CLGUubmV4dD0xNzMsX2EudXBkYXRlQ29uZmlnKG51bGw9PXQ/dm9pZCAwOnQuZGF0YSk7Y2FzZSAxNzM6ZS50NDk9ZS5zZW50LGUudDUwPWUudDQ4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChlLnQ0OCxlLnQ0OSksZS50NDcucG9zdE1lc3NhZ2UuY2FsbChlLnQ0NyxlLnQ1MCksZS5uZXh0PTE4MTticmVhaztjYXNlIDE3ODplLnByZXY9MTc4LGUudDUxPWUuY2F0Y2goMTY4KSxzLnBvc3RNZXNzYWdlKEIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiBlLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIGUucHJldj0xODIsZS50NTI9cyxlLnQ1Mz1CLGUubmV4dD0xODcsX2EuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OmUudDU0PWUuc2VudCxlLnQ1NT1lLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoZS50NTMsZS50NTQpLGUudDUyLnBvc3RNZXNzYWdlLmNhbGwoZS50NTIsZS50NTUpLGUubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ZS5wcmV2PTE5MixlLnQ1Nj1lLmNhdGNoKDE4Mikscy5wb3N0TWVzc2FnZShCLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZS50NTYpKTtjYXNlIDE5NTpyZXR1cm4gZS5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTk2Om51bGw9PXN8fHMucG9zdE1lc3NhZ2UoQi5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBEKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1JVjAyIiwiVGhlIG1lc3NhZ2UgdHlwZSBpcyBpbnZhbGlkLiIsIlRoZSBtZXNzYWdlIHR5cGUgcHJvdmlkZWQsICIuY29uY2F0KHQudHlwZSwiLCBpcyBpbnZhbGlkLiIpKSkpO2Nhc2UgMTk3OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSxudWxsLFtbNywxOF0sWzMwLDQwXSxbNDgsNThdLFs2Miw3Ml0sWzc2LDg2XSxbOTAsMTAwXSxbMTEwLDEyMF0sWzEyNCwxMzRdLFsxMzgsMTQ4XSxbMTU0LDE2NF0sWzE2OCwxNzhdLFsxODIsMTkyXV0pfSkpKX07dmFyIEFhPWZ1bmN0aW9uKCl7VGEucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LENhPWZ1bmN0aW9uKGUpe1RhLnBvc3RNZXNzYWdlKHtkYXRhOkpTT04uc3RyaW5naWZ5KG51bGwhPWU/ZToiIiksdHlwZToicmVxdWVzdC1zdWNjZXNzIn0pfSxEYT1mdW5jdGlvbigpe1RhLnBvc3RNZXNzYWdlKHt0eXBlOiJyZXF1ZXN0LWZpbmlzaCJ9KX07cmV0dXJue319KCk7Cgo=",YE=null,JE=!1,function(e){return xE=xE||SE(RE,YE,JE),new Worker(xE,e)}),LE=function(t){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i,c,a,o,l,u,s,d,m,h,Z,b,p,y,X,f,V,G,I,W,g,v,S,R,Y,J,x,K,L,N,H,k,C,U;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return c=null!==(r=null==t?void 0:t.requestTimeout)&&void 0!==r?r:6e4,a=!0,o=!1,n.next=5,Pj((function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t={type:uj},e.prev=1,e.next=4,s(t);case 4:return n=e.sent,e.abrupt("return",n);case 8:return e.prev=8,e.t0=e.catch(1),e.abrupt("return",Mj.getSignOutURL());case 11:case"end":return e.stop()}}),e,null,[[1,8]])})))}),t.storage,(function(e){return y(e)}));case 5:return l=n.sent,u=new KE,s=function(e){var t=new MessageChannel;return u.postMessage(e,[t.port2]),new Promise((function(e,n){var r=setTimeout((function(){n(new $z("SPA-WEB_WORKER_CLIENT-COM-TO01","Operation timed out.","No response was received from the web worker for "+c/1e3+" since dispatching the request"))}),c);return t.port1.onmessage=function(t){var i=t.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),e(c)}else n(i.error?JSON.parse(i.error):null)}}))},d=function(e){return s({data:e,type:"request-custom-grant"}).then((function(t){return e.preventSignOutURLUpdate&&(o=!0),Promise.resolve(t)})).catch((function(e){return Promise.reject(e)}))},m=function(e){return s({data:e,type:"http-request"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},h=function(e){return s({data:e,type:"http-request-all"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!a){t.next=5;break}if("function"!=typeof i.requestErrorCallback){t.next=4;break}return t.next=4,i.requestErrorCallback(e);case 4:"function"==typeof i.requestFinishCallback&&i.requestFinishCallback();case 5:return t.abrupt("return",Promise.reject(e));case 6:case"end":return t.stop()}}),t)})))}))},Z=function(){return s({type:"enable_http_handler"}).then((function(){return a=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},b=function(){return s({type:"disable_http_handler"}).then((function(){return a=!1,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},p=function(){return i||(i={requestErrorCallback:function(){return Promise.resolve()},requestFinishCallback:function(){return null},requestStartCallback:function(){return null},requestSuccessCallback:function(){return null}}),u.onmessage=function(e){var t=e.data;switch(t.type){case"request-finish":(null==i?void 0:i.requestFinishCallback)&&(null==i||i.requestFinishCallback());break;case"request-start":(null==i?void 0:i.requestStartCallback)&&(null==i||i.requestStartCallback());break;case"request-success":(null==i?void 0:i.requestSuccessCallback)&&(null==i||i.requestSuccessCallback(t.data?JSON.parse(t.data):null))}},s({data:t,type:"init"}).then((function(){return Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)}))},y=function(e){return s({data:e,type:"set_session_state"})},X=function(){return s({type:"start_auto_refresh_token"})},f=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,S();case 2:return i=e.sent,e.next=5,R();case 5:c=e.sent,l.initialize(c.clientID,null!==(t=i.checkSessionIframe)&&void 0!==t?t:"",(function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Y();case 2:return e.abrupt("return",e.sent.sessionState);case 3:case"end":return e.stop()}}),e)})))}),null!==(n=c.checkSessionInterval)&&void 0!==n?n:3,null!==(r=c.sessionRefreshInterval)&&void 0!==r?r:300,c.signInRedirectURL,(function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,G(e);case 2:return t.abrupt("return",t.sent.authorizationURL);case 3:case"end":return t.stop()}}),t)})))}));case 7:case"end":return e.stop()}}),e)})))},V=function(){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n,r,i,c,a,o,u,d,m,h;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,R();case 2:if(r=e.sent,!Mj.isInitializedSilentSignIn()){e.next=7;break}return e.next=6,l.receivePromptNoneResponse();case 6:return e.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 7:return i=document.getElementById(Kj),c=null===(t=null==i?void 0:i.contentDocument)||void 0===t?void 0:t.getElementById(Lj),a={data:{prompt:"none",state:Hj},type:sj},e.prev=10,e.next=13,s(a);case 13:o=e.sent,u=ej.extractPKCEKeyFromStateParam(null!==(n=new URL(o.authorizationURL).searchParams.get(qz))&&void 0!==n?n:""),o.pkce&&r.enablePKCE&&Mj.setPKCE(u,o.pkce),d=o.authorizationURL,(m=new URL(d)).searchParams.set("response_mode","query"),h=m.toString(),c.src=h,e.next=26;break;case 23:return e.prev=23,e.t0=e.catch(10),e.abrupt("return",Promise.reject(e.t0));case 26:return e.abrupt("return",new Promise((function(e,t){var n=setTimeout((function(){e(!1)}),1e4);window.addEventListener("message",(function r(i){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,l,u,s;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:(null==(s=i.data)?void 0:s.type)==mj&&(window.removeEventListener("message",r),clearTimeout(n),e(!1)),(null==s?void 0:s.type)==dj&&(null===(a=null==s?void 0:s.data)||void 0===a?void 0:a.code)&&I(null===(o=null==s?void 0:s.data)||void 0===o?void 0:o.code,null===(l=null==s?void 0:s.data)||void 0===l?void 0:l.sessionState,null===(u=null==s?void 0:s.data)||void 0===u?void 0:u.state).then((function(t){window.removeEventListener("message",r),e(t)})).catch((function(e){window.removeEventListener("message",r),t(e)})).finally((function(){clearTimeout(n)}));case 3:case"end":return c.stop()}}),c)})))}))})));case 27:case"end":return e.stop()}}),e,null,[[10,23]])})))},G=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r={data:e,type:sj},t.abrupt("return",s(r).then((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var r,i;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.pkce&&n.enablePKCE&&(i=ej.extractPKCEKeyFromStateParam(null!==(r=new URL(e.authorizationURL).searchParams.get(qz))&&void 0!==r?r:""),Mj.setPKCE(i,e.pkce)),t.abrupt("return",Promise.resolve(e));case 2:case"end":return t.stop()}}),t)})))})));case 5:case"end":return t.stop()}}),t)})))},I=function(e,t,n){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,R();case 2:return i=r.sent,c=ej.extractPKCEKeyFromStateParam(n),a={data:{code:e,pkce:i.enablePKCE?Mj.getPKCE(c):void 0,sessionState:t,state:n},type:"request_get_token"},i.enablePKCE&&Mj.removePKCE(c),r.abrupt("return",s(a).then((function(e){return s({type:"get_sign_out_url"}).then((function(t){return Mj.setSignOutURL(t),i.enableOIDCSessionManagement&&f(),X(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))})).catch((function(e){return Promise.reject(e)})));case 7:case"end":return r.stop()}}),r)})))},W=function(t,n,r,i){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function c(){var a,o,u,s,d,m,h,Z,b,p;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,R();case 2:return s=c.sent,c.next=5,l.receivePromptNoneResponse((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",y(e));case 1:case"end":return t.stop()}}),t)})))}));case 5:if(!c.sent){c.next=8;break}return c.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 8:if(d=new URL(window.location.href).searchParams.get(Uj),m=new URL(window.location.href).searchParams.get(Tj),!d){c.next=16;break}throw(h=new URL(window.location.href)).searchParams.delete(Uj),h.searchParams.delete(Tj),history.pushState(null,document.title,h.toString()),new $z("SPA-WEB_WORKER_CLIENT-SI-SE01",d,null!=m?m:"");case 16:return c.next=18,K();case 18:if(!c.sent){c.next=23;break}return c.next=21,X();case 21:return s.enableOIDCSessionManagement&&f(),c.abrupt("return",Y());case 23:if((null==s?void 0:s.responseMode)===e.ResponseMode.formPost&&n?(Z=n,b=null!=r?r:"",p=null!=i?i:""):(Z=null!==(a=new URL(window.location.href).searchParams.get(Dz))&&void 0!==a?a:"",b=null!==(o=new URL(window.location.href).searchParams.get(Oz))&&void 0!==o?o:"",p=null!==(u=new URL(window.location.href).searchParams.get(qz))&&void 0!==u?u:"",Mj.removeAuthorizationCode()),!Z||!p){c.next=26;break}return c.abrupt("return",I(Z,b,p));case 26:return c.abrupt("return",G(t).then((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return location.href=e.authorizationURL,t.next=3,Mj.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve({allowedScopes:"",displayName:"",email:"",sessionState:"",sub:"",tenantDomain:"",username:""}));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 27:case"end":return c.stop()}}),c)})))},g=function(){return K().then((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!e||o){t.next=5;break}return n={type:uj},t.abrupt("return",s(n).then((function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return window.location.href=e,t.next=3,Mj.waitTillPageRedirect();case 3:return t.abrupt("return",Promise.resolve(!0));case 4:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)})));case 5:return window.location.href=Mj.getSignOutURL(),t.next=8,Mj.waitTillPageRedirect();case 8:return t.abrupt("return",Promise.resolve(!0));case 9:case"end":return t.stop()}}),t)})))})).catch((function(e){return Promise.reject(e)}))},v=function(){return s({type:"revoke-access-token"}).then((function(e){return l.reset(),Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},S=function(){return s({type:"get-oidc-service-endpoints"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},R=function(){return s({type:"get_config_data"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},Y=function(){return s({type:"get-basic-user-info"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},J=function(){return s({type:"get-decoded-id-token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},x=function(){return s({type:"get_id_token"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},K=function(){return s({type:"is_authenticated"}).then((function(e){return Promise.resolve(e)})).catch((function(e){return Promise.reject(e)}))},L=function(){return s({type:"refresh_access-token"})},N=function(e){e&&"function"==typeof e&&(i.requestSuccessCallback=e)},H=function(e){e&&"function"==typeof e&&(i.requestErrorCallback=e)},k=function(e){e&&"function"==typeof e&&(i.requestStartCallback=e)},C=function(e){e&&"function"==typeof e&&(i.requestFinishCallback=e)},U=function(e){return Mz(void 0,void 0,void 0,regeneratorRuntime.mark((function t(){var n,r,i,c;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,R();case 2:return n=t.sent,r=!(n&&n.endpoints&&n.endpoints.checkSessionIframe&&e&&e.endpoints&&e.endpoints.checkSessionIframe&&n.endpoints.checkSessionIframe===e.endpoints.checkSessionIframe),i=Object.assign(Object.assign({},n),e),c={data:i,type:"update_config"},t.next=8,s(c);case 8:i.enableOIDCSessionManagement&&r&&(l.reset(),f());case 9:case"end":return t.stop()}}),t)})))},n.abrupt("return",{disableHttpHandler:b,enableHttpHandler:Z,getBasicUserInfo:Y,getDecodedIDToken:J,getIDToken:x,getOIDCServiceEndpoints:S,httpRequest:m,httpRequestAll:h,initialize:p,isAuthenticated:K,refreshAccessToken:L,requestCustomGrant:d,revokeAccessToken:v,setHttpRequestErrorCallback:H,setHttpRequestFinishCallback:C,setHttpRequestStartCallback:k,setHttpRequestSuccessCallback:N,signIn:W,signOut:g,trySignInSilently:V,updateConfig:U});case 36:case"end":return n.stop()}}),n)})))},NE={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:e.Storage.SessionStorage},HE="primaryInstance",kE=function(){function t(e){u(this,t),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=e}return d(t,[{key:"_isInitialized",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._startedInitialize){e.next=2;break}return e.abrupt("return",!1);case 2:t=0,n=function(){return new Promise((function(e){return setTimeout(e,1)}))};case 4:if(this._initialized){e.next=11;break}return 1e4===t&&console.warn("It is taking longer than usual for the object to be initialized"),e.next=8,n();case 8:t++,e.next=4;break;case 11:return e.abrupt("return",!0);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"_validateMethod",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._isInitialized();case 2:if(e.sent){e.next=4;break}return e.abrupt("return",Promise.reject());case 4:return e.next=6,this.isAuthenticated();case 6:if(e.sent){e.next=8;break}return e.abrupt("return",Promise.reject());case 8:return e.abrupt("return",!0);case 9:case"end":return e.stop()}}),e,this)})))}},{key:"initialize",value:function(t){var n;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c,a,o=this;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(this._storage=null!==(n=t.storage)&&void 0!==n?n:e.Storage.SessionStorage,this._initialized=!1,this._startedInitialize=!0,this._storage===e.Storage.WebWorker){r.next=15;break}if(this._client){r.next=10;break}return i=t,c=Object.assign({},NE),r.next=9,vE(Object.assign(Object.assign({},c),i));case 9:this._client=r.sent;case 10:return this._initialized=!0,this._onInitialize&&this._onInitialize(!0),r.abrupt("return",Promise.resolve(!0));case 15:if(this._client){r.next=21;break}return a=t,r.next=19,LE(Object.assign(Object.assign({},NE),a));case 19:return this._client=r.sent,r.abrupt("return",this._client.initialize().then((function(){return o._onInitialize&&o._onInitialize(!0),o._initialized=!0,Promise.resolve(!0)})).catch((function(e){return Promise.reject(e)})));case 21:return r.abrupt("return",Promise.resolve(!0));case 22:case"end":return r.stop()}}),r,this)})))}},{key:"getBasicUserInfo",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getBasicUserInfo());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"signIn",value:function(e,t,n,r){var i;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function c(){var a=this;return regeneratorRuntime.wrap((function(c){for(;;)switch(c.prev=c.next){case 0:return c.next=2,this._isInitialized();case 2:if(Mj.canContinueSignIn(Boolean(null==e?void 0:e.callOnlyOnRedirect),t)){c.next=4;break}return c.abrupt("return");case 4:return null==e||delete e.callOnlyOnRedirect,c.abrupt("return",null===(i=this._client)||void 0===i?void 0:i.signIn(e,t,n,r).then((function(e){return a._onSignInCallback&&(e.allowedScopes||e.displayName||e.email||e.username)&&a._onSignInCallback(e),e})));case 6:case"end":return c.stop()}}),c,this)})))}},{key:"trySignInSilently",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n=this;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:if(!Mj.wasSignInCalled()){t.next=4;break}return t.abrupt("return");case 4:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.trySignInSilently().then((function(e){if(n._onSignInCallback&&e){var t=e;(t.allowedScopes||t.displayName||t.email||t.username)&&n._onSignInCallback(t)}return e})));case 5:case"end":return t.stop()}}),t,this)})))}},{key:"signOut",value:function(){var e,t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.next=4,null===(e=this._client)||void 0===e?void 0:e.signOut();case 4:if(n.t1=t=n.sent,n.t0=null!==n.t1,!n.t0){n.next=8;break}n.t0=void 0!==t;case 8:if(!n.t0){n.next=12;break}n.t2=t,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(e){var t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequest(e));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"httpRequestAll",value:function(e){var t;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._validateMethod();case 2:return n.abrupt("return",null===(t=this._client)||void 0===t?void 0:t.httpRequestAll(e));case 3:case"end":return n.stop()}}),n,this)})))}},{key:"requestCustomGrant",value:function(e){var t,n;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function r(){var i,c;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e.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(e.id){r.next=9;break}return r.abrupt("return",Promise.reject(new $z("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===(t=this._client)||void 0===t?void 0:t.requestCustomGrant(e);case 11:return i=r.sent,(c=this._onCustomGrant.get(e.id))&&c(null===(n=this._onCustomGrant)||void 0===n?void 0:n.get(e.id)),r.abrupt("return",i);case 15:case"end":return r.stop()}}),r,this)})))}},{key:"revokeAccessToken",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.next=4,null===(e=this._client)||void 0===e?void 0:e.revokeAccessToken();case 4:if(n=t.sent,t.t0=this._onEndUserSession,!t.t0){t.next=9;break}return t.next=9,this._onEndUserSession(n);case 9:return t.abrupt("return",n);case 10:case"end":return t.stop()}}),t,this)})))}},{key:"getOIDCServiceEndpoints",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getOIDCServiceEndpoints());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getHttpClient",value:function(){if(this._client){if(this._storage!==e.Storage.WebWorker)return this._client.getHttpClient();throw new $z("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 $z("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 e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getDecodedIDToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getIDToken",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.getIDToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"getAccessToken",value:function(){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){var n;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:if(!this._storage||![(e.Storage.WebWorker,e.Storage.BrowserMemory)].includes(this._storage)){t.next=4;break}return t.abrupt("return",Promise.reject(new $z("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,t.abrupt("return",n.getAccessToken());case 6:case"end":return t.stop()}}),t,this)})))}},{key:"refreshAccessToken",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._validateMethod();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.refreshAccessToken());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"isAuthenticated",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.isAuthenticated());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"on",value:function(t,n,r){var i,c,a,o;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function l(){var u;return regeneratorRuntime.wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return l.next=2,this._isInitialized();case 2:if(!n||"function"!=typeof n){l.next=35;break}l.t0=t,l.next=l.t0===e.Hooks.SignIn?6:l.t0===e.Hooks.SignOut?8:l.t0===e.Hooks.RevokeAccessToken?14:l.t0===e.Hooks.Initialize?16:l.t0===e.Hooks.HttpRequestError?18:l.t0===e.Hooks.HttpRequestFinish?20:l.t0===e.Hooks.HttpRequestStart?22:l.t0===e.Hooks.HttpRequestSuccess?24:l.t0===e.Hooks.CustomGrant?26:l.t0===e.Hooks.SignOutFailed?28:32;break;case 6:return this._onSignInCallback=n,l.abrupt("break",33);case 8:return this._onSignOutCallback=n,l.next=11,Mj.isSignOutSuccessful();case 11:if(!l.sent){l.next=13;break}this._onSignOutCallback();case 13:return l.abrupt("break",33);case 14:return this._onEndUserSession=n,l.abrupt("break",33);case 16:return this._onInitialize=n,l.abrupt("break",33);case 18:return null===(i=this._client)||void 0===i||i.setHttpRequestErrorCallback(n),l.abrupt("break",33);case 20:return null===(c=this._client)||void 0===c||c.setHttpRequestFinishCallback(n),l.abrupt("break",33);case 22:return null===(a=this._client)||void 0===a||a.setHttpRequestStartCallback(n),l.abrupt("break",33);case 24:return null===(o=this._client)||void 0===o||o.setHttpRequestSuccessCallback(n),l.abrupt("break",33);case 26:return r&&this._onCustomGrant.set(r,n),l.abrupt("break",33);case 28:return this._onSignOutFailedCallback=n,(u=Mj.didSignOutFail())&&this._onSignOutFailedCallback(u),l.abrupt("break",33);case 32:throw new $z("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 33:l.next=36;break;case 35:throw new $z("SPA-AUTH_CLIENT-ON-IV02","Invalid callback function.","The provided callback function is invalid.");case 36:case"end":return l.stop()}}),l,this)})))}},{key:"enableHttpHandler",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.enableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"disableHttpHandler",value:function(){var e;return Mz(this,void 0,void 0,regeneratorRuntime.mark((function t(){return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this._isInitialized();case 2:return t.abrupt("return",null===(e=this._client)||void 0===e?void 0:e.disableHttpHandler());case 3:case"end":return t.stop()}}),t,this)})))}},{key:"updateConfig",value:function(t){return Mz(this,void 0,void 0,regeneratorRuntime.mark((function n(){var r,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this._isInitialized();case 2:if(this._storage!==e.Storage.WebWorker){n.next=8;break}return r=this._client,n.next=6,r.updateConfig(t);case 6:n.next=11;break;case 8:return i=this._client,n.next=11,i.updateConfig(t);case 11:return n.abrupt("return");case 12:case"end":return n.stop()}}),n,this)})))}}],[{key:"getInstance",value:function(e){var n,r;return e&&(null===(n=this._instances)||void 0===n?void 0:n.get(e))?this._instances.get(e):!e&&(null===(r=this._instances)||void 0===r?void 0:r.get(HE))?this._instances.get(HE):e?(this._instances.set(e,new t(e)),this._instances.get(e)):(this._instances.set(HE,new t(HE)),this._instances.get(HE))}}]),t}();kE._instances=new Map;var CE=function(e){h(n,e);var t=G(n);function n(){var e;return u(this,n),(e=t.apply(this,arguments)).onmessage=function(){return null},e}return d(n)}(X(Worker));return e.AUTHORIZATION_CODE=Dz,e.AsgardeoAuthClient=lj,e.AsgardeoAuthException=$z,e.AsgardeoSPAClient=kE,e.AuthenticationUtils=ej,e.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",e.CLIENT_ID_TAG="{{clientID}}",e.CLIENT_SECRET_TAG="{{clientSecret}}",e.DataLayer=aj,e.NBF_CLAIM="nbf",e.OIDC_SCOPE="openid",e.PKCE_CODE_VERIFIER="pkce_code_verifier",e.PKCE_SEPARATOR="#",e.REFRESH_TOKEN_TIMER=Bz,e.SCOPE_TAG="{{scope}}",e.SESSION_STATE=Oz,e.SIGN_OUT_SUCCESS_PARAM=_z,e.SIGN_OUT_URL=Az,e.SPAUtils=Mj,e.STATE=qz,e.SUPPORTED_SIGNATURE_ALGORITHMS=Ez,e.TOKEN_TAG="{{token}}",e.USERNAME_TAG="{{username}}",e.WebWorkerClass=CE,Object.defineProperty(e,"__esModule",{value:!0}),e}({});
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:function(t){return t.__proto__||Object.getPrototypeOf(t)},b(t)}function Z(t,e){return Z=Object.setPrototypeOf||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: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={},N=function(t){try{return!!t()}catch(t){return!0}},J=!N((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),x=!N((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 j,M,z=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},P=x,B=Function.prototype,Q=B.bind,E=B.call,D=P&&Q.bind(E,E),O=P?function(t){return t&&D(t)}:function(t){return t&&function(){return E.apply(t,arguments)}},A=O,_=A({}.toString),q=A("".slice),$=function(t){return q(_(t),8,-1)},tt=O,et=N,nt=$,rt=K.Object,it=tt("".split),ct=et((function(){return!rt("z").propertyIsEnumerable(0)}))?function(t){return"String"==nt(t)?it(t,""):rt(t)}:rt,at=K.TypeError,ot=function(t){if(null==t)throw at("Can't call method on "+t);return t},lt=ct,ut=ot,st=function(t){return lt(ut(t))},dt=function(t){return"function"==typeof t},ht=dt,mt=function(t){return"object"==o(t)?null!==t:ht(t)},pt=K,bt=dt,Zt=function(t){return bt(t)?t:void 0},yt=function(t,e){return arguments.length<2?Zt(pt[t]):pt[t]&&pt[t][e]},Xt=O({}.isPrototypeOf),ft=yt("navigator","userAgent")||"",It=K,Gt=ft,Vt=It.process,Wt=It.Deno,vt=Vt&&Vt.versions||Wt&&Wt.version,gt=vt&&vt.v8;gt&&(M=(j=gt.split("."))[0]>0&&j[0]<4?1:+(j[0]+j[1])),!M&&Gt&&(!(j=Gt.match(/Edge\/(\d+)/))||j[1]>=74)&&(j=Gt.match(/Chrome\/(\d+)/))&&(M=+j[1]);var St=M,Yt=St,Rt=N,Kt=!!Object.getOwnPropertySymbols&&!Rt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&Yt&&Yt<41})),Lt=Kt&&!Symbol.sham&&"symbol"==o(Symbol.iterator),Nt=yt,Jt=dt,xt=Xt,Ht=Lt,kt=K.Object,Ct=Ht?function(t){return"symbol"==o(t)}:function(t){var e=Nt("Symbol");return Jt(e)&&xt(e.prototype,kt(t))},Ut=K.String,Tt=function(t){try{return Ut(t)}catch(t){return"Object"}},wt=dt,Ft=Tt,jt=K.TypeError,Mt=function(t){if(wt(t))return t;throw jt(Ft(t)+" is not a function")},zt=Mt,Pt=function(t,e){var n=t[e];return null==n?void 0:zt(n)},Bt=C,Qt=dt,Et=mt,Dt=K.TypeError,Ot=function(t,e){var n,r;if("string"===e&&Qt(n=t.toString)&&!Et(r=Bt(n,t)))return r;if(Qt(n=t.valueOf)&&!Et(r=Bt(n,t)))return r;if("string"!==e&&Qt(n=t.toString)&&!Et(r=Bt(n,t)))return r;throw Dt("Can't convert object to primitive value")},At={exports:{}},_t=K,qt=Object.defineProperty,$t=function(t,e){try{qt(_t,t,{value:e,configurable:!0,writable:!0})}catch(n){_t[t]=e}return e},te=$t,ee="__core-js_shared__",ne=K[ee]||te(ee,{}),re=ne;(At.exports=function(t,e){return re[t]||(re[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.22.6",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.22.6/LICENSE",source:"https://github.com/zloirock/core-js"});var ie=ot,ce=K.Object,ae=function(t){return ce(ie(t))},oe=ae,le=O({}.hasOwnProperty),ue=Object.hasOwn||function(t,e){return le(oe(t),e)},se=O,de=0,he=Math.random(),me=se(1..toString),pe=function(t){return"Symbol("+(void 0===t?"":t)+")_"+me(++de+he,36)},be=K,Ze=At.exports,ye=ue,Xe=pe,fe=Kt,Ie=Lt,Ge=Ze("wks"),Ve=be.Symbol,We=Ve&&Ve.for,ve=Ie?Ve:Ve&&Ve.withoutSetter||Xe,ge=function(t){if(!ye(Ge,t)||!fe&&"string"!=typeof Ge[t]){var e="Symbol."+t;fe&&ye(Ve,t)?Ge[t]=Ve[t]:Ge[t]=Ie&&We?We(e):ve(e)}return Ge[t]},Se=C,Ye=mt,Re=Ct,Ke=Pt,Le=Ot,Ne=ge,Je=K.TypeError,xe=Ne("toPrimitive"),He=function(t,e){if(!Ye(t)||Re(t))return t;var n,r=Ke(t,xe);if(r){if(void 0===e&&(e="default"),n=Se(r,t,e),!Ye(n)||Re(n))return n;throw Je("Can't convert object to primitive value")}return void 0===e&&(e="number"),Le(t,e)},ke=He,Ce=Ct,Ue=function(t){var e=ke(t,"string");return Ce(e)?e:e+""},Te=mt,we=K.document,Fe=Te(we)&&Te(we.createElement),je=function(t){return Fe?we.createElement(t):{}},Me=je,ze=!J&&!N((function(){return 7!=Object.defineProperty(Me("div"),"a",{get:function(){return 7}}).a})),Pe=J,Be=C,Qe=U,Ee=z,De=st,Oe=Ue,Ae=ue,_e=ze,qe=Object.getOwnPropertyDescriptor;L.f=Pe?qe:function(t,e){if(t=De(t),e=Oe(e),_e)try{return qe(t,e)}catch(t){}if(Ae(t,e))return Ee(!Be(Qe.f,t,e),t[e])};var $e={},tn=J&&N((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),en=K,nn=mt,rn=en.String,cn=en.TypeError,an=function(t){if(nn(t))return t;throw cn(rn(t)+" is not an object")},on=J,ln=ze,un=tn,sn=an,dn=Ue,hn=K.TypeError,mn=Object.defineProperty,pn=Object.getOwnPropertyDescriptor,bn="enumerable",Zn="configurable",yn="writable";$e.f=on?un?function(t,e,n){if(sn(t),e=dn(e),sn(n),"function"==typeof t&&"prototype"===e&&"value"in n&&yn in n&&!n.writable){var r=pn(t,e);r&&r.writable&&(t[e]=n.value,n={configurable:Zn in n?n.configurable:r.configurable,enumerable:bn in n?n.enumerable:r.enumerable,writable:!1})}return mn(t,e,n)}:mn:function(t,e,n){if(sn(t),e=dn(e),sn(n),ln)try{return mn(t,e,n)}catch(t){}if("get"in n||"set"in n)throw hn("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var Xn=$e,fn=z,In=J?function(t,e,n){return Xn.f(t,e,fn(1,n))}:function(t,e,n){return t[e]=n,t},Gn={exports:{}},Vn=J,Wn=ue,vn=Function.prototype,gn=Vn&&Object.getOwnPropertyDescriptor,Sn=Wn(vn,"name"),Yn={EXISTS:Sn,PROPER:Sn&&"something"===function(){}.name,CONFIGURABLE:Sn&&(!Vn||Vn&&gn(vn,"name").configurable)},Rn=dt,Kn=ne,Ln=O(Function.toString);Rn(Kn.inspectSource)||(Kn.inspectSource=function(t){return Ln(t)});var Nn,Jn,xn,Hn=Kn.inspectSource,kn=dt,Cn=Hn,Un=K.WeakMap,Tn=kn(Un)&&/native code/.test(Cn(Un)),wn=At.exports,Fn=pe,jn=wn("keys"),Mn=function(t){return jn[t]||(jn[t]=Fn(t))},zn={},Pn=Tn,Bn=K,Qn=O,En=mt,Dn=In,On=ue,An=ne,_n=Mn,qn=zn,$n="Object already initialized",tr=Bn.TypeError,er=Bn.WeakMap;if(Pn||An.state){var nr=An.state||(An.state=new er),rr=Qn(nr.get),ir=Qn(nr.has),cr=Qn(nr.set);Nn=function(t,e){if(ir(nr,t))throw new tr($n);return e.facade=t,cr(nr,t,e),e},Jn=function(t){return rr(nr,t)||{}},xn=function(t){return ir(nr,t)}}else{var ar=_n("state");qn[ar]=!0,Nn=function(t,e){if(On(t,ar))throw new tr($n);return e.facade=t,Dn(t,ar,e),e},Jn=function(t){return On(t,ar)?t[ar]:{}},xn=function(t){return On(t,ar)}}var or={set:Nn,get:Jn,has:xn,enforce:function(t){return xn(t)?Jn(t):Nn(t,{})},getterFor:function(t){return function(e){var n;if(!En(e)||(n=Jn(e)).type!==t)throw tr("Incompatible receiver, "+t+" required");return n}}},lr=N,ur=dt,sr=ue,dr=J,hr=Yn.CONFIGURABLE,mr=Hn,pr=or.enforce,br=or.get,Zr=Object.defineProperty,yr=dr&&!lr((function(){return 8!==Zr((function(){}),"length",{value:8}).length})),Xr=String(String).split("String"),fr=Gn.exports=function(t,e,n){if("Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!sr(t,"name")||hr&&t.name!==e)&&Zr(t,"name",{value:e,configurable:!0}),yr&&n&&sr(n,"arity")&&t.length!==n.arity&&Zr(t,"length",{value:n.arity}),n&&sr(n,"constructor")&&n.constructor){if(dr)try{Zr(t,"prototype",{writable:!1})}catch(t){}}else t.prototype=void 0;var r=pr(t);return sr(r,"source")||(r.source=Xr.join("string"==typeof e?e:"")),t};Function.prototype.toString=fr((function(){return ur(this)&&br(this).source||mr(this)}),"toString");var Ir=dt,Gr=In,Vr=Gn.exports,Wr=$t,vr=function(t,e,n,r){r||(r={});var i=r.enumerable,c=void 0!==r.name?r.name:e;return Ir(n)&&Vr(n,c,r),r.global?i?t[e]=n:Wr(e,n):(r.unsafe?t[e]&&(i=!0):delete t[e],i?t[e]=n:Gr(t,e,n)),t},gr={},Sr=Math.ceil,Yr=Math.floor,Rr=Math.trunc||function(t){var e=+t;return(e>0?Yr:Sr)(e)},Kr=Rr,Lr=function(t){var e=+t;return e!=e||0===e?0:Kr(e)},Nr=Lr,Jr=Math.max,xr=Math.min,Hr=function(t,e){var n=Nr(t);return n<0?Jr(n+e,0):xr(n,e)},kr=Lr,Cr=Math.min,Ur=function(t){return t>0?Cr(kr(t),9007199254740991):0},Tr=Ur,wr=function(t){return Tr(t.length)},Fr=st,jr=Hr,Mr=wr,zr=function(t){return function(e,n,r){var i,c=Fr(e),a=Mr(c),o=jr(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}},Pr={includes:zr(!0),indexOf:zr(!1)},Br=ue,Qr=st,Er=Pr.indexOf,Dr=zn,Or=O([].push),Ar=function(t,e){var n,r=Qr(t),i=0,c=[];for(n in r)!Br(Dr,n)&&Br(r,n)&&Or(c,n);for(;e.length>i;)Br(r,n=e[i++])&&(~Er(c,n)||Or(c,n));return c},_r=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],qr=Ar,$r=_r.concat("length","prototype");gr.f=Object.getOwnPropertyNames||function(t){return qr(t,$r)};var ti={};ti.f=Object.getOwnPropertySymbols;var ei=yt,ni=gr,ri=ti,ii=an,ci=O([].concat),ai=ei("Reflect","ownKeys")||function(t){var e=ni.f(ii(t)),n=ri.f;return n?ci(e,n(t)):e},oi=ue,li=ai,ui=L,si=$e,di=function(t,e,n){for(var r=li(e),i=si.f,c=ui.f,a=0;a<r.length;a++){var o=r[a];oi(t,o)||n&&oi(n,o)||i(t,o,c(e,o))}},hi=N,mi=dt,pi=/#|\.prototype\./,bi=function(t,e){var n=yi[Zi(t)];return n==fi||n!=Xi&&(mi(e)?hi(e):!!e)},Zi=bi.normalize=function(t){return String(t).replace(pi,".").toLowerCase()},yi=bi.data={},Xi=bi.NATIVE="N",fi=bi.POLYFILL="P",Ii=bi,Gi=K,Vi=L.f,Wi=In,vi=vr,gi=$t,Si=di,Yi=Ii,Ri=function(t,e){var n,r,i,c,a,l=t.target,u=t.global,s=t.stat;if(n=u?Gi:s?Gi[l]||gi(l,{}):(Gi[l]||{}).prototype)for(r in e){if(c=e[r],i=t.dontCallGetSet?(a=Vi(n,r))&&a.value:n[r],!Yi(u?r:l+(s?".":"#")+r,t.forced)&&void 0!==i){if(o(c)==o(i))continue;Si(c,i)}(t.sham||i&&i.sham)&&Wi(c,"sham",!0),vi(n,r,c,t)}},Ki={};Ki[ge("toStringTag")]="z";var Li="[object z]"===String(Ki),Ni=K,Ji=Li,xi=dt,Hi=$,ki=ge("toStringTag"),Ci=Ni.Object,Ui="Arguments"==Hi(function(){return arguments}()),Ti=Ji?Hi: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=Ci(t),ki))?n:Ui?Hi(e):"Object"==(r=Hi(e))&&xi(e.callee)?"Arguments":r},wi=Ti,Fi=K.String,ji=function(t){if("Symbol"===wi(t))throw TypeError("Cannot convert a Symbol value to a string");return Fi(t)},Mi={},zi=Ar,Pi=_r,Bi=Object.keys||function(t){return zi(t,Pi)},Qi=J,Ei=tn,Di=$e,Oi=an,Ai=st,_i=Bi;Mi.f=Qi&&!Ei?Object.defineProperties:function(t,e){Oi(t);for(var n,r=Ai(e),i=_i(e),c=i.length,a=0;c>a;)Di.f(t,n=i[a++],r[n]);return t};var qi,$i=yt("document","documentElement"),tc=an,ec=Mi,nc=_r,rc=zn,ic=$i,cc=je,ac=Mn("IE_PROTO"),oc=function(){},lc=function(t){return"<script>"+t+"</"+"script>"},uc=function(t){t.write(lc("")),t.close();var e=t.parentWindow.Object;return t=null,e},sc=function(){try{qi=new ActiveXObject("htmlfile")}catch(t){}var t,e;sc="undefined"!=typeof document?document.domain&&qi?uc(qi):((e=cc("iframe")).style.display="none",ic.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(lc("document.F=Object")),t.close(),t.F):uc(qi);for(var n=nc.length;n--;)delete sc.prototype[nc[n]];return sc()};rc[ac]=!0;var dc=Object.create||function(t,e){var n;return null!==t?(oc.prototype=tc(t),n=new oc,oc.prototype=null,n[ac]=t):n=sc(),void 0===e?n:ec.f(n,e)},hc={},mc=Ue,pc=$e,bc=z,Zc=function(t,e,n){var r=mc(e);r in t?pc.f(t,r,bc(0,n)):t[r]=n},yc=Hr,Xc=wr,fc=Zc,Ic=K.Array,Gc=Math.max,Vc=function(t,e,n){for(var r=Xc(t),i=yc(e,r),c=yc(void 0===n?r:n,r),a=Ic(Gc(c-i,0)),o=0;i<c;i++,o++)fc(a,o,t[i]);return a.length=o,a},Wc=$,vc=st,gc=gr.f,Sc=Vc,Yc="object"==("undefined"==typeof window?"undefined":o(window))&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];hc.f=function(t){return Yc&&"Window"==Wc(t)?function(t){try{return gc(t)}catch(t){return Sc(Yc)}}(t):gc(vc(t))};var Rc={},Kc=ge;Rc.f=Kc;var Lc=K,Nc=ue,Jc=Rc,xc=$e.f,Hc=function(t){var e=Lc.Symbol||(Lc.Symbol={});Nc(e,t)||xc(e,t,{value:Jc.f(t)})},kc=C,Cc=yt,Uc=ge,Tc=vr,wc=function(){var t=Cc("Symbol"),e=t&&t.prototype,n=e&&e.valueOf,r=Uc("toPrimitive");e&&!e[r]&&Tc(e,r,(function(t){return kc(n,this)}),{arity:1})},Fc=$e.f,jc=ue,Mc=ge("toStringTag"),zc=function(t,e,n){t&&!n&&(t=t.prototype),t&&!jc(t,Mc)&&Fc(t,Mc,{configurable:!0,value:e})},Pc=Mt,Bc=x,Qc=O(O.bind),Ec=function(t,e){return Pc(t),void 0===e?t:Bc?Qc(t,e):function(){return t.apply(e,arguments)}},Dc=$,Oc=Array.isArray||function(t){return"Array"==Dc(t)},Ac=O,_c=N,qc=dt,$c=Ti,ta=Hn,ea=function(){},na=[],ra=yt("Reflect","construct"),ia=/^\s*(?:class|function)\b/,ca=Ac(ia.exec),aa=!ia.exec(ea),oa=function(t){if(!qc(t))return!1;try{return ra(ea,na,t),!0}catch(t){return!1}},la=function(t){if(!qc(t))return!1;switch($c(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return aa||!!ca(ia,ta(t))}catch(t){return!0}};la.sham=!0;var ua=!ra||_c((function(){var t;return oa(oa.call)||!oa(Object)||!oa((function(){t=!0}))||t}))?la:oa,sa=K,da=Oc,ha=ua,ma=mt,pa=ge("species"),ba=sa.Array,Za=function(t){var e;return da(t)&&(e=t.constructor,(ha(e)&&(e===ba||da(e.prototype))||ma(e)&&null===(e=e[pa]))&&(e=void 0)),void 0===e?ba:e},ya=function(t,e){return new(Za(t))(0===e?0:e)},Xa=Ec,fa=ct,Ia=ae,Ga=wr,Va=ya,Wa=O([].push),va=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=Ia(l),b=fa(p),Z=Xa(u,s),y=Ga(b),X=0,f=d||Va,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:Wa(I,h)}else switch(t){case 4:return!1;case 7:Wa(I,h)}return c?-1:r||i?i:I}},ga={forEach:va(0),map:va(1),filter:va(2),some:va(3),every:va(4),find:va(5),findIndex:va(6),filterReject:va(7)},Sa=Ri,Ya=K,Ra=C,Ka=O,La=J,Na=Kt,Ja=N,xa=ue,Ha=Xt,ka=an,Ca=st,Ua=Ue,Ta=ji,wa=z,Fa=dc,ja=Bi,Ma=gr,za=hc,Pa=ti,Ba=L,Qa=$e,Ea=Mi,Da=U,Oa=vr,Aa=At.exports,_a=zn,qa=pe,$a=ge,to=Rc,eo=Hc,no=wc,ro=zc,io=or,co=ga.forEach,ao=Mn("hidden"),oo="Symbol",lo=io.set,uo=io.getterFor(oo),so=Object.prototype,ho=Ya.Symbol,mo=ho&&ho.prototype,po=Ya.TypeError,bo=Ya.QObject,Zo=Ba.f,yo=Qa.f,Xo=za.f,fo=Da.f,Io=Ka([].push),Go=Aa("symbols"),Vo=Aa("op-symbols"),Wo=Aa("wks"),vo=!bo||!bo.prototype||!bo.prototype.findChild,go=La&&Ja((function(){return 7!=Fa(yo({},"a",{get:function(){return yo(this,"a",{value:7}).a}})).a}))?function(t,e,n){var r=Zo(so,e);r&&delete so[e],yo(t,e,n),r&&t!==so&&yo(so,e,r)}:yo,So=function(t,e){var n=Go[t]=Fa(mo);return lo(n,{type:oo,tag:t,description:e}),La||(n.description=e),n},Yo=function(t,e,n){t===so&&Yo(Vo,e,n),ka(t);var r=Ua(e);return ka(n),xa(Go,r)?(n.enumerable?(xa(t,ao)&&t[ao][r]&&(t[ao][r]=!1),n=Fa(n,{enumerable:wa(0,!1)})):(xa(t,ao)||yo(t,ao,wa(1,{})),t[ao][r]=!0),go(t,r,n)):yo(t,r,n)},Ro=function(t,e){ka(t);var n=Ca(e),r=ja(n).concat(Jo(n));return co(r,(function(e){La&&!Ra(Ko,n,e)||Yo(t,e,n[e])})),t},Ko=function(t){var e=Ua(t),n=Ra(fo,this,e);return!(this===so&&xa(Go,e)&&!xa(Vo,e))&&(!(n||!xa(this,e)||!xa(Go,e)||xa(this,ao)&&this[ao][e])||n)},Lo=function(t,e){var n=Ca(t),r=Ua(e);if(n!==so||!xa(Go,r)||xa(Vo,r)){var i=Zo(n,r);return!i||!xa(Go,r)||xa(n,ao)&&n[ao][r]||(i.enumerable=!0),i}},No=function(t){var e=Xo(Ca(t)),n=[];return co(e,(function(t){xa(Go,t)||xa(_a,t)||Io(n,t)})),n},Jo=function(t){var e=t===so,n=Xo(e?Vo:Ca(t)),r=[];return co(n,(function(t){!xa(Go,t)||e&&!xa(so,t)||Io(r,Go[t])})),r};Na||(ho=function(){if(Ha(mo,this))throw po("Symbol is not a constructor");var t=arguments.length&&void 0!==arguments[0]?Ta(arguments[0]):void 0,e=qa(t),n=function t(n){this===so&&Ra(t,Vo,n),xa(this,ao)&&xa(this[ao],e)&&(this[ao][e]=!1),go(this,e,wa(1,n))};return La&&vo&&go(so,e,{configurable:!0,set:n}),So(e,t)},Oa(mo=ho.prototype,"toString",(function(){return uo(this).tag})),Oa(ho,"withoutSetter",(function(t){return So(qa(t),t)})),Da.f=Ko,Qa.f=Yo,Ea.f=Ro,Ba.f=Lo,Ma.f=za.f=No,Pa.f=Jo,to.f=function(t){return So($a(t),t)},La&&(yo(mo,"description",{configurable:!0,get:function(){return uo(this).description}}),Oa(so,"propertyIsEnumerable",Ko,{unsafe:!0}))),Sa({global:!0,constructor:!0,wrap:!0,forced:!Na,sham:!Na},{Symbol:ho}),co(ja(Wo),(function(t){eo(t)})),Sa({target:oo,stat:!0,forced:!Na},{useSetter:function(){vo=!0},useSimple:function(){vo=!1}}),Sa({target:"Object",stat:!0,forced:!Na,sham:!La},{create:function(t,e){return void 0===e?Fa(t):Ro(Fa(t),e)},defineProperty:Yo,defineProperties:Ro,getOwnPropertyDescriptor:Lo}),Sa({target:"Object",stat:!0,forced:!Na},{getOwnPropertyNames:No}),no(),ro(ho,oo),_a[ao]=!0;var xo=Kt&&!!Symbol.for&&!!Symbol.keyFor,Ho=Ri,ko=yt,Co=ue,Uo=ji,To=At.exports,wo=xo,Fo=To("string-to-symbol-registry"),jo=To("symbol-to-string-registry");Ho({target:"Symbol",stat:!0,forced:!wo},{for:function(t){var e=Uo(t);if(Co(Fo,e))return Fo[e];var n=ko("Symbol")(e);return Fo[e]=n,jo[n]=e,n}});var Mo=Ri,zo=ue,Po=Ct,Bo=Tt,Qo=xo,Eo=(0,At.exports)("symbol-to-string-registry");Mo({target:"Symbol",stat:!0,forced:!Qo},{keyFor:function(t){if(!Po(t))throw TypeError(Bo(t)+" is not a symbol");if(zo(Eo,t))return Eo[t]}});var Do=x,Oo=Function.prototype,Ao=Oo.apply,_o=Oo.call,qo="object"==("undefined"==typeof Reflect?"undefined":o(Reflect))&&Reflect.apply||(Do?_o.bind(Ao):function(){return _o.apply(Ao,arguments)}),$o=O([].slice),tl=Ri,el=yt,nl=qo,rl=C,il=O,cl=N,al=Oc,ol=dt,ll=mt,ul=Ct,sl=$o,dl=Kt,hl=el("JSON","stringify"),ml=il(/./.exec),pl=il("".charAt),bl=il("".charCodeAt),Zl=il("".replace),yl=il(1..toString),Xl=/[\uD800-\uDFFF]/g,fl=/^[\uD800-\uDBFF]$/,Il=/^[\uDC00-\uDFFF]$/,Gl=!dl||cl((function(){var t=el("Symbol")();return"[null]"!=hl([t])||"{}"!=hl({a:t})||"{}"!=hl(Object(t))})),Vl=cl((function(){return'"\\udf06\\ud834"'!==hl("\udf06\ud834")||'"\\udead"'!==hl("\udead")})),Wl=function(t,e){var n=sl(arguments),r=e;if((ll(e)||void 0!==t)&&!ul(t))return al(e)||(e=function(t,e){if(ol(r)&&(e=rl(r,this,t,e)),!ul(e))return e}),n[1]=e,nl(hl,null,n)},vl=function(t,e,n){var r=pl(n,e-1),i=pl(n,e+1);return ml(fl,t)&&!ml(Il,i)||ml(Il,t)&&!ml(fl,r)?"\\u"+yl(bl(t,0),16):t};hl&&tl({target:"JSON",stat:!0,arity:3,forced:Gl||Vl},{stringify:function(t,e,n){var r=sl(arguments),i=nl(Gl?Wl:hl,null,r);return Vl&&"string"==typeof i?Zl(i,Xl,vl):i}});var gl=ti,Sl=ae;Ri({target:"Object",stat:!0,forced:!Kt||N((function(){gl.f(1)}))},{getOwnPropertySymbols:function(t){var e=gl.f;return e?e(Sl(t)):[]}});var Yl=Ri,Rl=J,Kl=K,Ll=O,Nl=ue,Jl=dt,xl=Xt,Hl=ji,kl=$e.f,Cl=di,Ul=Kl.Symbol,Tl=Ul&&Ul.prototype;if(Rl&&Jl(Ul)&&(!("description"in Tl)||void 0!==Ul().description)){var wl={},Fl=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:Hl(arguments[0]),e=xl(Tl,this)?new Ul(t):void 0===t?Ul():Ul(t);return""===t&&(wl[e]=!0),e};Cl(Fl,Ul),Fl.prototype=Tl,Tl.constructor=Fl;var jl="Symbol(test)"==String(Ul("test")),Ml=Ll(Tl.toString),zl=Ll(Tl.valueOf),Pl=/^Symbol\((.*)\)[^)]+$/,Bl=Ll("".replace),Ql=Ll("".slice);kl(Tl,"description",{configurable:!0,get:function(){var t=zl(this),e=Ml(t);if(Nl(wl,t))return"";var n=jl?Ql(e,7,-1):Bl(e,Pl,"$1");return""===n?void 0:n}}),Yl({global:!0,constructor:!0,forced:!0},{Symbol:Fl})}Hc("asyncIterator"),Hc("hasInstance"),Hc("isConcatSpreadable"),Hc("iterator"),Hc("match"),Hc("matchAll"),Hc("replace"),Hc("search"),Hc("species"),Hc("split");var El=wc;Hc("toPrimitive"),El();var Dl=yt,Ol=zc;Hc("toStringTag"),Ol(Dl("Symbol"),"Symbol"),Hc("unscopables");var Al=N,_l=St,ql=ge("species"),$l=function(t){return _l>=51||!Al((function(){var e=[];return(e.constructor={})[ql]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},tu=Ri,eu=K,nu=N,ru=Oc,iu=mt,cu=ae,au=wr,ou=Zc,lu=ya,uu=$l,su=St,du=ge("isConcatSpreadable"),hu=9007199254740991,mu="Maximum allowed index exceeded",pu=eu.TypeError,bu=su>=51||!nu((function(){var t=[];return t[du]=!1,t.concat()[0]!==t})),Zu=uu("concat"),yu=function(t){if(!iu(t))return!1;var e=t[du];return void 0!==e?!!e:ru(t)};tu({target:"Array",proto:!0,arity:1,forced:!bu||!Zu},{concat:function(t){var e,n,r,i,c,a=cu(this),o=lu(a,0),l=0;for(e=-1,r=arguments.length;e<r;e++)if(yu(c=-1===e?a:arguments[e])){if(l+(i=au(c))>hu)throw pu(mu);for(n=0;n<i;n++,l++)n in c&&ou(o,l,c[n])}else{if(l>=hu)throw pu(mu);ou(o,l++,c)}return o.length=l,o}});var Xu=ae,fu=Hr,Iu=wr,Gu=Math.min,Vu=[].copyWithin||function(t,e){var n=Xu(this),r=Iu(n),i=fu(t,r),c=fu(e,r),a=arguments.length>2?arguments[2]:void 0,o=Gu((void 0===a?r:fu(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]:delete n[i],i+=l,c+=l;return n},Wu=ge,vu=dc,gu=$e.f,Su=Wu("unscopables"),Yu=Array.prototype;null==Yu[Su]&&gu(Yu,Su,{configurable:!0,value:vu(null)});var Ru=function(t){Yu[Su][t]=!0},Ku=Ru;Ri({target:"Array",proto:!0},{copyWithin:Vu}),Ku("copyWithin");var Lu=ae,Nu=Hr,Ju=wr,xu=function(t){for(var e=Lu(this),n=Ju(e),r=arguments.length,i=Nu(r>1?arguments[1]:void 0,n),c=r>2?arguments[2]:void 0,a=void 0===c?n:Nu(c,n);a>i;)e[i++]=t;return e},Hu=Ru;Ri({target:"Array",proto:!0},{fill:xu}),Hu("fill");var ku=ga.filter;Ri({target:"Array",proto:!0,forced:!$l("filter")},{filter:function(t){return ku(this,t,arguments.length>1?arguments[1]:void 0)}});var Cu=Ri,Uu=ga.find,Tu=Ru,wu="find",Fu=!0;wu in[]&&Array(1).find((function(){Fu=!1})),Cu({target:"Array",proto:!0,forced:Fu},{find:function(t){return Uu(this,t,arguments.length>1?arguments[1]:void 0)}}),Tu(wu);var ju=Ri,Mu=ga.findIndex,zu=Ru,Pu="findIndex",Bu=!0;Pu in[]&&Array(1).findIndex((function(){Bu=!1})),ju({target:"Array",proto:!0,forced:Bu},{findIndex:function(t){return Mu(this,t,arguments.length>1?arguments[1]:void 0)}}),zu(Pu);var Qu=Oc,Eu=wr,Du=Ec,Ou=K.TypeError,Au=function t(e,n,r,i,c,a,o,l){for(var u,s=c,d=0,h=!!o&&Du(o,l);d<i;){if(d in r){if(u=h?h(r[d],d,n):r[d],a>0&&Qu(u))s=t(e,n,u,Eu(u),s,a-1)-1;else{if(s>=9007199254740991)throw Ou("Exceed the acceptable array length");e[s]=u}s++}d++}return s},_u=Au,qu=ae,$u=wr,ts=Lr,es=ya;Ri({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=qu(this),n=$u(e),r=es(e,0);return r.length=_u(r,e,e,n,0,void 0===t?1:ts(t)),r}});var ns=Au,rs=Mt,is=ae,cs=wr,as=ya;Ri({target:"Array",proto:!0},{flatMap:function(t){var e,n=is(this),r=cs(n);return rs(t),(e=as(n,0)).length=ns(e,n,n,r,0,1,t,arguments.length>1?arguments[1]:void 0),e}});var os=C,ls=an,us=Pt,ss=function(t,e,n){var r,i;ls(t);try{if(!(r=us(t,"return"))){if("throw"===e)throw n;return n}r=os(r,t)}catch(t){i=!0,r=t}if("throw"===e)throw n;if(i)throw r;return ls(r),n},ds=an,hs=ss,ms={},ps=ms,bs=ge("iterator"),Zs=Array.prototype,ys=function(t){return void 0!==t&&(ps.Array===t||Zs[bs]===t)},Xs=Ti,fs=Pt,Is=ms,Gs=ge("iterator"),Vs=function(t){if(null!=t)return fs(t,Gs)||fs(t,"@@iterator")||Is[Xs(t)]},Ws=C,vs=Mt,gs=an,Ss=Tt,Ys=Vs,Rs=K.TypeError,Ks=function(t,e){var n=arguments.length<2?Ys(t):e;if(vs(n))return gs(Ws(n,t));throw Rs(Ss(t)+" is not iterable")},Ls=Ec,Ns=C,Js=ae,xs=function(t,e,n,r){try{return r?e(ds(n)[0],n[1]):e(n)}catch(e){hs(t,"throw",e)}},Hs=ys,ks=ua,Cs=wr,Us=Zc,Ts=Ks,ws=Vs,Fs=K.Array,js=function(t){var e=Js(t),n=ks(this),r=arguments.length,i=r>1?arguments[1]:void 0,c=void 0!==i;c&&(i=Ls(i,r>2?arguments[2]:void 0));var a,o,l,u,s,d,h=ws(e),m=0;if(!h||this==Fs&&Hs(h))for(a=Cs(e),o=n?new this(a):Fs(a);a>m;m++)d=c?i(e[m],m):e[m],Us(o,m,d);else for(s=(u=Ts(e,h)).next,o=n?new this:[];!(l=Ns(s,u)).done;m++)d=c?xs(u,i,[l.value,m],!0):l.value,Us(o,m,d);return o.length=m,o},Ms=ge("iterator"),zs=!1;try{var Ps=0,Bs={next:function(){return{done:!!Ps++}},return:function(){zs=!0}};Bs[Ms]=function(){return this},Array.from(Bs,(function(){throw 2}))}catch(t){}var Qs=function(t,e){if(!e&&!zs)return!1;var n=!1;try{var r={};r[Ms]=function(){return{next:function(){return{done:n=!0}}}},t(r)}catch(t){}return n},Es=js;Ri({target:"Array",stat:!0,forced:!Qs((function(t){Array.from(t)}))},{from:Es});var Ds=Pr.includes,Os=Ru;Ri({target:"Array",proto:!0,forced:N((function(){return!Array(1).includes()}))},{includes:function(t){return Ds(this,t,arguments.length>1?arguments[1]:void 0)}}),Os("includes");var As,_s,qs,$s=!N((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),td=K,ed=ue,nd=dt,rd=ae,id=$s,cd=Mn("IE_PROTO"),ad=td.Object,od=ad.prototype,ld=id?ad.getPrototypeOf:function(t){var e=rd(t);if(ed(e,cd))return e[cd];var n=e.constructor;return nd(n)&&e instanceof n?n.prototype:e instanceof ad?od:null},ud=N,sd=dt,dd=ld,hd=vr,md=ge("iterator"),pd=!1;[].keys&&("next"in(qs=[].keys())?(_s=dd(dd(qs)))!==Object.prototype&&(As=_s):pd=!0);var bd=null==As||ud((function(){var t={};return As[md].call(t)!==t}));bd&&(As={}),sd(As[md])||hd(As,md,(function(){return this}));var Zd={IteratorPrototype:As,BUGGY_SAFARI_ITERATORS:pd},yd=Zd.IteratorPrototype,Xd=dc,fd=z,Id=zc,Gd=ms,Vd=function(){return this},Wd=function(t,e,n,r){var i=e+" Iterator";return t.prototype=Xd(yd,{next:fd(+!r,n)}),Id(t,i,!1),Gd[i]=Vd,t},vd=K,gd=dt,Sd=vd.String,Yd=vd.TypeError,Rd=function(t){if("object"==o(t)||gd(t))return t;throw Yd("Can't set "+Sd(t)+" as a prototype")},Kd=O,Ld=an,Nd=Rd,Jd=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,n={};try{(t=Kd(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,r){return Ld(n),Nd(r),e?t(n,r):n.__proto__=r,n}}():void 0),xd=Ri,Hd=C,kd=dt,Cd=Wd,Ud=ld,Td=Jd,wd=zc,Fd=In,jd=vr,Md=ms,zd=Yn.PROPER,Pd=Yn.CONFIGURABLE,Bd=Zd.IteratorPrototype,Qd=Zd.BUGGY_SAFARI_ITERATORS,Ed=ge("iterator"),Dd="keys",Od="values",Ad="entries",_d=function(){return this},qd=function(t,e,n,r,i,c,a){Cd(n,e,r);var o,l,u,s=function(t){if(t===i&&b)return b;if(!Qd&&t in m)return m[t];switch(t){case Dd:case Od:case Ad:return function(){return new n(this,t)}}return function(){return new n(this)}},d=e+" Iterator",h=!1,m=t.prototype,p=m[Ed]||m["@@iterator"]||i&&m[i],b=!Qd&&p||s(i),Z="Array"==e&&m.entries||p;if(Z&&(o=Ud(Z.call(new t)))!==Object.prototype&&o.next&&(Ud(o)!==Bd&&(Td?Td(o,Bd):kd(o[Ed])||jd(o,Ed,_d)),wd(o,d,!0)),zd&&i==Od&&p&&p.name!==Od&&(Pd?Fd(m,"name",Od):(h=!0,b=function(){return Hd(p,this)})),i)if(l={values:s(Od),keys:c?b:s(Dd),entries:s(Ad)},a)for(u in l)(Qd||h||!(u in m))&&jd(m,u,l[u]);else xd({target:e,proto:!0,forced:Qd||h},l);return m[Ed]!==b&&jd(m,Ed,b,{name:i}),Md[e]=b,l},$d=st,th=Ru,eh=ms,nh=or,rh=$e.f,ih=qd,ch=J,ah="Array Iterator",oh=nh.set,lh=nh.getterFor(ah),uh=ih(Array,"Array",(function(t,e){oh(this,{type:ah,target:$d(t),index:0,kind:e})}),(function(){var t=lh(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"),sh=eh.Arguments=eh.Array;if(th("keys"),th("values"),th("entries"),ch&&"values"!==sh.name)try{rh(sh,"name",{value:"values"})}catch(t){}var dh=N,hh=function(t,e){var n=[][t];return!!n&&dh((function(){n.call(null,e||function(){return 1},1)}))},mh=Ri,ph=ct,bh=st,Zh=hh,yh=O([].join),Xh=ph!=Object,fh=Zh("join",",");mh({target:"Array",proto:!0,forced:Xh||!fh},{join:function(t){return yh(bh(this),void 0===t?",":t)}});var Ih=ga.map;Ri({target:"Array",proto:!0,forced:!$l("map")},{map:function(t){return Ih(this,t,arguments.length>1?arguments[1]:void 0)}});var Gh=Ri,Vh=N,Wh=ua,vh=Zc,gh=K.Array;Gh({target:"Array",stat:!0,forced:Vh((function(){function t(){}return!(gh.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new(Wh(this)?this:gh)(e);e>t;)vh(n,t,arguments[t++]);return n.length=e,n}});var Sh=Ri,Yh=K,Rh=Oc,Kh=ua,Lh=mt,Nh=Hr,Jh=wr,xh=st,Hh=Zc,kh=ge,Ch=$o,Uh=$l("slice"),Th=kh("species"),wh=Yh.Array,Fh=Math.max;Sh({target:"Array",proto:!0,forced:!Uh},{slice:function(t,e){var n,r,i,c=xh(this),a=Jh(c),o=Nh(t,a),l=Nh(void 0===e?a:e,a);if(Rh(c)&&(n=c.constructor,(Kh(n)&&(n===wh||Rh(n.prototype))||Lh(n)&&null===(n=n[Th]))&&(n=void 0),n===wh||void 0===n))return Ch(c,o,l);for(r=new(void 0===n?wh:n)(Fh(l-o,0)),i=0;o<l;o++,i++)o in c&&Hh(r,i,c[o]);return r.length=i,r}});var jh=Vc,Mh=Math.floor,zh=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},Ph=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},Bh=function t(e,n){var r=e.length,i=Mh(r/2);return r<8?zh(e,n):Ph(e,t(jh(e,0,i),n),t(jh(e,i),n),n)},Qh=ft.match(/firefox\/(\d+)/i),Eh=!!Qh&&+Qh[1],Dh=/MSIE|Trident/.test(ft),Oh=ft.match(/AppleWebKit\/(\d+)\./),Ah=!!Oh&&+Oh[1],_h=Ri,qh=O,$h=Mt,tm=ae,em=wr,nm=ji,rm=N,im=Bh,cm=hh,am=Eh,om=Dh,lm=St,um=Ah,sm=[],dm=qh(sm.sort),hm=qh(sm.push),mm=rm((function(){sm.sort(void 0)})),pm=rm((function(){sm.sort(null)})),bm=cm("sort"),Zm=!rm((function(){if(lm)return lm<70;if(!(am&&am>3)){if(om)return!0;if(um)return um<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++)sm.push({k:e+r,v:n})}for(sm.sort((function(t,e){return e.v-t.v})),r=0;r<sm.length;r++)e=sm[r].k.charAt(0),i.charAt(i.length-1)!==e&&(i+=e);return"DGBEFHACIJK"!==i}}));_h({target:"Array",proto:!0,forced:mm||!pm||!bm||!Zm},{sort:function(t){void 0!==t&&$h(t);var e=tm(this);if(Zm)return void 0===t?dm(e):dm(e,t);var n,r,i=[],c=em(e);for(r=0;r<c;r++)r in e&&hm(i,e[r]);for(im(i,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:nm(e)>nm(n)?1:-1}}(t)),n=i.length,r=0;r<n;)e[r]=i[r++];for(;r<c;)delete e[r++];return e}});var ym=yt,Xm=$e,fm=J,Im=ge("species"),Gm=function(t){var e=ym(t),n=Xm.f;fm&&e&&!e[Im]&&n(e,Im,{configurable:!0,get:function(){return this}})};Gm("Array");var Vm=Ri,Wm=K,vm=Hr,gm=Lr,Sm=wr,Ym=ae,Rm=ya,Km=Zc,Lm=$l("splice"),Nm=Wm.TypeError,Jm=Math.max,xm=Math.min,Hm=9007199254740991,km="Maximum allowed length exceeded";Vm({target:"Array",proto:!0,forced:!Lm},{splice:function(t,e){var n,r,i,c,a,o,l=Ym(this),u=Sm(l),s=vm(t,u),d=arguments.length;if(0===d?n=r=0:1===d?(n=0,r=u-s):(n=d-2,r=xm(Jm(gm(e),0),u-s)),u+n-r>Hm)throw Nm(km);for(i=Rm(l,r),c=0;c<r;c++)(a=s+c)in l&&Km(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]:delete l[o];for(c=u;c>u-r+n;c--)delete 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]:delete l[o];for(c=0;c<n;c++)l[c+s]=arguments[c+2];return l.length=u-r+n,i}}),Ru("flat"),Ru("flatMap");var Cm="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,Um=vr,Tm=function(t,e,n){for(var r in e)Um(t,r,e[r],n);return t},wm=Xt,Fm=K.TypeError,jm=function(t,e){if(wm(e,t))return t;throw Fm("Incorrect invocation")},Mm=Lr,zm=Ur,Pm=K.RangeError,Bm=function(t){if(void 0===t)return 0;var e=Mm(t),n=zm(e);if(e!==n)throw Pm("Wrong length or index");return n},Qm=K.Array,Em=Math.abs,Dm=Math.pow,Om=Math.floor,Am=Math.log,_m=Math.LN2,qm={pack:function(t,e,n){var r,i,c,a=Qm(n),o=8*n-e-1,l=(1<<o)-1,u=l>>1,s=23===e?Dm(2,-24)-Dm(2,-77):0,d=t<0||0===t&&1/t<0?1:0,h=0;for((t=Em(t))!=t||t===1/0?(i=t!=t?1:0,r=l):(r=Om(Am(t)/_m),t*(c=Dm(2,-r))<1&&(r--,c*=2),(t+=r+u>=1?s/c:s*Dm(2,1-u))*c>=2&&(r++,c/=2),r+u>=l?(i=0,r=l):r+u>=1?(i=(t*c-1)*Dm(2,e),r+=u):(i=t*Dm(2,u-1)*Dm(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+=Dm(2,e),s-=a}return(u?-1:1)*n*Dm(2,s-e)}},$m=K,tp=O,ep=J,np=Cm,rp=Yn,ip=In,cp=Tm,ap=N,op=jm,lp=Lr,up=Ur,sp=Bm,dp=qm,hp=ld,mp=Jd,pp=gr.f,bp=$e.f,Zp=xu,yp=Vc,Xp=zc,fp=rp.PROPER,Ip=rp.CONFIGURABLE,Gp=or.get,Vp=or.set,Wp="ArrayBuffer",vp="DataView",gp="Wrong index",Sp=$m.ArrayBuffer,Yp=Sp,Rp=Yp&&Yp.prototype,Kp=$m.DataView,Lp=Kp&&Kp.prototype,Np=Object.prototype,Jp=$m.Array,xp=$m.RangeError,Hp=tp(Zp),kp=tp([].reverse),Cp=dp.pack,Up=dp.unpack,Tp=function(t){return[255&t]},wp=function(t){return[255&t,t>>8&255]},Fp=function(t){return[255&t,t>>8&255,t>>16&255,t>>24&255]},jp=function(t){return t[3]<<24|t[2]<<16|t[1]<<8|t[0]},Mp=function(t){return Cp(t,23,4)},zp=function(t){return Cp(t,52,8)},Pp=function(t,e){bp(t.prototype,e,{get:function(){return Gp(this)[e]}})},Bp=function(t,e,n,r){var i=sp(n),c=Gp(t);if(i+e>c.byteLength)throw xp(gp);var a=Gp(c.buffer).bytes,o=i+c.byteOffset,l=yp(a,o,o+e);return r?l:kp(l)},Qp=function(t,e,n,r,i,c){var a=sp(n),o=Gp(t);if(a+e>o.byteLength)throw xp(gp);for(var l=Gp(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(np){var Ep=fp&&Sp.name!==Wp;if(ap((function(){Sp(1)}))&&ap((function(){new Sp(-1)}))&&!ap((function(){return new Sp,new Sp(1.5),new Sp(NaN),Ep&&!Ip})))Ep&&Ip&&ip(Sp,"name",Wp);else{(Yp=function(t){return op(this,Rp),new Sp(sp(t))}).prototype=Rp;for(var Dp,Op=pp(Sp),Ap=0;Op.length>Ap;)(Dp=Op[Ap++])in Yp||ip(Yp,Dp,Sp[Dp]);Rp.constructor=Yp}mp&&hp(Lp)!==Np&&mp(Lp,Np);var _p=new Kp(new Yp(2)),qp=tp(Lp.setInt8);_p.setInt8(0,2147483648),_p.setInt8(1,2147483649),!_p.getInt8(0)&&_p.getInt8(1)||cp(Lp,{setInt8:function(t,e){qp(this,t,e<<24>>24)},setUint8:function(t,e){qp(this,t,e<<24>>24)}},{unsafe:!0})}else Yp=function(t){op(this,Rp);var e=sp(t);Vp(this,{bytes:Hp(Jp(e),0),byteLength:e}),ep||(this.byteLength=e)},Rp=Yp.prototype,Kp=function(t,e,n){op(this,Lp),op(t,Rp);var r=Gp(t).byteLength,i=lp(e);if(i<0||i>r)throw xp("Wrong offset");if(i+(n=void 0===n?r-i:up(n))>r)throw xp("Wrong length");Vp(this,{buffer:t,byteLength:n,byteOffset:i}),ep||(this.buffer=t,this.byteLength=n,this.byteOffset=i)},Lp=Kp.prototype,ep&&(Pp(Yp,"byteLength"),Pp(Kp,"buffer"),Pp(Kp,"byteLength"),Pp(Kp,"byteOffset")),cp(Lp,{getInt8:function(t){return Bp(this,1,t)[0]<<24>>24},getUint8:function(t){return Bp(this,1,t)[0]},getInt16:function(t){var e=Bp(this,2,t,arguments.length>1?arguments[1]:void 0);return(e[1]<<8|e[0])<<16>>16},getUint16:function(t){var e=Bp(this,2,t,arguments.length>1?arguments[1]:void 0);return e[1]<<8|e[0]},getInt32:function(t){return jp(Bp(this,4,t,arguments.length>1?arguments[1]:void 0))},getUint32:function(t){return jp(Bp(this,4,t,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(t){return Up(Bp(this,4,t,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(t){return Up(Bp(this,8,t,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(t,e){Qp(this,1,t,Tp,e)},setUint8:function(t,e){Qp(this,1,t,Tp,e)},setInt16:function(t,e){Qp(this,2,t,wp,e,arguments.length>2?arguments[2]:void 0)},setUint16:function(t,e){Qp(this,2,t,wp,e,arguments.length>2?arguments[2]:void 0)},setInt32:function(t,e){Qp(this,4,t,Fp,e,arguments.length>2?arguments[2]:void 0)},setUint32:function(t,e){Qp(this,4,t,Fp,e,arguments.length>2?arguments[2]:void 0)},setFloat32:function(t,e){Qp(this,4,t,Mp,e,arguments.length>2?arguments[2]:void 0)},setFloat64:function(t,e){Qp(this,8,t,zp,e,arguments.length>2?arguments[2]:void 0)}});Xp(Yp,Wp),Xp(Kp,vp);var $p={ArrayBuffer:Yp,DataView:Kp},tb=Gm,eb="ArrayBuffer",nb=$p.ArrayBuffer;Ri({global:!0,constructor:!0,forced:K.ArrayBuffer!==nb},{ArrayBuffer:nb}),tb(eb);var rb=an,ib=Ot,cb=K.TypeError,ab=ue,ob=vr,lb=function(t){if(rb(this),"string"===t||"default"===t)t="string";else if("number"!==t)throw cb("Incorrect hint");return ib(this,t)},ub=ge("toPrimitive"),sb=Date.prototype;ab(sb,ub)||ob(sb,ub,lb);var db=dt,hb=mt,mb=$e,pb=ld,bb=ge,Zb=Gn.exports,yb=bb("hasInstance"),Xb=Function.prototype;yb in Xb||mb.f(Xb,yb,{value:Zb((function(t){if(!db(this)||!hb(t))return!1;var e=this.prototype;if(!hb(e))return t instanceof this;for(;t=pb(t);)if(e===t)return!0;return!1}),yb)});var fb=J,Ib=Yn.EXISTS,Gb=O,Vb=$e.f,Wb=Function.prototype,vb=Gb(Wb.toString),gb=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,Sb=Gb(gb.exec);fb&&!Ib&&Vb(Wb,"name",{configurable:!0,get:function(){try{return Sb(gb,vb(this))[1]}catch(t){return""}}}),Ri({global:!0},{globalThis:K}),zc(K.JSON,"JSON",!0);var Yb={exports:{}},Rb=N((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),Kb=N,Lb=mt,Nb=$,Jb=Rb,xb=Object.isExtensible,Hb=Kb((function(){xb(1)}))||Jb?function(t){return!!Lb(t)&&((!Jb||"ArrayBuffer"!=Nb(t))&&(!xb||xb(t)))}:xb,kb=!N((function(){return Object.isExtensible(Object.preventExtensions({}))})),Cb=Ri,Ub=O,Tb=zn,wb=mt,Fb=ue,jb=$e.f,Mb=gr,zb=hc,Pb=Hb,Bb=kb,Qb=!1,Eb=pe("meta"),Db=0,Ob=function(t){jb(t,Eb,{value:{objectID:"O"+Db++,weakData:{}}})},Ab=Yb.exports={enable:function(){Ab.enable=function(){},Qb=!0;var t=Mb.f,e=Ub([].splice),n={};n[Eb]=1,t(n).length&&(Mb.f=function(n){for(var r=t(n),i=0,c=r.length;i<c;i++)if(r[i]===Eb){e(r,i,1);break}return r},Cb({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:zb.f}))},fastKey:function(t,e){if(!wb(t))return"symbol"==o(t)?t:("string"==typeof t?"S":"P")+t;if(!Fb(t,Eb)){if(!Pb(t))return"F";if(!e)return"E";Ob(t)}return t[Eb].objectID},getWeakData:function(t,e){if(!Fb(t,Eb)){if(!Pb(t))return!0;if(!e)return!1;Ob(t)}return t[Eb].weakData},onFreeze:function(t){return Bb&&Qb&&Pb(t)&&!Fb(t,Eb)&&Ob(t),t}};Tb[Eb]=!0;var _b=Ec,qb=C,$b=an,tZ=Tt,eZ=ys,nZ=wr,rZ=Xt,iZ=Ks,cZ=Vs,aZ=ss,oZ=K.TypeError,lZ=function(t,e){this.stopped=t,this.result=e},uZ=lZ.prototype,sZ=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=_b(e,d),Z=function(t){return r&&aZ(r,"normal",t),new lZ(!0,t)},y=function(t){return h?($b(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=cZ(t)))throw oZ(tZ(t)+" is not iterable");if(eZ(i)){for(c=0,a=nZ(t);a>c;c++)if((l=y(t[c]))&&rZ(uZ,l))return l;return new lZ(!1)}r=iZ(t,i)}for(u=r.next;!(s=qb(u,r)).done;){try{l=y(s.value)}catch(t){aZ(r,"throw",t)}if("object"==o(l)&&l&&rZ(uZ,l))return l}return new lZ(!1)},dZ=dt,hZ=mt,mZ=Jd,pZ=function(t,e,n){var r,i;return mZ&&dZ(r=e.constructor)&&r!==n&&hZ(i=r.prototype)&&i!==n.prototype&&mZ(t,i),t},bZ=Ri,ZZ=K,yZ=O,XZ=Ii,fZ=vr,IZ=Yb.exports,GZ=sZ,VZ=jm,WZ=dt,vZ=mt,gZ=N,SZ=Qs,YZ=zc,RZ=pZ,KZ=function(t,e,n){var r=-1!==t.indexOf("Map"),i=-1!==t.indexOf("Weak"),c=r?"set":"add",a=ZZ[t],o=a&&a.prototype,l=a,u={},s=function(t){var e=yZ(o[t]);fZ(o,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(i&&!vZ(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return i&&!vZ(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(i&&!vZ(t))&&e(this,0===t?0:t)}:function(t,n){return e(this,0===t?0:t,n),this})};if(XZ(t,!WZ(a)||!(i||o.forEach&&!gZ((function(){(new a).entries().next()})))))l=n.getConstructor(e,t,r,c),IZ.enable();else if(XZ(t,!0)){var d=new l,h=d[c](i?{}:-0,1)!=d,m=gZ((function(){d.has(1)})),p=SZ((function(t){new a(t)})),b=!i&&gZ((function(){for(var t=new a,e=5;e--;)t[c](e,e);return!t.has(-0)}));p||((l=e((function(t,e){VZ(t,o);var n=RZ(new a,t,l);return null!=e&&GZ(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,bZ({global:!0,constructor:!0,forced:l!=a},u),YZ(l,t),i||n.setStrong(l,t,r),l},LZ=$e.f,NZ=dc,JZ=Tm,xZ=Ec,HZ=jm,kZ=sZ,CZ=qd,UZ=Gm,TZ=J,wZ=Yb.exports.fastKey,FZ=or.set,jZ=or.getterFor,MZ={getConstructor:function(t,e,n,r){var i=t((function(t,i){HZ(t,c),FZ(t,{type:e,index:NZ(null),first:void 0,last:void 0,size:0}),TZ||(t.size=0),null!=i&&kZ(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=jZ(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=wZ(e,!0),key:e,value:n,previous:r=c.last,next:void 0,removed:!1},c.first||(c.first=o),r&&(r.next=o),TZ?c.size++:t.size++,"F"!==i&&(c.index[i]=o)),t},l=function(t,e){var n,r=a(t),i=wZ(e);if("F"!==i)return r.index[i];for(n=r.first;n;n=n.next)if(n.key==e)return n};return JZ(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,TZ?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),TZ?n.size--:e.size--}return!!r},forEach:function(t){for(var e,n=a(this),r=xZ(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)}}),JZ(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)}}),TZ&&LZ(c,"size",{get:function(){return a(this).size}}),i},setStrong:function(t,e,n){var r=e+" Iterator",i=jZ(e),c=jZ(r);CZ(t,e,(function(t,e){FZ(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),UZ(e)}};KZ("Map",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),MZ);var zZ=Math.log,PZ=Math.log1p||function(t){var e=+t;return e>-1e-8&&e<1e-8?e-e*e/2:zZ(1+e)},BZ=Ri,QZ=PZ,EZ=Math.acosh,DZ=Math.log,OZ=Math.sqrt,AZ=Math.LN2;BZ({target:"Math",stat:!0,forced:!EZ||710!=Math.floor(EZ(Number.MAX_VALUE))||EZ(1/0)!=1/0},{acosh:function(t){var e=+t;return e<1?NaN:e>94906265.62425156?DZ(e)+AZ:QZ(e-1+OZ(e-1)*OZ(e+1))}});var _Z=Ri,qZ=Math.asinh,$Z=Math.log,ty=Math.sqrt;_Z({target:"Math",stat:!0,forced:!(qZ&&1/qZ(0)>0)},{asinh:function t(e){var n=+e;return isFinite(n)&&0!=n?n<0?-t(-n):$Z(n+ty(n*n+1)):n}});var ey=Ri,ny=Math.atanh,ry=Math.log;ey({target:"Math",stat:!0,forced:!(ny&&1/ny(-0)<0)},{atanh:function(t){var e=+t;return 0==e?e:ry((1+e)/(1-e))/2}});var iy=Math.sign||function(t){var e=+t;return 0==e||e!=e?e:e<0?-1:1},cy=Ri,ay=iy,oy=Math.abs,ly=Math.pow;cy({target:"Math",stat:!0},{cbrt:function(t){var e=+t;return ay(e)*ly(oy(e),1/3)}});var uy=Ri,sy=Math.floor,dy=Math.log,hy=Math.LOG2E;uy({target:"Math",stat:!0},{clz32:function(t){var e=t>>>0;return e?31-sy(dy(e+.5)*hy):32}});var my=Math.expm1,py=Math.exp,by=!my||my(10)>22025.465794806718||my(10)<22025.465794806718||-2e-17!=my(-2e-17)?function(t){var e=+t;return 0==e?e:e>-1e-6&&e<1e-6?e+e*e/2:py(e)-1}:my,Zy=Ri,yy=by,Xy=Math.cosh,fy=Math.abs,Iy=Math.E;Zy({target:"Math",stat:!0,forced:!Xy||Xy(710)===1/0},{cosh:function(t){var e=yy(fy(t)-1)+1;return(e+1/(e*Iy*Iy))*(Iy/2)}});var Gy=by;Ri({target:"Math",stat:!0,forced:Gy!=Math.expm1},{expm1:Gy});var Vy=iy,Wy=Math.abs,vy=Math.pow,gy=vy(2,-52),Sy=vy(2,-23),Yy=vy(2,127)*(2-Sy),Ry=vy(2,-126),Ky=Math.fround||function(t){var e,n,r=+t,i=Wy(r),c=Vy(r);return i<Ry?c*function(t){return t+1/gy-1/gy}(i/Ry/Sy)*Ry*Sy:(n=(e=(1+Sy/gy)*i)-(e-i))>Yy||n!=n?c*(1/0):c*n};Ri({target:"Math",stat:!0},{fround:Ky});var Ly=Ri,Ny=Math.hypot,Jy=Math.abs,xy=Math.sqrt;Ly({target:"Math",stat:!0,arity:2,forced:!!Ny&&Ny(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=Jy(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*xy(i)}});var Hy=Ri,ky=N,Cy=Math.imul;Hy({target:"Math",stat:!0,forced:ky((function(){return-5!=Cy(4294967295,5)||2!=Cy.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 Uy=Math.log,Ty=Math.LOG10E;Ri({target:"Math",stat:!0},{log10:Math.log10||function(t){return Uy(t)*Ty}}),Ri({target:"Math",stat:!0},{log1p:PZ});var wy=Ri,Fy=Math.log,jy=Math.LN2;wy({target:"Math",stat:!0},{log2:function(t){return Fy(t)/jy}}),Ri({target:"Math",stat:!0},{sign:iy});var My=Ri,zy=N,Py=by,By=Math.abs,Qy=Math.exp,Ey=Math.E;My({target:"Math",stat:!0,forced:zy((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(t){var e=+t;return By(e)<1?(Py(e)-Py(-e))/2:(Qy(e-1)-Qy(-e-1))*(Ey/2)}});var Dy=Ri,Oy=by,Ay=Math.exp;Dy({target:"Math",stat:!0},{tanh:function(t){var e=+t,n=Oy(e),r=Oy(-e);return n==1/0?1:r==1/0?-1:(n-r)/(Ay(e)+Ay(-e))}}),zc(Math,"Math",!0),Ri({target:"Math",stat:!0},{trunc:Rr});var _y=O(1..valueOf),qy="\t\n\v\f\r                 \u2028\u2029\ufeff",$y=ot,tX=ji,eX=O("".replace),nX="[\t\n\v\f\r                 \u2028\u2029\ufeff]",rX=RegExp("^"+nX+nX+"*"),iX=RegExp(nX+nX+"*$"),cX=function(t){return function(e){var n=tX($y(e));return 1&t&&(n=eX(n,rX,"")),2&t&&(n=eX(n,iX,"")),n}},aX={start:cX(1),end:cX(2),trim:cX(3)},oX=J,lX=K,uX=O,sX=Ii,dX=vr,hX=ue,mX=pZ,pX=Xt,bX=Ct,ZX=He,yX=N,XX=gr.f,fX=L.f,IX=$e.f,GX=_y,VX=aX.trim,WX="Number",vX=lX.Number,gX=vX.prototype,SX=lX.TypeError,YX=uX("".slice),RX=uX("".charCodeAt),KX=function(t){var e=ZX(t,"number");return"bigint"==typeof e?e:LX(e)},LX=function(t){var e,n,r,i,c,a,o,l,u=ZX(t,"number");if(bX(u))throw SX("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=VX(u),43===(e=RX(u,0))||45===e){if(88===(n=RX(u,2))||120===n)return NaN}else if(48===e){switch(RX(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=YX(u,2)).length,o=0;o<a;o++)if((l=RX(c,o))<48||l>i)return NaN;return parseInt(c,r)}return+u};if(sX(WX,!vX(" 0o1")||!vX("0b1")||vX("+0x1"))){for(var NX,JX=function(t){var e=arguments.length<1?0:vX(KX(t)),n=this;return pX(gX,n)&&yX((function(){GX(n)}))?mX(Object(e),n,JX):e},xX=oX?XX(vX):"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(","),HX=0;xX.length>HX;HX++)hX(vX,NX=xX[HX])&&!hX(JX,NX)&&IX(JX,NX,fX(vX,NX));JX.prototype=gX,gX.constructor=JX,dX(lX,WX,JX,{constructor:!0})}Ri({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)});var kX=K.isFinite;Ri({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&kX(t)}});var CX=mt,UX=Math.floor,TX=Number.isInteger||function(t){return!CX(t)&&isFinite(t)&&UX(t)===t};Ri({target:"Number",stat:!0},{isInteger:TX}),Ri({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var wX=Ri,FX=TX,jX=Math.abs;wX({target:"Number",stat:!0},{isSafeInteger:function(t){return FX(t)&&jX(t)<=9007199254740991}}),Ri({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ri({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991});var MX=K,zX=N,PX=ji,BX=aX.trim,QX=O("".charAt),EX=MX.parseFloat,DX=MX.Symbol,OX=DX&&DX.iterator,AX=1/EX("\t\n\v\f\r                 \u2028\u2029\ufeff-0")!=-1/0||OX&&!zX((function(){EX(Object(OX))}))?function(t){var e=BX(PX(t)),n=EX(e);return 0===n&&"-"==QX(e,0)?-0:n}:EX;Ri({target:"Number",stat:!0,forced:Number.parseFloat!=AX},{parseFloat:AX});var _X=K,qX=N,$X=O,tf=ji,ef=aX.trim,nf=qy,rf=_X.parseInt,cf=_X.Symbol,af=cf&&cf.iterator,of=/^[+-]?0x/i,lf=$X(of.exec),uf=8!==rf(nf+"08")||22!==rf(nf+"0x16")||af&&!qX((function(){rf(Object(af))}))?function(t,e){var n=ef(tf(t));return rf(n,e>>>0||(lf(of,n)?16:10))}:rf,sf=uf;Ri({target:"Number",stat:!0,forced:Number.parseInt!=sf},{parseInt:sf});var df=Lr,hf=ji,mf=ot,pf=K.RangeError,bf=function(t){var e=hf(mf(this)),n="",r=df(t);if(r<0||r==1/0)throw pf("Wrong number of repetitions");for(;r>0;(r>>>=1)&&(e+=e))1&r&&(n+=e);return n},Zf=Ri,yf=K,Xf=O,ff=Lr,If=_y,Gf=bf,Vf=N,Wf=yf.RangeError,vf=yf.String,gf=Math.floor,Sf=Xf(Gf),Yf=Xf("".slice),Rf=Xf(1..toFixed),Kf=function t(e,n,r){return 0===n?r:n%2==1?t(e,n-1,r*e):t(e*e,n/2,r)},Lf=function(t,e,n){for(var r=-1,i=n;++r<6;)i+=e*t[r],t[r]=i%1e7,i=gf(i/1e7)},Nf=function(t,e){for(var n=6,r=0;--n>=0;)r+=t[n],t[n]=gf(r/e),r=r%e*1e7},Jf=function(t){for(var e=6,n="";--e>=0;)if(""!==n||0===e||0!==t[e]){var r=vf(t[e]);n=""===n?r:n+Sf("0",7-r.length)+r}return n};Zf({target:"Number",proto:!0,forced:Vf((function(){return"0.000"!==Rf(8e-5,3)||"1"!==Rf(.9,0)||"1.25"!==Rf(1.255,2)||"1000000000000000128"!==Rf(0xde0b6b3a7640080,0)}))||!Vf((function(){Rf({})}))},{toFixed:function(t){var e,n,r,i,c=If(this),a=ff(t),o=[0,0,0,0,0,0],l="",u="0";if(a<0||a>20)throw Wf("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return vf(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*Kf(2,69,1))-69,n=e<0?c*Kf(2,-e,1):c/Kf(2,e,1),n*=4503599627370496,(e=52-e)>0){for(Lf(o,0,n),r=a;r>=7;)Lf(o,1e7,0),r-=7;for(Lf(o,Kf(10,r,1),0),r=e-1;r>=23;)Nf(o,1<<23),r-=23;Nf(o,1<<r),Lf(o,1,1),Nf(o,2),u=Jf(o)}else Lf(o,0,n),Lf(o,1<<-e,0),u=Jf(o)+Sf("0",a);return u=a>0?l+((i=u.length)<=a?"0."+Sf("0",a-i)+u:Yf(u,0,i-a)+"."+Yf(u,i-a)):l+u}});var xf=J,Hf=O,kf=C,Cf=N,Uf=Bi,Tf=ti,wf=U,Ff=ae,jf=ct,Mf=Object.assign,zf=Object.defineProperty,Pf=Hf([].concat),Bf=!Mf||Cf((function(){if(xf&&1!==Mf({b:1},Mf(zf({},"a",{enumerable:!0,get:function(){zf(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!=Mf({},t)[n]||Uf(Mf({},e)).join("")!=r}))?function(t,e){for(var n=Ff(t),r=arguments.length,i=1,c=Tf.f,a=wf.f;r>i;)for(var o,l=jf(arguments[i++]),u=c?Pf(Uf(l),c(l)):Uf(l),s=u.length,d=0;s>d;)o=u[d++],xf&&!kf(a,l,o)||(n[o]=l[o]);return n}:Mf,Qf=Bf;Ri({target:"Object",stat:!0,arity:2,forced:Object.assign!==Qf},{assign:Qf});var Ef=K,Df=Ah,Of=!N((function(){if(!(Df&&Df<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete Ef[t]}})),Af=Mt,_f=ae,qf=$e;J&&Ri({target:"Object",proto:!0,forced:Of},{__defineGetter__:function(t,e){qf.f(_f(this),t,{get:Af(e),enumerable:!0,configurable:!0})}});var $f=Mt,tI=ae,eI=$e;J&&Ri({target:"Object",proto:!0,forced:Of},{__defineSetter__:function(t,e){eI.f(tI(this),t,{set:$f(e),enumerable:!0,configurable:!0})}});var nI=J,rI=O,iI=Bi,cI=st,aI=rI(U.f),oI=rI([].push),lI=function(t){return function(e){for(var n,r=cI(e),i=iI(r),c=i.length,a=0,o=[];c>a;)n=i[a++],nI&&!aI(r,n)||oI(o,t?[n,r[n]]:r[n]);return o}},uI={entries:lI(!0),values:lI(!1)},sI=uI.entries;Ri({target:"Object",stat:!0},{entries:function(t){return sI(t)}});var dI=Ri,hI=kb,mI=N,pI=mt,bI=Yb.exports.onFreeze,ZI=Object.freeze;dI({target:"Object",stat:!0,forced:mI((function(){ZI(1)})),sham:!hI},{freeze:function(t){return ZI&&pI(t)?ZI(bI(t)):t}});var yI=sZ,XI=Zc;Ri({target:"Object",stat:!0},{fromEntries:function(t){var e={};return yI(t,(function(t,n){XI(e,t,n)}),{AS_ENTRIES:!0}),e}});var fI=Ri,II=N,GI=st,VI=L.f,WI=J,vI=II((function(){VI(1)}));fI({target:"Object",stat:!0,forced:!WI||vI,sham:!WI},{getOwnPropertyDescriptor:function(t,e){return VI(GI(t),e)}});var gI=ai,SI=st,YI=L,RI=Zc;Ri({target:"Object",stat:!0,sham:!J},{getOwnPropertyDescriptors:function(t){for(var e,n,r=SI(t),i=YI.f,c=gI(r),a={},o=0;c.length>o;)void 0!==(n=i(r,e=c[o++]))&&RI(a,e,n);return a}});var KI=Ri,LI=N,NI=hc.f;KI({target:"Object",stat:!0,forced:LI((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:NI});var JI=ae,xI=ld,HI=$s;Ri({target:"Object",stat:!0,forced:N((function(){xI(1)})),sham:!HI},{getPrototypeOf:function(t){return xI(JI(t))}});var kI=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ri({target:"Object",stat:!0},{is:kI});var CI=Hb;Ri({target:"Object",stat:!0,forced:Object.isExtensible!==CI},{isExtensible:CI});var UI=Ri,TI=N,wI=mt,FI=$,jI=Rb,MI=Object.isFrozen;UI({target:"Object",stat:!0,forced:TI((function(){MI(1)}))||jI},{isFrozen:function(t){return!wI(t)||(!(!jI||"ArrayBuffer"!=FI(t))||!!MI&&MI(t))}});var zI=Ri,PI=N,BI=mt,QI=$,EI=Rb,DI=Object.isSealed;zI({target:"Object",stat:!0,forced:PI((function(){DI(1)}))||EI},{isSealed:function(t){return!BI(t)||(!(!EI||"ArrayBuffer"!=QI(t))||!!DI&&DI(t))}});var OI=ae,AI=Bi;Ri({target:"Object",stat:!0,forced:N((function(){AI(1)}))},{keys:function(t){return AI(OI(t))}});var _I=Ri,qI=J,$I=Of,tG=ae,eG=Ue,nG=ld,rG=L.f;qI&&_I({target:"Object",proto:!0,forced:$I},{__lookupGetter__:function(t){var e,n=tG(this),r=eG(t);do{if(e=rG(n,r))return e.get}while(n=nG(n))}});var iG=Ri,cG=J,aG=Of,oG=ae,lG=Ue,uG=ld,sG=L.f;cG&&iG({target:"Object",proto:!0,forced:aG},{__lookupSetter__:function(t){var e,n=oG(this),r=lG(t);do{if(e=sG(n,r))return e.set}while(n=uG(n))}});var dG=Ri,hG=mt,mG=Yb.exports.onFreeze,pG=kb,bG=N,ZG=Object.preventExtensions;dG({target:"Object",stat:!0,forced:bG((function(){ZG(1)})),sham:!pG},{preventExtensions:function(t){return ZG&&hG(t)?ZG(mG(t)):t}});var yG=Ri,XG=mt,fG=Yb.exports.onFreeze,IG=kb,GG=N,VG=Object.seal;yG({target:"Object",stat:!0,forced:GG((function(){VG(1)})),sham:!IG},{seal:function(t){return VG&&XG(t)?VG(fG(t)):t}});var WG=Ti,vG=Li?{}.toString:function(){return"[object "+WG(this)+"]"};Li||vr(Object.prototype,"toString",vG,{unsafe:!0});var gG=uI.values;Ri({target:"Object",stat:!0},{values:function(t){return gG(t)}});var SG,YG,RG,KG,LG="process"==$(K.process),NG=ua,JG=Tt,xG=K.TypeError,HG=function(t){if(NG(t))return t;throw xG(JG(t)+" is not a constructor")},kG=an,CG=HG,UG=ge("species"),TG=function(t,e){var n,r=kG(t).constructor;return void 0===r||null==(n=kG(r)[UG])?e:CG(n)},wG=K.TypeError,FG=function(t,e){if(t<e)throw wG("Not enough arguments");return t},jG=/(?:ipad|iphone|ipod).*applewebkit/i.test(ft),MG=K,zG=qo,PG=Ec,BG=dt,QG=ue,EG=N,DG=$i,OG=$o,AG=je,_G=FG,qG=jG,$G=LG,tV=MG.setImmediate,eV=MG.clearImmediate,nV=MG.process,rV=MG.Dispatch,iV=MG.Function,cV=MG.MessageChannel,aV=MG.String,oV=0,lV={},uV="onreadystatechange";try{SG=MG.location}catch(t){}var sV=function(t){if(QG(lV,t)){var e=lV[t];delete lV[t],e()}},dV=function(t){return function(){sV(t)}},hV=function(t){sV(t.data)},mV=function(t){MG.postMessage(aV(t),SG.protocol+"//"+SG.host)};tV&&eV||(tV=function(t){_G(arguments.length,1);var e=BG(t)?t:iV(t),n=OG(arguments,1);return lV[++oV]=function(){zG(e,void 0,n)},YG(oV),oV},eV=function(t){delete lV[t]},$G?YG=function(t){nV.nextTick(dV(t))}:rV&&rV.now?YG=function(t){rV.now(dV(t))}:cV&&!qG?(KG=(RG=new cV).port2,RG.port1.onmessage=hV,YG=PG(KG.postMessage,KG)):MG.addEventListener&&BG(MG.postMessage)&&!MG.importScripts&&SG&&"file:"!==SG.protocol&&!EG(mV)?(YG=mV,MG.addEventListener("message",hV,!1)):YG=uV in AG("script")?function(t){DG.appendChild(AG("script")).onreadystatechange=function(){DG.removeChild(this),sV(t)}}:function(t){setTimeout(dV(t),0)});var pV,bV,ZV,yV,XV,fV,IV,GV,VV={set:tV,clear:eV},WV=K,vV=/ipad|iphone|ipod/i.test(ft)&&void 0!==WV.Pebble,gV=/web0s(?!.*chrome)/i.test(ft),SV=K,YV=Ec,RV=L.f,KV=VV.set,LV=jG,NV=vV,JV=gV,xV=LG,HV=SV.MutationObserver||SV.WebKitMutationObserver,kV=SV.document,CV=SV.process,UV=SV.Promise,TV=RV(SV,"queueMicrotask"),wV=TV&&TV.value;wV||(pV=function(){var t,e;for(xV&&(t=CV.domain)&&t.exit();bV;){e=bV.fn,bV=bV.next;try{e()}catch(t){throw bV?yV():ZV=void 0,t}}ZV=void 0,t&&t.enter()},LV||xV||JV||!HV||!kV?!NV&&UV&&UV.resolve?((IV=UV.resolve(void 0)).constructor=UV,GV=YV(IV.then,IV),yV=function(){GV(pV)}):xV?yV=function(){CV.nextTick(pV)}:(KV=YV(KV,SV),yV=function(){KV(pV)}):(XV=!0,fV=kV.createTextNode(""),new HV(pV).observe(fV,{characterData:!0}),yV=function(){fV.data=XV=!XV}));var FV=wV||function(t){var e={fn:t,next:void 0};ZV&&(ZV.next=e),bV||(bV=e,yV()),ZV=e},jV=K,MV=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},zV=function(){this.head=null,this.tail=null};zV.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 PV=zV,BV=K.Promise,QV="object"==("undefined"==typeof window?"undefined":o(window))&&"object"!=("undefined"==typeof Deno?"undefined":o(Deno)),EV=K,DV=BV,OV=dt,AV=Ii,_V=Hn,qV=ge,$V=QV,tW=St;DV&&DV.prototype;var eW=qV("species"),nW=!1,rW=OV(EV.PromiseRejectionEvent),iW=AV("Promise",(function(){var t=_V(DV),e=t!==String(DV);if(!e&&66===tW)return!0;if(tW>=51&&/native code/.test(t))return!1;var n=new DV((function(t){t(1)})),r=function(t){t((function(){}),(function(){}))};return(n.constructor={})[eW]=r,!(nW=n.then((function(){}))instanceof r)||!e&&$V&&!rW})),cW={CONSTRUCTOR:iW,REJECTION_EVENT:rW,SUBCLASSING:nW},aW={},oW=Mt,lW=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=oW(e),this.reject=oW(n)};aW.f=function(t){return new lW(t)};var uW,sW,dW,hW=Ri,mW=LG,pW=K,bW=C,ZW=vr,yW=Jd,XW=zc,fW=Gm,IW=Mt,GW=dt,VW=mt,WW=jm,vW=TG,gW=VV.set,SW=FV,YW=function(t,e){var n=jV.console;n&&n.error&&(1==arguments.length?n.error(t):n.error(t,e))},RW=MV,KW=PV,LW=or,NW=BV,JW=aW,xW="Promise",HW=cW.CONSTRUCTOR,kW=cW.REJECTION_EVENT,CW=cW.SUBCLASSING,UW=LW.getterFor(xW),TW=LW.set,wW=NW&&NW.prototype,FW=NW,jW=wW,MW=pW.TypeError,zW=pW.document,PW=pW.process,BW=JW.f,QW=BW,EW=!!(zW&&zW.createEvent&&pW.dispatchEvent),DW="unhandledrejection",OW=function(t){var e;return!(!VW(t)||!GW(e=t.then))&&e},AW=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&&ev(e),e.rejection=1),!0===o?n=c:(s&&s.enter(),n=o(c),s&&(s.exit(),i=!0)),n===t.promise?u(MW("Promise-chain cycle")):(r=OW(n))?bW(r,n,l,u):l(n)):u(c)}catch(t){s&&!i&&s.exit(),u(t)}},_W=function(t,e){t.notified||(t.notified=!0,SW((function(){for(var n,r=t.reactions;n=r.get();)AW(n,t);t.notified=!1,e&&!t.rejection&&$W(t)})))},qW=function(t,e,n){var r,i;EW?((r=zW.createEvent("Event")).promise=e,r.reason=n,r.initEvent(t,!1,!0),pW.dispatchEvent(r)):r={promise:e,reason:n},!kW&&(i=pW["on"+t])?i(r):t===DW&&YW("Unhandled promise rejection",n)},$W=function(t){bW(gW,pW,(function(){var e,n=t.facade,r=t.value;if(tv(t)&&(e=RW((function(){mW?PW.emit("unhandledRejection",r,n):qW(DW,n,r)})),t.rejection=mW||tv(t)?2:1,e.error))throw e.value}))},tv=function(t){return 1!==t.rejection&&!t.parent},ev=function(t){bW(gW,pW,(function(){var e=t.facade;mW?PW.emit("rejectionHandled",e):qW("rejectionhandled",e,t.value)}))},nv=function(t,e,n){return function(r){t(e,r,n)}},rv=function(t,e,n){t.done||(t.done=!0,n&&(t=n),t.value=e,t.state=2,_W(t,!0))},iv=function t(e,n,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===n)throw MW("Promise can't be resolved itself");var i=OW(n);i?SW((function(){var r={done:!1};try{bW(i,n,nv(t,r,e),nv(rv,r,e))}catch(t){rv(r,t,e)}})):(e.value=n,e.state=1,_W(e,!1))}catch(t){rv({done:!1},t,e)}}};if(HW&&(jW=(FW=function(t){WW(this,jW),IW(t),bW(uW,this);var e=UW(this);try{t(nv(iv,e),nv(rv,e))}catch(t){rv(e,t)}}).prototype,(uW=function(t){TW(this,{type:xW,done:!1,notified:!1,parent:!1,reactions:new KW,rejection:!1,state:0,value:void 0})}).prototype=ZW(jW,"then",(function(t,e){var n=UW(this),r=BW(vW(this,FW));return n.parent=!0,r.ok=!GW(t)||t,r.fail=GW(e)&&e,r.domain=mW?PW.domain:void 0,0==n.state?n.reactions.add(r):SW((function(){AW(r,n)})),r.promise})),sW=function(){var t=new uW,e=UW(t);this.promise=t,this.resolve=nv(iv,e),this.reject=nv(rv,e)},JW.f=BW=function(t){return t===FW||undefined===t?new sW(t):QW(t)},GW(NW)&&wW!==Object.prototype)){dW=wW.then,CW||ZW(wW,"then",(function(t,e){var n=this;return new FW((function(t,e){bW(dW,n,t,e)})).then(t,e)}),{unsafe:!0});try{delete wW.constructor}catch(t){}yW&&yW(wW,jW)}hW({global:!0,constructor:!0,wrap:!0,forced:HW},{Promise:FW}),XW(FW,xW,!1),fW(xW);var cv=BV,av=cW.CONSTRUCTOR||!Qs((function(t){cv.all(t).then(void 0,(function(){}))})),ov=C,lv=Mt,uv=aW,sv=MV,dv=sZ;Ri({target:"Promise",stat:!0,forced:av},{all:function(t){var e=this,n=uv.f(e),r=n.resolve,i=n.reject,c=sv((function(){var n=lv(e.resolve),c=[],a=0,o=1;dv(t,(function(t){var l=a++,u=!1;o++,ov(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 hv=Ri,mv=cW.CONSTRUCTOR,pv=BV,bv=yt,Zv=dt,yv=vr,Xv=pv&&pv.prototype;if(hv({target:"Promise",proto:!0,forced:mv,real:!0},{catch:function(t){return this.then(void 0,t)}}),Zv(pv)){var fv=bv("Promise").prototype.catch;Xv.catch!==fv&&yv(Xv,"catch",fv,{unsafe:!0})}var Iv=C,Gv=Mt,Vv=aW,Wv=MV,vv=sZ;Ri({target:"Promise",stat:!0,forced:av},{race:function(t){var e=this,n=Vv.f(e),r=n.reject,i=Wv((function(){var i=Gv(e.resolve);vv(t,(function(t){Iv(i,e,t).then(n.resolve,r)}))}));return i.error&&r(i.value),n.promise}});var gv=C,Sv=aW;Ri({target:"Promise",stat:!0,forced:cW.CONSTRUCTOR},{reject:function(t){var e=Sv.f(this);return gv(e.reject,void 0,t),e.promise}});var Yv=an,Rv=mt,Kv=aW,Lv=function(t,e){if(Yv(t),Rv(e)&&e.constructor===t)return e;var n=Kv.f(t);return(0,n.resolve)(e),n.promise},Nv=Ri,Jv=cW.CONSTRUCTOR,xv=Lv;yt("Promise"),Nv({target:"Promise",stat:!0,forced:Jv},{resolve:function(t){return xv(this,t)}});var Hv=C,kv=Mt,Cv=aW,Uv=MV,Tv=sZ;Ri({target:"Promise",stat:!0},{allSettled:function(t){var e=this,n=Cv.f(e),r=n.resolve,i=n.reject,c=Uv((function(){var n=kv(e.resolve),i=[],c=0,a=1;Tv(t,(function(t){var o=c++,l=!1;a++,Hv(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 wv=Ri,Fv=BV,jv=N,Mv=yt,zv=dt,Pv=TG,Bv=Lv,Qv=vr,Ev=Fv&&Fv.prototype;if(wv({target:"Promise",proto:!0,real:!0,forced:!!Fv&&jv((function(){Ev.finally.call({then:function(){}},(function(){}))}))},{finally:function(t){var e=Pv(this,Mv("Promise")),n=zv(t);return this.then(n?function(n){return Bv(e,t()).then((function(){return n}))}:t,n?function(n){return Bv(e,t()).then((function(){throw n}))}:t)}}),zv(Fv)){var Dv=Mv("Promise").prototype.finally;Ev.finally!==Dv&&Qv(Ev,"finally",Dv,{unsafe:!0})}var Ov=qo,Av=Mt,_v=an;Ri({target:"Reflect",stat:!0,forced:!N((function(){Reflect.apply((function(){}))}))},{apply:function(t,e,n){return Ov(Av(t),e,_v(n))}});var qv=O,$v=Mt,tg=mt,eg=ue,ng=$o,rg=x,ig=K.Function,cg=qv([].concat),ag=qv([].join),og={},lg=function(t,e,n){if(!eg(og,e)){for(var r=[],i=0;i<e;i++)r[i]="a["+i+"]";og[e]=ig("C,a","return new C("+ag(r,",")+")")}return og[e](t,n)},ug=rg?ig.bind:function(t){var e=$v(this),n=e.prototype,r=ng(arguments,1),i=function(){var n=cg(r,ng(arguments));return this instanceof i?lg(e,n.length,n):e.apply(t,n)};return tg(n)&&(i.prototype=n),i},sg=Ri,dg=qo,hg=ug,mg=HG,pg=an,bg=mt,Zg=dc,yg=N,Xg=yt("Reflect","construct"),fg=Object.prototype,Ig=[].push,Gg=yg((function(){function t(){}return!(Xg((function(){}),[],t)instanceof t)})),Vg=!yg((function(){Xg((function(){}))})),Wg=Gg||Vg;sg({target:"Reflect",stat:!0,forced:Wg,sham:Wg},{construct:function(t,e){mg(t),pg(e);var n=arguments.length<3?t:mg(arguments[2]);if(Vg&&!Gg)return Xg(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 dg(Ig,r,e),new(dg(hg,t,r))}var i=n.prototype,c=Zg(bg(i)?i:fg),a=dg(t,c,e);return bg(a)?a:c}});var vg=J,gg=an,Sg=Ue,Yg=$e;Ri({target:"Reflect",stat:!0,forced:N((function(){Reflect.defineProperty(Yg.f({},1,{value:1}),1,{value:2})})),sham:!vg},{defineProperty:function(t,e,n){gg(t);var r=Sg(e);gg(n);try{return Yg.f(t,r,n),!0}catch(t){return!1}}});var Rg=Ri,Kg=an,Lg=L.f;Rg({target:"Reflect",stat:!0},{deleteProperty:function(t,e){var n=Lg(Kg(t),e);return!(n&&!n.configurable)&&delete t[e]}});var Ng=ue,Jg=function(t){return void 0!==t&&(Ng(t,"value")||Ng(t,"writable"))},xg=C,Hg=mt,kg=an,Cg=Jg,Ug=L,Tg=ld;Ri({target:"Reflect",stat:!0},{get:function t(e,n){var r,i,c=arguments.length<3?e:arguments[2];return kg(e)===c?e[n]:(r=Ug.f(e,n))?Cg(r)?r.value:void 0===r.get?void 0:xg(r.get,c):Hg(i=Tg(e))?t(i,n,c):void 0}});var wg=an,Fg=L;Ri({target:"Reflect",stat:!0,sham:!J},{getOwnPropertyDescriptor:function(t,e){return Fg.f(wg(t),e)}});var jg=an,Mg=ld;Ri({target:"Reflect",stat:!0,sham:!$s},{getPrototypeOf:function(t){return Mg(jg(t))}}),Ri({target:"Reflect",stat:!0},{has:function(t,e){return e in t}});var zg=an,Pg=Hb;Ri({target:"Reflect",stat:!0},{isExtensible:function(t){return zg(t),Pg(t)}}),Ri({target:"Reflect",stat:!0},{ownKeys:ai});var Bg=yt,Qg=an;Ri({target:"Reflect",stat:!0,sham:!kb},{preventExtensions:function(t){Qg(t);try{var e=Bg("Object","preventExtensions");return e&&e(t),!0}catch(t){return!1}}});var Eg=Ri,Dg=C,Og=an,Ag=mt,_g=Jg,qg=$e,$g=L,tS=ld,eS=z;var nS=N((function(){var t=function(){},e=qg.f(new t,"a",{configurable:!0});return!1!==Reflect.set(t.prototype,"a",1,e)}));Eg({target:"Reflect",stat:!0,forced:nS},{set:function t(e,n,r){var i,c,a,o=arguments.length<4?e:arguments[3],l=$g.f(Og(e),n);if(!l){if(Ag(c=tS(e)))return t(c,n,r,o);l=eS(0)}if(_g(l)){if(!1===l.writable||!Ag(o))return!1;if(i=$g.f(o,n)){if(i.get||i.set||!1===i.writable)return!1;i.value=r,qg.f(o,n,i)}else qg.f(o,n,eS(0,r))}else{if(void 0===(a=l.set))return!1;Dg(a,o,r)}return!0}});var rS=an,iS=Rd,cS=Jd;cS&&Ri({target:"Reflect",stat:!0},{setPrototypeOf:function(t,e){rS(t),iS(e);try{return cS(t,e),!0}catch(t){return!1}}});var aS=mt,oS=$,lS=ge("match"),uS=function(t){var e;return aS(t)&&(void 0!==(e=t[lS])?!!e:"RegExp"==oS(t))},sS=an,dS=function(){var t=sS(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},hS=C,mS=ue,pS=Xt,bS=dS,ZS=RegExp.prototype,yS=function(t){var e=t.flags;return void 0!==e||"flags"in ZS||mS(t,"flags")||!pS(ZS,t)?e:hS(bS,t)},XS=N,fS=K.RegExp,IS=XS((function(){var t=fS("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),GS=IS||XS((function(){return!fS("a","y").sticky})),VS=IS||XS((function(){var t=fS("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),WS={BROKEN_CARET:VS,MISSED_STICKY:GS,UNSUPPORTED_Y:IS},vS=$e.f,gS=N,SS=K.RegExp,YS=gS((function(){var t=SS(".","s");return!(t.dotAll&&t.exec("\n")&&"s"===t.flags)})),RS=N,KS=K.RegExp,LS=RS((function(){var t=KS("(?<a>b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$<a>c")})),NS=J,JS=K,xS=O,HS=Ii,kS=pZ,CS=In,US=gr.f,TS=Xt,wS=uS,FS=ji,jS=yS,MS=WS,zS=function(t,e,n){n in t||vS(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})},PS=vr,BS=N,QS=ue,ES=or.enforce,DS=Gm,OS=YS,AS=LS,_S=ge("match"),qS=JS.RegExp,$S=qS.prototype,tY=JS.SyntaxError,eY=xS($S.exec),nY=xS("".charAt),rY=xS("".replace),iY=xS("".indexOf),cY=xS("".slice),aY=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,oY=/a/g,lY=/a/g,uY=new qS(oY)!==oY,sY=MS.MISSED_STICKY,dY=MS.UNSUPPORTED_Y,hY=NS&&(!uY||sY||OS||AS||BS((function(){return lY[_S]=!1,qS(oY)!=oY||qS(lY)==lY||"/a/i"!=qS(oY,"i")})));if(HS("RegExp",hY)){for(var mY=function(t,e){var n,r,i,c,a,o,l=TS($S,this),u=wS(t),s=void 0===e,d=[],h=t;if(!l&&u&&s&&t.constructor===mY)return t;if((u||TS($S,t))&&(t=t.source,s&&(e=jS(h))),t=void 0===t?"":FS(t),e=void 0===e?"":FS(e),h=t,OS&&"dotAll"in oY&&(r=!!e&&iY(e,"s")>-1)&&(e=rY(e,/s/g,"")),n=e,sY&&"sticky"in oY&&(i=!!e&&iY(e,"y")>-1)&&dY&&(e=rY(e,/y/g,"")),AS&&(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=nY(t,r)))e+=nY(t,++r);else if("]"===e)o=!1;else if(!o)switch(!0){case"["===e:o=!0;break;case"("===e:eY(aY,cY(t,r+1))&&(r+=2,l=!0),i+=e,u++;continue;case">"===e&&l:if(""===s||QS(a,s))throw new tY("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=kS(qS(t,e),l?this:$S,mY),(r||i||d.length)&&(o=ES(a),r&&(o.dotAll=!0,o.raw=mY(function(t){for(var e,n=t.length,r=0,i="",c=!1;r<=n;r++)"\\"!==(e=nY(t,r))?c||"."!==e?("["===e?c=!0:"]"===e&&(c=!1),i+=e):i+="[\\s\\S]":i+=e+nY(t,++r);return i}(t),n)),i&&(o.sticky=!0),d.length&&(o.groups=d)),t!==h)try{CS(a,"source",""===h?"(?:)":h)}catch(t){}return a},pY=US(qS),bY=0;pY.length>bY;)zS(mY,qS,pY[bY++]);$S.constructor=mY,mY.prototype=$S,PS(JS,"RegExp",mY,{constructor:!0})}DS("RegExp");var ZY=C,yY=O,XY=ji,fY=dS,IY=WS,GY=At.exports,VY=dc,WY=or.get,vY=YS,gY=LS,SY=GY("native-string-replace",String.prototype.replace),YY=RegExp.prototype.exec,RY=YY,KY=yY("".charAt),LY=yY("".indexOf),NY=yY("".replace),JY=yY("".slice),xY=function(){var t=/a/,e=/b*/g;return ZY(YY,t,"a"),ZY(YY,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),HY=IY.BROKEN_CARET,kY=void 0!==/()??/.exec("")[1];(xY||kY||HY||vY||gY)&&(RY=function(t){var e,n,r,i,c,a,o,l=this,u=WY(l),s=XY(t),d=u.raw;if(d)return d.lastIndex=l.lastIndex,e=ZY(RY,d,s),l.lastIndex=d.lastIndex,e;var h=u.groups,m=HY&&l.sticky,p=ZY(fY,l),b=l.source,Z=0,y=s;if(m&&(p=NY(p,"y",""),-1===LY(p,"g")&&(p+="g"),y=JY(s,l.lastIndex),l.lastIndex>0&&(!l.multiline||l.multiline&&"\n"!==KY(s,l.lastIndex-1))&&(b="(?: "+b+")",y=" "+y,Z++),n=new RegExp("^(?:"+b+")",p)),kY&&(n=new RegExp("^"+b+"$(?!\\s)",p)),xY&&(r=l.lastIndex),i=ZY(YY,m?n:l,y),m?i?(i.input=JY(i.input,Z),i[0]=JY(i[0],Z),i.index=l.lastIndex,l.lastIndex+=i[0].length):l.lastIndex=0:xY&&i&&(l.lastIndex=l.global?i.index+i[0].length:r),kY&&i&&i.length>1&&ZY(SY,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=VY(null),c=0;c<h.length;c++)a[(o=h[c])[0]]=i[o[1]];return i});var CY=RY;Ri({target:"RegExp",proto:!0,forced:/./.exec!==CY},{exec:CY});var UY=Gn.exports,TY=$e,wY=function(t,e,n){return n.get&&UY(n.get,e,{getter:!0}),n.set&&UY(n.set,e,{setter:!0}),TY.f(t,e,n)},FY=J,jY=wY,MY=dS,zY=N,PY=RegExp.prototype;FY&&zY((function(){return"sy"!==Object.getOwnPropertyDescriptor(PY,"flags").get.call({dotAll:!0,sticky:!0})}))&&jY(PY,"flags",{configurable:!0,get:MY});var BY=K,QY=J,EY=WS.MISSED_STICKY,DY=$,OY=wY,AY=or.get,_Y=RegExp.prototype,qY=BY.TypeError;QY&&EY&&OY(_Y,"sticky",{configurable:!0,get:function(){if(this!==_Y){if("RegExp"===DY(this))return!!AY(this).sticky;throw qY("Incompatible receiver, RegExp required")}}});var $Y,tR,eR=Ri,nR=K,rR=C,iR=O,cR=dt,aR=mt,oR=($Y=!1,(tR=/[ac]/).exec=function(){return $Y=!0,/./.exec.apply(this,arguments)},!0===tR.test("abc")&&$Y),lR=nR.Error,uR=iR(/./.test);eR({target:"RegExp",proto:!0,forced:!oR},{test:function(t){var e=this.exec;if(!cR(e))return uR(this,t);var n=rR(e,this,t);if(null!==n&&!aR(n))throw new lR("RegExp exec method returned something other than an Object or null");return!!n}});var sR=Yn.PROPER,dR=vr,hR=an,mR=ji,pR=N,bR=yS,ZR="toString",yR=RegExp.prototype.toString,XR=pR((function(){return"/a/b"!=yR.call({source:"a",flags:"b"})})),fR=sR&&yR.name!=ZR;(XR||fR)&&dR(RegExp.prototype,ZR,(function(){var t=hR(this);return"/"+mR(t.source)+"/"+mR(bR(t))}),{unsafe:!0}),KZ("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),MZ);var IR=O,GR=Lr,VR=ji,WR=ot,vR=IR("".charAt),gR=IR("".charCodeAt),SR=IR("".slice),YR=function(t){return function(e,n){var r,i,c=VR(WR(e)),a=GR(n),o=c.length;return a<0||a>=o?t?"":void 0:(r=gR(c,a))<55296||r>56319||a+1===o||(i=gR(c,a+1))<56320||i>57343?t?vR(c,a):r:t?SR(c,a,a+2):i-56320+(r-55296<<10)+65536}},RR={codeAt:YR(!1),charAt:YR(!0)},KR=RR.codeAt;Ri({target:"String",proto:!0},{codePointAt:function(t){return KR(this,t)}});var LR,NR=uS,JR=K.TypeError,xR=function(t){if(NR(t))throw JR("The method doesn't accept regular expressions");return t},HR=ge("match"),kR=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[HR]=!1,"/./"[t](e)}catch(t){}}return!1},CR=Ri,UR=O,TR=L.f,wR=Ur,FR=ji,jR=xR,MR=ot,zR=kR,PR=UR("".endsWith),BR=UR("".slice),QR=Math.min,ER=zR("endsWith");CR({target:"String",proto:!0,forced:!!(ER||(LR=TR(String.prototype,"endsWith"),!LR||LR.writable))&&!ER},{endsWith:function(t){var e=FR(MR(this));jR(t);var n=arguments.length>1?arguments[1]:void 0,r=e.length,i=void 0===n?r:QR(wR(n),r),c=FR(t);return PR?PR(e,c,i):BR(e,i-c.length,i)===c}});var DR=Ri,OR=O,AR=Hr,_R=K.RangeError,qR=String.fromCharCode,$R=String.fromCodePoint,tK=OR([].join);DR({target:"String",stat:!0,arity:1,forced:!!$R&&1!=$R.length},{fromCodePoint:function(t){for(var e,n=[],r=arguments.length,i=0;r>i;){if(e=+arguments[i++],AR(e,1114111)!==e)throw _R(e+" is not a valid code point");n[i]=e<65536?qR(e):qR(55296+((e-=65536)>>10),e%1024+56320)}return tK(n,"")}});var eK=Ri,nK=xR,rK=ot,iK=ji,cK=kR,aK=O("".indexOf);eK({target:"String",proto:!0,forced:!cK("includes")},{includes:function(t){return!!~aK(iK(rK(this)),iK(nK(t)),arguments.length>1?arguments[1]:void 0)}});var oK=RR.charAt,lK=ji,uK=or,sK=qd,dK="String Iterator",hK=uK.set,mK=uK.getterFor(dK);sK(String,"String",(function(t){hK(this,{type:dK,string:lK(t),index:0})}),(function(){var t,e=mK(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=oK(n,r),e.index+=t.length,{value:t,done:!1})}));var pK=O,bK=vr,ZK=CY,yK=N,XK=ge,fK=In,IK=XK("species"),GK=RegExp.prototype,VK=function(t,e,n,r){var i=XK(t),c=!yK((function(){var e={};return e[i]=function(){return 7},7!=""[t](e)})),a=c&&!yK((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[IK]=function(){return n},n.flags="",n[i]=/./[i]),n.exec=function(){return e=!0,null},n[i](""),!e}));if(!c||!a||n){var o=pK(/./[i]),l=e(i,""[t],(function(t,e,n,r,i){var a=pK(t),l=e.exec;return l===ZK||l===GK.exec?c&&!i?{done:!0,value:o(e,n,r)}:{done:!0,value:a(n,e,r)}:{done:!1}}));bK(String.prototype,t,l[0]),bK(GK,i,l[1])}r&&fK(GK[i],"sham",!0)},WK=RR.charAt,vK=function(t,e,n){return e+(n?WK(t,e).length:1)},gK=C,SK=an,YK=dt,RK=$,KK=CY,LK=K.TypeError,NK=function(t,e){var n=t.exec;if(YK(n)){var r=gK(n,t,e);return null!==r&&SK(r),r}if("RegExp"===RK(t))return gK(KK,t,e);throw LK("RegExp#exec called on incompatible receiver")},JK=C,xK=an,HK=Ur,kK=ji,CK=ot,UK=Pt,TK=vK,wK=NK;VK("match",(function(t,e,n){return[function(e){var n=CK(this),r=null==e?void 0:UK(e,t);return r?JK(r,e,n):new RegExp(e)[t](kK(n))},function(t){var r=xK(this),i=kK(t),c=n(e,r,i);if(c.done)return c.value;if(!r.global)return wK(r,i);var a=r.unicode;r.lastIndex=0;for(var o,l=[],u=0;null!==(o=wK(r,i));){var s=kK(o[0]);l[u]=s,""===s&&(r.lastIndex=TK(i,HK(r.lastIndex),a)),u++}return 0===u?null:l}]}));var FK=Ri,jK=K,MK=C,zK=O,PK=Wd,BK=ot,QK=Ur,EK=ji,DK=an,OK=uS,AK=yS,_K=Pt,qK=vr,$K=N,tL=TG,eL=vK,nL=NK,rL=or,iL=ge("matchAll"),cL="RegExp String",aL="RegExp String Iterator",oL=rL.set,lL=rL.getterFor(aL),uL=RegExp.prototype,sL=jK.TypeError,dL=zK("".indexOf),hL=zK("".matchAll),mL=!!hL&&!$K((function(){hL("a",/./)})),pL=PK((function(t,e,n,r){oL(this,{type:aL,regexp:t,string:e,global:n,unicode:r,done:!1})}),cL,(function(){var t=lL(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,r=nL(e,n);return null===r?{value:void 0,done:t.done=!0}:t.global?(""===EK(r[0])&&(e.lastIndex=eL(n,QK(e.lastIndex),t.unicode)),{value:r,done:!1}):(t.done=!0,{value:r,done:!1})})),bL=function(t){var e,n,r,i=DK(this),c=EK(t),a=tL(i,RegExp),o=EK(AK(i));return e=new a(a===RegExp?i.source:i,o),n=!!~dL(o,"g"),r=!!~dL(o,"u"),e.lastIndex=QK(i.lastIndex),new pL(e,c,n,r)};FK({target:"String",proto:!0,forced:mL},{matchAll:function(t){var e,n,r,i=BK(this);if(null!=t){if(OK(t)&&(e=EK(BK(AK(t))),!~dL(e,"g")))throw sL("`.matchAll` does not allow non-global regexes");if(mL)return hL(i,t);if(r=_K(t,iL))return MK(r,t,i)}else if(mL)return hL(i,t);return n=EK(i),new RegExp(t,"g")[iL](n)}}),iL in uL||qK(uL,iL,bL);var ZL=O,yL=Ur,XL=ji,fL=ot,IL=ZL(bf),GL=ZL("".slice),VL=Math.ceil,WL=function(t){return function(e,n,r){var i,c,a=XL(fL(e)),o=yL(n),l=a.length,u=void 0===r?" ":XL(r);return o<=l||""==u?a:((c=IL(u,VL((i=o-l)/u.length))).length>i&&(c=GL(c,0,i)),t?a+c:c+a)}},vL={start:WL(!1),end:WL(!0)},gL=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(ft),SL=vL.end;Ri({target:"String",proto:!0,forced:gL},{padEnd:function(t){return SL(this,t,arguments.length>1?arguments[1]:void 0)}});var YL=vL.start;Ri({target:"String",proto:!0,forced:gL},{padStart:function(t){return YL(this,t,arguments.length>1?arguments[1]:void 0)}});var RL=Ri,KL=O,LL=st,NL=ae,JL=ji,xL=wr,HL=KL([].push),kL=KL([].join);RL({target:"String",stat:!0},{raw:function(t){for(var e=LL(NL(t).raw),n=xL(e),r=arguments.length,i=[],c=0;n>c;){if(HL(i,JL(e[c++])),c===n)return kL(i,"");c<r&&HL(i,JL(arguments[c]))}}}),Ri({target:"String",proto:!0},{repeat:bf});var CL=O,UL=ae,TL=Math.floor,wL=CL("".charAt),FL=CL("".replace),jL=CL("".slice),ML=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,zL=/\$([$&'`]|\d{1,2})/g,PL=qo,BL=C,QL=O,EL=VK,DL=N,OL=an,AL=dt,_L=Lr,qL=Ur,$L=ji,tN=ot,eN=vK,nN=Pt,rN=function(t,e,n,r,i,c){var a=n+t.length,o=r.length,l=zL;return void 0!==i&&(i=UL(i),l=ML),FL(c,l,(function(c,l){var u;switch(wL(l,0)){case"$":return"$";case"&":return t;case"`":return jL(e,0,n);case"'":return jL(e,a);case"<":u=i[jL(l,1,-1)];break;default:var s=+l;if(0===s)return c;if(s>o){var d=TL(s/10);return 0===d?c:d<=o?void 0===r[d-1]?wL(l,1):r[d-1]+wL(l,1):c}u=r[s-1]}return void 0===u?"":u}))},iN=NK,cN=ge("replace"),aN=Math.max,oN=Math.min,lN=QL([].concat),uN=QL([].push),sN=QL("".indexOf),dN=QL("".slice),hN="$0"==="a".replace(/./,"$0"),mN=!!/./[cN]&&""===/./[cN]("a","$0"),pN=!DL((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$<a>")}));EL("replace",(function(t,e,n){var r=mN?"$":"$0";return[function(t,n){var r=tN(this),i=null==t?void 0:nN(t,cN);return i?BL(i,t,r,n):BL(e,$L(r),t,n)},function(t,i){var c=OL(this),a=$L(t);if("string"==typeof i&&-1===sN(i,r)&&-1===sN(i,"$<")){var o=n(e,c,a,i);if(o.done)return o.value}var l=AL(i);l||(i=$L(i));var u=c.global;if(u){var s=c.unicode;c.lastIndex=0}for(var d=[];;){var h=iN(c,a);if(null===h)break;if(uN(d,h),!u)break;""===$L(h[0])&&(c.lastIndex=eN(a,qL(c.lastIndex),s))}for(var m,p="",b=0,Z=0;Z<d.length;Z++){for(var y=$L((h=d[Z])[0]),X=aN(oN(_L(h.index),a.length),0),f=[],I=1;I<h.length;I++)uN(f,void 0===(m=h[I])?m:String(m));var G=h.groups;if(l){var V=lN([y],f,X,a);void 0!==G&&uN(V,G);var W=$L(PL(i,void 0,V))}else W=rN(y,a,X,f,G,i);X>=b&&(p+=dN(a,b,X)+W,b=X+y.length)}return p+dN(a,b)}]}),!pN||!hN||mN);var bN=C,ZN=an,yN=ot,XN=kI,fN=ji,IN=Pt,GN=NK;VK("search",(function(t,e,n){return[function(e){var n=yN(this),r=null==e?void 0:IN(e,t);return r?bN(r,e,n):new RegExp(e)[t](fN(n))},function(t){var r=ZN(this),i=fN(t),c=n(e,r,i);if(c.done)return c.value;var a=r.lastIndex;XN(a,0)||(r.lastIndex=0);var o=GN(r,i);return XN(r.lastIndex,a)||(r.lastIndex=a),null===o?-1:o.index}]}));var VN=qo,WN=C,vN=O,gN=VK,SN=uS,YN=an,RN=ot,KN=TG,LN=vK,NN=Ur,JN=ji,xN=Pt,HN=Vc,kN=NK,CN=CY,UN=N,TN=WS.UNSUPPORTED_Y,wN=4294967295,FN=Math.min,jN=[].push,MN=vN(/./.exec),zN=vN(jN),PN=vN("".slice),BN=!UN((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]}));gN("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=JN(RN(this)),i=void 0===n?wN:n>>>0;if(0===i)return[];if(void 0===t)return[r];if(!SN(t))return WN(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=WN(CN,d,r))&&!((a=d.lastIndex)>s&&(zN(l,PN(r,s,c.index)),c.length>1&&c.index<r.length&&VN(jN,l,HN(c,1)),o=c[0].length,s=a,l.length>=i));)d.lastIndex===c.index&&d.lastIndex++;return s===r.length?!o&&MN(d,"")||zN(l,""):zN(l,PN(r,s)),l.length>i?HN(l,0,i):l}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:WN(e,this,t,n)}:e,[function(e,n){var i=RN(this),c=null==e?void 0:xN(e,t);return c?WN(c,e,i,n):WN(r,JN(i),e,n)},function(t,i){var c=YN(this),a=JN(t),o=n(r,c,a,i,r!==e);if(o.done)return o.value;var l=KN(c,RegExp),u=c.unicode,s=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(TN?"g":"y"),d=new l(TN?"^(?:"+c.source+")":c,s),h=void 0===i?wN:i>>>0;if(0===h)return[];if(0===a.length)return null===kN(d,a)?[a]:[];for(var m=0,p=0,b=[];p<a.length;){d.lastIndex=TN?0:p;var Z,y=kN(d,TN?PN(a,p):a);if(null===y||(Z=FN(NN(d.lastIndex+(TN?p:0)),a.length))===m)p=LN(a,p,u);else{if(zN(b,PN(a,m,p)),b.length===h)return b;for(var X=1;X<=y.length-1;X++)if(zN(b,y[X]),b.length===h)return b;p=m=Z}}return zN(b,PN(a,m)),b}]}),!BN,TN);var QN=Ri,EN=O,DN=L.f,ON=Ur,AN=ji,_N=xR,qN=ot,$N=kR,tJ=EN("".startsWith),eJ=EN("".slice),nJ=Math.min,rJ=$N("startsWith"),iJ=!rJ&&!!function(){var t=DN(String.prototype,"startsWith");return t&&!t.writable}();QN({target:"String",proto:!0,forced:!iJ&&!rJ},{startsWith:function(t){var e=AN(qN(this));_N(t);var n=ON(nJ(arguments.length>1?arguments[1]:void 0,e.length)),r=AN(t);return tJ?tJ(e,r,n):eJ(e,n,n+r.length)===r}});var cJ=Yn.PROPER,aJ=N,oJ=qy,lJ=function(t){return aJ((function(){return!!oJ[t]()||"​…᠎"!=="​…᠎"[t]()||cJ&&oJ[t].name!==t}))},uJ=aX.trim;Ri({target:"String",proto:!0,forced:lJ("trim")},{trim:function(){return uJ(this)}});var sJ=aX.end,dJ=lJ("trimEnd")?function(){return sJ(this)}:"".trimEnd;Ri({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==dJ},{trimRight:dJ});Ri({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==dJ},{trimEnd:dJ});var hJ=aX.start,mJ=lJ("trimStart")?function(){return hJ(this)}:"".trimStart;Ri({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==mJ},{trimLeft:mJ});Ri({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==mJ},{trimStart:mJ});var pJ=ot,bJ=ji,ZJ=/"/g,yJ=O("".replace),XJ=function(t,e,n,r){var i=bJ(pJ(t)),c="<"+e;return""!==n&&(c+=" "+n+'="'+yJ(bJ(r),ZJ,"&quot;")+'"'),c+">"+i+"</"+e+">"},fJ=N,IJ=function(t){return fJ((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))},GJ=XJ;Ri({target:"String",proto:!0,forced:IJ("anchor")},{anchor:function(t){return GJ(this,"a","name",t)}});var VJ=XJ;Ri({target:"String",proto:!0,forced:IJ("big")},{big:function(){return VJ(this,"big","","")}});var WJ=XJ;Ri({target:"String",proto:!0,forced:IJ("blink")},{blink:function(){return WJ(this,"blink","","")}});var vJ=XJ;Ri({target:"String",proto:!0,forced:IJ("bold")},{bold:function(){return vJ(this,"b","","")}});var gJ=XJ;Ri({target:"String",proto:!0,forced:IJ("fixed")},{fixed:function(){return gJ(this,"tt","","")}});var SJ=XJ;Ri({target:"String",proto:!0,forced:IJ("fontcolor")},{fontcolor:function(t){return SJ(this,"font","color",t)}});var YJ=XJ;Ri({target:"String",proto:!0,forced:IJ("fontsize")},{fontsize:function(t){return YJ(this,"font","size",t)}});var RJ=XJ;Ri({target:"String",proto:!0,forced:IJ("italics")},{italics:function(){return RJ(this,"i","","")}});var KJ=XJ;Ri({target:"String",proto:!0,forced:IJ("link")},{link:function(t){return KJ(this,"a","href",t)}});var LJ=XJ;Ri({target:"String",proto:!0,forced:IJ("small")},{small:function(){return LJ(this,"small","","")}});var NJ=XJ;Ri({target:"String",proto:!0,forced:IJ("strike")},{strike:function(){return NJ(this,"strike","","")}});var JJ=XJ;Ri({target:"String",proto:!0,forced:IJ("sub")},{sub:function(){return JJ(this,"sub","","")}});var xJ=XJ;Ri({target:"String",proto:!0,forced:IJ("sup")},{sup:function(){return xJ(this,"sup","","")}});var HJ,kJ,CJ,UJ={exports:{}},TJ=Cm,wJ=J,FJ=K,jJ=dt,MJ=mt,zJ=ue,PJ=Ti,BJ=Tt,QJ=In,EJ=vr,DJ=$e.f,OJ=Xt,AJ=ld,_J=Jd,qJ=ge,$J=pe,tx=FJ.Int8Array,ex=tx&&tx.prototype,nx=FJ.Uint8ClampedArray,rx=nx&&nx.prototype,ix=tx&&AJ(tx),cx=ex&&AJ(ex),ax=Object.prototype,ox=FJ.TypeError,lx=qJ("toStringTag"),ux=$J("TYPED_ARRAY_TAG"),sx=$J("TYPED_ARRAY_CONSTRUCTOR"),dx=TJ&&!!_J&&"Opera"!==PJ(FJ.opera),hx=!1,mx={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},px={BigInt64Array:8,BigUint64Array:8},bx=function(t){if(!MJ(t))return!1;var e=PJ(t);return zJ(mx,e)||zJ(px,e)};for(HJ in mx)(CJ=(kJ=FJ[HJ])&&kJ.prototype)?QJ(CJ,sx,kJ):dx=!1;for(HJ in px)(CJ=(kJ=FJ[HJ])&&kJ.prototype)&&QJ(CJ,sx,kJ);if((!dx||!jJ(ix)||ix===Function.prototype)&&(ix=function(){throw ox("Incorrect invocation")},dx))for(HJ in mx)FJ[HJ]&&_J(FJ[HJ],ix);if((!dx||!cx||cx===ax)&&(cx=ix.prototype,dx))for(HJ in mx)FJ[HJ]&&_J(FJ[HJ].prototype,cx);if(dx&&AJ(rx)!==cx&&_J(rx,cx),wJ&&!zJ(cx,lx))for(HJ in hx=!0,DJ(cx,lx,{get:function(){return MJ(this)?this[ux]:void 0}}),mx)FJ[HJ]&&QJ(FJ[HJ],ux,HJ);var Zx={NATIVE_ARRAY_BUFFER_VIEWS:dx,TYPED_ARRAY_CONSTRUCTOR:sx,TYPED_ARRAY_TAG:hx&&ux,aTypedArray:function(t){if(bx(t))return t;throw ox("Target is not a typed array")},aTypedArrayConstructor:function(t){if(jJ(t)&&(!_J||OJ(ix,t)))return t;throw ox(BJ(t)+" is not a typed array constructor")},exportTypedArrayMethod:function(t,e,n,r){if(wJ){if(n)for(var i in mx){var c=FJ[i];if(c&&zJ(c.prototype,t))try{delete c.prototype[t]}catch(n){try{c.prototype[t]=e}catch(t){}}}cx[t]&&!n||EJ(cx,t,n?e:dx&&ex[t]||e,r)}},exportTypedArrayStaticMethod:function(t,e,n){var r,i;if(wJ){if(_J){if(n)for(r in mx)if((i=FJ[r])&&zJ(i,t))try{delete i[t]}catch(t){}if(ix[t]&&!n)return;try{return EJ(ix,t,n?e:dx&&ix[t]||e)}catch(t){}}for(r in mx)!(i=FJ[r])||i[t]&&!n||EJ(i,t,e)}},isView:function(t){if(!MJ(t))return!1;var e=PJ(t);return"DataView"===e||zJ(mx,e)||zJ(px,e)},isTypedArray:bx,TypedArray:ix,TypedArrayPrototype:cx},yx=K,Xx=N,fx=Qs,Ix=Zx.NATIVE_ARRAY_BUFFER_VIEWS,Gx=yx.ArrayBuffer,Vx=yx.Int8Array,Wx=!Ix||!Xx((function(){Vx(1)}))||!Xx((function(){new Vx(-1)}))||!fx((function(t){new Vx,new Vx(null),new Vx(1.5),new Vx(t)}),!0)||Xx((function(){return 1!==new Vx(new Gx(2),1,void 0).length})),vx=Lr,gx=K.RangeError,Sx=function(t){var e=vx(t);if(e<0)throw gx("The argument can't be less than 0");return e},Yx=K.RangeError,Rx=function(t,e){var n=Sx(t);if(n%e)throw Yx("Wrong offset");return n},Kx=Ec,Lx=C,Nx=HG,Jx=ae,xx=wr,Hx=Ks,kx=Vs,Cx=ys,Ux=Zx.aTypedArrayConstructor,Tx=function(t){var e,n,r,i,c,a,o=Nx(this),l=Jx(t),u=arguments.length,s=u>1?arguments[1]:void 0,d=void 0!==s,h=kx(l);if(h&&!Cx(h))for(a=(c=Hx(l,h)).next,l=[];!(i=Lx(a,c)).done;)l.push(i.value);for(d&&u>2&&(s=Kx(s,arguments[2])),n=xx(l),r=new(Ux(o))(n),e=0;n>e;e++)r[e]=d?s(l[e],e):l[e];return r},wx=Ri,Fx=K,jx=C,Mx=J,zx=Wx,Px=Zx,Bx=$p,Qx=jm,Ex=z,Dx=In,Ox=TX,Ax=Ur,_x=Bm,qx=Rx,$x=Ue,tH=ue,eH=Ti,nH=mt,rH=Ct,iH=dc,cH=Xt,aH=Jd,oH=gr.f,lH=Tx,uH=ga.forEach,sH=Gm,dH=$e,hH=L,mH=pZ,pH=or.get,bH=or.set,ZH=dH.f,yH=hH.f,XH=Math.round,fH=Fx.RangeError,IH=Bx.ArrayBuffer,GH=IH.prototype,VH=Bx.DataView,WH=Px.NATIVE_ARRAY_BUFFER_VIEWS,vH=Px.TYPED_ARRAY_CONSTRUCTOR,gH=Px.TYPED_ARRAY_TAG,SH=Px.TypedArray,YH=Px.TypedArrayPrototype,RH=Px.aTypedArrayConstructor,KH=Px.isTypedArray,LH="BYTES_PER_ELEMENT",NH="Wrong length",JH=function(t,e){RH(t);for(var n=0,r=e.length,i=new t(r);r>n;)i[n]=e[n++];return i},xH=function(t,e){ZH(t,e,{get:function(){return pH(this)[e]}})},HH=function(t){var e;return cH(GH,t)||"ArrayBuffer"==(e=eH(t))||"SharedArrayBuffer"==e},kH=function(t,e){return KH(t)&&!rH(e)&&e in t&&Ox(+e)&&e>=0},CH=function(t,e){return e=$x(e),kH(t,e)?Ex(2,t[e]):yH(t,e)},UH=function(t,e,n){return e=$x(e),!(kH(t,e)&&nH(n)&&tH(n,"value"))||tH(n,"get")||tH(n,"set")||n.configurable||tH(n,"writable")&&!n.writable||tH(n,"enumerable")&&!n.enumerable?ZH(t,e,n):(t[e]=n.value,t)};Mx?(WH||(hH.f=CH,dH.f=UH,xH(YH,"buffer"),xH(YH,"byteOffset"),xH(YH,"byteLength"),xH(YH,"length")),wx({target:"Object",stat:!0,forced:!WH},{getOwnPropertyDescriptor:CH,defineProperty:UH}),UJ.exports=function(t,e,n){var r=t.match(/\d+$/)[0]/8,i=t+(n?"Clamped":"")+"Array",c="get"+t,a="set"+t,o=Fx[i],l=o,u=l&&l.prototype,s={},d=function(t,e){ZH(t,e,{get:function(){return function(t,e){var n=pH(t);return n.view[c](e*r+n.byteOffset,!0)}(this,e)},set:function(t){return function(t,e,i){var c=pH(t);n&&(i=(i=XH(i))<0?0:i>255?255:255&i),c.view[a](e*r+c.byteOffset,i,!0)}(this,e,t)},enumerable:!0})};WH?zx&&(l=e((function(t,e,n,i){return Qx(t,u),mH(nH(e)?HH(e)?void 0!==i?new o(e,qx(n,r),i):void 0!==n?new o(e,qx(n,r)):new o(e):KH(e)?JH(l,e):jx(lH,l,e):new o(_x(e)),t,l)})),aH&&aH(l,SH),uH(oH(o),(function(t){t in l||Dx(l,t,o[t])})),l.prototype=u):(l=e((function(t,e,n,i){Qx(t,u);var c,a,o,s=0,h=0;if(nH(e)){if(!HH(e))return KH(e)?JH(l,e):jx(lH,l,e);c=e,h=qx(n,r);var m=e.byteLength;if(void 0===i){if(m%r)throw fH(NH);if((a=m-h)<0)throw fH(NH)}else if((a=Ax(i)*r)+h>m)throw fH(NH);o=a/r}else o=_x(e),c=new IH(a=o*r);for(bH(t,{buffer:c,byteOffset:h,byteLength:a,length:o,view:new VH(c)});s<o;)d(t,s++)})),aH&&aH(l,SH),u=l.prototype=iH(YH)),u.constructor!==l&&Dx(u,"constructor",l),Dx(u,vH,l),gH&&Dx(u,gH,i);var h=l!=o;s[i]=l,wx({global:!0,constructor:!0,forced:h,sham:!WH},s),LH in l||Dx(l,LH,r),LH in u||Dx(u,LH,r),sH(i)}):UJ.exports=function(){},(0,UJ.exports)("Float32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Float64",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Int8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Int16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Int32",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Uint8",(function(t){return function(e,n,r){return t(this,e,n,r)}}),!0),(0,UJ.exports)("Uint16",(function(t){return function(e,n,r){return t(this,e,n,r)}})),(0,UJ.exports)("Uint32",(function(t){return function(e,n,r){return t(this,e,n,r)}}));var TH=Zx,wH=O(Vu),FH=TH.aTypedArray;(0,TH.exportTypedArrayMethod)("copyWithin",(function(t,e){return wH(FH(this),t,e,arguments.length>2?arguments[2]:void 0)}));var jH=ga.every,MH=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("every",(function(t){return jH(MH(this),t,arguments.length>1?arguments[1]:void 0)}));var zH=C,PH=xu,BH=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("fill",(function(t){var e=arguments.length;return zH(PH,BH(this),t,e>1?arguments[1]:void 0,e>2?arguments[2]:void 0)}));var QH=wr,EH=TG,DH=Zx.TYPED_ARRAY_CONSTRUCTOR,OH=Zx.aTypedArrayConstructor,AH=function(t){return OH(EH(t,t[DH]))},_H=function(t,e){for(var n=0,r=QH(e),i=new t(r);r>n;)i[n]=e[n++];return i},qH=AH,$H=ga.filter,tk=function(t,e){return _H(qH(t),e)},ek=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("filter",(function(t){var e=$H(ek(this),t,arguments.length>1?arguments[1]:void 0);return tk(this,e)}));var nk=ga.find,rk=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("find",(function(t){return nk(rk(this),t,arguments.length>1?arguments[1]:void 0)}));var ik=ga.findIndex,ck=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("findIndex",(function(t){return ik(ck(this),t,arguments.length>1?arguments[1]:void 0)}));var ak=ga.forEach,ok=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("forEach",(function(t){ak(ok(this),t,arguments.length>1?arguments[1]:void 0)})),(0,Zx.exportTypedArrayStaticMethod)("from",Tx,Wx);var lk=Pr.includes,uk=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("includes",(function(t){return lk(uk(this),t,arguments.length>1?arguments[1]:void 0)}));var sk=Pr.indexOf,dk=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("indexOf",(function(t){return sk(dk(this),t,arguments.length>1?arguments[1]:void 0)}));var hk=K,mk=N,pk=O,bk=Zx,Zk=uh,yk=ge("iterator"),Xk=hk.Uint8Array,fk=pk(Zk.values),Ik=pk(Zk.keys),Gk=pk(Zk.entries),Vk=bk.aTypedArray,Wk=bk.exportTypedArrayMethod,vk=Xk&&Xk.prototype,gk=!mk((function(){vk[yk].call([1])})),Sk=!!vk&&vk.values&&vk[yk]===vk.values&&"values"===vk.values.name,Yk=function(){return fk(Vk(this))};Wk("entries",(function(){return Gk(Vk(this))}),gk),Wk("keys",(function(){return Ik(Vk(this))}),gk),Wk("values",Yk,gk||!Sk,{name:"values"}),Wk(yk,Yk,gk||!Sk,{name:"values"});var Rk=Zx.aTypedArray,Kk=Zx.exportTypedArrayMethod,Lk=O([].join);Kk("join",(function(t){return Lk(Rk(this),t)}));var Nk=qo,Jk=st,xk=Lr,Hk=wr,kk=hh,Ck=Math.min,Uk=[].lastIndexOf,Tk=!!Uk&&1/[1].lastIndexOf(1,-0)<0,wk=kk("lastIndexOf"),Fk=Tk||!wk?function(t){if(Tk)return Nk(Uk,this,arguments)||0;var e=Jk(this),n=Hk(e),r=n-1;for(arguments.length>1&&(r=Ck(r,xk(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in e&&e[r]===t)return r||0;return-1}:Uk,jk=qo,Mk=Fk,zk=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("lastIndexOf",(function(t){var e=arguments.length;return jk(Mk,zk(this),e>1?[t,arguments[1]]:[t])}));var Pk=ga.map,Bk=AH,Qk=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("map",(function(t){return Pk(Qk(this),t,arguments.length>1?arguments[1]:void 0,(function(t,e){return new(Bk(t))(e)}))}));var Ek=Zx.aTypedArrayConstructor;(0,Zx.exportTypedArrayStaticMethod)("of",(function(){for(var t=0,e=arguments.length,n=new(Ek(this))(e);e>t;)n[t]=arguments[t++];return n}),Wx);var Dk=Mt,Ok=ae,Ak=ct,_k=wr,qk=K.TypeError,$k=function(t){return function(e,n,r,i){Dk(n);var c=Ok(e),a=Ak(c),o=_k(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}},tC={left:$k(!1),right:$k(!0)},eC=tC.left,nC=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("reduce",(function(t){var e=arguments.length;return eC(nC(this),t,e,e>1?arguments[1]:void 0)}));var rC=tC.right,iC=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("reduceRight",(function(t){var e=arguments.length;return rC(iC(this),t,e,e>1?arguments[1]:void 0)}));var cC=Zx.aTypedArray,aC=Zx.exportTypedArrayMethod,oC=Math.floor;aC("reverse",(function(){for(var t,e=this,n=cC(e).length,r=oC(n/2),i=0;i<r;)t=e[i],e[i++]=e[--n],e[n]=t;return e}));var lC=K,uC=C,sC=Zx,dC=wr,hC=Rx,mC=ae,pC=N,bC=lC.RangeError,ZC=lC.Int8Array,yC=ZC&&ZC.prototype,XC=yC&&yC.set,fC=sC.aTypedArray,IC=sC.exportTypedArrayMethod,GC=!pC((function(){var t=new Uint8ClampedArray(2);return uC(XC,t,{length:1,0:3},1),3!==t[1]})),VC=GC&&sC.NATIVE_ARRAY_BUFFER_VIEWS&&pC((function(){var t=new ZC(2);return t.set(1),t.set("2",1),0!==t[0]||2!==t[1]}));IC("set",(function(t){fC(this);var e=hC(arguments.length>1?arguments[1]:void 0,1),n=mC(t);if(GC)return uC(XC,this,n,e);var r=this.length,i=dC(n),c=0;if(i+e>r)throw bC("Wrong length");for(;c<i;)this[e+c]=n[c++]}),!GC||VC);var WC=AH,vC=$o,gC=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("slice",(function(t,e){for(var n=vC(gC(this),t,e),r=WC(this),i=0,c=n.length,a=new r(c);c>i;)a[i]=n[i++];return a}),N((function(){new Int8Array(1).slice()})));var SC=ga.some,YC=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("some",(function(t){return SC(YC(this),t,arguments.length>1?arguments[1]:void 0)}));var RC=O,KC=N,LC=Mt,NC=Bh,JC=Eh,xC=Dh,HC=St,kC=Ah,CC=Zx.aTypedArray,UC=Zx.exportTypedArrayMethod,TC=K.Uint16Array,wC=TC&&RC(TC.prototype.sort),FC=!(!wC||KC((function(){wC(new TC(2),null)}))&&KC((function(){wC(new TC(2),{})}))),jC=!!wC&&!KC((function(){if(HC)return HC<74;if(JC)return JC<67;if(xC)return!0;if(kC)return kC<602;var t,e,n=new TC(516),r=Array(516);for(t=0;t<516;t++)e=t%4,n[t]=515-t,r[t]=t-2*e+3;for(wC(n,(function(t,e){return(t/4|0)-(e/4|0)})),t=0;t<516;t++)if(n[t]!==r[t])return!0}));UC("sort",(function(t){return void 0!==t&&LC(t),jC?wC(this,t):NC(CC(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))}),!jC||FC);var MC=Ur,zC=Hr,PC=AH,BC=Zx.aTypedArray;(0,Zx.exportTypedArrayMethod)("subarray",(function(t,e){var n=BC(this),r=n.length,i=zC(t,r);return new(PC(n))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,MC((void 0===e?r:zC(e,r))-i))}));var QC=qo,EC=Zx,DC=N,OC=$o,AC=K.Int8Array,_C=EC.aTypedArray,qC=EC.exportTypedArrayMethod,$C=[].toLocaleString,tU=!!AC&&DC((function(){$C.call(new AC(1))}));qC("toLocaleString",(function(){return QC($C,tU?OC(_C(this)):_C(this),OC(arguments))}),DC((function(){return[1,2].toLocaleString()!=new AC([1,2]).toLocaleString()}))||!DC((function(){AC.prototype.toLocaleString.call([1,2])})));var eU=Zx.exportTypedArrayMethod,nU=N,rU=O,iU=K.Uint8Array,cU=iU&&iU.prototype||{},aU=[].toString,oU=rU([].join);nU((function(){aU.call({})}))&&(aU=function(){return oU(this)});var lU=cU.toString!=aU;eU("toString",aU,lU);var uU=O,sU=Tm,dU=Yb.exports.getWeakData,hU=an,mU=mt,pU=jm,bU=sZ,ZU=ue,yU=or.set,XU=or.getterFor,fU=ga.find,IU=ga.findIndex,GU=uU([].splice),VU=0,WU=function(t){return t.frozen||(t.frozen=new vU)},vU=function(){this.entries=[]},gU=function(t,e){return fU(t.entries,(function(t){return t[0]===e}))};vU.prototype={get:function(t){var e=gU(this,t);if(e)return e[1]},has:function(t){return!!gU(this,t)},set:function(t,e){var n=gU(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=IU(this.entries,(function(e){return e[0]===t}));return~e&&GU(this.entries,e,1),!!~e}};var SU,YU={getConstructor:function(t,e,n,r){var i=t((function(t,i){pU(t,c),yU(t,{type:e,id:VU++,frozen:void 0}),null!=i&&bU(i,t[r],{that:t,AS_ENTRIES:n})})),c=i.prototype,a=XU(e),o=function(t,e,n){var r=a(t),i=dU(hU(e),!0);return!0===i?WU(r).set(e,n):i[r.id]=n,t};return sU(c,{delete:function(t){var e=a(this);if(!mU(t))return!1;var n=dU(t);return!0===n?WU(e).delete(t):n&&ZU(n,e.id)&&delete n[e.id]},has:function(t){var e=a(this);if(!mU(t))return!1;var n=dU(t);return!0===n?WU(e).has(t):n&&ZU(n,e.id)}}),sU(c,n?{get:function(t){var e=a(this);if(mU(t)){var n=dU(t);return!0===n?WU(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}},RU=K,KU=O,LU=Tm,NU=Yb.exports,JU=KZ,xU=YU,HU=mt,kU=Hb,CU=or.enforce,UU=Tn,TU=!RU.ActiveXObject&&"ActiveXObject"in RU,wU=function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},FU=JU("WeakMap",wU,xU);if(UU&&TU){SU=xU.getConstructor(wU,"WeakMap",!0),NU.enable();var jU=FU.prototype,MU=KU(jU.delete),zU=KU(jU.has),PU=KU(jU.get),BU=KU(jU.set);LU(jU,{delete:function(t){if(HU(t)&&!kU(t)){var e=CU(this);return e.frozen||(e.frozen=new SU),MU(this,t)||e.frozen.delete(t)}return MU(this,t)},has:function(t){if(HU(t)&&!kU(t)){var e=CU(this);return e.frozen||(e.frozen=new SU),zU(this,t)||e.frozen.has(t)}return zU(this,t)},get:function(t){if(HU(t)&&!kU(t)){var e=CU(this);return e.frozen||(e.frozen=new SU),zU(this,t)?PU(this,t):e.frozen.get(t)}return PU(this,t)},set:function(t,e){if(HU(t)&&!kU(t)){var n=CU(this);n.frozen||(n.frozen=new SU),zU(this,t)?BU(this,t,e):n.frozen.set(t,e)}else BU(this,t,e);return this}})}KZ("WeakSet",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),YU);var QU={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},EU=je("span").classList,DU=EU&&EU.constructor&&EU.constructor.prototype,OU=DU===Object.prototype?void 0:DU,AU=ga.forEach,_U=hh("forEach")?[].forEach:function(t){return AU(this,t,arguments.length>1?arguments[1]:void 0)},qU=K,$U=QU,tT=OU,eT=_U,nT=In,rT=function(t){if(t&&t.forEach!==eT)try{nT(t,"forEach",eT)}catch(e){t.forEach=eT}};for(var iT in $U)$U[iT]&&rT(qU[iT]&&qU[iT].prototype);rT(tT);var cT=K,aT=QU,oT=OU,lT=uh,uT=In,sT=ge,dT=sT("iterator"),hT=sT("toStringTag"),mT=lT.values,pT=function(t,e){if(t){if(t[dT]!==mT)try{uT(t,dT,mT)}catch(e){t[dT]=mT}if(t[hT]||uT(t,hT,e),aT[e])for(var n in lT)if(t[n]!==lT[n])try{uT(t,n,lT[n])}catch(e){t[n]=lT[n]}}};for(var bT in aT)pT(cT[bT]&&cT[bT].prototype,bT);pT(oT,"DOMTokenList");var ZT=VV.clear;Ri({global:!0,bind:!0,enumerable:!0,forced:K.clearImmediate!==ZT},{clearImmediate:ZT});var yT=VV.set;Ri({global:!0,bind:!0,enumerable:!0,forced:K.setImmediate!==yT},{setImmediate:yT});var XT=Ri,fT=FV,IT=Mt,GT=FG,VT=LG,WT=K.process;XT({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(t){GT(arguments.length,1),IT(t);var e=VT&&WT.domain;fT(e?e.bind(t):t)}});var vT=N,gT=ge("iterator"),ST=!vT((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[gT]||"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})),YT=O,RT=2147483647,KT=/[^\0-\u007E]/,LT=/[.\u3002\uFF0E\uFF61]/g,NT="Overflow: input needs wider integers to process",JT=K.RangeError,xT=YT(LT.exec),HT=Math.floor,kT=String.fromCharCode,CT=YT("".charCodeAt),UT=YT([].join),TT=YT([].push),wT=YT("".replace),FT=YT("".split),jT=YT("".toLowerCase),MT=function(t){return t+22+75*(t<26)},zT=function(t,e,n){var r=0;for(t=n?HT(t/700):t>>1,t+=HT(t/e);t>455;)t=HT(t/35),r+=36;return HT(r+36*t/(t+38))},PT=function(t){var e=[];t=function(t){for(var e=[],n=0,r=t.length;n<r;){var i=CT(t,n++);if(i>=55296&&i<=56319&&n<r){var c=CT(t,n++);56320==(64512&c)?TT(e,((1023&i)<<10)+(1023&c)+65536):(TT(e,i),n--)}else TT(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&&TT(e,kT(r));var l=e.length,u=l;for(l&&TT(e,"-");u<i;){var s=RT;for(n=0;n<t.length;n++)(r=t[n])>=c&&r<s&&(s=r);var d=u+1;if(s-c>HT((RT-a)/d))throw JT(NT);for(a+=(s-c)*d,c=s,n=0;n<t.length;n++){if((r=t[n])<c&&++a>RT)throw JT(NT);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;TT(e,kT(MT(p+b%Z))),h=HT(b/Z),m+=36}TT(e,kT(MT(h))),o=zT(a,d,u==l),a=0,u++}}a++,c++}return UT(e,"")},BT=Ri,QT=K,ET=C,DT=O,OT=J,AT=ST,_T=vr,qT=Tm,$T=zc,tw=Wd,ew=or,nw=jm,rw=dt,iw=ue,cw=Ec,aw=Ti,ow=an,lw=mt,uw=ji,sw=dc,dw=z,hw=Ks,mw=Vs,pw=FG,bw=Bh,Zw=ge("iterator"),yw="URLSearchParams",Xw="URLSearchParamsIterator",fw=ew.set,Iw=ew.getterFor(yw),Gw=ew.getterFor(Xw),Vw=Object.getOwnPropertyDescriptor,Ww=function(t){if(!OT)return QT[t];var e=Vw(QT,t);return e&&e.value},vw=Ww("fetch"),gw=Ww("Request"),Sw=Ww("Headers"),Yw=gw&&gw.prototype,Rw=Sw&&Sw.prototype,Kw=QT.RegExp,Lw=QT.TypeError,Nw=QT.decodeURIComponent,Jw=QT.encodeURIComponent,xw=DT("".charAt),Hw=DT([].join),kw=DT([].push),Cw=DT("".replace),Uw=DT([].shift),Tw=DT([].splice),ww=DT("".split),Fw=DT("".slice),jw=/\+/g,Mw=Array(4),zw=function(t){return Mw[t-1]||(Mw[t-1]=Kw("((?:%[\\da-f]{2}){"+t+"})","gi"))},Pw=function(t){try{return Nw(t)}catch(e){return t}},Bw=function(t){var e=Cw(t,jw," "),n=4;try{return Nw(e)}catch(t){for(;n;)e=Cw(e,zw(n--),Pw);return e}},Qw=/[!'()~]|%20/g,Ew={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},Dw=function(t){return Ew[t]},Ow=function(t){return Cw(Jw(t),Qw,Dw)},Aw=tw((function(t,e){fw(this,{type:Xw,iterator:hw(Iw(t).entries),kind:e})}),"Iterator",(function(){var t=Gw(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),_w=function(t){this.entries=[],this.url=null,void 0!==t&&(lw(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===xw(t,0)?Fw(t,1):t:uw(t)))};_w.prototype={type:yw,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,r,i,c,a,o,l=mw(t);if(l)for(n=(e=hw(t,l)).next;!(r=ET(n,e)).done;){if(c=(i=hw(ow(r.value))).next,(a=ET(c,i)).done||(o=ET(c,i)).done||!ET(c,i).done)throw Lw("Expected sequence with length 2");kw(this.entries,{key:uw(a.value),value:uw(o.value)})}else for(var u in t)iw(t,u)&&kw(this.entries,{key:u,value:uw(t[u])})},parseQuery:function(t){if(t)for(var e,n,r=ww(t,"&"),i=0;i<r.length;)(e=r[i++]).length&&(n=ww(e,"="),kw(this.entries,{key:Bw(Uw(n)),value:Bw(Hw(n,"="))}))},serialize:function(){for(var t,e=this.entries,n=[],r=0;r<e.length;)t=e[r++],kw(n,Ow(t.key)+"="+Ow(t.value));return Hw(n,"&")},update:function(){this.entries.length=0,this.parseQuery(this.url.query)},updateURL:function(){this.url&&this.url.update()}};var qw=function(){nw(this,$w);var t=arguments.length>0?arguments[0]:void 0;fw(this,new _w(t))},$w=qw.prototype;if(qT($w,{append:function(t,e){pw(arguments.length,2);var n=Iw(this);kw(n.entries,{key:uw(t),value:uw(e)}),n.updateURL()},delete:function(t){pw(arguments.length,1);for(var e=Iw(this),n=e.entries,r=uw(t),i=0;i<n.length;)n[i].key===r?Tw(n,i,1):i++;e.updateURL()},get:function(t){pw(arguments.length,1);for(var e=Iw(this).entries,n=uw(t),r=0;r<e.length;r++)if(e[r].key===n)return e[r].value;return null},getAll:function(t){pw(arguments.length,1);for(var e=Iw(this).entries,n=uw(t),r=[],i=0;i<e.length;i++)e[i].key===n&&kw(r,e[i].value);return r},has:function(t){pw(arguments.length,1);for(var e=Iw(this).entries,n=uw(t),r=0;r<e.length;)if(e[r++].key===n)return!0;return!1},set:function(t,e){pw(arguments.length,1);for(var n,r=Iw(this),i=r.entries,c=!1,a=uw(t),o=uw(e),l=0;l<i.length;l++)(n=i[l]).key===a&&(c?Tw(i,l--,1):(c=!0,n.value=o));c||kw(i,{key:a,value:o}),r.updateURL()},sort:function(){var t=Iw(this);bw(t.entries,(function(t,e){return t.key>e.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=Iw(this).entries,r=cw(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 Aw(this,"keys")},values:function(){return new Aw(this,"values")},entries:function(){return new Aw(this,"entries")}},{enumerable:!0}),_T($w,Zw,$w.entries,{name:"entries"}),_T($w,"toString",(function(){return Iw(this).serialize()}),{enumerable:!0}),$T(qw,yw),BT({global:!0,constructor:!0,forced:!AT},{URLSearchParams:qw}),!AT&&rw(Sw)){var tF=DT(Rw.has),eF=DT(Rw.set),nF=function(t){if(lw(t)){var e,n=t.body;if(aw(n)===yw)return e=t.headers?new Sw(t.headers):new Sw,tF(e,"content-type")||eF(e,"content-type","application/x-www-form-urlencoded;charset=UTF-8"),sw(t,{body:dw(0,uw(n)),headers:dw(0,e)})}return t};if(rw(vw)&&BT({global:!0,enumerable:!0,dontCallGetSet:!0,forced:!0},{fetch:function(t){return vw(t,arguments.length>1?nF(arguments[1]):{})}}),rw(gw)){var rF=function(t){return nw(this,Yw),new gw(t,arguments.length>1?nF(arguments[1]):{})};Yw.constructor=rF,rF.prototype=Yw,BT({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:rF})}}var iF,cF=Ri,aF=J,oF=ST,lF=K,uF=Ec,sF=O,dF=vr,hF=wY,mF=jm,pF=ue,bF=Bf,ZF=js,yF=Vc,XF=RR.codeAt,fF=function(t){var e,n,r=[],i=FT(wT(jT(t),LT,"."),".");for(e=0;e<i.length;e++)n=i[e],TT(r,xT(KT,n)?"xn--"+PT(n):n);return UT(r,".")},IF=ji,GF=zc,VF=FG,WF={URLSearchParams:qw,getState:Iw},vF=or,gF=vF.set,SF=vF.getterFor("URL"),YF=WF.URLSearchParams,RF=WF.getState,KF=lF.URL,LF=lF.TypeError,NF=lF.parseInt,JF=Math.floor,xF=Math.pow,HF=sF("".charAt),kF=sF(/./.exec),CF=sF([].join),UF=sF(1..toString),TF=sF([].pop),wF=sF([].push),FF=sF("".replace),jF=sF([].shift),MF=sF("".split),zF=sF("".slice),PF=sF("".toLowerCase),BF=sF([].unshift),QF="Invalid scheme",EF="Invalid host",DF="Invalid port",OF=/[a-z]/i,AF=/[\d+-.a-z]/i,_F=/\d/,qF=/^0x/i,$F=/^[0-7]+$/,tj=/^\d+$/,ej=/^[\da-f]+$/i,nj=/[\0\t\n\r #%/:<>?@[\\\]^|]/,rj=/[\0\t\n\r #/:<>?@[\\\]^|]/,ij=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,cj=/[\t\n\r]/g,aj=function(t){var e,n,r,i;if("number"==typeof t){for(e=[],n=0;n<4;n++)BF(e,t%256),t=JF(t/256);return CF(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+=UF(t[n],16),n<7&&(e+=":")));return"["+e+"]"}return t},oj={},lj=bF({},oj,{" ":1,'"':1,"<":1,">":1,"`":1}),uj=bF({},lj,{"#":1,"?":1,"{":1,"}":1}),sj=bF({},uj,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),dj=function(t,e){var n=XF(t,0);return n>32&&n<127&&!pF(e,t)?t:encodeURIComponent(t)},hj={ftp:21,file:null,http:80,https:443,ws:80,wss:443},mj=function(t,e){var n;return 2==t.length&&kF(OF,HF(t,0))&&(":"==(n=HF(t,1))||!e&&"|"==n)},pj=function(t){var e;return t.length>1&&mj(zF(t,0,2))&&(2==t.length||"/"===(e=HF(t,2))||"\\"===e||"?"===e||"#"===e)},bj=function(t){return"."===t||"%2e"===PF(t)},Zj={},yj={},Xj={},fj={},Ij={},Gj={},Vj={},Wj={},vj={},gj={},Sj={},Yj={},Rj={},Kj={},Lj={},Nj={},Jj={},xj={},Hj={},kj={},Cj={},Uj=function t(e,n,r){var i,c,a,o=IF(e);if(n){if(c=this.parse(o))throw LF(c);this.searchParams=null}else{if(void 0!==r&&(i=new t(r,!0)),c=this.parse(o,null,i))throw LF(c);(a=RF(new YF)).bindURL(this),this.searchParams=a}};Uj.prototype={type:"URL",parse:function(t,e,n){var r,i,c,a,o,l=this,u=e||Zj,s=0,d="",h=!1,m=!1,p=!1;for(t=IF(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=FF(t,ij,"")),t=FF(t,cj,""),r=ZF(t);s<=r.length;){switch(i=r[s],u){case Zj:if(!i||!kF(OF,i)){if(e)return QF;u=Xj;continue}d+=PF(i),u=yj;break;case yj:if(i&&(kF(AF,i)||"+"==i||"-"==i||"."==i))d+=PF(i);else{if(":"!=i){if(e)return QF;d="",u=Xj,s=0;continue}if(e&&(l.isSpecial()!=pF(hj,d)||"file"==d&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=d,e)return void(l.isSpecial()&&hj[l.scheme]==l.port&&(l.port=null));d="","file"==l.scheme?u=Kj:l.isSpecial()&&n&&n.scheme==l.scheme?u=fj:l.isSpecial()?u=Wj:"/"==r[s+1]?(u=Ij,s++):(l.cannotBeABaseURL=!0,wF(l.path,""),u=Hj)}break;case Xj:if(!n||n.cannotBeABaseURL&&"#"!=i)return QF;if(n.cannotBeABaseURL&&"#"==i){l.scheme=n.scheme,l.path=yF(n.path),l.query=n.query,l.fragment="",l.cannotBeABaseURL=!0,u=Cj;break}u="file"==n.scheme?Kj:Gj;continue;case fj:if("/"!=i||"/"!=r[s+1]){u=Gj;continue}u=vj,s++;break;case Ij:if("/"==i){u=gj;break}u=xj;continue;case Gj:if(l.scheme=n.scheme,i==iF)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=yF(n.path),l.query=n.query;else if("/"==i||"\\"==i&&l.isSpecial())u=Vj;else if("?"==i)l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=yF(n.path),l.query="",u=kj;else{if("#"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=yF(n.path),l.path.length--,u=xj;continue}l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,l.path=yF(n.path),l.query=n.query,l.fragment="",u=Cj}break;case Vj:if(!l.isSpecial()||"/"!=i&&"\\"!=i){if("/"!=i){l.username=n.username,l.password=n.password,l.host=n.host,l.port=n.port,u=xj;continue}u=gj}else u=vj;break;case Wj:if(u=vj,"/"!=i||"/"!=HF(d,s+1))continue;s++;break;case vj:if("/"!=i&&"\\"!=i){u=gj;continue}break;case gj:if("@"==i){h&&(d="%40"+d),h=!0,c=ZF(d);for(var b=0;b<c.length;b++){var Z=c[b];if(":"!=Z||p){var y=dj(Z,sj);p?l.password+=y:l.username+=y}else p=!0}d=""}else if(i==iF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(h&&""==d)return"Invalid authority";s-=ZF(d).length+1,d="",u=Sj}else d+=i;break;case Sj:case Yj:if(e&&"file"==l.scheme){u=Nj;continue}if(":"!=i||m){if(i==iF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()){if(l.isSpecial()&&""==d)return EF;if(e&&""==d&&(l.includesCredentials()||null!==l.port))return;if(a=l.parseHost(d))return a;if(d="",u=Jj,e)return;continue}"["==i?m=!0:"]"==i&&(m=!1),d+=i}else{if(""==d)return EF;if(a=l.parseHost(d))return a;if(d="",u=Rj,e==Yj)return}break;case Rj:if(!kF(_F,i)){if(i==iF||"/"==i||"?"==i||"#"==i||"\\"==i&&l.isSpecial()||e){if(""!=d){var X=NF(d,10);if(X>65535)return DF;l.port=l.isSpecial()&&X===hj[l.scheme]?null:X,d=""}if(e)return;u=Jj;continue}return DF}d+=i;break;case Kj:if(l.scheme="file","/"==i||"\\"==i)u=Lj;else{if(!n||"file"!=n.scheme){u=xj;continue}if(i==iF)l.host=n.host,l.path=yF(n.path),l.query=n.query;else if("?"==i)l.host=n.host,l.path=yF(n.path),l.query="",u=kj;else{if("#"!=i){pj(CF(yF(r,s),""))||(l.host=n.host,l.path=yF(n.path),l.shortenPath()),u=xj;continue}l.host=n.host,l.path=yF(n.path),l.query=n.query,l.fragment="",u=Cj}}break;case Lj:if("/"==i||"\\"==i){u=Nj;break}n&&"file"==n.scheme&&!pj(CF(yF(r,s),""))&&(mj(n.path[0],!0)?wF(l.path,n.path[0]):l.host=n.host),u=xj;continue;case Nj:if(i==iF||"/"==i||"\\"==i||"?"==i||"#"==i){if(!e&&mj(d))u=xj;else if(""==d){if(l.host="",e)return;u=Jj}else{if(a=l.parseHost(d))return a;if("localhost"==l.host&&(l.host=""),e)return;d="",u=Jj}continue}d+=i;break;case Jj:if(l.isSpecial()){if(u=xj,"/"!=i&&"\\"!=i)continue}else if(e||"?"!=i)if(e||"#"!=i){if(i!=iF&&(u=xj,"/"!=i))continue}else l.fragment="",u=Cj;else l.query="",u=kj;break;case xj:if(i==iF||"/"==i||"\\"==i&&l.isSpecial()||!e&&("?"==i||"#"==i)){if(".."===(o=PF(o=d))||"%2e."===o||".%2e"===o||"%2e%2e"===o?(l.shortenPath(),"/"==i||"\\"==i&&l.isSpecial()||wF(l.path,"")):bj(d)?"/"==i||"\\"==i&&l.isSpecial()||wF(l.path,""):("file"==l.scheme&&!l.path.length&&mj(d)&&(l.host&&(l.host=""),d=HF(d,0)+":"),wF(l.path,d)),d="","file"==l.scheme&&(i==iF||"?"==i||"#"==i))for(;l.path.length>1&&""===l.path[0];)jF(l.path);"?"==i?(l.query="",u=kj):"#"==i&&(l.fragment="",u=Cj)}else d+=dj(i,uj);break;case Hj:"?"==i?(l.query="",u=kj):"#"==i?(l.fragment="",u=Cj):i!=iF&&(l.path[0]+=dj(i,oj));break;case kj:e||"#"!=i?i!=iF&&("'"==i&&l.isSpecial()?l.query+="%27":l.query+="#"==i?"%23":dj(i,oj)):(l.fragment="",u=Cj);break;case Cj:i!=iF&&(l.fragment+=dj(i,lj))}s++}},parseHost:function(t){var e,n,r;if("["==HF(t,0)){if("]"!=HF(t,t.length-1))return EF;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 HF(t,d)};if(":"==h()){if(":"!=HF(t,1))return;d+=2,s=++u}for(;h();){if(8==u)return;if(":"!=h()){for(e=n=0;n<4&&kF(ej,h());)e=16*e+NF(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(_F,h()))return;for(;kF(_F,h());){if(c=NF(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}(zF(t,1,-1)),!e)return EF;this.host=e}else if(this.isSpecial()){if(t=fF(t),kF(nj,t))return EF;if(e=function(t){var e,n,r,i,c,a,o,l=MF(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"==HF(i,0)&&(c=kF(qF,i)?16:8,i=zF(i,8==c?1:2)),""===i)a=0;else{if(!kF(10==c?tj:8==c?$F:ej,i))return t;a=NF(i,c)}wF(n,a)}for(r=0;r<e;r++)if(a=n[r],r==e-1){if(a>=xF(256,5-e))return null}else if(a>255)return null;for(o=TF(n),r=0;r<n.length;r++)o+=n[r]*xF(256,3-r);return o}(t),null===e)return EF;this.host=e}else{if(kF(rj,t))return EF;for(e="",n=ZF(t),r=0;r<n.length;r++)e+=dj(n[r],oj);this.host=e}},cannotHaveUsernamePasswordPort:function(){return!this.host||this.cannotBeABaseURL||"file"==this.scheme},includesCredentials:function(){return""!=this.username||""!=this.password},isSpecial:function(){return pF(hj,this.scheme)},shortenPath:function(){var t=this.path,e=t.length;!e||"file"==this.scheme&&1==e&&mj(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+=aj(i),null!==c&&(u+=":"+c)):"file"==e&&(u+="//"),u+=t.cannotBeABaseURL?a[0]:a.length?"/"+CF(a,"/"):"",null!==o&&(u+="?"+o),null!==l&&(u+="#"+l),u},setHref:function(t){var e=this.parse(t);if(e)throw LF(e);this.searchParams.update()},getOrigin:function(){var t=this.scheme,e=this.port;if("blob"==t)try{return new Tj(t.path[0]).origin}catch(t){return"null"}return"file"!=t&&this.isSpecial()?t+"://"+aj(this.host)+(null!==e?":"+e:""):"null"},getProtocol:function(){return this.scheme+":"},setProtocol:function(t){this.parse(IF(t)+":",Zj)},getUsername:function(){return this.username},setUsername:function(t){var e=ZF(IF(t));if(!this.cannotHaveUsernamePasswordPort()){this.username="";for(var n=0;n<e.length;n++)this.username+=dj(e[n],sj)}},getPassword:function(){return this.password},setPassword:function(t){var e=ZF(IF(t));if(!this.cannotHaveUsernamePasswordPort()){this.password="";for(var n=0;n<e.length;n++)this.password+=dj(e[n],sj)}},getHost:function(){var t=this.host,e=this.port;return null===t?"":null===e?aj(t):aj(t)+":"+e},setHost:function(t){this.cannotBeABaseURL||this.parse(t,Sj)},getHostname:function(){var t=this.host;return null===t?"":aj(t)},setHostname:function(t){this.cannotBeABaseURL||this.parse(t,Yj)},getPort:function(){var t=this.port;return null===t?"":IF(t)},setPort:function(t){this.cannotHaveUsernamePasswordPort()||(""==(t=IF(t))?this.port=null:this.parse(t,Rj))},getPathname:function(){var t=this.path;return this.cannotBeABaseURL?t[0]:t.length?"/"+CF(t,"/"):""},setPathname:function(t){this.cannotBeABaseURL||(this.path=[],this.parse(t,Jj))},getSearch:function(){var t=this.query;return t?"?"+t:""},setSearch:function(t){""==(t=IF(t))?this.query=null:("?"==HF(t,0)&&(t=zF(t,1)),this.query="",this.parse(t,kj)),this.searchParams.update()},getSearchParams:function(){return this.searchParams.facade},getHash:function(){var t=this.fragment;return t?"#"+t:""},setHash:function(t){""!=(t=IF(t))?("#"==HF(t,0)&&(t=zF(t,1)),this.fragment="",this.parse(t,Cj)):this.fragment=null},update:function(){this.query=this.searchParams.serialize()||null}};var Tj=function(t){var e=mF(this,wj),n=VF(arguments.length,1)>1?arguments[1]:void 0,r=gF(e,new Uj(t,!1,n));aF||(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())},wj=Tj.prototype,Fj=function(t,e){return{get:function(){return SF(this)[t]()},set:e&&function(t){return SF(this)[e](t)},configurable:!0,enumerable:!0}};if(aF&&(hF(wj,"href",Fj("serialize","setHref")),hF(wj,"origin",Fj("getOrigin")),hF(wj,"protocol",Fj("getProtocol","setProtocol")),hF(wj,"username",Fj("getUsername","setUsername")),hF(wj,"password",Fj("getPassword","setPassword")),hF(wj,"host",Fj("getHost","setHost")),hF(wj,"hostname",Fj("getHostname","setHostname")),hF(wj,"port",Fj("getPort","setPort")),hF(wj,"pathname",Fj("getPathname","setPathname")),hF(wj,"search",Fj("getSearch","setSearch")),hF(wj,"searchParams",Fj("getSearchParams")),hF(wj,"hash",Fj("getHash","setHash"))),dF(wj,"toJSON",(function(){return SF(this).serialize()}),{enumerable:!0}),dF(wj,"toString",(function(){return SF(this).serialize()}),{enumerable:!0}),KF){var jj=KF.createObjectURL,Mj=KF.revokeObjectURL;jj&&dF(Tj,"createObjectURL",uF(jj,KF)),Mj&&dF(Tj,"revokeObjectURL",uF(Mj,KF))}GF(Tj,"URL"),cF({global:!0,constructor:!0,forced:!oF,sham:!aF},{URL:Tj});var zj=C;function Pj(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 Bj(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())}))}Ri({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return zj(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 Qj,Ej="refresh_token_timer",Dj=["RS256","RS512","RS384","PS256"],Oj="code",Aj="session_state",_j="sign_out_url",qj="sign_out_success",$j="state";!function(t){t.Include="include",t.SameOrigin="same-origin",t.Omit="omit"}(Qj||(Qj={}));var tM=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)})),eM=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}();eM.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 nM=function(){function t(e,n){var r=this;s(this,t),this._dataLayer=e,this._config=function(){return Bj(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 Bj(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 Bj(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 Bj(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 tM("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 Bj(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 tM("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 Bj(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 tM("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?Qj.Include:Qj.SameOrigin});case 11:i=e.sent,e.next=17;break;case 14:throw e.prev=14,e.t0=e.catch(8),new tM("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=tM,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=eM.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},eM.filterClaimsFromIDTokenPayload(c))}},{key:"replaceCustomGrantTemplateTags",value:function(t,e){var n;return Bj(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 Bj(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 Bj(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=tM,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 Bj(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 Bj(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}(),rM=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 tM("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,Dj,n,r,i,c).then((function(t){return t?Promise.resolve(!0):Promise.reject(new tM("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 tM("JS-CRYPTO_UTILS-IVIT-IV02","JWT NBF CLAIM VALIDATION FAILED","JWT NBF claim validation has been failed")):Promise.reject(new tM("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 tM("JS-CRYPTO_UTIL-DIT-IV01","Decoding ID token failed.",t)}}}]),t}(),iM=function(){function t(e,n){var r=this;s(this,t),this._cryptoUtils=n,this._cryptoHelper=new rM(n),this._authenticationHelper=new nM(e,this._cryptoHelper),this._dataLayer=e,this._config=function(){return Bj(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 Bj(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 Bj(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 tM("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",eM.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 Bj(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 tM("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(eM.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(eM.extractPKCEKeyFromStateParam(n),r);case 29:return i.prev=29,i.next=32,fetch(c,{body:l.join("&"),credentials:o.sendCookiesInRequests?Qj.Include:Qj.SameOrigin,headers:new Headers(eM.getTokenRequestHeaders()),method:"POST"});case 32:s=i.sent,i.next=38;break;case 35:throw i.prev=35,i.t6=i.catch(29),new tM("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=tM,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 Bj(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 tM("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 tM("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?Qj.Include:Qj.SameOrigin,headers:new Headers(eM.getTokenRequestHeaders()),method:"POST"});case 18:o=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),new tM("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=tM,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 Bj(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 tM("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?Qj.Include:Qj.SameOrigin,headers:new Headers(eM.getTokenRequestHeaders()),method:"POST"});case 21:c=e.sent,e.next=27;break;case 24:throw e.prev=24,e.t4=e.catch(18),new tM("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=tM,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 Bj(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 tM("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 Bj(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({},eM.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?Qj.Include:Qj.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 tM("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=tM,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 Bj(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 Bj(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:"getIDToken",value:function(t){return Bj(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 Bj(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 tM("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 tM("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 tM("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 Bj(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 Bj(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 tM("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 tM("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 tM("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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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(eM.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 Bj(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(eM.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 Bj(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}(),cM=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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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:"getConfigData",value:function(){var e;return Bj(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 Bj(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 Bj(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 Bj(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:"removeConfigData",value:function(){return Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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}(),aM={clockTolerance:300,enablePKCE:!0,responseMode:t.ResponseMode.query,scope:["openid"],sendCookiesInRequests:!0,validateIDToken:!0},oM=function(){function t(e,n){s(this,t),t._instanceID?t._instanceID+=1:t._instanceID=0,this._dataLayer=new cM("instance_".concat(t._instanceID),e),this._authenticationCore=new iM(this._dataLayer,n),t._authenticationCore=new iM(this._dataLayer,n)}return h(t,[{key:"initialize",value:function(t){var e,n,r;return Bj(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({},aM),t),{scope:[].concat(v(null!==(e=aM.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==aM?void 0:aM.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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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:"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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 Bj(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 lM(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 uM,sM,dM,hM,mM,pM,bM=(uM="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwp2YXIgd29ya2VyX2NvZGU9ZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gdCh0KXtmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbcl0/YXJndW1lbnRzW3JdOnt9O3IlMj9lKE9iamVjdChuKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7Yyh0LGUsbltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6ZShPYmplY3QobikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pKX1yZXR1cm4gdH1mdW5jdGlvbiByKCl7cj1mdW5jdGlvbigpe3JldHVybiBlfTt2YXIgZT17fSx0PU9iamVjdC5wcm90b3R5cGUsbj10Lmhhc093blByb3BlcnR5LGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30saT1hLml0ZXJhdG9yfHwiQEBpdGVyYXRvciIsbz1hLmFzeW5jSXRlcmF0b3J8fCJAQGFzeW5jSXRlcmF0b3IiLHM9YS50b1N0cmluZ1RhZ3x8IkBAdG9TdHJpbmdUYWciO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSksZVt0XX10cnl7dSh7fSwiIil9Y2F0Y2goZSl7dT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGVbdF09cn19ZnVuY3Rpb24gYyhlLHQscixuKXt2YXIgYT10JiZ0LnByb3RvdHlwZSBpbnN0YW5jZW9mIGg/dDpoLGk9T2JqZWN0LmNyZWF0ZShhLnByb3RvdHlwZSksbz1uZXcgUyhufHxbXSk7cmV0dXJuIGkuX2ludm9rZT1mdW5jdGlvbihlLHQscil7dmFyIG49InN1c3BlbmRlZFN0YXJ0IjtyZXR1cm4gZnVuY3Rpb24oYSxpKXtpZigiZXhlY3V0aW5nIj09PW4pdGhyb3cgbmV3IEVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nIik7aWYoImNvbXBsZXRlZCI9PT1uKXtpZigidGhyb3ciPT09YSl0aHJvdyBpO3JldHVybiBUKCl9Zm9yKHIubWV0aG9kPWEsci5hcmc9aTs7KXt2YXIgbz1yLmRlbGVnYXRlO2lmKG8pe3ZhciBzPWsobyxyKTtpZihzKXtpZihzPT09bCljb250aW51ZTtyZXR1cm4gc319aWYoIm5leHQiPT09ci5tZXRob2Qpci5zZW50PXIuX3NlbnQ9ci5hcmc7ZWxzZSBpZigidGhyb3ciPT09ci5tZXRob2Qpe2lmKCJzdXNwZW5kZWRTdGFydCI9PT1uKXRocm93IG49ImNvbXBsZXRlZCIsci5hcmc7ci5kaXNwYXRjaEV4Y2VwdGlvbihyLmFyZyl9ZWxzZSJyZXR1cm4iPT09ci5tZXRob2QmJnIuYWJydXB0KCJyZXR1cm4iLHIuYXJnKTtuPSJleGVjdXRpbmciO3ZhciB1PWYoZSx0LHIpO2lmKCJub3JtYWwiPT09dS50eXBlKXtpZihuPXIuZG9uZT8iY29tcGxldGVkIjoic3VzcGVuZGVkWWllbGQiLHUuYXJnPT09bCljb250aW51ZTtyZXR1cm57dmFsdWU6dS5hcmcsZG9uZTpyLmRvbmV9fSJ0aHJvdyI9PT11LnR5cGUmJihuPSJjb21wbGV0ZWQiLHIubWV0aG9kPSJ0aHJvdyIsci5hcmc9dS5hcmcpfX19KGUscixvKSxpfWZ1bmN0aW9uIGYoZSx0LHIpe3RyeXtyZXR1cm57dHlwZToibm9ybWFsIixhcmc6ZS5jYWxsKHQscil9fWNhdGNoKGUpe3JldHVybnt0eXBlOiJ0aHJvdyIsYXJnOmV9fX1lLndyYXA9Yzt2YXIgbD17fTtmdW5jdGlvbiBoKCl7fWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gZCgpe312YXIgdj17fTt1KHYsaSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgZz1PYmplY3QuZ2V0UHJvdG90eXBlT2YseT1nJiZnKGcoRShbXSkpKTt5JiZ5IT09dCYmbi5jYWxsKHksaSkmJih2PXkpO3ZhciBtPWQucHJvdG90eXBlPWgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodik7ZnVuY3Rpb24gdyhlKXtbIm5leHQiLCJ0aHJvdyIsInJldHVybiJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3UoZSx0LChmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5faW52b2tlKHQsZSl9KSl9KSl9ZnVuY3Rpb24gYihlLHQpe2Z1bmN0aW9uIHIoYSxpLG8scyl7dmFyIHU9ZihlW2FdLGUsaSk7aWYoInRocm93IiE9PXUudHlwZSl7dmFyIGM9dS5hcmcsbD1jLnZhbHVlO3JldHVybiBsJiYib2JqZWN0Ij09dHlwZW9mIGwmJm4uY2FsbChsLCJfX2F3YWl0Iik/dC5yZXNvbHZlKGwuX19hd2FpdCkudGhlbigoZnVuY3Rpb24oZSl7cigibmV4dCIsZSxvLHMpfSksKGZ1bmN0aW9uKGUpe3IoInRocm93IixlLG8scyl9KSk6dC5yZXNvbHZlKGwpLnRoZW4oKGZ1bmN0aW9uKGUpe2MudmFsdWU9ZSxvKGMpfSksKGZ1bmN0aW9uKGUpe3JldHVybiByKCJ0aHJvdyIsZSxvLHMpfSkpfXModS5hcmcpfXZhciBhO3RoaXMuX2ludm9rZT1mdW5jdGlvbihlLG4pe2Z1bmN0aW9uIGkoKXtyZXR1cm4gbmV3IHQoKGZ1bmN0aW9uKHQsYSl7cihlLG4sdCxhKX0pKX1yZXR1cm4gYT1hP2EudGhlbihpLGkpOmkoKX19ZnVuY3Rpb24gayhlLHQpe3ZhciByPWUuaXRlcmF0b3JbdC5tZXRob2RdO2lmKHZvaWQgMD09PXIpe2lmKHQuZGVsZWdhdGU9bnVsbCwidGhyb3ciPT09dC5tZXRob2Qpe2lmKGUuaXRlcmF0b3IucmV0dXJuJiYodC5tZXRob2Q9InJldHVybiIsdC5hcmc9dm9pZCAwLGsoZSx0KSwidGhyb3ciPT09dC5tZXRob2QpKXJldHVybiBsO3QubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZCIpfXJldHVybiBsfXZhciBuPWYocixlLml0ZXJhdG9yLHQuYXJnKTtpZigidGhyb3ciPT09bi50eXBlKXJldHVybiB0Lm1ldGhvZD0idGhyb3ciLHQuYXJnPW4uYXJnLHQuZGVsZWdhdGU9bnVsbCxsO3ZhciBhPW4uYXJnO3JldHVybiBhP2EuZG9uZT8odFtlLnJlc3VsdE5hbWVdPWEudmFsdWUsdC5uZXh0PWUubmV4dExvYywicmV0dXJuIiE9PXQubWV0aG9kJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksdC5kZWxlZ2F0ZT1udWxsLGwpOmE6KHQubWV0aG9kPSJ0aHJvdyIsdC5hcmc9bmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKSx0LmRlbGVnYXRlPW51bGwsbCl9ZnVuY3Rpb24geChlKXt2YXIgdD17dHJ5TG9jOmVbMF19OzEgaW4gZSYmKHQuY2F0Y2hMb2M9ZVsxXSksMiBpbiBlJiYodC5maW5hbGx5TG9jPWVbMl0sdC5hZnRlckxvYz1lWzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaCh0KX1mdW5jdGlvbiBfKGUpe3ZhciB0PWUuY29tcGxldGlvbnx8e307dC50eXBlPSJub3JtYWwiLGRlbGV0ZSB0LmFyZyxlLmNvbXBsZXRpb249dH1mdW5jdGlvbiBTKGUpe3RoaXMudHJ5RW50cmllcz1be3RyeUxvYzoicm9vdCJ9XSxlLmZvckVhY2goeCx0aGlzKSx0aGlzLnJlc2V0KCEwKX1mdW5jdGlvbiBFKGUpe2lmKGUpe3ZhciB0PWVbaV07aWYodClyZXR1cm4gdC5jYWxsKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLm5leHQpcmV0dXJuIGU7aWYoIWlzTmFOKGUubGVuZ3RoKSl7dmFyIHI9LTEsYT1mdW5jdGlvbiB0KCl7Zm9yKDsrK3I8ZS5sZW5ndGg7KWlmKG4uY2FsbChlLHIpKXJldHVybiB0LnZhbHVlPWVbcl0sdC5kb25lPSExLHQ7cmV0dXJuIHQudmFsdWU9dm9pZCAwLHQuZG9uZT0hMCx0fTtyZXR1cm4gYS5uZXh0PWF9fXJldHVybntuZXh0OlR9fWZ1bmN0aW9uIFQoKXtyZXR1cm57dmFsdWU6dm9pZCAwLGRvbmU6ITB9fXJldHVybiBwLnByb3RvdHlwZT1kLHUobSwiY29uc3RydWN0b3IiLGQpLHUoZCwiY29uc3RydWN0b3IiLHApLHAuZGlzcGxheU5hbWU9dShkLHMsIkdlbmVyYXRvckZ1bmN0aW9uIiksZS5pc0dlbmVyYXRvckZ1bmN0aW9uPWZ1bmN0aW9uKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yO3JldHVybiEhdCYmKHQ9PT1wfHwiR2VuZXJhdG9yRnVuY3Rpb24iPT09KHQuZGlzcGxheU5hbWV8fHQubmFtZSkpfSxlLm1hcms9ZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxkKTooZS5fX3Byb3RvX189ZCx1KGUscywiR2VuZXJhdG9yRnVuY3Rpb24iKSksZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShtKSxlfSxlLmF3cmFwPWZ1bmN0aW9uKGUpe3JldHVybntfX2F3YWl0OmV9fSx3KGIucHJvdG90eXBlKSx1KGIucHJvdG90eXBlLG8sKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksZS5Bc3luY0l0ZXJhdG9yPWIsZS5hc3luYz1mdW5jdGlvbih0LHIsbixhLGkpe3ZvaWQgMD09PWkmJihpPVByb21pc2UpO3ZhciBvPW5ldyBiKGModCxyLG4sYSksaSk7cmV0dXJuIGUuaXNHZW5lcmF0b3JGdW5jdGlvbihyKT9vOm8ubmV4dCgpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRvbmU/ZS52YWx1ZTpvLm5leHQoKX0pKX0sdyhtKSx1KG0scywiR2VuZXJhdG9yIiksdShtLGksKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdShtLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgR2VuZXJhdG9yXSJ9KSksZS5rZXlzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO2Zvcih2YXIgciBpbiBlKXQucHVzaChyKTtyZXR1cm4gdC5yZXZlcnNlKCksZnVuY3Rpb24gcigpe2Zvcig7dC5sZW5ndGg7KXt2YXIgbj10LnBvcCgpO2lmKG4gaW4gZSlyZXR1cm4gci52YWx1ZT1uLHIuZG9uZT0hMSxyfXJldHVybiByLmRvbmU9ITAscn19LGUudmFsdWVzPUUsUy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMscmVzZXQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9dm9pZCAwLHRoaXMuZG9uZT0hMSx0aGlzLmRlbGVnYXRlPW51bGwsdGhpcy5tZXRob2Q9Im5leHQiLHRoaXMuYXJnPXZvaWQgMCx0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChfKSwhZSlmb3IodmFyIHQgaW4gdGhpcykidCI9PT10LmNoYXJBdCgwKSYmbi5jYWxsKHRoaXMsdCkmJiFpc05hTigrdC5zbGljZSgxKSkmJih0aGlzW3RdPXZvaWQgMCl9LHN0b3A6ZnVuY3Rpb24oKXt0aGlzLmRvbmU9ITA7dmFyIGU9dGhpcy50cnlFbnRyaWVzWzBdLmNvbXBsZXRpb247aWYoInRocm93Ij09PWUudHlwZSl0aHJvdyBlLmFyZztyZXR1cm4gdGhpcy5ydmFsfSxkaXNwYXRjaEV4Y2VwdGlvbjpmdW5jdGlvbihlKXtpZih0aGlzLmRvbmUpdGhyb3cgZTt2YXIgdD10aGlzO2Z1bmN0aW9uIHIocixuKXtyZXR1cm4gby50eXBlPSJ0aHJvdyIsby5hcmc9ZSx0Lm5leHQ9cixuJiYodC5tZXRob2Q9Im5leHQiLHQuYXJnPXZvaWQgMCksISFufWZvcih2YXIgYT10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7YT49MDstLWEpe3ZhciBpPXRoaXMudHJ5RW50cmllc1thXSxvPWkuY29tcGxldGlvbjtpZigicm9vdCI9PT1pLnRyeUxvYylyZXR1cm4gcigiZW5kIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHM9bi5jYWxsKGksImNhdGNoTG9jIiksdT1uLmNhbGwoaSwiZmluYWxseUxvYyIpO2lmKHMmJnUpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX1lbHNlIGlmKHMpe2lmKHRoaXMucHJldjxpLmNhdGNoTG9jKXJldHVybiByKGkuY2F0Y2hMb2MsITApfWVsc2V7aWYoIXUpdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIHIoaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGE9dGhpcy50cnlFbnRyaWVzW3JdO2lmKGEudHJ5TG9jPD10aGlzLnByZXYmJm4uY2FsbChhLCJmaW5hbGx5TG9jIikmJnRoaXMucHJldjxhLmZpbmFsbHlMb2Mpe3ZhciBpPWE7YnJlYWt9fWkmJigiYnJlYWsiPT09ZXx8ImNvbnRpbnVlIj09PWUpJiZpLnRyeUxvYzw9dCYmdDw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPWUsby5hcmc9dCxpPyh0aGlzLm1ldGhvZD0ibmV4dCIsdGhpcy5uZXh0PWkuZmluYWxseUxvYyxsKTp0aGlzLmNvbXBsZXRlKG8pfSxjb21wbGV0ZTpmdW5jdGlvbihlLHQpe2lmKCJ0aHJvdyI9PT1lLnR5cGUpdGhyb3cgZS5hcmc7cmV0dXJuImJyZWFrIj09PWUudHlwZXx8ImNvbnRpbnVlIj09PWUudHlwZT90aGlzLm5leHQ9ZS5hcmc6InJldHVybiI9PT1lLnR5cGU/KHRoaXMucnZhbD10aGlzLmFyZz1lLmFyZyx0aGlzLm1ldGhvZD0icmV0dXJuIix0aGlzLm5leHQ9ImVuZCIpOiJub3JtYWwiPT09ZS50eXBlJiZ0JiYodGhpcy5uZXh0PXQpLGx9LGZpbmlzaDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cnlFbnRyaWVzLmxlbmd0aC0xO3Q+PTA7LS10KXt2YXIgcj10aGlzLnRyeUVudHJpZXNbdF07aWYoci5maW5hbGx5TG9jPT09ZSlyZXR1cm4gdGhpcy5jb21wbGV0ZShyLmNvbXBsZXRpb24sci5hZnRlckxvYyksXyhyKSxsfX0sY2F0Y2g6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTt0Pj0wOy0tdCl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW3RdO2lmKHIudHJ5TG9jPT09ZSl7dmFyIG49ci5jb21wbGV0aW9uO2lmKCJ0aHJvdyI9PT1uLnR5cGUpe3ZhciBhPW4uYXJnO18ocil9cmV0dXJuIGF9fXRocm93IG5ldyBFcnJvcigiaWxsZWdhbCBjYXRjaCBhdHRlbXB0Iil9LGRlbGVnYXRlWWllbGQ6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0aGlzLmRlbGVnYXRlPXtpdGVyYXRvcjpFKGUpLHJlc3VsdE5hbWU6dCxuZXh0TG9jOnJ9LCJuZXh0Ij09PXRoaXMubWV0aG9kJiYodGhpcy5hcmc9dm9pZCAwKSxsfX0sZX1mdW5jdGlvbiBuKGUpe3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxuKGUpfWZ1bmN0aW9uIGEoZSx0LHIsbixhLGksbyl7dHJ5e3ZhciBzPWVbaV0obyksdT1zLnZhbHVlfWNhdGNoKGUpe3JldHVybiB2b2lkIHIoZSl9cy5kb25lP3QodSk6UHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4obixhKX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMscj1hcmd1bWVudHM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihuLGkpe3ZhciBvPWUuYXBwbHkodCxyKTtmdW5jdGlvbiBzKGUpe2EobyxuLGkscyx1LCJuZXh0IixlKX1mdW5jdGlvbiB1KGUpe2EobyxuLGkscyx1LCJ0aHJvdyIsZSl9cyh2b2lkIDApfSkpfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcyhlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIHUoZSx0LHIpe3JldHVybiB0JiZzKGUucHJvdG90eXBlLHQpLHImJnMoZSxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIGYoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsInByb3RvdHlwZSIse3dyaXRhYmxlOiExfSksdCYmaChlLHQpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGw9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0sbChlKX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGg9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGgoZSx0KX1mdW5jdGlvbiBwKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbixbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX1mdW5jdGlvbiBkKGUsdCxyKXtyZXR1cm4gZD1wKCk/UmVmbGVjdC5jb25zdHJ1Y3Q6ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobix0KTt2YXIgYT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseShlLG4pKTtyZXR1cm4gciYmaChhLHIucHJvdG90eXBlKSxhfSxkLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiB2KGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiBNYXA/bmV3IE1hcDp2b2lkIDA7cmV0dXJuIHY9ZnVuY3Rpb24oZSl7aWYobnVsbD09PWV8fChyPWUsLTE9PT1GdW5jdGlvbi50b1N0cmluZy5jYWxsKHIpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKSkpcmV0dXJuIGU7dmFyIHI7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtpZih2b2lkIDAhPT10KXtpZih0LmhhcyhlKSlyZXR1cm4gdC5nZXQoZSk7dC5zZXQoZSxuKX1mdW5jdGlvbiBuKCl7cmV0dXJuIGQoZSxhcmd1bWVudHMsbCh0aGlzKS5jb25zdHJ1Y3Rvcil9cmV0dXJuIG4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpuLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLGgobixlKX0sdihlKX1mdW5jdGlvbiBnKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGUsdCl7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpKXJldHVybiB0O2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWQiKTtyZXR1cm4gZyhlKX1mdW5jdGlvbiBtKGUpe3ZhciB0PXAoKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPWwoZSk7aWYodCl7dmFyIGE9bCh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4geSh0aGlzLHIpfX1mdW5jdGlvbiB3KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciByPW51bGw9PWU/bnVsbDoidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlWyJAQGl0ZXJhdG9yIl07aWYobnVsbD09cilyZXR1cm47dmFyIG4sYSxpPVtdLG89ITAscz0hMTt0cnl7Zm9yKHI9ci5jYWxsKGUpOyEobz0obj1yLm5leHQoKSkuZG9uZSkmJihpLnB1c2gobi52YWx1ZSksIXR8fGkubGVuZ3RoIT09dCk7bz0hMCk7fWNhdGNoKGUpe3M9ITAsYT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBhfX1yZXR1cm4gaX0oZSx0KXx8ayhlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4geChlKX0oZSl8fGZ1bmN0aW9uKGUpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbIkBAaXRlcmF0b3IiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGsoZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gayhlLHQpe2lmKGUpe2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4geChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHIpP3goZSx0KTp2b2lkIDB9fWZ1bmN0aW9uIHgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheSh0KTtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5jdGlvbiBfKGUsdCl7dmFyIHI9InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVsiQEBpdGVyYXRvciJdO2lmKCFyKXtpZihBcnJheS5pc0FycmF5KGUpfHwocj1rKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIGksbz0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1yLmNhbGwoZSl9LG46ZnVuY3Rpb24oKXt2YXIgZT1yLm5leHQoKTtyZXR1cm4gbz1lLmRvbmUsZX0sZTpmdW5jdGlvbihlKXtzPSEwLGk9ZX0sZjpmdW5jdGlvbigpe3RyeXtvfHxudWxsPT1yLnJldHVybnx8ci5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgaX19fX1mdW5jdGlvbiBTKGUsdCxyLG4pe3JldHVybiBuZXcocnx8KHI9UHJvbWlzZSkpKChmdW5jdGlvbihhLGkpe2Z1bmN0aW9uIG8oZSl7dHJ5e3Uobi5uZXh0KGUpKX1jYXRjaChlKXtpKGUpfX1mdW5jdGlvbiBzKGUpe3RyeXt1KG4udGhyb3coZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHUoZSl7dmFyIHQ7ZS5kb25lP2EoZS52YWx1ZSk6KHQ9ZS52YWx1ZSx0IGluc3RhbmNlb2Ygcj90Om5ldyByKChmdW5jdGlvbihlKXtlKHQpfSkpKS50aGVuKG8scyl9dSgobj1uLmFwcGx5KGUsdHx8W10pKS5uZXh0KCkpfSkpfWZ1bmN0aW9uIEUoZSx0LHIsbil7cmV0dXJuIG5ldyhyfHwocj1Qcm9taXNlKSkoKGZ1bmN0aW9uKGEsaSl7ZnVuY3Rpb24gbyhlKXt0cnl7dShuLm5leHQoZSkpfWNhdGNoKGUpe2koZSl9fWZ1bmN0aW9uIHMoZSl7dHJ5e3Uobi50aHJvdyhlKSl9Y2F0Y2goZSl7aShlKX19ZnVuY3Rpb24gdShlKXt2YXIgdDtlLmRvbmU/YShlLnZhbHVlKToodD1lLnZhbHVlLHQgaW5zdGFuY2VvZiByP3Q6bmV3IHIoKGZ1bmN0aW9uKGUpe2UodCl9KSkpLnRoZW4obyxzKX11KChuPW4uYXBwbHkoZSx0fHxbXSkpLm5leHQoKSl9KSl9dmFyIFQ7IWZ1bmN0aW9uKGUpe2UuZm9ybVBvc3Q9ImZvcm1fcG9zdCIsZS5xdWVyeT0icXVlcnkifShUfHwoVD17fSkpO3ZhciBBOyFmdW5jdGlvbihlKXtlLkNvbmZpZ0RhdGE9ImNvbmZpZ19kYXRhIixlLk9JRENQcm92aWRlck1ldGFEYXRhPSJvaWRjX3Byb3ZpZGVyX21ldGFfZGF0YSIsZS5TZXNzaW9uRGF0YT0ic2Vzc2lvbl9kYXRhIixlLlRlbXBvcmFyeURhdGE9InRlbXBvcmFyeV9kYXRhIn0oQXx8KEE9e30pKTt2YXIgUixDPSJyZWZyZXNoX3Rva2VuX3RpbWVyIixQPVsiUlMyNTYiLCJSUzUxMiIsIlJTMzg0IiwiUFMyNTYiXSxEPSJzaWduX291dF91cmwiLE89InNpZ25fb3V0X3N1Y2Nlc3MiOyFmdW5jdGlvbihlKXtlLkluY2x1ZGU9ImluY2x1ZGUiLGUuU2FtZU9yaWdpbj0ic2FtZS1vcmlnaW4iLGUuT21pdD0ib21pdCJ9KFJ8fChSPXt9KSk7dmFyIEk9dSgoZnVuY3Rpb24gZSh0LHIsbil7byh0aGlzLGUpLHRoaXMubWVzc2FnZT1uLHRoaXMubmFtZT1yLHRoaXMuY29kZT10LE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCh0aGlzIGluc3RhbmNlb2YgZT90aGlzLmNvbnN0cnVjdG9yOnZvaWQgMCkucHJvdG90eXBlKX0pKSxMPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKX1yZXR1cm4gdShlLG51bGwsW3trZXk6ImZpbHRlckNsYWltc0Zyb21JRFRva2VuUGF5bG9hZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtudWxsPT10fHxkZWxldGUgdC5pc3MsbnVsbD09dHx8ZGVsZXRlIHQuYXVkLG51bGw9PXR8fGRlbGV0ZSB0LmV4cCxudWxsPT10fHxkZWxldGUgdC5pYXQsbnVsbD09dHx8ZGVsZXRlIHQuYWNyLG51bGw9PXR8fGRlbGV0ZSB0LmFtcixudWxsPT10fHxkZWxldGUgdC5henAsbnVsbD09dHx8ZGVsZXRlIHQuYXV0aF90aW1lLG51bGw9PXR8fGRlbGV0ZSB0Lm5vbmNlLG51bGw9PXR8fGRlbGV0ZSB0LmNfaGFzaCxudWxsPT10fHxkZWxldGUgdC5hdF9oYXNoLG51bGw9PXR8fGRlbGV0ZSB0Lm5iZixudWxsPT10fHxkZWxldGUgdC5pc2ssbnVsbD09dHx8ZGVsZXRlIHQuc2lkO3ZhciByPXt9O3JldHVybiBPYmplY3QuZW50cmllcyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD13KGUsMiksbj10WzBdLGE9dFsxXSxpPW4uc3BsaXQoIl8iKS5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIDA9PT10P2U6W2VbMF0udG9VcHBlckNhc2UoKV0uY29uY2F0KGIoZS5zbGljZSgxKSkpLmpvaW4oIiIpfSkpLmpvaW4oIiIpO3JbaV09YX0pKSxyfX0se2tleToiZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm57QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn19fSx7a2V5OiJnZW5lcmF0ZVN0YXRlUGFyYW1Gb3JSZXF1ZXN0Q29ycmVsYXRpb24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9cGFyc2VJbnQoZS5zcGxpdCgiIyIpWzFdKTtyZXR1cm4gdD8iIi5jb25jYXQodCwiX3JlcXVlc3RfIikuY29uY2F0KHIpOiJyZXF1ZXN0XyIuY29uY2F0KHIpfX0se2tleToiZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuInBrY2VfY29kZV92ZXJpZmllciMiLmNvbmNhdChwYXJzZUludChlLnNwbGl0KCJyZXF1ZXN0XyIpWzFdKSl9fV0pLGV9KCk7TC5nZXRUZW5hbnREb21haW5Gcm9tSWRUb2tlblBheWxvYWQ9ZnVuY3Rpb24oZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOiJAIixyPWUuc3ViLnNwbGl0KHQpO3JldHVybiByLmxlbmd0aD4yP3Jbci5sZW5ndGgtMV06IiJ9O3ZhciBVLEgsTT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxuKXt2YXIgYT10aGlzO28odGhpcyxlKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9LHRoaXMuX2NyeXB0b0hlbHBlcj1ufXJldHVybiB1KGUsW3trZXk6InJlc29sdmVFbmRwb2ludHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGE7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj17fSx0Lm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIGE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLChhLmVuZHBvaW50cyYmT2JqZWN0LmtleXMoYS5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO25bdF09KG51bGw9PWE/dm9pZCAwOmEuZW5kcG9pbnRzKT9hLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSksbikpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlc29sdmVFbmRwb2ludHNFeHBsaWNpdGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiB0PXt9LGUubmV4dD0zLHRoaXMuX2NvbmZpZygpO2Nhc2UgMzppZihuPWUuc2VudCxhPVsiYXV0aG9yaXphdGlvbl9lbmRwb2ludCIsImVuZF9zZXNzaW9uX2VuZHBvaW50Iiwiandrc191cmkiLCJjaGVja19zZXNzaW9uX2lmcmFtZSIsInJldm9jYXRpb25fZW5kcG9pbnQiLCJ0b2tlbl9lbmRwb2ludCIsImlzc3VlciIsInVzZXJpbmZvX2VuZHBvaW50Il0sbi5lbmRwb2ludHMmJk9iamVjdC5rZXlzKG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKS5ldmVyeSgoZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC9bQS1aXS9nLChmdW5jdGlvbihlKXtyZXR1cm4iXyIuY29uY2F0KGUudG9Mb3dlckNhc2UoKSl9KSk7cmV0dXJuIGEuaW5jbHVkZXModCl9KSkpe2UubmV4dD03O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1SRUUtTkYwMSIsIk5vIHJlcXVpcmVkIGVuZHBvaW50cy4iLCJSZXF1aXJlZCBvaWRjIGVuZHBvaW50cyBhcmUgbm90IGRlZmluZWQiKTtjYXNlIDc6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLChuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxPYmplY3QuYXNzaWduKHt9LHQpKSk7Y2FzZSA4OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZXNvbHZlRW5kcG9pbnRzQnlCYXNlVVJMIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIHQ9e30sZS5uZXh0PTMsdGhpcy5fY29uZmlnKCk7Y2FzZSAzOmlmKG49ZS5zZW50LGE9bi5iYXNlVXJsKXtlLm5leHQ9NzticmVha310aHJvdyBuZXcgSSgiSlMtQVVUSF9IRUxQRVJfUkVCTy1ORjAxIiwiQmFzZSBVUkwgbm90IGRlZmluZWQuIiwiQmFzZSBVUkwgaXMgbm90IGRlZmluZWQgaW4gQXV0aENsaWVudCBjb25maWcuIik7Y2FzZSA3OnJldHVybiBuLmVuZHBvaW50cyYmT2JqZWN0LmtleXMobi5lbmRwb2ludHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciByPWUucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpO3Rbcl09KG51bGw9PW4/dm9pZCAwOm4uZW5kcG9pbnRzKT9uLmVuZHBvaW50c1tlXToiIn0pKSxpPXthdXRob3JpemF0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvYXV0aG9yaXplIiksZW5kX3Nlc3Npb25fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29pZGMvbG9nb3V0IiksaXNzdWVyOiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdG9rZW4iKSxqd2tzX3VyaToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2F1dGgyL2p3a3MiKSxjaGVja19zZXNzaW9uX2lmcmFtZToiIi5jb25jYXQoYSkuY29uY2F0KCIvb2lkYy9jaGVja3Nlc3Npb24iKSxyZXZvY2F0aW9uX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvcmV2b2tlIiksdG9rZW5fZW5kcG9pbnQ6IiIuY29uY2F0KGEpLmNvbmNhdCgiL29hdXRoMi90b2tlbiIpLHVzZXJpbmZvX2VuZHBvaW50OiIiLmNvbmNhdChhKS5jb25jYXQoIi9vYXV0aDIvdXNlcmluZm8iKX0sZS5hYnJ1cHQoInJldHVybiIsT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LGkpLHQpKTtjYXNlIDEwOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJ2YWxpZGF0ZUlkVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuLGEsaSxvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRPSURDUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQuandrc191cmksdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKU19BVVRIX0hFTFBFUi1WSVQtTkYwMSIsIkpXS1MgZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIEpXS1MgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgSldLUyBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIHQucHJldj04LHQubmV4dD0xMSxmZXRjaChuLHtjcmVkZW50aWFsczphLnNlbmRDb29raWVzSW5SZXF1ZXN0cz9SLkluY2x1ZGU6Ui5TYW1lT3JpZ2lufSk7Y2FzZSAxMTppPXQuc2VudCx0Lm5leHQ9MTc7YnJlYWs7Y2FzZSAxNDp0aHJvdyB0LnByZXY9MTQsdC50MD10LmNhdGNoKDgpLG5ldyBJKCJKUy1BVVRIX0hFTFBFUi1WSVQtTkUwMiIsIlJlcXVlc3QgdG8gandrcyBlbmRwb2ludCBmYWlsZWQuIixudWxsIT10LnQwP3QudDA6IlRoZSByZXF1ZXN0IHNlbnQgdG8gZ2V0IHRoZSBqd2tzIGZyb20gdGhlIHNlcnZlciBmYWlsZWQuIik7Y2FzZSAxNzppZigyMDA9PT1pLnN0YXR1cyYmaS5vayl7dC5uZXh0PTI0O2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIGp3a3MgcmVxdWVzdCAoIi5jb25jYXQoaS5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0yMixpLmpzb24oKTtjYXNlIDIyOnRocm93IHQudDM9dC5zZW50LG5ldyB0LnQxKCJKUy1BVVRIX0hFTFBFUi1WSVQtSEUwMyIsdC50Mix0LnQzKTtjYXNlIDI0OnJldHVybiB0Lm5leHQ9MjYsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI2OnJldHVybiBvPXQuc2VudC5pc3N1ZXIsdC5uZXh0PTI5LGkuanNvbigpO2Nhc2UgMjk6cmV0dXJuIHM9dC5zZW50LHU9cy5rZXlzLHQubmV4dD0zMyx0aGlzLl9jcnlwdG9IZWxwZXIuZ2V0SldLRm9yVGhlSWRUb2tlbihlLnNwbGl0KCIuIilbMF0sdSk7Y2FzZSAzMzpyZXR1cm4gYz10LnNlbnQsdC50ND10aGlzLl9jcnlwdG9IZWxwZXIsdC50NT1lLHQudDY9Yyx0Lm5leHQ9MzksdGhpcy5fY29uZmlnKCk7Y2FzZSAzOTpyZXR1cm4gdC50Nz10LnNlbnQuY2xpZW50SUQsdC50OD1udWxsIT1vP286IiIsdC50OT10aGlzLl9jcnlwdG9IZWxwZXIuZGVjb2RlSURUb2tlbihlKS5zdWIsdC5uZXh0PTQ0LHRoaXMuX2NvbmZpZygpO2Nhc2UgNDQ6cmV0dXJuIHQudDEwPXQuc2VudC5jbG9ja1RvbGVyYW5jZSx0LmFicnVwdCgicmV0dXJuIix0LnQ0LmlzVmFsaWRJZFRva2VuLmNhbGwodC50NCx0LnQ1LHQudDYsdC50Nyx0LnQ4LHQudDksdC50MTApKTtjYXNlIDQ2OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbOCwxNF1dKX0pKSl9fSx7a2V5OiJnZXRBdXRoZW50aWNhdGVkVXNlckluZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LHIsbixhLGk9dGhpcy5fY3J5cHRvSGVscGVyLmRlY29kZUlEVG9rZW4oZSksbz1MLmdldFRlbmFudERvbWFpbkZyb21JZFRva2VuUGF5bG9hZChpKSxzPW51bGwhPT0odD1udWxsPT1pP3ZvaWQgMDppLnVzZXJuYW1lKSYmdm9pZCAwIT09dD90OiIiLHU9bnVsbCE9PShyPWkuZ2l2ZW5fbmFtZSkmJnZvaWQgMCE9PXI/cjoiIixjPW51bGwhPT0obj1pLmZhbWlseV9uYW1lKSYmdm9pZCAwIT09bj9uOiIiLGY9dSYmYz8iIi5jb25jYXQodSwiICIpLmNvbmNhdChjKTp1fHxjfHwiIixsPW51bGwhPT0oYT1pLnByZWZlcnJlZF91c2VybmFtZSkmJnZvaWQgMCE9PWE/YTpmO3JldHVybiBPYmplY3QuYXNzaWduKHtkaXNwbGF5TmFtZTpsLHRlbmFudERvbWFpbjpvLHVzZXJuYW1lOnN9LEwuZmlsdGVyQ2xhaW1zRnJvbUlEVG9rZW5QYXlsb2FkKGkpKX19LHtrZXk6InJlcGxhY2VDdXN0b21HcmFudFRlbXBsYXRlVGFncyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gaT0ib3BlbmlkIixyLm5leHQ9Myx0aGlzLl9jb25maWcoKTtjYXNlIDM6cmV0dXJuIG89ci5zZW50LHIubmV4dD02LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YSh0KTtjYXNlIDY6cmV0dXJuIHM9ci5zZW50LHIuYWJydXB0KCJyZXR1cm4iLChvLnNjb3BlJiZvLnNjb3BlLmxlbmd0aD4wJiYoby5zY29wZS5pbmNsdWRlcygib3BlbmlkIil8fG8uc2NvcGUucHVzaCgib3BlbmlkIiksaT1vLnNjb3BlLmpvaW4oIiAiKSksZS5yZXBsYWNlKCJ7e3Rva2VufX0iLHMuYWNjZXNzX3Rva2VuKS5yZXBsYWNlKCJ7e3VzZXJuYW1lfX0iLHRoaXMuZ2V0QXV0aGVudGljYXRlZFVzZXJJbmZvKHMuaWRfdG9rZW4pLnVzZXJuYW1lKS5yZXBsYWNlKCJ7e3Njb3BlfX0iLGkpLnJlcGxhY2UoInt7Y2xpZW50SUR9fSIsby5jbGllbnRJRCkucmVwbGFjZSgie3tjbGllbnRTZWNyZXR9fSIsbnVsbCE9PShuPW8uY2xpZW50U2VjcmV0KSYmdm9pZCAwIT09bj9uOiIiKSkpO2Nhc2UgODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToiY2xlYXJVc2VyU2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gdC5uZXh0PTQsdGhpcy5fZGF0YUxheWVyLnJlbW92ZVNlc3Npb25EYXRhKGUpO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiaGFuZGxlVG9rZW5SZXNwb25zZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpLG89dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOmlmKDIwMD09PWUuc3RhdHVzJiZlLm9rKXtuLm5leHQ9NzticmVha31yZXR1cm4gbi50MD1JLG4udDE9IkludmFsaWQgcmVzcG9uc2Ugc3RhdHVzIHJlY2VpdmVkIGZvciB0b2tlbiByZXF1ZXN0ICgiLmNvbmNhdChlLnN0YXR1c1RleHQsIikuIiksbi5uZXh0PTUsZS5qc29uKCk7Y2FzZSA1OnRocm93IG4udDI9bi5zZW50LG5ldyBuLnQwKCJKUy1BVVRIX0hFTFBFUi1IVFItTkUwMSIsbi50MSxuLnQyKTtjYXNlIDc6cmV0dXJuIG4ubmV4dD05LGUuanNvbigpO2Nhc2UgOTpyZXR1cm4oYT1uLnNlbnQpLmNyZWF0ZWRfYXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCksbi5uZXh0PTEzLHRoaXMuX2NvbmZpZygpO2Nhc2UgMTM6aWYoIW4uc2VudC52YWxpZGF0ZUlEVG9rZW4pe24ubmV4dD0xNTticmVha31yZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsdGhpcy52YWxpZGF0ZUlkVG9rZW4oYS5pZF90b2tlbikudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gRShvLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDI6cmV0dXJuIG49e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LGUuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZShuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTU6cmV0dXJuIGk9e2FjY2Vzc1Rva2VuOmEuYWNjZXNzX3Rva2VuLGNyZWF0ZWRBdDphLmNyZWF0ZWRfYXQsZXhwaXJlc0luOmEuZXhwaXJlc19pbixpZFRva2VuOmEuaWRfdG9rZW4scmVmcmVzaFRva2VuOmEucmVmcmVzaF90b2tlbixzY29wZTphLnNjb3BlLHRva2VuVHlwZTphLnRva2VuX3R5cGV9LG4ubmV4dD0xOCx0aGlzLl9kYXRhTGF5ZXIuc2V0U2Vzc2lvbkRhdGEoYSx0KTtjYXNlIDE4OnJldHVybiBuLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUoaSkpO2Nhc2UgMTk6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdlbmVyYXRlUEtDRUtleSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7dmFyIGEsaSxvO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhKGUpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsaT1bXSxPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnN0YXJ0c1dpdGgoInBrY2VfY29kZV92ZXJpZmllciIpJiZpLnB1c2goZSl9KSksbz1pLnNvcnQoKS5wb3AoKSxyLmFicnVwdCgicmV0dXJuIiwicGtjZV9jb2RlX3ZlcmlmaWVyIyIuY29uY2F0KHBhcnNlSW50KG51bGwhPT0odD1udWxsPT1vP3ZvaWQgMDpvLnNwbGl0KCIjIilbMV0pJiZ2b2lkIDAhPT10P3Q6Ii0xIikrMSkpO2Nhc2UgNzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9jcnlwdG9VdGlscz10fXJldHVybiB1KGUsW3trZXk6ImdldENvZGVWZXJpZmllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3J5cHRvVXRpbHMuYmFzZTY0VVJMRW5jb2RlKHRoaXMuX2NyeXB0b1V0aWxzLmdlbmVyYXRlUmFuZG9tQnl0ZXMoMzIpKX19LHtrZXk6ImdldENvZGVDaGFsbGVuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxFbmNvZGUodGhpcy5fY3J5cHRvVXRpbHMuaGFzaFNoYTI1NihlKSl9fSx7a2V5OiJnZXRKV0tGb3JUaGVJZFRva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByLG49SlNPTi5wYXJzZSh0aGlzLl9jcnlwdG9VdGlscy5iYXNlNjRVUkxEZWNvZGUoZSkpLGE9Xyh0KTt0cnl7Zm9yKGEucygpOyEocj1hLm4oKSkuZG9uZTspe3ZhciBpPXIudmFsdWU7aWYobi5raWQ9PT1pLmtpZClyZXR1cm4gaX19Y2F0Y2goZSl7YS5lKGUpfWZpbmFsbHl7YS5mKCl9dGhyb3cgbmV3IEkoIkpTLUNSWVBUT19VVElMLUdKRlRJVC1JVjAxIiwia2lkIG5vdCBmb3VuZC4iLCJGYWlsZWQgdG8gZmluZCB0aGUgJ2tpZCcgc3BlY2lmaWVkIGluIHRoZSBpZF90b2tlbi4gJ2tpZCcgZm91bmQgaW4gdGhlIGhlYWRlciA6ICIrbi5raWQrIiwgRXhwZWN0ZWQgdmFsdWVzOiAiK3QubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5raWR9KSkuam9pbigiLCAiKSl9fSx7a2V5OiJpc1ZhbGlkSWRUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhLGkpe3JldHVybiB0aGlzLl9jcnlwdG9VdGlscy52ZXJpZnlKd3QoZSx0LFAscixuLGEsaSkudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIGU/UHJvbWlzZS5yZXNvbHZlKCEwKTpQcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX0hFTFBFUi1JVklULUlWMDEiLCJJbnZhbGlkIElEIHRva2VuLiIsIklEIHRva2VuIHZhbGlkYXRpb24gcmV0dXJuZWQgZmFsc2UiKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiJFUlJfSldUX0NMQUlNX1ZBTElEQVRJT05fRkFJTEVEIj09PShudWxsPT1lP3ZvaWQgMDplLmNvZGUpJiYibmJmIj09PShudWxsPT1lP3ZvaWQgMDplLmNsYWltKT9Qcm9taXNlLnJlamVjdChuZXcgSSgiSlMtQ1JZUFRPX1VUSUxTLUlWSVQtSVYwMiIsIkpXVCBOQkYgQ0xBSU0gVkFMSURBVElPTiBGQUlMRUQiLCJKV1QgTkJGIGNsYWltIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpOlByb21pc2UucmVqZWN0KG5ldyBJKCJKUy1DUllQVE9fVVRJTFMtSVZJVC1JVjAzIiwiSldUIFZBTElEQVRJT04gRkFJTEVEIiwiSldUIHZhbGlkYXRpb24gaGFzIGJlZW4gZmFpbGVkIikpfSkpfX0se2tleToiZGVjb2RlSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dHJ5e3ZhciB0PXRoaXMuX2NyeXB0b1V0aWxzLmJhc2U2NFVSTERlY29kZShlLnNwbGl0KCIuIilbMV0pO3JldHVybiBKU09OLnBhcnNlKHQpfWNhdGNoKGUpe3Rocm93IG5ldyBJKCJKUy1DUllQVE9fVVRJTC1ESVQtSVYwMSIsIkRlY29kaW5nIElEIHRva2VuIGZhaWxlZC4iLGUpfX19XSksZX0oKSxOPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LG4pe3ZhciBhPXRoaXM7byh0aGlzLGUpLHRoaXMuX2NyeXB0b1V0aWxzPW4sdGhpcy5fY3J5cHRvSGVscGVyPW5ldyBqKG4pLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyPW5ldyBNKHQsdGhpcy5fY3J5cHRvSGVscGVyKSx0aGlzLl9kYXRhTGF5ZXI9dCx0aGlzLl9jb25maWc9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsZS5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0sdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gRShhLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fXJldHVybiB1KGUsW3trZXk6ImdldEF1dGhvcml6YXRpb25VUkwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG4sYSxpO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYyxmLGwsaCxwLGQsdixnLHksbSxiLGsseCxTLEUsVCxBLFI7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyKCJhdXRob3JpemF0aW9uX2VuZHBvaW50Iik7Y2FzZSAyOnJldHVybiBzPXIuc2VudCxyLm5leHQ9NSx0aGlzLl9jb25maWcoKTtjYXNlIDU6aWYodT1yLnNlbnQscyYmMCE9PXMudHJpbSgpLmxlbmd0aCl7ci5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HQVUtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgZm91bmQuIiwiTm8gYXV0aG9yaXphdGlvbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIGZyb20gdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIGF1dGhvcml6YXRpb24gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybiBjPW5ldyBVUkwocyksKGY9bmV3IE1hcCkuc2V0KCJyZXNwb25zZV90eXBlIiwiY29kZSIpLGYuc2V0KCJjbGllbnRfaWQiLHUuY2xpZW50SUQpLGw9Im9wZW5pZCIsdS5zY29wZSYmdS5zY29wZS5sZW5ndGg+MCYmKHUuc2NvcGUuaW5jbHVkZXMoIm9wZW5pZCIpfHx1LnNjb3BlLnB1c2goIm9wZW5pZCIpLGw9dS5zY29wZS5qb2luKCIgIikpLGYuc2V0KCJzY29wZSIsbCksZi5zZXQoInJlZGlyZWN0X3VyaSIsdS5zaWduSW5SZWRpcmVjdFVSTCksdS5yZXNwb25zZU1vZGUmJmYuc2V0KCJyZXNwb25zZV9tb2RlIix1LnJlc3BvbnNlTW9kZSksci5uZXh0PTE0LHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLmdlbmVyYXRlUEtDRUtleSh0KTtjYXNlIDE0OmlmKGg9ci5zZW50LCF1LmVuYWJsZVBLQ0Upe3IubmV4dD0yMTticmVha31yZXR1cm4gcD1udWxsPT09KG49dGhpcy5fY3J5cHRvSGVscGVyKXx8dm9pZCAwPT09bj92b2lkIDA6bi5nZXRDb2RlVmVyaWZpZXIoKSxkPW51bGw9PT0oYT10aGlzLl9jcnlwdG9IZWxwZXIpfHx2b2lkIDA9PT1hP3ZvaWQgMDphLmdldENvZGVDaGFsbGVuZ2UocCksci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKGgscCx0KTtjYXNlIDE5OmYuc2V0KCJjb2RlX2NoYWxsZW5nZV9tZXRob2QiLCJTMjU2IiksZi5zZXQoImNvZGVfY2hhbGxlbmdlIixkKTtjYXNlIDIxOmlmKHUucHJvbXB0JiZmLnNldCgicHJvbXB0Iix1LnByb21wdCksdj1lKWZvcihnPTAseT1PYmplY3QuZW50cmllcyh2KTtnPHkubGVuZ3RoO2crKyltPXcoeVtnXSwyKSxiPW1bMF0saz1tWzFdLCIiIT1iJiYiIiE9ayYmInN0YXRlIiE9PWImJih4PWIucmVwbGFjZSgvW0EtWl0vZywoZnVuY3Rpb24oZSl7cmV0dXJuIl8iLmNvbmNhdChlLnRvTG93ZXJDYXNlKCkpfSkpLGYuc2V0KHgsay50b1N0cmluZygpKSk7Zi5zZXQoInN0YXRlIixMLmdlbmVyYXRlU3RhdGVQYXJhbUZvclJlcXVlc3RDb3JyZWxhdGlvbihoLHY/bnVsbD09PShpPXYuc3RhdGUpfHx2b2lkIDA9PT1pP3ZvaWQgMDppLnRvU3RyaW5nKCk6IiIpKSxTPV8oZi5lbnRyaWVzKCkpO3RyeXtmb3IoUy5zKCk7IShFPVMubigpKS5kb25lOylUPXcoRS52YWx1ZSwyKSxBPVRbMF0sUj1UWzFdLGMuc2VhcmNoUGFyYW1zLmFwcGVuZChBLFIpfWNhdGNoKGUpe1MuZShlKX1maW5hbGx5e1MuZigpfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjLnRvU3RyaW5nKCkpO2Nhc2UgMjg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxvLHRoaXMpfSkpKX19LHtrZXk6InJlcXVlc3RBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGMsZjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbz1yLnNlbnQudG9rZW5fZW5kcG9pbnQsci5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKHM9ci5zZW50LG8mJjAhPT1vLnRyaW0oKS5sZW5ndGgpe3IubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMS1ORjAxIiwiVG9rZW4gZW5kcG9pbnQgbm90IGZvdW5kLiIsIk5vIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHRva2VuIGVuZHBvaW50IHBhc3NlZCB0byB0aGUgU0RLIGlzIGVtcHR5LiIpO2Nhc2UgODppZihyLnQwPXQsIXIudDApe3IubmV4dD0xMjticmVha31yZXR1cm4gci5uZXh0PTEyLHRoaXMuX2RhdGFMYXllci5zZXRTZXNzaW9uRGF0YVBhcmFtZXRlcigic2Vzc2lvbl9zdGF0ZSIsdCxhKTtjYXNlIDEyOmlmKCh1PVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQocy5jbGllbnRJRCkpLHMuY2xpZW50U2VjcmV0JiZzLmNsaWVudFNlY3JldC50cmltKCkubGVuZ3RoPjAmJnUucHVzaCgiY2xpZW50X3NlY3JldD0iLmNvbmNhdChzLmNsaWVudFNlY3JldCkpLGM9ZSx1LnB1c2goImNvZGU9Ii5jb25jYXQoYykpLHUucHVzaCgiZ3JhbnRfdHlwZT1hdXRob3JpemF0aW9uX2NvZGUiKSx1LnB1c2goInJlZGlyZWN0X3VyaT0iLmNvbmNhdChzLnNpZ25JblJlZGlyZWN0VVJMKSksci50MT1zLmVuYWJsZVBLQ0UsIXIudDEpe3IubmV4dD0yOTticmVha31yZXR1cm4gci50Mj11LHIudDM9ImNvZGVfdmVyaWZpZXI9IixyLm5leHQ9MjQsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKG4pLGEpO2Nhc2UgMjQ6cmV0dXJuIHIudDQ9ci5zZW50LHIudDU9ci50My5jb25jYXQuY2FsbChyLnQzLHIudDQpLHIudDIucHVzaC5jYWxsKHIudDIsci50NSksci5uZXh0PTI5LHRoaXMuX2RhdGFMYXllci5yZW1vdmVUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShuKSxhKTtjYXNlIDI5OnJldHVybiByLnByZXY9Mjksci5uZXh0PTMyLGZldGNoKG8se2JvZHk6dS5qb2luKCImIiksY3JlZGVudGlhbHM6cy5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAzMjpmPXIuc2VudCxyLm5leHQ9Mzg7YnJlYWs7Y2FzZSAzNTp0aHJvdyByLnByZXY9MzUsci50Nj1yLmNhdGNoKDI5KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDEtTkUwMiIsIlJlcXVlc3RpbmcgYWNjZXNzIHRva2VuIGZhaWxlZCIsbnVsbCE9ci50Nj9yLnQ2OiJUaGUgcmVxdWVzdCB0byBnZXQgdGhlIGFjY2VzcyB0b2tlbiBmcm9tIHRoZSBzZXJ2ZXIgZmFpbGVkLiIpO2Nhc2UgMzg6aWYoZi5vayl7ci5uZXh0PTQ1O2JyZWFrfXJldHVybiByLnQ3PUksci50OD0iUmVxdWVzdGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQoZi5zdGF0dXNUZXh0KSxyLm5leHQ9NDMsZi5qc29uKCk7Y2FzZSA0Mzp0aHJvdyByLnQ5PXIuc2VudCxuZXcgci50NygiSlMtQVVUSF9DT1JFLVJBVDEtSEUwMyIsci50OCxyLnQ5KTtjYXNlIDQ1OnJldHVybiByLm5leHQ9NDcsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuaGFuZGxlVG9rZW5SZXNwb25zZShmLGEpO2Nhc2UgNDc6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSA0ODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGksdGhpcyxbWzI5LDM1XV0pfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG8scztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQudG9rZW5fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OnJldHVybiBhPXQuc2VudCx0Lm5leHQ9OCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSA4OmlmKChpPXQuc2VudCkucmVmcmVzaF90b2tlbil7dC5uZXh0PTExO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAxIiwiTm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4iLCJUaGVyZSB3YXMgbm8gcmVmcmVzaCB0b2tlbiBmb3VuZC4gQXNnYXJkZW8gZG9lc24ndCByZXR1cm4gYSByZWZyZXNoIHRva2VuIGlmIHRoZSByZWZyZXNoIHRva2VuIGdyYW50IGlzIG5vdCBlbmFibGVkLiIpO2Nhc2UgMTE6aWYobiYmMCE9PW4udHJpbSgpLmxlbmd0aCl7dC5uZXh0PTEzO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMi1ORjAyIiwiTm8gcmVmcmVzaCB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZWZyZXNoIHRva2VuIGVuZHBvaW50IHdhcyBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJlZnJlc2ggdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxMzpyZXR1cm4obz1bXSkucHVzaCgiY2xpZW50X2lkPSIuY29uY2F0KGEuY2xpZW50SUQpKSxvLnB1c2goInJlZnJlc2hfdG9rZW49Ii5jb25jYXQoaS5yZWZyZXNoX3Rva2VuKSksby5wdXNoKCJncmFudF90eXBlPXJlZnJlc2hfdG9rZW4iKSxhLmNsaWVudFNlY3JldCYmYS5jbGllbnRTZWNyZXQudHJpbSgpLmxlbmd0aD4wJiZvLnB1c2goImNsaWVudF9zZWNyZXQ9Ii5jb25jYXQoYS5jbGllbnRTZWNyZXQpKSx0LnByZXY9MTUsdC5uZXh0PTE4LGZldGNoKG4se2JvZHk6by5qb2luKCImIiksY3JlZGVudGlhbHM6YS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxtZXRob2Q6IlBPU1QifSk7Y2FzZSAxODpzPXQuc2VudCx0Lm5leHQ9MjQ7YnJlYWs7Y2FzZSAyMTp0aHJvdyB0LnByZXY9MjEsdC50MD10LmNhdGNoKDE1KSxuZXcgSSgiSlMtQVVUSF9DT1JFLVJBVDItTlIwMyIsIlJlZnJlc2ggYWNjZXNzIHRva2VuIHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9dC50MD90LnQwOiJUaGUgcmVxdWVzdCB0byByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gZmFpbGVkLiIpO2Nhc2UgMjQ6aWYocy5vayl7dC5uZXh0PTMxO2JyZWFrfXJldHVybiB0LnQxPUksdC50Mj0iUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZmFpbGVkIHdpdGggIi5jb25jYXQocy5zdGF0dXNUZXh0KSx0Lm5leHQ9Mjkscy5qc29uKCk7Y2FzZSAyOTp0aHJvdyB0LnQzPXQuc2VudCxuZXcgdC50MSgiSlMtQVVUSF9DT1JFLVJBVDItSEUwNCIsdC50Mix0LnQzKTtjYXNlIDMxOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKHMsZSkpO2Nhc2UgMzI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMsW1sxNSwyMV1dKX0pKSl9fSx7a2V5OiJyZXZva2VBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLG87cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fb2lkY1Byb3ZpZGVyTWV0YURhdGEoKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LnJldm9jYXRpb25fZW5kcG9pbnQsdC5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGE9dC5zZW50LG4mJjAhPT1uLnRyaW0oKS5sZW5ndGgpe3QubmV4dD04O2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtUkFUMy1ORjAxIiwiTm8gcmV2b2tlIGFjY2VzcyB0b2tlbiBlbmRwb2ludCBmb3VuZC4iLCJObyByZXZva2UgYWNjZXNzIHRva2VuIGVuZHBvaW50IHdhcyBmb3VuZCBpbiB0aGUgT0lEQyBwcm92aWRlciBtZXRhIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHdlbGwta25vd24gZW5kcG9pbnQgb3IgdGhlIHJldm9rZSBhY2Nlc3MgdG9rZW4gZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSA4OnJldHVybihpPVtdKS5wdXNoKCJjbGllbnRfaWQ9Ii5jb25jYXQoYS5jbGllbnRJRCkpLHQudDA9aSx0LnQxPSJ0b2tlbj0iLHQubmV4dD0xNCx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEoZSk7Y2FzZSAxNDpyZXR1cm4gdC50Mj10LnNlbnQuYWNjZXNzX3Rva2VuLHQudDM9dC50MS5jb25jYXQuY2FsbCh0LnQxLHQudDIpLHQudDAucHVzaC5jYWxsKHQudDAsdC50MyksaS5wdXNoKCJ0b2tlbl90eXBlX2hpbnQ9YWNjZXNzX3Rva2VuIiksdC5wcmV2PTE4LHQubmV4dD0yMSxmZXRjaChuLHtib2R5Omkuam9pbigiJiIpLGNyZWRlbnRpYWxzOmEuc2VuZENvb2tpZXNJblJlcXVlc3RzP1IuSW5jbHVkZTpSLlNhbWVPcmlnaW4saGVhZGVyczpuZXcgSGVhZGVycyhMLmdldFRva2VuUmVxdWVzdEhlYWRlcnMoKSksbWV0aG9kOiJQT1NUIn0pO2Nhc2UgMjE6bz10LnNlbnQsdC5uZXh0PTI3O2JyZWFrO2Nhc2UgMjQ6dGhyb3cgdC5wcmV2PTI0LHQudDQ9dC5jYXRjaCgxOCksbmV3IEkoIkpTLUFVVEhfQ09SRS1SQVQzLU5FMDIiLCJUaGUgcmVxdWVzdCB0byByZXZva2UgYWNjZXNzIHRva2VuIGZhaWxlZC4iLG51bGwhPXQudDQ/dC50NDoiVGhlIHJlcXVlc3Qgc2VudCB0byByZXZva2UgdGhlIGFjY2VzcyB0b2tlbiBmYWlsZWQuIik7Y2FzZSAyNzppZigyMDA9PT1vLnN0YXR1cyYmby5vayl7dC5uZXh0PTM0O2JyZWFrfXJldHVybiB0LnQ1PUksdC50Nj0iSW52YWxpZCByZXNwb25zZSBzdGF0dXMgcmVjZWl2ZWQgZm9yIHJldm9rZSBhY2Nlc3MgdG9rZW4gcmVxdWVzdCAoIi5jb25jYXQoby5zdGF0dXNUZXh0LCIpLiIpLHQubmV4dD0zMixvLmpzb24oKTtjYXNlIDMyOnRocm93IHQudDc9dC5zZW50LG5ldyB0LnQ1KCJKUy1BVVRIX0NPUkUtUkFUMy1IRTAzIix0LnQ2LHQudDcpO2Nhc2UgMzQ6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLCh0aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5jbGVhclVzZXJTZXNzaW9uRGF0YShlKSxQcm9taXNlLnJlc29sdmUobykpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTgsMjRdXSl9KSkpfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGw9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG4pe2Zvcig7Oylzd2l0Y2gobi5wcmV2PW4ubmV4dCl7Y2FzZSAwOnJldHVybiBuLm5leHQ9Mix0aGlzLl9vaWRjUHJvdmlkZXJNZXRhRGF0YSgpO2Nhc2UgMjpyZXR1cm4gYT1uLnNlbnQsbi5uZXh0PTUsdGhpcy5fY29uZmlnKCk7Y2FzZSA1OmlmKGk9bi5zZW50LChvPWUudG9rZW5FbmRwb2ludCYmMCE9PWUudG9rZW5FbmRwb2ludC50cmltKCkubGVuZ3RoP2UudG9rZW5FbmRwb2ludDphLnRva2VuX2VuZHBvaW50KSYmMCE9PW8udHJpbSgpLmxlbmd0aCl7bi5uZXh0PTg7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1SQ0ctTkYwMSIsIlRva2VuIGVuZHBvaW50IG5vdCBmb3VuZC4iLCJObyB0b2tlbiBlbmRwb2ludCB3YXMgZm91bmQgaW4gdGhlIE9JREMgcHJvdmlkZXIgbWV0YSBkYXRhIHJldHVybmVkIGJ5IHRoZSB3ZWxsLWtub3duIGVuZHBvaW50IG9yIHRoZSB0b2tlbiBlbmRwb2ludCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4iKTtjYXNlIDg6cmV0dXJuIG4ubmV4dD0xMCxQcm9taXNlLmFsbChPYmplY3QuZW50cmllcyhlLmRhdGEpLm1hcCgoZnVuY3Rpb24oZSl7dmFyIG49dyhlLDIpLGE9blswXSxpPW5bMV07cmV0dXJuIEUobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVwbGFjZUN1c3RvbUdyYW50VGVtcGxhdGVUYWdzKGksdCk7Y2FzZSAyOnJldHVybiBuPWUuc2VudCxlLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQoYSwiPSIpLmNvbmNhdChuKSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9KSkpO2Nhc2UgMTA6aWYocz1uLnNlbnQsdT1PYmplY3QuYXNzaWduKHt9LEwuZ2V0VG9rZW5SZXF1ZXN0SGVhZGVycygpKSxuLnQwPWUuYXR0YWNoVG9rZW4sIW4udDApe24ubmV4dD0yMzticmVha31yZXR1cm4gbi50MT1PYmplY3Qsbi50Mj1PYmplY3QuYXNzaWduKHt9LHUpLG4udDM9IkJlYXJlciAiLG4ubmV4dD0xOSx0aGlzLl9kYXRhTGF5ZXIuZ2V0U2Vzc2lvbkRhdGEodCk7Y2FzZSAxOTpuLnQ0PW4uc2VudC5hY2Nlc3NfdG9rZW4sbi50NT1uLnQzLmNvbmNhdC5jYWxsKG4udDMsbi50NCksbi50Nj17QXV0aG9yaXphdGlvbjpuLnQ1fSx1PW4udDEuYXNzaWduLmNhbGwobi50MSxuLnQyLG4udDYpO2Nhc2UgMjM6cmV0dXJuIGM9e2JvZHk6cy5qb2luKCImIiksY3JlZGVudGlhbHM6aS5zZW5kQ29va2llc0luUmVxdWVzdHM/Ui5JbmNsdWRlOlIuU2FtZU9yaWdpbixoZWFkZXJzOm5ldyBIZWFkZXJzKHUpLG1ldGhvZDoiUE9TVCJ9LG4ucHJldj0yNCxuLm5leHQ9MjcsZmV0Y2gobyxjKTtjYXNlIDI3OmY9bi5zZW50LG4ubmV4dD0zMzticmVhaztjYXNlIDMwOnRocm93IG4ucHJldj0zMCxuLnQ3PW4uY2F0Y2goMjQpLG5ldyBJKCJKUy1BVVRIX0NPUkUtUkNHLU5FMDIiLCJUaGUgY3VzdG9tIGdyYW50IHJlcXVlc3QgZmFpbGVkLiIsbnVsbCE9bi50Nz9uLnQ3OiJUaGUgcmVxdWVzdCBzZW50IHRvIGdldCB0aGUgY3VzdG9tIGdyYW50IGZhaWxlZC4iKTtjYXNlIDMzOmlmKDIwMD09PWYuc3RhdHVzJiZmLm9rKXtuLm5leHQ9NDA7YnJlYWt9cmV0dXJuIG4udDg9SSxuLnQ5PSJJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cyByZWNlaXZlZCBmb3IgdGhlIGN1c3RvbSBncmFudCByZXF1ZXN0LiAoIi5jb25jYXQoZi5zdGF0dXNUZXh0LCIpIiksbi5uZXh0PTM4LGYuanNvbigpO2Nhc2UgMzg6dGhyb3cgbi50MTA9bi5zZW50LG5ldyBuLnQ4KCJKUy1BVVRIX0NPUkUtUkNHLUhFMDMiLG4udDksbi50MTApO2Nhc2UgNDA6aWYoIWUucmV0dXJuc1Nlc3Npb24pe24ubmV4dD00NDticmVha31uLnQxMT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5oYW5kbGVUb2tlblJlc3BvbnNlKGYsdCksbi5uZXh0PTQ5O2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIG4udDEyPVByb21pc2Usbi5uZXh0PTQ3LGYuanNvbigpO2Nhc2UgNDc6bi50MTM9bi5zZW50LG4udDExPW4udDEyLnJlc29sdmUuY2FsbChuLnQxMixuLnQxMyk7Y2FzZSA0OTpyZXR1cm4gbi5hYnJ1cHQoInJldHVybiIsbi50MTEpO2Nhc2UgNTA6Y2FzZSJlbmQiOnJldHVybiBuLnN0b3AoKX19KSxuLHRoaXMsW1syNCwzMF1dKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhLGk7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsYT10aGlzLl9hdXRoZW50aWNhdGlvbkhlbHBlci5nZXRBdXRoZW50aWNhdGVkVXNlckluZm8obnVsbD09bj92b2lkIDA6bi5pZF90b2tlbiksaT17YWxsb3dlZFNjb3BlczpuLnNjb3BlLHNlc3Npb25TdGF0ZTpuLnNlc3Npb25fc3RhdGV9LHQuYWJydXB0KCJyZXR1cm4iLChPYmplY3Qua2V5cyhhKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2b2lkIDAhPT1hW2VdJiYiIiE9PWFbZV0mJm51bGwhPT1hW2VdfHxkZWxldGUgYVtlXX0pKSxpPU9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSxpKSxhKSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0RGVjb2RlZElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3ZhciBuO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIG49dC5zZW50LmlkX3Rva2VuLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2NyeXB0b0hlbHBlci5kZWNvZGVJRFRva2VuKG4pKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudC5pZF90b2tlbik7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRPSURDUHJvdmlkZXJNZXRhRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2NvbmZpZygpO2Nhc2UgMjppZihuPXQuc2VudCx0LnQwPSFlLCF0LnQwKXt0Lm5leHQ9ODticmVha31yZXR1cm4gdC5uZXh0PTcsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoIm9wX2NvbmZpZ19pbml0aWF0ZWQiKTtjYXNlIDc6dC50MD10LnNlbnQ7Y2FzZSA4OmlmKCF0LnQwKXt0Lm5leHQ9MTA7YnJlYWt9cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDEwOmlmKCEoYT1uLndlbGxLbm93bkVuZHBvaW50KSl7dC5uZXh0PTM2O2JyZWFrfXJldHVybiB0LnByZXY9MTIsdC5uZXh0PTE1LGZldGNoKGEpO2Nhc2UgMTU6aWYoMjAwPT09KGk9dC5zZW50KS5zdGF0dXMmJmkub2spe3QubmV4dD0xODticmVha310aHJvdyBuZXcgRXJyb3I7Y2FzZSAxODp0Lm5leHQ9MjM7YnJlYWs7Y2FzZSAyMDp0aHJvdyB0LnByZXY9MjAsdC50MT10LmNhdGNoKDEyKSxuZXcgSSgiSlMtQVVUSF9DT1JFLUdPUE1ELUhFMDEiLCJJbnZhbGlkIHdlbGwta25vd24gcmVzcG9uc2UiLCJUaGUgd2VsbCBrbm93biBlbmRwb2ludCByZXNwb25zZSBoYXMgYmVlbiBmYWlsZWQgd2l0aCBhbiBlcnJvci4iKTtjYXNlIDIzOnJldHVybiB0LnQyPXRoaXMuX2RhdGFMYXllcix0LnQzPXRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLHQubmV4dD0yNyxpLmpzb24oKTtjYXNlIDI3OnJldHVybiB0LnQ0PXQuc2VudCx0Lm5leHQ9MzAsdC50My5yZXNvbHZlRW5kcG9pbnRzLmNhbGwodC50Myx0LnQ0KTtjYXNlIDMwOnJldHVybiB0LnQ1PXQuc2VudCx0Lm5leHQ9MzMsdC50Mi5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDIsdC50NSk7Y2FzZSAzMzpyZXR1cm4gdC5uZXh0PTM1LHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSAzNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgMzY6aWYoIW4uYmFzZVVybCl7dC5uZXh0PTUyO2JyZWFrfXJldHVybiB0LnByZXY9MzcsdC50Nj10aGlzLl9kYXRhTGF5ZXIsdC5uZXh0PTQxLHRoaXMuX2F1dGhlbnRpY2F0aW9uSGVscGVyLnJlc29sdmVFbmRwb2ludHNCeUJhc2VVUkwoKTtjYXNlIDQxOnJldHVybiB0LnQ3PXQuc2VudCx0Lm5leHQ9NDQsdC50Ni5zZXRPSURDUHJvdmlkZXJNZXRhRGF0YS5jYWxsKHQudDYsdC50Nyk7Y2FzZSA0NDp0Lm5leHQ9NDk7YnJlYWs7Y2FzZSA0Njp0aHJvdyB0LnByZXY9NDYsdC50OD10LmNhdGNoKDM3KSxuZXcgSSgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDIiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDg/dC50ODoiUmVzb2x2aW5nIGVuZHBvaW50cyBieSBiYXNlIHVybCBmYWlsZWQuIik7Y2FzZSA0OTpyZXR1cm4gdC5uZXh0PTUxLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIiwhMCk7Y2FzZSA1MTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKCkpO2Nhc2UgNTI6cmV0dXJuIHQucHJldj01Mix0LnQ5PXRoaXMuX2RhdGFMYXllcix0Lm5leHQ9NTYsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIucmVzb2x2ZUVuZHBvaW50c0V4cGxpY2l0bHkoKTtjYXNlIDU2OnJldHVybiB0LnQxMD10LnNlbnQsdC5uZXh0PTU5LHQudDkuc2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEuY2FsbCh0LnQ5LHQudDEwKTtjYXNlIDU5OnQubmV4dD02NDticmVhaztjYXNlIDYxOnRocm93IHQucHJldj02MSx0LnQxMT10LmNhdGNoKDUyKSxuZXcgSSgiSlMtQVVUSF9DT1JFLUdPUE1ELUlWMDMiLCJSZXNvbHZpbmcgZW5kcG9pbnRzIGZhaWxlZC4iLG51bGwhPXQudDExP3QudDExOiJSZXNvbHZpbmcgZW5kcG9pbnRzIGJ5IGV4cGxpY2l0bHkgZmFpbGVkLiIpO2Nhc2UgNjQ6cmV0dXJuIHQubmV4dD02Nix0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIsITApO2Nhc2UgNjY6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVzb2x2ZSgpKTtjYXNlIDY3OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzLFtbMTIsMjBdLFszNyw0Nl0sWzUyLDYxXV0pfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlLHQsbixhLGksbyxzLHUsYyxmO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbCgpe3ZhciBoO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOnJldHVybiBoPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIix7YXV0aG9yaXphdGlvbkVuZHBvaW50Om51bGwhPT0oZT1oLmF1dGhvcml6YXRpb25fZW5kcG9pbnQpJiZ2b2lkIDAhPT1lP2U6IiIsY2hlY2tTZXNzaW9uSWZyYW1lOm51bGwhPT0odD1oLmNoZWNrX3Nlc3Npb25faWZyYW1lKSYmdm9pZCAwIT09dD90OiIiLGVuZFNlc3Npb25FbmRwb2ludDpudWxsIT09KG49aC5lbmRfc2Vzc2lvbl9lbmRwb2ludCkmJnZvaWQgMCE9PW4/bjoiIixpbnRyb3NwZWN0aW9uRW5kcG9pbnQ6bnVsbCE9PShhPWguaW50cm9zcGVjdGlvbl9lbmRwb2ludCkmJnZvaWQgMCE9PWE/YToiIixpc3N1ZXI6bnVsbCE9PShpPWguaXNzdWVyKSYmdm9pZCAwIT09aT9pOiIiLGp3a3NVcmk6bnVsbCE9PShvPWguandrc191cmkpJiZ2b2lkIDAhPT1vP286IiIscmVnaXN0cmF0aW9uRW5kcG9pbnQ6bnVsbCE9PShzPWgucmVnaXN0cmF0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09cz9zOiIiLHJldm9jYXRpb25FbmRwb2ludDpudWxsIT09KHU9aC5yZXZvY2F0aW9uX2VuZHBvaW50KSYmdm9pZCAwIT09dT91OiIiLHRva2VuRW5kcG9pbnQ6bnVsbCE9PShjPWgudG9rZW5fZW5kcG9pbnQpJiZ2b2lkIDAhPT1jP2M6IiIsdXNlcmluZm9FbmRwb2ludDpudWxsIT09KGY9aC51c2VyaW5mb19lbmRwb2ludCkmJnZvaWQgMCE9PWY/ZjoiIn0pO2Nhc2UgNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGwsdGhpcyl9KSkpfX0se2tleToiZ2V0U2lnbk91dFVSTCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQsbixhO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gaSgpe3ZhciBvLHMsdSxjO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX29pZGNQcm92aWRlck1ldGFEYXRhKCk7Y2FzZSAyOmlmKHIudDE9dD1yLnNlbnQsci50MD1udWxsPT09ci50MSxyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMD09PXQ7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj12b2lkIDAsci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj10LmVuZF9zZXNzaW9uX2VuZHBvaW50O2Nhc2UgMTE6cmV0dXJuIG89ci50MixyLm5leHQ9MTQsdGhpcy5fY29uZmlnKCk7Y2FzZSAxNDppZihzPXIuc2VudCxvJiYwIT09by50cmltKCkubGVuZ3RoKXtyLm5leHQ9MTc7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDEiLCJTaWduLW91dCBlbmRwb2ludCBub3QgZm91bmQuIiwiTm8gc2lnbi1vdXQgZW5kcG9pbnQgd2FzIGZvdW5kIGluIHRoZSBPSURDIHByb3ZpZGVyIG1ldGEgZGF0YSByZXR1cm5lZCBieSB0aGUgd2VsbC1rbm93biBlbmRwb2ludCBvciB0aGUgc2lnbi1vdXQgZW5kcG9pbnQgcGFzc2VkIHRvIHRoZSBTREsgaXMgZW1wdHkuIik7Y2FzZSAxNzpyZXR1cm4gci5uZXh0PTE5LHRoaXMuX2RhdGFMYXllci5nZXRTZXNzaW9uRGF0YShlKTtjYXNlIDE5OmlmKHIudDQ9bj1yLnNlbnQsci50Mz1udWxsPT09ci50NCxyLnQzKXtyLm5leHQ9MjM7YnJlYWt9ci50Mz12b2lkIDA9PT1uO2Nhc2UgMjM6aWYoIXIudDMpe3IubmV4dD0yNzticmVha31yLnQ1PXZvaWQgMCxyLm5leHQ9Mjg7YnJlYWs7Y2FzZSAyNzpyLnQ1PW4uaWRfdG9rZW47Y2FzZSAyODppZigodT1yLnQ1KSYmMCE9PXUudHJpbSgpLmxlbmd0aCl7ci5uZXh0PTMxO2JyZWFrfXRocm93IG5ldyBJKCJKUy1BVVRIX0NPUkUtR1NPVS1ORjAyIiwiSUQgdG9rZW4gbm90IGZvdW5kLiIsIk5vIElEIHRva2VuIGNvdWxkIGJlIGZvdW5kLiBFaXRoZXIgdGhlIHNlc3Npb24gaW5mb3JtYXRpb24gaXMgbG9zdCBvciB5b3UgaGF2ZSBub3Qgc2lnbmVkIGluLiIpO2Nhc2UgMzE6aWYoKGM9bnVsbCE9PShhPW51bGw9PXM/dm9pZCAwOnMuc2lnbk91dFJlZGlyZWN0VVJMKSYmdm9pZCAwIT09YT9hOm51bGw9PXM/dm9pZCAwOnMuc2lnbkluUmVkaXJlY3RVUkwpJiYwIT09Yy50cmltKCkubGVuZ3RoKXtyLm5leHQ9MzQ7YnJlYWt9dGhyb3cgbmV3IEkoIkpTLUFVVEhfQ09SRS1HU09VLU5GMDMiLCJObyBzaWduLW91dCByZWRpcmVjdCBVUkwgZm91bmQuIiwiVGhlIHNpZ24tb3V0IHJlZGlyZWN0IFVSTCBjYW5ub3QgYmUgZm91bmQgb3IgdGhlIFVSTCBwYXNzZWQgdG8gdGhlIFNESyBpcyBlbXB0eS4gTm8gc2lnbi1pbiByZWRpcmVjdCBVUkwgaGFzIGJlZW4gZm91bmQgZWl0aGVyLiAiKTtjYXNlIDM0OnJldHVybiByLmFicnVwdCgicmV0dXJuIiwiIi5jb25jYXQobywiP2lkX3Rva2VuX2hpbnQ9IikuY29uY2F0KHUsIiZwb3N0X2xvZ291dF9yZWRpcmVjdF91cmk9IikuY29uY2F0KGMsIiZzdGF0ZT1zaWduX291dF9zdWNjZXNzIikpO2Nhc2UgMzU6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuZ2V0U2lnbk91dFVSTChlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJjbGVhclVzZXJTZXNzaW9uRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fYXV0aGVudGljYXRpb25IZWxwZXIuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKGUpO2Nhc2UgMjppZihyLnQxPXQ9ci5zZW50LHIudDA9bnVsbD09PXIudDEsci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDA9PT10O2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9dm9pZCAwLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9dC5hY2Nlc3NfdG9rZW47Y2FzZSAxMTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50Mik7Y2FzZSAxMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiaXNBdXRoZW50aWNhdGVkIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LnQwPUJvb2xlYW4sdC5uZXh0PTMsdGhpcy5nZXRBY2Nlc3NUb2tlbihlKTtjYXNlIDM6cmV0dXJuIHQudDE9dC5zZW50LHQuYWJydXB0KCJyZXR1cm4iLCgwLHQudDApKHQudDEpKTtjYXNlIDU6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFBLQ0VDb2RlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbShlKSx0KTtjYXNlIDI6cmV0dXJuIHIuYWJydXB0KCJyZXR1cm4iLHIuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5zZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKEwuZXh0cmFjdFBLQ0VLZXlGcm9tU3RhdGVQYXJhbSh0KSxlLG4pO2Nhc2UgMjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci5zZW50KTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InVwZGF0ZUNvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoZSk7Y2FzZSAyOnJldHVybiB0Lm5leHQ9NCx0aGlzLmdldE9JRENQcm92aWRlck1ldGFEYXRhKCEwKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19XSksZX0oKSxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LHIpe28odGhpcyxlKSx0aGlzLl9pZD10LHRoaXMuX3N0b3JlPXJ9cmV0dXJuIHUoZSxbe2tleToic2V0RGF0YUluQnVsayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGEoKXt2YXIgaSxvLHMsdTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKGUpO2Nhc2UgMjppZihyLnQxPW49ci5zZW50LHIudDA9bnVsbCE9PXIudDEsIXIudDApe3IubmV4dD02O2JyZWFrfXIudDA9dm9pZCAwIT09bjtjYXNlIDY6aWYoIXIudDApe3IubmV4dD0xMDticmVha31yLnQyPW4sci5uZXh0PTExO2JyZWFrO2Nhc2UgMTA6ci50Mj1udWxsO2Nhc2UgMTE6cmV0dXJuIGk9ci50MixvPWkmJkpTT04ucGFyc2UoaSkscz1PYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbyksdCksdT1KU09OLnN0cmluZ2lmeShzKSxyLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLHUpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNldFZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7dmFyIG8scyx1LGY7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fc3RvcmUuZ2V0RGF0YShlKTtjYXNlIDI6aWYoci50MT1hPXIuc2VudCxyLnQwPW51bGwhPT1yLnQxLCFyLnQwKXtyLm5leHQ9NjticmVha31yLnQwPXZvaWQgMCE9PWE7Y2FzZSA2OmlmKCFyLnQwKXtyLm5leHQ9MTA7YnJlYWt9ci50Mj1hLHIubmV4dD0xMTticmVhaztjYXNlIDEwOnIudDI9bnVsbDtjYXNlIDExOnJldHVybiBvPXIudDIscz1vJiZKU09OLnBhcnNlKG8pLHU9T2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLGMoe30sdCxuKSksZj1KU09OLnN0cmluZ2lmeSh1KSxyLm5leHQ9MTcsdGhpcy5fc3RvcmUuc2V0RGF0YShlLGYpO2Nhc2UgMTc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVZhbHVlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3ZhciBpLG8scyx1O3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEoZSk7Y2FzZSAyOmlmKHIudDE9bj1yLnNlbnQsci50MD1udWxsIT09ci50MSwhci50MCl7ci5uZXh0PTY7YnJlYWt9ci50MD12b2lkIDAhPT1uO2Nhc2UgNjppZighci50MCl7ci5uZXh0PTEwO2JyZWFrfXIudDI9bixyLm5leHQ9MTE7YnJlYWs7Y2FzZSAxMDpyLnQyPW51bGw7Y2FzZSAxMTpyZXR1cm4gaT1yLnQyLG89aSYmSlNPTi5wYXJzZShpKSxkZWxldGUocz1PYmplY3QuYXNzaWduKHt9LG8pKVt0XSx1PUpTT04uc3RyaW5naWZ5KHMpLHIubmV4dD0xOCx0aGlzLl9zdG9yZS5zZXREYXRhKGUsdSk7Y2FzZSAxODpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGEsdGhpcyl9KSkpfX0se2tleToiX3Jlc29sdmVLZXkiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQsIi0iKS5jb25jYXQodCk6IiIuY29uY2F0KGUsIi0iKS5jb25jYXQodGhpcy5faWQpfX0se2tleToic2V0Q29uZmlnRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEEuT0lEQ1Byb3ZpZGVyTWV0YURhdGEpLGUpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnRoaXMuc2V0RGF0YUluQnVsayh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6dGhpcy5zZXREYXRhSW5CdWxrKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSx0KSxlKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6ImdldENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC50MD1KU09OLHQubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDM6aWYodC50Mj1lPXQuc2VudCx0LnQxPW51bGwhPT10LnQyLCF0LnQxKXt0Lm5leHQ9NzticmVha310LnQxPXZvaWQgMCE9PWU7Y2FzZSA3OmlmKCF0LnQxKXt0Lm5leHQ9MTE7YnJlYWt9dC50Mz1lLHQubmV4dD0xMjticmVhaztjYXNlIDExOnQudDM9bnVsbDtjYXNlIDEyOnJldHVybiB0LnQ0PXQudDMsdC5hYnJ1cHQoInJldHVybiIsdC50MC5wYXJzZS5jYWxsKHQudDAsdC50NCkpO2Nhc2UgMTQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlO3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQudDA9SlNPTix0Lm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMzppZih0LnQyPWU9dC5zZW50LHQudDE9bnVsbCE9PXQudDIsIXQudDEpe3QubmV4dD03O2JyZWFrfXQudDE9dm9pZCAwIT09ZTtjYXNlIDc6aWYoIXQudDEpe3QubmV4dD0xMTticmVha310LnQzPWUsdC5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6dC50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHQudDQ9dC50Myx0LmFicnVwdCgicmV0dXJuIix0LnQwLnBhcnNlLmNhbGwodC50MCx0LnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0VGVtcG9yYXJ5RGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci50MD1KU09OLHIubmV4dD0zLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsZSkpO2Nhc2UgMzppZihyLnQyPXQ9ci5zZW50LHIudDE9bnVsbCE9PXIudDIsIXIudDEpe3IubmV4dD03O2JyZWFrfXIudDE9dm9pZCAwIT09dDtjYXNlIDc6aWYoIXIudDEpe3IubmV4dD0xMTticmVha31yLnQzPXQsci5uZXh0PTEyO2JyZWFrO2Nhc2UgMTE6ci50Mz1udWxsO2Nhc2UgMTI6cmV0dXJuIHIudDQ9ci50MyxyLmFicnVwdCgicmV0dXJuIixyLnQwLnBhcnNlLmNhbGwoci50MCxyLnQ0KSk7Y2FzZSAxNDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToiZ2V0U2Vzc2lvbkRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIudDA9SlNPTixyLm5leHQ9Myx0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAzOmlmKHIudDI9dD1yLnNlbnQsci50MT1udWxsIT09ci50Miwhci50MSl7ci5uZXh0PTc7YnJlYWt9ci50MT12b2lkIDAhPT10O2Nhc2UgNzppZighci50MSl7ci5uZXh0PTExO2JyZWFrfXIudDM9dCxyLm5leHQ9MTI7YnJlYWs7Y2FzZSAxMTpyLnQzPW51bGw7Y2FzZSAxMjpyZXR1cm4gci50ND1yLnQzLHIuYWJydXB0KCJyZXR1cm4iLHIudDAucGFyc2UuY2FsbChyLnQwLHIudDQpKTtjYXNlIDE0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVDb25maWdEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZU9JRENQcm92aWRlck1ldGFEYXRhIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX3N0b3JlLnJlbW92ZURhdGEodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJyZW1vdmVUZW1wb3JhcnlEYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5UZW1wb3JhcnlEYXRhLGUpKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5yZW1vdmVEYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSxlKSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDb25maWdEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5Db25maWdEYXRhKSk7Y2FzZSAyOnJldHVybiBuPXQuc2VudCx0LmFicnVwdCgicmV0dXJuIixuJiZKU09OLnBhcnNlKG4pW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbjtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5PSURDUHJvdmlkZXJNZXRhRGF0YSkpO2Nhc2UgMjpyZXR1cm4gbj10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIsbiYmSlNPTi5wYXJzZShuKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX3N0b3JlLmdldERhdGEodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsdCkpO2Nhc2UgMjpyZXR1cm4gYT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsYSYmSlNPTi5wYXJzZShhKVtlXSk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJnZXRTZXNzaW9uRGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYTtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9zdG9yZS5nZXREYXRhKHRoaXMuX3Jlc29sdmVLZXkoQS5TZXNzaW9uRGF0YSx0KSk7Y2FzZSAyOnJldHVybiBhPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixhJiZKU09OLnBhcnNlKGEpW2VdKTtjYXNlIDQ6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldENvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuQ29uZmlnRGF0YSksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InNldE9JRENQcm92aWRlck1ldGFEYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlLHQpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToic2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuc2V0VmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlRlbXBvcmFyeURhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InNldFNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5zZXRWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuU2Vzc2lvbkRhdGEsbiksZSx0KTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZUNvbmZpZ0RhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLkNvbmZpZ0RhdGEpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmVtb3ZlT0lEQ1Byb3ZpZGVyTWV0YURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLk9JRENQcm92aWRlck1ldGFEYXRhKSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVRlbXBvcmFyeURhdGFQYXJhbWV0ZXIiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBuKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5yZW1vdmVWYWx1ZSh0aGlzLl9yZXNvbHZlS2V5KEEuVGVtcG9yYXJ5RGF0YSx0KSxlKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLHRoaXMpfSkpKX19LHtrZXk6InJlbW92ZVNlc3Npb25EYXRhUGFyYW1ldGVyIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMucmVtb3ZlVmFsdWUodGhpcy5fcmVzb2x2ZUtleShBLlNlc3Npb25EYXRhLHQpLGUpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX1dKSxlfSgpLEs9e2Nsb2NrVG9sZXJhbmNlOjMwMCxlbmFibGVQS0NFOiEwLHJlc3BvbnNlTW9kZTpULnF1ZXJ5LHNjb3BlOlsib3BlbmlkIl0sc2VuZENvb2tpZXNJblJlcXVlc3RzOiEwLHZhbGlkYXRlSURUb2tlbjohMH0sSj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyKXtvKHRoaXMsZSksZS5faW5zdGFuY2VJRD9lLl9pbnN0YW5jZUlEKz0xOmUuX2luc3RhbmNlSUQ9MCx0aGlzLl9kYXRhTGF5ZXI9bmV3IHEoImluc3RhbmNlXyIuY29uY2F0KGUuX2luc3RhbmNlSUQpLHQpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZT1uZXcgTih0aGlzLl9kYXRhTGF5ZXIsciksZS5fYXV0aGVudGljYXRpb25Db3JlPW5ldyBOKHRoaXMuX2RhdGFMYXllcixyKX1yZXR1cm4gdShlLFt7a2V5OiJpbml0aWFsaXplIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdCxuLGE7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBpKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gci5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLnNldENvbmZpZ0RhdGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sSyksZSkse3Njb3BlOltdLmNvbmNhdChiKG51bGwhPT0odD1LLnNjb3BlKSYmdm9pZCAwIT09dD90OltdKSxiKG51bGwhPT0oYT1udWxsPT09KG49ZS5zY29wZSl8fHZvaWQgMD09PW4/dm9pZCAwOm4uZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4hKG51bGw9PT0odD1udWxsPT1LP3ZvaWQgMDpLLnNjb3BlKXx8dm9pZCAwPT09dD92b2lkIDA6dC5pbmNsdWRlcyhlKSl9KSkpJiZ2b2lkIDAhPT1hP2E6W10pKX0pKTtjYXNlIDI6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6ImdldERhdGFMYXllciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YUxheWVyfX0se2tleToiZ2V0QXV0aG9yaXphdGlvblVSTCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXt2YXIgYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihyKXtmb3IoOzspc3dpdGNoKHIucHJldj1yLm5leHQpe2Nhc2UgMDpyZXR1cm4gbnVsbD09KGE9T2JqZWN0LmFzc2lnbih7fSxlKSl8fGRlbGV0ZSBhLmZvcmNlSW5pdCxyLm5leHQ9NCx0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcigib3BfY29uZmlnX2luaXRpYXRlZCIpO2Nhc2UgNDppZighci5zZW50KXtyLm5leHQ9ODticmVha31yLnQwPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBdXRob3JpemF0aW9uVVJMKGEsdCksci5uZXh0PTk7YnJlYWs7Y2FzZSA4OnIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldE9JRENQcm92aWRlck1ldGFEYXRhKG51bGw9PWU/dm9pZCAwOmUuZm9yY2VJbml0KS50aGVuKChmdW5jdGlvbigpe3JldHVybiBpLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0QXV0aG9yaXphdGlvblVSTChhLHQpfSkpO2Nhc2UgOTpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsci50MCk7Y2FzZSAxMDpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLG4sdGhpcyl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRUZW1wb3JhcnlEYXRhUGFyYW1ldGVyKCJvcF9jb25maWdfaW5pdGlhdGVkIik7Y2FzZSAyOmlmKCFyLnNlbnQpe3IubmV4dD02O2JyZWFrfXIudDA9dGhpcy5fYXV0aGVudGljYXRpb25Db3JlLnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsbixhKSxyLm5leHQ9NzticmVhaztjYXNlIDY6ci50MD10aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0T0lEQ1Byb3ZpZGVyTWV0YURhdGEoITEpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIG8uX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0QWNjZXNzVG9rZW4oZSx0LG4sYSl9KSk7Y2FzZSA3OnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnQwKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxpLHRoaXMpfSkpKX19LHtrZXk6InNpZ25PdXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zaWduT3V0KGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldFNpZ25PdXRVUkwiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRTaWduT3V0VVJMKGUpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0LHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldERlY29kZWRJRFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0RGVjb2RlZElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0SURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldElEVG9rZW4oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToiZ2V0QmFzaWNVc2VySW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmdldEJhc2ljVXNlckluZm8oZSkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToicmV2b2tlQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmV2b2tlQWNjZXNzVG9rZW4oZSl9fSx7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUucmVmcmVzaEFjY2Vzc1Rva2VuKGUpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5nZXRBY2Nlc3NUb2tlbihlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJyZXF1ZXN0Q3VzdG9tR3JhbnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSx0KX19LHtrZXk6ImlzQXV0aGVudGljYXRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIEUodGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25Db3JlLmlzQXV0aGVudGljYXRlZChlKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJnZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG4oKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuZ2V0UEtDRUNvZGUoZSx0KSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksbix0aGlzKX0pKSl9fSx7a2V5OiJzZXRQS0NFQ29kZSIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6cmV0dXJuIHIubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS5zZXRQS0NFQ29kZShlLHQsbik7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJ1cGRhdGVDb25maWciLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBFKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ29yZS51cGRhdGVDb25maWcoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0sW3trZXk6ImlzU2lnbk91dFN1Y2Nlc3NmdWwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBVUkwoZSkscj10LnNlYXJjaFBhcmFtcy5nZXQoInN0YXRlIiksbj1Cb29sZWFuKHQuc2VhcmNoUGFyYW1zLmdldCgiZXJyb3IiKSk7cmV0dXJuISFyJiYic2lnbl9vdXRfc3VjY2VzcyI9PT1yJiYhbn19LHtrZXk6ImRpZFNpZ25PdXRGYWlsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMKGUpLHI9dC5zZWFyY2hQYXJhbXMuZ2V0KCJzdGF0ZSIpLG49Qm9vbGVhbih0LnNlYXJjaFBhcmFtcy5nZXQoImVycm9yIikpO3JldHVybiEhciYmInNpZ25fb3V0X3N1Y2Nlc3MiPT09ciYmbn19LHtrZXk6ImNsZWFyVXNlclNlc3Npb25EYXRhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gRSh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix0aGlzLl9hdXRoZW50aWNhdGlvbkNvcmUuY2xlYXJVc2VyU2Vzc2lvbkRhdGEoZSk7Y2FzZSAyOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fV0pLGV9KCksQj0iaW5pdCI7IWZ1bmN0aW9uKGUpe2UuTG9jYWxTdG9yYWdlPSJsb2NhbFN0b3JhZ2UiLGUuU2Vzc2lvblN0b3JhZ2U9InNlc3Npb25TdG9yYWdlIixlLldlYldvcmtlcj0id2ViV29ya2VyIixlLkJyb3dzZXJNZW1vcnk9ImJyb3dzZXJNZW1vcnkifShVfHwoVT17fSkpLGZ1bmN0aW9uKGUpe2UuU2lnbkluPSJzaWduLWluIixlLlNpZ25PdXQ9InNpZ24tb3V0IixlLkluaXRpYWxpemU9ImluaXRpYWxpemUiLGUuSHR0cFJlcXVlc3RTdGFydD0iaHR0cC1yZXF1ZXN0LXN0YXJ0IixlLkh0dHBSZXF1ZXN0RmluaXNoPSJodHRwLXJlcXVlc3QtZmluaXNoIixlLkh0dHBSZXF1ZXN0RXJyb3I9Imh0dHAtcmVxdWVzdC1lcnJvciIsZS5IdHRwUmVxdWVzdFN1Y2Nlc3M9Imh0dHAtcmVxdWVzdC1zdWNjZXNzIixlLlJldm9rZUFjY2Vzc1Rva2VuPSJyZXZva2UtYWNjZXNzLXRva2VuIixlLkN1c3RvbUdyYW50PSJjdXN0b20tZ3JhbnQiLGUuU2lnbk91dEZhaWxlZD0ic2lnbi1vdXQtZmFpbGVkIn0oSHx8KEg9e30pKTt2YXIgRj0icHJvbXB0Tm9uZVJlcXVlc3RTZW50IixXPSJlcnJvciIsej0iZXJyb3JfZGVzY3JpcHRpb24iLFk9ImN1c3RvbV9ncmFudF9jb25maWciLEc9InN0YXRlIixWPSJBY2Nlc3MgdG9rZW4gaXMgaW52YWxpZCIsWD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uICQoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsImRlZmF1bHQiKT9lLmRlZmF1bHQ6ZX1mdW5jdGlvbiBaKGUpe2lmKGUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscixuLmdldD9uOntlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBlW3JdfX0pfSkpLHR9dmFyIFE9e2V4cG9ydHM6e319LGVlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciByPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoKSxuPTA7bjxyLmxlbmd0aDtuKyspcltuXT1hcmd1bWVudHNbbl07cmV0dXJuIGUuYXBwbHkodCxyKX19LHRlPWVlLHJlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSl9ZnVuY3Rpb24gYWUoZSl7cmV0dXJuIHZvaWQgMD09PWV9ZnVuY3Rpb24gaWUoZSl7cmV0dXJuIltvYmplY3QgQXJyYXlCdWZmZXJdIj09PXJlLmNhbGwoZSl9ZnVuY3Rpb24gb2UoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PW4oZSl9ZnVuY3Rpb24gc2UoZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1yZS5jYWxsKGUpKXJldHVybiExO3ZhciB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQ9PT1PYmplY3QucHJvdG90eXBlfWZ1bmN0aW9uIHVlKGUpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1yZS5jYWxsKGUpfWZ1bmN0aW9uIGNlKGUsdCl7aWYobnVsbCE9ZSlpZigib2JqZWN0IiE9PW4oZSkmJihlPVtlXSksbmUoZSkpZm9yKHZhciByPTAsYT1lLmxlbmd0aDtyPGE7cisrKXQuY2FsbChudWxsLGVbcl0scixlKTtlbHNlIGZvcih2YXIgaSBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGkpJiZ0LmNhbGwobnVsbCxlW2ldLGksZSl9dmFyIGZlPXtpc0FycmF5Om5lLGlzQXJyYXlCdWZmZXI6aWUsaXNCdWZmZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYhYWUoZSkmJm51bGwhPT1lLmNvbnN0cnVjdG9yJiYhYWUoZS5jb25zdHJ1Y3RvcikmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNvbnN0cnVjdG9yLmlzQnVmZmVyJiZlLmNvbnN0cnVjdG9yLmlzQnVmZmVyKGUpfSxpc0Zvcm1EYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEZvcm1EYXRhXSI9PT1yZS5jYWxsKGUpfSxpc0FycmF5QnVmZmVyVmlldzpmdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiZBcnJheUJ1ZmZlci5pc1ZpZXc/QXJyYXlCdWZmZXIuaXNWaWV3KGUpOmUmJmUuYnVmZmVyJiZpZShlLmJ1ZmZlcil9LGlzU3RyaW5nOmZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0saXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlfSxpc09iamVjdDpvZSxpc1BsYWluT2JqZWN0OnNlLGlzVW5kZWZpbmVkOmFlLGlzRGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBEYXRlXSI9PT1yZS5jYWxsKGUpfSxpc0ZpbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIltvYmplY3QgRmlsZV0iPT09cmUuY2FsbChlKX0saXNCbG9iOmZ1bmN0aW9uKGUpe3JldHVybiJbb2JqZWN0IEJsb2JdIj09PXJlLmNhbGwoZSl9LGlzRnVuY3Rpb246dWUsaXNTdHJlYW06ZnVuY3Rpb24oZSl7cmV0dXJuIG9lKGUpJiZ1ZShlLnBpcGUpfSxpc1VSTFNlYXJjaFBhcmFtczpmdW5jdGlvbihlKXtyZXR1cm4iW29iamVjdCBVUkxTZWFyY2hQYXJhbXNdIj09PXJlLmNhbGwoZSl9LGlzU3RhbmRhcmRCcm93c2VyRW52OmZ1bmN0aW9uKCl7cmV0dXJuKCJ1bmRlZmluZWQiPT10eXBlb2YgbmF2aWdhdG9yfHwiUmVhY3ROYXRpdmUiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOYXRpdmVTY3JpcHQiIT09bmF2aWdhdG9yLnByb2R1Y3QmJiJOUyIhPT1uYXZpZ2F0b3IucHJvZHVjdCkmJigidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCl9LGZvckVhY2g6Y2UsbWVyZ2U6ZnVuY3Rpb24gZSgpe3ZhciB0PXt9O2Z1bmN0aW9uIHIocixuKXtzZSh0W25dKSYmc2Uocik/dFtuXT1lKHRbbl0scik6c2Uocik/dFtuXT1lKHt9LHIpOm5lKHIpP3Rbbl09ci5zbGljZSgpOnRbbl09cn1mb3IodmFyIG49MCxhPWFyZ3VtZW50cy5sZW5ndGg7bjxhO24rKyljZShhcmd1bWVudHNbbl0scik7cmV0dXJuIHR9LGV4dGVuZDpmdW5jdGlvbihlLHQscil7cmV0dXJuIGNlKHQsKGZ1bmN0aW9uKHQsbil7ZVtuXT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgdD90ZSh0LHIpOnR9KSksZX0sdHJpbTpmdW5jdGlvbihlKXtyZXR1cm4gZS50cmltP2UudHJpbSgpOmUucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxzdHJpcEJPTTpmdW5jdGlvbihlKXtyZXR1cm4gNjUyNzk9PT1lLmNoYXJDb2RlQXQoMCkmJihlPWUuc2xpY2UoMSkpLGV9fSxsZT1mZTtmdW5jdGlvbiBoZShlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpLnJlcGxhY2UoLyUzQS9naSwiOiIpLnJlcGxhY2UoLyUyNC9nLCIkIikucmVwbGFjZSgvJTJDL2dpLCIsIikucmVwbGFjZSgvJTIwL2csIisiKS5yZXBsYWNlKC8lNUIvZ2ksIlsiKS5yZXBsYWNlKC8lNUQvZ2ksIl0iKX12YXIgcGU9ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuO2lmKHIpbj1yKHQpO2Vsc2UgaWYobGUuaXNVUkxTZWFyY2hQYXJhbXModCkpbj10LnRvU3RyaW5nKCk7ZWxzZXt2YXIgYT1bXTtsZS5mb3JFYWNoKHQsKGZ1bmN0aW9uKGUsdCl7bnVsbCE9ZSYmKGxlLmlzQXJyYXkoZSk/dCs9IltdIjplPVtlXSxsZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKGUpe2xlLmlzRGF0ZShlKT9lPWUudG9JU09TdHJpbmcoKTpsZS5pc09iamVjdChlKSYmKGU9SlNPTi5zdHJpbmdpZnkoZSkpLGEucHVzaChoZSh0KSsiPSIraGUoZSkpfSkpKX0pKSxuPWEuam9pbigiJiIpfWlmKG4pe3ZhciBpPWUuaW5kZXhPZigiIyIpOy0xIT09aSYmKGU9ZS5zbGljZSgwLGkpKSxlKz0oLTE9PT1lLmluZGV4T2YoIj8iKT8iPyI6IiYiKStufXJldHVybiBlfSxkZT1mZTtmdW5jdGlvbiB2ZSgpe3RoaXMuaGFuZGxlcnM9W119dmUucHJvdG90eXBlLnVzZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIHRoaXMuaGFuZGxlcnMucHVzaCh7ZnVsZmlsbGVkOmUscmVqZWN0ZWQ6dCxzeW5jaHJvbm91czohIXImJnIuc3luY2hyb25vdXMscnVuV2hlbjpyP3IucnVuV2hlbjpudWxsfSksdGhpcy5oYW5kbGVycy5sZW5ndGgtMX0sdmUucHJvdG90eXBlLmVqZWN0PWZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlcnNbZV0mJih0aGlzLmhhbmRsZXJzW2VdPW51bGwpfSx2ZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXtkZS5mb3JFYWNoKHRoaXMuaGFuZGxlcnMsKGZ1bmN0aW9uKHQpe251bGwhPT10JiZlKHQpfSkpfTt2YXIgZ2U9dmUseWU9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fTtmdW5jdGlvbiBtZSgpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHdlKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX12YXIgYmU9bWUsa2U9d2U7ZnVuY3Rpb24geGUoZSl7aWYoYmU9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGJlPT09bWV8fCFiZSkmJnNldFRpbWVvdXQpcmV0dXJuIGJlPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gYmUoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGJlLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVybiBiZS5jYWxsKHRoaXMsZSwwKX19fSJmdW5jdGlvbiI9PXR5cGVvZiB5ZS5zZXRUaW1lb3V0JiYoYmU9c2V0VGltZW91dCksImZ1bmN0aW9uIj09dHlwZW9mIHllLmNsZWFyVGltZW91dCYmKGtlPWNsZWFyVGltZW91dCk7dmFyIF9lLFNlPVtdLEVlPSExLFRlPS0xO2Z1bmN0aW9uIEFlKCl7RWUmJl9lJiYoRWU9ITEsX2UubGVuZ3RoP1NlPV9lLmNvbmNhdChTZSk6VGU9LTEsU2UubGVuZ3RoJiZSZSgpKX1mdW5jdGlvbiBSZSgpe2lmKCFFZSl7dmFyIGU9eGUoQWUpO0VlPSEwO2Zvcih2YXIgdD1TZS5sZW5ndGg7dDspe2ZvcihfZT1TZSxTZT1bXTsrK1RlPHQ7KV9lJiZfZVtUZV0ucnVuKCk7VGU9LTEsdD1TZS5sZW5ndGh9X2U9bnVsbCxFZT0hMSxmdW5jdGlvbihlKXtpZihrZT09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1lb3V0KGUpO2lmKChrZT09PXdlfHwha2UpJiZjbGVhclRpbWVvdXQpcmV0dXJuIGtlPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e2tlKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4ga2UuY2FsbChudWxsLGUpfWNhdGNoKHQpe3JldHVybiBrZS5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIENlKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9Q2UucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9O2Z1bmN0aW9uIFBlKCl7fXZhciBEZT1QZSxPZT1QZSxJZT1QZSxMZT1QZSxVZT1QZSxIZT1QZSxNZT1QZTt2YXIgamU9eWUucGVyZm9ybWFuY2V8fHt9LE5lPWplLm5vd3x8amUubW96Tm93fHxqZS5tc05vd3x8amUub05vd3x8amUud2Via2l0Tm93fHxmdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfTt2YXIgcWU9bmV3IERhdGU7dmFyIEtlPXtuZXh0VGljazpmdW5jdGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO1NlLnB1c2gobmV3IENlKGUsdCkpLDEhPT1TZS5sZW5ndGh8fEVlfHx4ZShSZSl9LHRpdGxlOiJicm93c2VyIixicm93c2VyOiEwLGVudjp7fSxhcmd2OltdLHZlcnNpb246IiIsdmVyc2lvbnM6e30sb246RGUsYWRkTGlzdGVuZXI6T2Usb25jZTpJZSxvZmY6TGUscmVtb3ZlTGlzdGVuZXI6VWUscmVtb3ZlQWxsTGlzdGVuZXJzOkhlLGVtaXQ6TWUsYmluZGluZzpmdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkIil9LGN3ZDpmdW5jdGlvbigpe3JldHVybiIvIn0sY2hkaXI6ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sdW1hc2s6ZnVuY3Rpb24oKXtyZXR1cm4gMH0saHJ0aW1lOmZ1bmN0aW9uKGUpe3ZhciB0PS4wMDEqTmUuY2FsbChqZSkscj1NYXRoLmZsb29yKHQpLG49TWF0aC5mbG9vcih0JTEqMWU5KTtyZXR1cm4gZSYmKHItPWVbMF0sKG4tPWVbMV0pPDAmJihyLS0sbis9MWU5KSksW3Isbl19LHBsYXRmb3JtOiJicm93c2VyIixyZWxlYXNlOnt9LGNvbmZpZzp7fSx1cHRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUtcWUpLzFlM319LEplPUtlLEJlPWZlLEZlPWZ1bmN0aW9uKGUsdCxyLG4sYSl7cmV0dXJuIGUuY29uZmlnPXQsciYmKGUuY29kZT1yKSxlLnJlcXVlc3Q9bixlLnJlc3BvbnNlPWEsZS5pc0F4aW9zRXJyb3I9ITAsZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm57bWVzc2FnZTp0aGlzLm1lc3NhZ2UsbmFtZTp0aGlzLm5hbWUsZGVzY3JpcHRpb246dGhpcy5kZXNjcmlwdGlvbixudW1iZXI6dGhpcy5udW1iZXIsZmlsZU5hbWU6dGhpcy5maWxlTmFtZSxsaW5lTnVtYmVyOnRoaXMubGluZU51bWJlcixjb2x1bW5OdW1iZXI6dGhpcy5jb2x1bW5OdW1iZXIsc3RhY2s6dGhpcy5zdGFjayxjb25maWc6dGhpcy5jb25maWcsY29kZTp0aGlzLmNvZGUsc3RhdHVzOnRoaXMucmVzcG9uc2UmJnRoaXMucmVzcG9uc2Uuc3RhdHVzP3RoaXMucmVzcG9uc2Uuc3RhdHVzOm51bGx9fSxlfSxXZT17c2lsZW50SlNPTlBhcnNpbmc6ITAsZm9yY2VkSlNPTlBhcnNpbmc6ITAsY2xhcmlmeVRpbWVvdXRFcnJvcjohMX0semU9RmUsWWU9ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaT1uZXcgRXJyb3IoZSk7cmV0dXJuIHplKGksdCxyLG4sYSl9LEdlPVllLFZlPWZlLFhlPVZlLmlzU3RhbmRhcmRCcm93c2VyRW52KCk/e3dyaXRlOmZ1bmN0aW9uKGUsdCxyLG4sYSxpKXt2YXIgbz1bXTtvLnB1c2goZSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KHQpKSxWZS5pc051bWJlcihyKSYmby5wdXNoKCJleHBpcmVzPSIrbmV3IERhdGUocikudG9HTVRTdHJpbmcoKSksVmUuaXNTdHJpbmcobikmJm8ucHVzaCgicGF0aD0iK24pLFZlLmlzU3RyaW5nKGEpJiZvLnB1c2goImRvbWFpbj0iK2EpLCEwPT09aSYmby5wdXNoKCJzZWN1cmUiKSxkb2N1bWVudC5jb29raWU9by5qb2luKCI7ICIpfSxyZWFkOmZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCIoXnw7XFxzKikoIitlKyIpPShbXjtdKikiKSk7cmV0dXJuIHQ/ZGVjb2RlVVJJQ29tcG9uZW50KHRbM10pOm51bGx9LHJlbW92ZTpmdW5jdGlvbihlKXt0aGlzLndyaXRlKGUsIiIsRGF0ZS5ub3coKS04NjRlNSl9fTp7d3JpdGU6ZnVuY3Rpb24oKXt9LHJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0scmVtb3ZlOmZ1bmN0aW9uKCl7fX0sJGU9ZnVuY3Rpb24oZSl7cmV0dXJuL14oW2Etel1bYS16XGQrXC0uXSo6KT9cL1wvL2kudGVzdChlKX0sWmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lLnJlcGxhY2UoL1wvKyQvLCIiKSsiLyIrdC5yZXBsYWNlKC9eXC8rLywiIik6ZX0sUWU9ZmUsZXQ9WyJhZ2UiLCJhdXRob3JpemF0aW9uIiwiY29udGVudC1sZW5ndGgiLCJjb250ZW50LXR5cGUiLCJldGFnIiwiZXhwaXJlcyIsImZyb20iLCJob3N0IiwiaWYtbW9kaWZpZWQtc2luY2UiLCJpZi11bm1vZGlmaWVkLXNpbmNlIiwibGFzdC1tb2RpZmllZCIsImxvY2F0aW9uIiwibWF4LWZvcndhcmRzIiwicHJveHktYXV0aG9yaXphdGlvbiIsInJlZmVyZXIiLCJyZXRyeS1hZnRlciIsInVzZXItYWdlbnQiXSx0dD1mZSxydD10dC5pc1N0YW5kYXJkQnJvd3NlckVudigpP2Z1bmN0aW9uKCl7dmFyIGUsdD0vKG1zaWV8dHJpZGVudCkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2Z1bmN0aW9uIG4oZSl7dmFyIG49ZTtyZXR1cm4gdCYmKHIuc2V0QXR0cmlidXRlKCJocmVmIixuKSxuPXIuaHJlZiksci5zZXRBdHRyaWJ1dGUoImhyZWYiLG4pLHtocmVmOnIuaHJlZixwcm90b2NvbDpyLnByb3RvY29sP3IucHJvdG9jb2wucmVwbGFjZSgvOiQvLCIiKToiIixob3N0OnIuaG9zdCxzZWFyY2g6ci5zZWFyY2g/ci5zZWFyY2gucmVwbGFjZSgvXlw/LywiIik6IiIsaGFzaDpyLmhhc2g/ci5oYXNoLnJlcGxhY2UoL14jLywiIik6IiIsaG9zdG5hbWU6ci5ob3N0bmFtZSxwb3J0OnIucG9ydCxwYXRobmFtZToiLyI9PT1yLnBhdGhuYW1lLmNoYXJBdCgwKT9yLnBhdGhuYW1lOiIvIityLnBhdGhuYW1lfX1yZXR1cm4gZT1uKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxmdW5jdGlvbih0KXt2YXIgcj10dC5pc1N0cmluZyh0KT9uKHQpOnQ7cmV0dXJuIHIucHJvdG9jb2w9PT1lLnByb3RvY29sJiZyLmhvc3Q9PT1lLmhvc3R9fSgpOmZ1bmN0aW9uKCl7cmV0dXJuITB9O2Z1bmN0aW9uIG50KGUpe3RoaXMubWVzc2FnZT1lfW50LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJDYW5jZWwiKyh0aGlzLm1lc3NhZ2U/IjogIit0aGlzLm1lc3NhZ2U6IiIpfSxudC5wcm90b3R5cGUuX19DQU5DRUxfXz0hMDt2YXIgYXQ9bnQsaXQ9ZmUsb3Q9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIuY29uZmlnLnZhbGlkYXRlU3RhdHVzO3Iuc3RhdHVzJiZuJiYhbihyLnN0YXR1cyk/dChHZSgiUmVxdWVzdCBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAiK3Iuc3RhdHVzLHIuY29uZmlnLG51bGwsci5yZXF1ZXN0LHIpKTplKHIpfSxzdD1YZSx1dD1wZSxjdD1mdW5jdGlvbihlLHQpe3JldHVybiBlJiYhJGUodCk/WmUoZSx0KTp0fSxmdD1mdW5jdGlvbihlKXt2YXIgdCxyLG4sYT17fTtyZXR1cm4gZT8oUWUuZm9yRWFjaChlLnNwbGl0KCJcbiIpLChmdW5jdGlvbihlKXtpZihuPWUuaW5kZXhPZigiOiIpLHQ9UWUudHJpbShlLnN1YnN0cigwLG4pKS50b0xvd2VyQ2FzZSgpLHI9UWUudHJpbShlLnN1YnN0cihuKzEpKSx0KXtpZihhW3RdJiZldC5pbmRleE9mKHQpPj0wKXJldHVybjthW3RdPSJzZXQtY29va2llIj09PXQ/KGFbdF0/YVt0XTpbXSkuY29uY2F0KFtyXSk6YVt0XT9hW3RdKyIsICIrcjpyfX0pKSxhKTphfSxsdD1ydCxodD1ZZSxwdD1XZSxkdD1hdCx2dD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQscil7dmFyIG4sYT1lLmRhdGEsaT1lLmhlYWRlcnMsbz1lLnJlc3BvbnNlVHlwZTtmdW5jdGlvbiBzKCl7ZS5jYW5jZWxUb2tlbiYmZS5jYW5jZWxUb2tlbi51bnN1YnNjcmliZShuKSxlLnNpZ25hbCYmZS5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigiYWJvcnQiLG4pfWl0LmlzRm9ybURhdGEoYSkmJmRlbGV0ZSBpWyJDb250ZW50LVR5cGUiXTt2YXIgdT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoZS5hdXRoKXt2YXIgYz1lLmF1dGgudXNlcm5hbWV8fCIiLGY9ZS5hdXRoLnBhc3N3b3JkP3VuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChlLmF1dGgucGFzc3dvcmQpKToiIjtpLkF1dGhvcml6YXRpb249IkJhc2ljICIrYnRvYShjKyI6IitmKX12YXIgbD1jdChlLmJhc2VVUkwsZS51cmwpO2Z1bmN0aW9uIGgoKXtpZih1KXt2YXIgbj0iZ2V0QWxsUmVzcG9uc2VIZWFkZXJzImluIHU/ZnQodS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk6bnVsbCxhPXtkYXRhOm8mJiJ0ZXh0IiE9PW8mJiJqc29uIiE9PW8/dS5yZXNwb25zZTp1LnJlc3BvbnNlVGV4dCxzdGF0dXM6dS5zdGF0dXMsc3RhdHVzVGV4dDp1LnN0YXR1c1RleHQsaGVhZGVyczpuLGNvbmZpZzplLHJlcXVlc3Q6dX07b3QoKGZ1bmN0aW9uKGUpe3QoZSkscygpfSksKGZ1bmN0aW9uKGUpe3IoZSkscygpfSksYSksdT1udWxsfX1pZih1Lm9wZW4oZS5tZXRob2QudG9VcHBlckNhc2UoKSx1dChsLGUucGFyYW1zLGUucGFyYW1zU2VyaWFsaXplciksITApLHUudGltZW91dD1lLnRpbWVvdXQsIm9ubG9hZGVuZCJpbiB1P3Uub25sb2FkZW5kPWg6dS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXt1JiY0PT09dS5yZWFkeVN0YXRlJiYoMCE9PXUuc3RhdHVzfHx1LnJlc3BvbnNlVVJMJiYwPT09dS5yZXNwb25zZVVSTC5pbmRleE9mKCJmaWxlOiIpKSYmc2V0VGltZW91dChoKX0sdS5vbmFib3J0PWZ1bmN0aW9uKCl7dSYmKHIoaHQoIlJlcXVlc3QgYWJvcnRlZCIsZSwiRUNPTk5BQk9SVEVEIix1KSksdT1udWxsKX0sdS5vbmVycm9yPWZ1bmN0aW9uKCl7cihodCgiTmV0d29yayBFcnJvciIsZSxudWxsLHUpKSx1PW51bGx9LHUub250aW1lb3V0PWZ1bmN0aW9uKCl7dmFyIHQ9ZS50aW1lb3V0PyJ0aW1lb3V0IG9mICIrZS50aW1lb3V0KyJtcyBleGNlZWRlZCI6InRpbWVvdXQgZXhjZWVkZWQiLG49ZS50cmFuc2l0aW9uYWx8fHB0O2UudGltZW91dEVycm9yTWVzc2FnZSYmKHQ9ZS50aW1lb3V0RXJyb3JNZXNzYWdlKSxyKGh0KHQsZSxuLmNsYXJpZnlUaW1lb3V0RXJyb3I/IkVUSU1FRE9VVCI6IkVDT05OQUJPUlRFRCIsdSkpLHU9bnVsbH0saXQuaXNTdGFuZGFyZEJyb3dzZXJFbnYoKSl7dmFyIHA9KGUud2l0aENyZWRlbnRpYWxzfHxsdChsKSkmJmUueHNyZkNvb2tpZU5hbWU/c3QucmVhZChlLnhzcmZDb29raWVOYW1lKTp2b2lkIDA7cCYmKGlbZS54c3JmSGVhZGVyTmFtZV09cCl9InNldFJlcXVlc3RIZWFkZXIiaW4gdSYmaXQuZm9yRWFjaChpLChmdW5jdGlvbihlLHQpe3ZvaWQgMD09PWEmJiJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpP2RlbGV0ZSBpW3RdOnUuc2V0UmVxdWVzdEhlYWRlcih0LGUpfSkpLGl0LmlzVW5kZWZpbmVkKGUud2l0aENyZWRlbnRpYWxzKXx8KHUud2l0aENyZWRlbnRpYWxzPSEhZS53aXRoQ3JlZGVudGlhbHMpLG8mJiJqc29uIiE9PW8mJih1LnJlc3BvbnNlVHlwZT1lLnJlc3BvbnNlVHlwZSksImZ1bmN0aW9uIj09dHlwZW9mIGUub25Eb3dubG9hZFByb2dyZXNzJiZ1LmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uRG93bmxvYWRQcm9ncmVzcyksImZ1bmN0aW9uIj09dHlwZW9mIGUub25VcGxvYWRQcm9ncmVzcyYmdS51cGxvYWQmJnUudXBsb2FkLmFkZEV2ZW50TGlzdGVuZXIoInByb2dyZXNzIixlLm9uVXBsb2FkUHJvZ3Jlc3MpLChlLmNhbmNlbFRva2VufHxlLnNpZ25hbCkmJihuPWZ1bmN0aW9uKGUpe3UmJihyKCFlfHxlJiZlLnR5cGU/bmV3IGR0KCJjYW5jZWxlZCIpOmUpLHUuYWJvcnQoKSx1PW51bGwpfSxlLmNhbmNlbFRva2VuJiZlLmNhbmNlbFRva2VuLnN1YnNjcmliZShuKSxlLnNpZ25hbCYmKGUuc2lnbmFsLmFib3J0ZWQ/bigpOmUuc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixuKSkpLGF8fChhPW51bGwpLHUuc2VuZChhKX0pKX0sZ3Q9ZmUseXQ9ZnVuY3Rpb24oZSx0KXtCZS5mb3JFYWNoKGUsKGZ1bmN0aW9uKHIsbil7biE9PXQmJm4udG9VcHBlckNhc2UoKT09PXQudG9VcHBlckNhc2UoKSYmKGVbdF09cixkZWxldGUgZVtuXSl9KSl9LG10PUZlLHd0PXsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn07ZnVuY3Rpb24gYnQoZSx0KXshZ3QuaXNVbmRlZmluZWQoZSkmJmd0LmlzVW5kZWZpbmVkKGVbIkNvbnRlbnQtVHlwZSJdKSYmKGVbIkNvbnRlbnQtVHlwZSJdPXQpfXZhciBrdCx4dD17dHJhbnNpdGlvbmFsOldlLGFkYXB0ZXI6KCgidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0fHx2b2lkIDAhPT1KZSYmIltvYmplY3QgcHJvY2Vzc10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEplKSkmJihrdD12dCksa3QpLHRyYW5zZm9ybVJlcXVlc3Q6W2Z1bmN0aW9uKGUsdCl7cmV0dXJuIHl0KHQsIkFjY2VwdCIpLHl0KHQsIkNvbnRlbnQtVHlwZSIpLGd0LmlzRm9ybURhdGEoZSl8fGd0LmlzQXJyYXlCdWZmZXIoZSl8fGd0LmlzQnVmZmVyKGUpfHxndC5pc1N0cmVhbShlKXx8Z3QuaXNGaWxlKGUpfHxndC5pc0Jsb2IoZSk/ZTpndC5pc0FycmF5QnVmZmVyVmlldyhlKT9lLmJ1ZmZlcjpndC5pc1VSTFNlYXJjaFBhcmFtcyhlKT8oYnQodCwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKSxlLnRvU3RyaW5nKCkpOmd0LmlzT2JqZWN0KGUpfHx0JiYiYXBwbGljYXRpb24vanNvbiI9PT10WyJDb250ZW50LVR5cGUiXT8oYnQodCwiYXBwbGljYXRpb24vanNvbiIpLGZ1bmN0aW9uKGUsdCxyKXtpZihndC5pc1N0cmluZyhlKSl0cnl7cmV0dXJuKHR8fEpTT04ucGFyc2UpKGUpLGd0LnRyaW0oZSl9Y2F0Y2goZSl7aWYoIlN5bnRheEVycm9yIiE9PWUubmFtZSl0aHJvdyBlfXJldHVybihyfHxKU09OLnN0cmluZ2lmeSkoZSl9KGUpKTplfV0sdHJhbnNmb3JtUmVzcG9uc2U6W2Z1bmN0aW9uKGUpe3ZhciB0PXRoaXMudHJhbnNpdGlvbmFsfHx4dC50cmFuc2l0aW9uYWwscj10JiZ0LnNpbGVudEpTT05QYXJzaW5nLG49dCYmdC5mb3JjZWRKU09OUGFyc2luZyxhPSFyJiYianNvbiI9PT10aGlzLnJlc3BvbnNlVHlwZTtpZihhfHxuJiZndC5pc1N0cmluZyhlKSYmZS5sZW5ndGgpdHJ5e3JldHVybiBKU09OLnBhcnNlKGUpfWNhdGNoKGUpe2lmKGEpe2lmKCJTeW50YXhFcnJvciI9PT1lLm5hbWUpdGhyb3cgbXQoZSx0aGlzLCJFX0pTT05fUEFSU0UiKTt0aHJvdyBlfX1yZXR1cm4gZX1dLHRpbWVvdXQ6MCx4c3JmQ29va2llTmFtZToiWFNSRi1UT0tFTiIseHNyZkhlYWRlck5hbWU6IlgtWFNSRi1UT0tFTiIsbWF4Q29udGVudExlbmd0aDotMSxtYXhCb2R5TGVuZ3RoOi0xLHZhbGlkYXRlU3RhdHVzOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0yMDAmJmU8MzAwfSxoZWFkZXJzOntjb21tb246e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qIn19fTtndC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCJdLChmdW5jdGlvbihlKXt4dC5oZWFkZXJzW2VdPXt9fSkpLGd0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7eHQuaGVhZGVyc1tlXT1ndC5tZXJnZSh3dCl9KSk7dmFyIF90PXh0LFN0PWZlLEV0PV90LFR0PWZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCFlLl9fQ0FOQ0VMX18pfSxBdD1mZSxSdD1mdW5jdGlvbihlLHQscil7dmFyIG49dGhpc3x8RXQ7cmV0dXJuIFN0LmZvckVhY2gociwoZnVuY3Rpb24ocil7ZT1yLmNhbGwobixlLHQpfSkpLGV9LEN0PVR0LFB0PV90LER0PWF0O2Z1bmN0aW9uIE90KGUpe2lmKGUuY2FuY2VsVG9rZW4mJmUuY2FuY2VsVG9rZW4udGhyb3dJZlJlcXVlc3RlZCgpLGUuc2lnbmFsJiZlLnNpZ25hbC5hYm9ydGVkKXRocm93IG5ldyBEdCgiY2FuY2VsZWQiKX12YXIgSXQ9ZmUsTHQ9ZnVuY3Rpb24oZSx0KXt0PXR8fHt9O3ZhciByPXt9O2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gSXQuaXNQbGFpbk9iamVjdChlKSYmSXQuaXNQbGFpbk9iamVjdCh0KT9JdC5tZXJnZShlLHQpOkl0LmlzUGxhaW5PYmplY3QodCk/SXQubWVyZ2Uoe30sdCk6SXQuaXNBcnJheSh0KT90LnNsaWNlKCk6dH1mdW5jdGlvbiBhKHIpe3JldHVybiBJdC5pc1VuZGVmaW5lZCh0W3JdKT9JdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bihlW3JdLHRbcl0pfWZ1bmN0aW9uIGkoZSl7aWYoIUl0LmlzVW5kZWZpbmVkKHRbZV0pKXJldHVybiBuKHZvaWQgMCx0W2VdKX1mdW5jdGlvbiBvKHIpe3JldHVybiBJdC5pc1VuZGVmaW5lZCh0W3JdKT9JdC5pc1VuZGVmaW5lZChlW3JdKT92b2lkIDA6bih2b2lkIDAsZVtyXSk6bih2b2lkIDAsdFtyXSl9ZnVuY3Rpb24gcyhyKXtyZXR1cm4gciBpbiB0P24oZVtyXSx0W3JdKTpyIGluIGU/bih2b2lkIDAsZVtyXSk6dm9pZCAwfXZhciB1PXt1cmw6aSxtZXRob2Q6aSxkYXRhOmksYmFzZVVSTDpvLHRyYW5zZm9ybVJlcXVlc3Q6byx0cmFuc2Zvcm1SZXNwb25zZTpvLHBhcmFtc1NlcmlhbGl6ZXI6byx0aW1lb3V0Om8sdGltZW91dE1lc3NhZ2U6byx3aXRoQ3JlZGVudGlhbHM6byxhZGFwdGVyOm8scmVzcG9uc2VUeXBlOm8seHNyZkNvb2tpZU5hbWU6byx4c3JmSGVhZGVyTmFtZTpvLG9uVXBsb2FkUHJvZ3Jlc3M6byxvbkRvd25sb2FkUHJvZ3Jlc3M6byxkZWNvbXByZXNzOm8sbWF4Q29udGVudExlbmd0aDpvLG1heEJvZHlMZW5ndGg6byx0cmFuc3BvcnQ6byxodHRwQWdlbnQ6byxodHRwc0FnZW50Om8sY2FuY2VsVG9rZW46byxzb2NrZXRQYXRoOm8scmVzcG9uc2VFbmNvZGluZzpvLHZhbGlkYXRlU3RhdHVzOnN9O3JldHVybiBJdC5mb3JFYWNoKE9iamVjdC5rZXlzKGUpLmNvbmNhdChPYmplY3Qua2V5cyh0KSksKGZ1bmN0aW9uKGUpe3ZhciB0PXVbZV18fGEsbj10KGUpO0l0LmlzVW5kZWZpbmVkKG4pJiZ0IT09c3x8KHJbZV09bil9KSkscn0sVXQ9IjAuMjYuMSIsSHQ9VXQsTXQ9e307WyJvYmplY3QiLCJib29sZWFuIiwibnVtYmVyIiwiZnVuY3Rpb24iLCJzdHJpbmciLCJzeW1ib2wiXS5mb3JFYWNoKChmdW5jdGlvbihlLHQpe010W2VdPWZ1bmN0aW9uKHIpe3JldHVybiBuKHIpPT09ZXx8ImEiKyh0PDE/Im4gIjoiICIpK2V9fSkpO3ZhciBqdD17fTtNdC50cmFuc2l0aW9uYWw9ZnVuY3Rpb24oZSx0LHIpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4iW0F4aW9zIHYiK0h0KyJdIFRyYW5zaXRpb25hbCBvcHRpb24gJyIrZSsiJyIrdCsocj8iLiAiK3I6IiIpfXJldHVybiBmdW5jdGlvbihyLGEsaSl7aWYoITE9PT1lKXRocm93IG5ldyBFcnJvcihuKGEsIiBoYXMgYmVlbiByZW1vdmVkIisodD8iIGluICIrdDoiIikpKTtyZXR1cm4gdCYmIWp0W2FdJiYoanRbYV09ITAsY29uc29sZS53YXJuKG4oYSwiIGhhcyBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgdiIrdCsiIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5lYXIgZnV0dXJlIikpKSwhZXx8ZShyLGEsaSl9fTt2YXIgTnQ9e2Fzc2VydE9wdGlvbnM6ZnVuY3Rpb24oZSx0LHIpe2lmKCJvYmplY3QiIT09bihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Iik7Zm9yKHZhciBhPU9iamVjdC5rZXlzKGUpLGk9YS5sZW5ndGg7aS0tID4wOyl7dmFyIG89YVtpXSxzPXRbb107aWYocyl7dmFyIHU9ZVtvXSxjPXZvaWQgMD09PXV8fHModSxvLGUpO2lmKCEwIT09Yyl0aHJvdyBuZXcgVHlwZUVycm9yKCJvcHRpb24gIitvKyIgbXVzdCBiZSAiK2MpfWVsc2UgaWYoITAhPT1yKXRocm93IEVycm9yKCJVbmtub3duIG9wdGlvbiAiK28pfX0sdmFsaWRhdG9yczpNdH0scXQ9ZmUsS3Q9cGUsSnQ9Z2UsQnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIE90KGUpLGUuaGVhZGVycz1lLmhlYWRlcnN8fHt9LGUuZGF0YT1SdC5jYWxsKGUsZS5kYXRhLGUuaGVhZGVycyxlLnRyYW5zZm9ybVJlcXVlc3QpLGUuaGVhZGVycz1BdC5tZXJnZShlLmhlYWRlcnMuY29tbW9ufHx7fSxlLmhlYWRlcnNbZS5tZXRob2RdfHx7fSxlLmhlYWRlcnMpLEF0LmZvckVhY2goWyJkZWxldGUiLCJnZXQiLCJoZWFkIiwicG9zdCIsInB1dCIsInBhdGNoIiwiY29tbW9uIl0sKGZ1bmN0aW9uKHQpe2RlbGV0ZSBlLmhlYWRlcnNbdF19KSksKGUuYWRhcHRlcnx8UHQuYWRhcHRlcikoZSkudGhlbigoZnVuY3Rpb24odCl7cmV0dXJuIE90KGUpLHQuZGF0YT1SdC5jYWxsKGUsdC5kYXRhLHQuaGVhZGVycyxlLnRyYW5zZm9ybVJlc3BvbnNlKSx0fSksKGZ1bmN0aW9uKHQpe3JldHVybiBDdCh0KXx8KE90KGUpLHQmJnQucmVzcG9uc2UmJih0LnJlc3BvbnNlLmRhdGE9UnQuY2FsbChlLHQucmVzcG9uc2UuZGF0YSx0LnJlc3BvbnNlLmhlYWRlcnMsZS50cmFuc2Zvcm1SZXNwb25zZSkpKSxQcm9taXNlLnJlamVjdCh0KX0pKX0sRnQ9THQsV3Q9TnQsenQ9V3QudmFsaWRhdG9ycztmdW5jdGlvbiBZdChlKXt0aGlzLmRlZmF1bHRzPWUsdGhpcy5pbnRlcmNlcHRvcnM9e3JlcXVlc3Q6bmV3IEp0LHJlc3BvbnNlOm5ldyBKdH19WXQucHJvdG90eXBlLnJlcXVlc3Q9ZnVuY3Rpb24oZSx0KXsic3RyaW5nIj09dHlwZW9mIGU/KHQ9dHx8e30pLnVybD1lOnQ9ZXx8e30sKHQ9RnQodGhpcy5kZWZhdWx0cyx0KSkubWV0aG9kP3QubWV0aG9kPXQubWV0aG9kLnRvTG93ZXJDYXNlKCk6dGhpcy5kZWZhdWx0cy5tZXRob2Q/dC5tZXRob2Q9dGhpcy5kZWZhdWx0cy5tZXRob2QudG9Mb3dlckNhc2UoKTp0Lm1ldGhvZD0iZ2V0Ijt2YXIgcj10LnRyYW5zaXRpb25hbDt2b2lkIDAhPT1yJiZXdC5hc3NlcnRPcHRpb25zKHIse3NpbGVudEpTT05QYXJzaW5nOnp0LnRyYW5zaXRpb25hbCh6dC5ib29sZWFuKSxmb3JjZWRKU09OUGFyc2luZzp6dC50cmFuc2l0aW9uYWwoenQuYm9vbGVhbiksY2xhcmlmeVRpbWVvdXRFcnJvcjp6dC50cmFuc2l0aW9uYWwoenQuYm9vbGVhbil9LCExKTt2YXIgbj1bXSxhPSEwO3RoaXMuaW50ZXJjZXB0b3JzLnJlcXVlc3QuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ImZ1bmN0aW9uIj09dHlwZW9mIGUucnVuV2hlbiYmITE9PT1lLnJ1bldoZW4odCl8fChhPWEmJmUuc3luY2hyb25vdXMsbi51bnNoaWZ0KGUuZnVsZmlsbGVkLGUucmVqZWN0ZWQpKX0pKTt2YXIgaSxvPVtdO2lmKHRoaXMuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLmZvckVhY2goKGZ1bmN0aW9uKGUpe28ucHVzaChlLmZ1bGZpbGxlZCxlLnJlamVjdGVkKX0pKSwhYSl7dmFyIHM9W0J0LHZvaWQgMF07Zm9yKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KHMsbikscz1zLmNvbmNhdChvKSxpPVByb21pc2UucmVzb2x2ZSh0KTtzLmxlbmd0aDspaT1pLnRoZW4ocy5zaGlmdCgpLHMuc2hpZnQoKSk7cmV0dXJuIGl9Zm9yKHZhciB1PXQ7bi5sZW5ndGg7KXt2YXIgYz1uLnNoaWZ0KCksZj1uLnNoaWZ0KCk7dHJ5e3U9Yyh1KX1jYXRjaChlKXtmKGUpO2JyZWFrfX10cnl7aT1CdCh1KX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9Zm9yKDtvLmxlbmd0aDspaT1pLnRoZW4oby5zaGlmdCgpLG8uc2hpZnQoKSk7cmV0dXJuIGl9LFl0LnByb3RvdHlwZS5nZXRVcmk9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9RnQodGhpcy5kZWZhdWx0cyxlKSxLdChlLnVybCxlLnBhcmFtcyxlLnBhcmFtc1NlcmlhbGl6ZXIpLnJlcGxhY2UoL15cPy8sIiIpfSxxdC5mb3JFYWNoKFsiZGVsZXRlIiwiZ2V0IiwiaGVhZCIsIm9wdGlvbnMiXSwoZnVuY3Rpb24oZSl7WXQucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVxdWVzdChGdChyfHx7fSx7bWV0aG9kOmUsdXJsOnQsZGF0YToocnx8e30pLmRhdGF9KSl9fSkpLHF0LmZvckVhY2goWyJwb3N0IiwicHV0IiwicGF0Y2giXSwoZnVuY3Rpb24oZSl7WXQucHJvdG90eXBlW2VdPWZ1bmN0aW9uKHQscixuKXtyZXR1cm4gdGhpcy5yZXF1ZXN0KEZ0KG58fHt9LHttZXRob2Q6ZSx1cmw6dCxkYXRhOnJ9KSl9fSkpO3ZhciBHdD1ZdCxWdD1hdDtmdW5jdGlvbiBYdChlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJleGVjdXRvciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIHQ7dGhpcy5wcm9taXNlPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXt0PWV9KSk7dmFyIHI9dGhpczt0aGlzLnByb21pc2UudGhlbigoZnVuY3Rpb24oZSl7aWYoci5fbGlzdGVuZXJzKXt2YXIgdCxuPXIuX2xpc3RlbmVycy5sZW5ndGg7Zm9yKHQ9MDt0PG47dCsrKXIuX2xpc3RlbmVyc1t0XShlKTtyLl9saXN0ZW5lcnM9bnVsbH19KSksdGhpcy5wcm9taXNlLnRoZW49ZnVuY3Rpb24oZSl7dmFyIHQsbj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7ci5zdWJzY3JpYmUoZSksdD1lfSkpLnRoZW4oZSk7cmV0dXJuIG4uY2FuY2VsPWZ1bmN0aW9uKCl7ci51bnN1YnNjcmliZSh0KX0sbn0sZSgoZnVuY3Rpb24oZSl7ci5yZWFzb258fChyLnJlYXNvbj1uZXcgVnQoZSksdChyLnJlYXNvbikpfSkpfVh0LnByb3RvdHlwZS50aHJvd0lmUmVxdWVzdGVkPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFzb24pdGhyb3cgdGhpcy5yZWFzb259LFh0LnByb3RvdHlwZS5zdWJzY3JpYmU9ZnVuY3Rpb24oZSl7dGhpcy5yZWFzb24/ZSh0aGlzLnJlYXNvbik6dGhpcy5fbGlzdGVuZXJzP3RoaXMuX2xpc3RlbmVycy5wdXNoKGUpOnRoaXMuX2xpc3RlbmVycz1bZV19LFh0LnByb3RvdHlwZS51bnN1YnNjcmliZT1mdW5jdGlvbihlKXtpZih0aGlzLl9saXN0ZW5lcnMpe3ZhciB0PXRoaXMuX2xpc3RlbmVycy5pbmRleE9mKGUpOy0xIT09dCYmdGhpcy5fbGlzdGVuZXJzLnNwbGljZSh0LDEpfX0sWHQuc291cmNlPWZ1bmN0aW9uKCl7dmFyIGUsdD1uZXcgWHQoKGZ1bmN0aW9uKHQpe2U9dH0pKTtyZXR1cm57dG9rZW46dCxjYW5jZWw6ZX19O3ZhciAkdD1YdCxadD1mZSxRdD1mZSxlcj1lZSx0cj1HdCxycj1MdDt2YXIgbnI9ZnVuY3Rpb24gZSh0KXt2YXIgcj1uZXcgdHIodCksbj1lcih0ci5wcm90b3R5cGUucmVxdWVzdCxyKTtyZXR1cm4gUXQuZXh0ZW5kKG4sdHIucHJvdG90eXBlLHIpLFF0LmV4dGVuZChuLHIpLG4uY3JlYXRlPWZ1bmN0aW9uKHIpe3JldHVybiBlKHJyKHQscikpfSxufShfdCk7bnIuQXhpb3M9dHIsbnIuQ2FuY2VsPWF0LG5yLkNhbmNlbFRva2VuPSR0LG5yLmlzQ2FuY2VsPVR0LG5yLlZFUlNJT049VXQsbnIuYWxsPWZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLmFsbChlKX0sbnIuc3ByZWFkPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5hcHBseShudWxsLHQpfX0sbnIuaXNBeGlvc0Vycm9yPWZ1bmN0aW9uKGUpe3JldHVybiBadC5pc09iamVjdChlKSYmITA9PT1lLmlzQXhpb3NFcnJvcn0sUS5leHBvcnRzPW5yLFEuZXhwb3J0cy5kZWZhdWx0PW5yO3ZhciBhcixpcj1RLmV4cG9ydHM7dmFyIG9yPWFyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe28odGhpcyxlKSx0aGlzLmF0dGFjaFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfSx0aGlzLnJlcXVlc3RTdGFydENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdFN1Y2Nlc3NDYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHRoaXMuaW5pdD10aGlzLmluaXQuYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RXJyb3JDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2suYmluZCh0aGlzKSx0aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaz10aGlzLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjay5iaW5kKHRoaXMpLHRoaXMuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2s9dGhpcy5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjay5iaW5kKHRoaXMpfXJldHVybiB1KGUsW3trZXk6InJlcXVlc3RIYW5kbGVyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXt2YXIgbixhO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHRoaXMuYXR0YWNoVG9rZW4oZSk7Y2FzZSAyOnJldHVybihudWxsPT1lP3ZvaWQgMDplLnNob3VsZEVuY29kZVRvRm9ybURhdGEpJiYobj1udWxsPT1lP3ZvaWQgMDplLmRhdGEsYT1uZXcgRm9ybURhdGEsT2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7YS5hcHBlbmQoZSxuW2VdKX0pKSxlLmRhdGE9YSksYXIuaXNIYW5kbGVyRW5hYmxlZCYmdGhpcy5yZXF1ZXN0U3RhcnRDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2smJnRoaXMucmVxdWVzdFN0YXJ0Q2FsbGJhY2soZSksdC5hYnJ1cHQoInJldHVybiIsZSk7Y2FzZSA1OmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCx0aGlzKX0pKSl9fSx7a2V5OiJlcnJvckhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3Rocm93IGFyLmlzSGFuZGxlckVuYWJsZWQmJih0aGlzLnJlcXVlc3RFcnJvckNhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RXJyb3JDYWxsYmFjayhlKSx0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVxdWVzdEZpbmlzaENhbGxiYWNrJiZ0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjaygpKSxlfX0se2tleToic3VjY2Vzc0hhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBhci5pc0hhbmRsZXJFbmFibGVkJiYodGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiYiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5yZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrJiZ0aGlzLnJlcXVlc3RTdWNjZXNzQ2FsbGJhY2soZSksdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2smJiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnJlcXVlc3RGaW5pc2hDYWxsYmFjayYmdGhpcy5yZXF1ZXN0RmluaXNoQ2FsbGJhY2soKSksZX19LHtrZXk6ImluaXQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9IShhcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSl8fGFyZ3VtZW50c1swXSx0PWFyZ3VtZW50cy5sZW5ndGg+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+UmEpdGhyb3cgbmV3IFJhbmdlRXJyb3IoInJlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMiKTt2YXIgcj1DYS5hbGxvY1Vuc2FmZShlKTtpZihlPjApaWYoZT5BYSlmb3IodmFyIG49MDtuPGU7bis9QWEpUGEuZ2V0UmFuZG9tVmFsdWVzKHIuc2xpY2UobixuK0FhKSk7ZWxzZSBQYS5nZXRSYW5kb21WYWx1ZXMocik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIEplLm5leHRUaWNrKChmdW5jdGlvbigpe3QobnVsbCxyKX0pKTtyZXR1cm4gcn06U2EuZXhwb3J0cz1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEiKX07dmFyIERhPVNhLmV4cG9ydHMsT2E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7byh0aGlzLGUpfXJldHVybiB1KGUsW3trZXk6ImJhc2U2NFVSTEVuY29kZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGJuLmVuY29kZShlKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0vZywiIil9fSx7a2V5OiJiYXNlNjRVUkxEZWNvZGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBibi5kZWNvZGUoZSkudG9TdHJpbmcoKX19LHtrZXk6Imhhc2hTaGEyNTYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBTci5mcm9tKHhuKChuZXcgVGV4dEVuY29kZXIpLmVuY29kZShlKSkpfX0se2tleToiZ2VuZXJhdGVSYW5kb21CeXRlcyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIERhKGUpfX0se2tleToidmVyaWZ5Snd0Iix2YWx1ZTpmdW5jdGlvbihlLHQscixuLGEsaSxvKXtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3JldHVybiBiYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KGUsKHM9e2tleXM6W3RdfSxfYS5wcm90b3R5cGUuZ2V0S2V5LmJpbmQobmV3IF9hKHMpKSkse2FsZ29yaXRobXM6cixhdWRpZW5jZTpuLGNsb2NrVG9sZXJhbmNlOm8saXNzdWVyOmEsc3ViamVjdDppfSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEwKX0pKTt2YXIgc319XSksZX0oKTtvcmlnaW4sVS5TZXNzaW9uU3RvcmFnZTt2YXIgSWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe28odGhpcyxlKSx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudD10LHRoaXMuX2RhdGFMYXllcj10aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREYXRhTGF5ZXIoKX1yZXR1cm4gdShlLFt7a2V5OiJyZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3ZhciB0LG4sYSxpPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFNlc3Npb25EYXRhKCk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpLnJlZnJlc2hfdG9rZW4pe2UubmV4dD05O2JyZWFrfXJldHVybiBuPXBhcnNlSW50KHQuZXhwaXJlc19pbiksYT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBTKGksdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUubmV4dD0yLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LnJlZnJlc2hBY2Nlc3NUb2tlbigpO2Nhc2UgMjpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfSksMWUzKihuPD0xMD9uOm4tMTApKSxlLm5leHQ9OSx0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDLEpTT04uc3RyaW5naWZ5KGEpKTtjYXNlIDk6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImNsZWFyUmVmcmVzaFRva2VuVGltZW91dCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXt2YXIgdDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDI6aWYoIWUuc2VudCl7ZS5uZXh0PTk7YnJlYWt9cmV0dXJuIGUudDA9SlNPTixlLm5leHQ9Nix0aGlzLl9kYXRhTGF5ZXIuZ2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihDKTtjYXNlIDY6ZS50MT1lLnNlbnQsdD1lLnQwLnBhcnNlLmNhbGwoZS50MCxlLnQxKSxjbGVhclRpbWVvdXQodCk7Y2FzZSA5OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fV0pLGV9KCksTGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBhLGksbyxzLHUsYyxmLGwsaCxwLGQsdixnLHksbSx3LGIsayx4LF8sRSxULEEsUixDLFAsRCxPLEksTCxVO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obil7Zm9yKDs7KXN3aXRjaChuLnByZXY9bi5uZXh0KXtjYXNlIDA6cmV0dXJuIGE9bmV3IHNyLGk9bmV3IE9hLG89bmV3IEooYSxpKSxuLm5leHQ9NSxvLmluaXRpYWxpemUoZSk7Y2FzZSA1OmlmKHM9bmV3IElhKG8pLHU9dChvLHMpLGM9by5nZXREYXRhTGF5ZXIoKSxmPW9yLmdldEluc3RhbmNlKCksbi50MD1udWxsPT1mP3ZvaWQgMDpmLmluaXQsIW4udDApe24ubmV4dD0xMzticmVha31yZXR1cm4gbi5uZXh0PTEzLGYuaW5pdCghMCx1LmF0dGFjaFRva2VuKTtjYXNlIDEzOnJldHVybiBsPWZ1bmN0aW9uKGUpe3Uuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKGYsZSl9LGg9ZnVuY3Rpb24oZSl7dS5zZXRIdHRwUmVxdWVzdFN1Y2Nlc3NDYWxsYmFjayhmLGUpfSxwPWZ1bmN0aW9uKGUpeyhudWxsPT1mP3ZvaWQgMDpmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2spJiZmLnNldEh0dHBSZXF1ZXN0RmluaXNoQ2FsbGJhY2soZSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9Mix1Lmh0dHBSZXF1ZXN0KGYsZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gdCgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQubmV4dD0yLHUuaHR0cFJlcXVlc3RBbGwoZSxmKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iLHQuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSxnPWZ1bmN0aW9uKCl7dS5lbmFibGVIdHRwSGFuZGxlcihmKX0seT1mdW5jdGlvbigpe3UuZGlzYWJsZUh0dHBIYW5kbGVyKGYpfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsby5nZXRBdXRob3JpemF0aW9uVVJMKGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG4sYSxpLHM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gYT1uZXcgVVJMKGUpLGk9bnVsbCE9PShuPWEuc2VhcmNoUGFyYW1zLmdldCgic3RhdGUiKSkmJnZvaWQgMCE9PW4/bjoiIix0Lm5leHQ9NCxvLmdldFBLQ0VDb2RlKGkpO2Nhc2UgNDpyZXR1cm4gcz10LnNlbnQsdC5hYnJ1cHQoInJldHVybiIse2F1dGhvcml6YXRpb25VUkw6ZSxwa2NlOnN9KTtjYXNlIDY6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX0pKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gdC5zdG9wKCl9fSksdCl9KSkpfSx3PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBzLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHMucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGUuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LGI9ZnVuY3Rpb24oZSx0LG4sYSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix1LnJlcXVlc3RBY2Nlc3NUb2tlbihlLHQsdm9pZCAwLG4sYSk7Y2FzZSAyOnJldHVybiByLmFicnVwdCgicmV0dXJuIixyLnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLGkpfSkpKX0saz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gcy5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSxlLm5leHQ9MyxvLnNpZ25PdXQoKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA0OmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSx4PWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLm5leHQ9MixvLmdldFNpZ25PdXRVUkwoKTtjYXNlIDI6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSAzOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxfPWZ1bmN0aW9uKGUpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5uZXh0PTIsdS5yZXF1ZXN0Q3VzdG9tR3JhbnQoZSk7Y2FzZSAyOnJldHVybiB0LmFicnVwdCgicmV0dXJuIix0LnNlbnQpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0sRT1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5wcmV2PTAsZS5uZXh0PTMsdS5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDM6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGUuc2VudCk7Y2FzZSA2OnJldHVybiBlLnByZXY9NixlLnQwPWUuY2F0Y2goMCksZS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZS50MCkpO2Nhc2UgOTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsbnVsbCxbWzAsNl1dKX0pKSl9LFQ9ZnVuY3Rpb24oKXtyZXR1cm4gby5yZXZva2VBY2Nlc3NUb2tlbigpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIHMuY2xlYXJSZWZyZXNoVG9rZW5UaW1lb3V0KCksUHJvbWlzZS5yZXNvbHZlKCEwKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpfSxBPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSl9KSkpfSxSPWZ1bmN0aW9uKCl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix1LmdldERlY29kZWRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sQz1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRJRFRva2VuKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUpfSkpKX0sUD1mdW5jdGlvbigpe3JldHVybiBTKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdS5nZXRPSURDU2VydmljZUVuZHBvaW50cygpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LEQ9ZnVuY3Rpb24oKXtyZXR1cm4gdS5nZXRBY2Nlc3NUb2tlbigpfSxPPWZ1bmN0aW9uKCl7cmV0dXJuIHUuaXNBdXRoZW50aWNhdGVkKCl9LEk9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixjLnNldFNlc3Npb25EYXRhUGFyYW1ldGVyKCJzZXNzaW9uX3N0YXRlIixlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LEw9ZnVuY3Rpb24oZSl7cmV0dXJuIFModm9pZCAwLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0Lm5leHQ9MixvLnVwZGF0ZUNvbmZpZyhlKTtjYXNlIDI6cmV0dXJuIHQuYWJydXB0KCJyZXR1cm4iKTtjYXNlIDM6Y2FzZSJlbmQiOnJldHVybiB0LnN0b3AoKX19KSx0KX0pKSl9LFU9ZnVuY3Rpb24oKXtyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLGMuZ2V0Q29uZmlnRGF0YSgpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlKX0pKSl9LG4uYWJydXB0KCJyZXR1cm4iLHtkaXNhYmxlSHR0cEhhbmRsZXI6eSxlbmFibGVIdHRwSGFuZGxlcjpnLGdldEFjY2Vzc1Rva2VuOkQsZ2V0QXV0aG9yaXphdGlvblVSTDptLGdldEJhc2ljVXNlckluZm86QSxnZXRDb25maWdEYXRhOlUsZ2V0RGVjb2RlZElEVG9rZW46UixnZXRJRFRva2VuOkMsZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHM6UCxnZXRTaWduT3V0VVJMOngsaHR0cFJlcXVlc3Q6ZCxodHRwUmVxdWVzdEFsbDp2LGlzQXV0aGVudGljYXRlZDpPLHJlZnJlc2hBY2Nlc3NUb2tlbjpFLHJlcXVlc3RBY2Nlc3NUb2tlbjpiLHJlcXVlc3RDdXN0b21HcmFudDpfLHJldm9rZUFjY2Vzc1Rva2VuOlQsc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjazpwLHNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjazpsLHNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrOmgsc2V0U2Vzc2lvblN0YXRlOkksc2lnbk91dDprLHN0YXJ0QXV0b1JlZnJlc2hUb2tlbjp3LHVwZGF0ZUNvbmZpZzpMfSk7Y2FzZSAzODpjYXNlImVuZCI6cmV0dXJuIG4uc3RvcCgpfX0pLG4pfSkpKX0sVWE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscil7byh0aGlzLGUpLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50PXQsdGhpcy5fZGF0YUxheWVyPXRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldERhdGFMYXllcigpLHRoaXMuX3NwYUhlbHBlcj1yfXJldHVybiB1KGUsW3trZXk6ImF0dGFjaFRva2VuIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHQoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOmlmKCFPYmplY3QuYXNzaWduKHthdHRhY2hUb2tlbjohMH0sZSkuYXR0YWNoVG9rZW4pe3QubmV4dD0xMTticmVha31yZXR1cm4gdC50MD1PYmplY3QsdC50MT1PYmplY3QuYXNzaWduKHt9LGUuaGVhZGVycyksdC50Mj0iQmVhcmVyICIsdC5uZXh0PTcsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKTtjYXNlIDc6dC50Mz10LnNlbnQsdC50ND10LnQyLmNvbmNhdC5jYWxsKHQudDIsdC50MyksdC50NT17QXV0aG9yaXphdGlvbjp0LnQ0fSxlLmhlYWRlcnM9dC50MC5hc3NpZ24uY2FsbCh0LnQwLHQudDEsdC50NSk7Y2FzZSAxMTpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyl9KSkpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbihlLHQpeyhudWxsPT1lP3ZvaWQgMDplLnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjaykmJmUuc2V0SHR0cFJlcXVlc3RTdGFydENhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2siLHZhbHVlOmZ1bmN0aW9uKGUsdCl7KG51bGw9PWU/dm9pZCAwOmUuc2V0SHR0cFJlcXVlc3RTdWNjZXNzQ2FsbGJhY2spJiZlLnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKHQpfX0se2tleToic2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24oZSx0KXsobnVsbD09ZT92b2lkIDA6ZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKSYmZS5zZXRIdHRwUmVxdWVzdEZpbmlzaENhbGxiYWNrKHQpfX0se2tleToiZW5hYmxlSHR0cEhhbmRsZXIiLHZhbHVlOmZ1bmN0aW9uKGUpeyhudWxsPT1lP3ZvaWQgMDplLmVuYWJsZUhhbmRsZXIpJiZlLmVuYWJsZUhhbmRsZXIoKX19LHtrZXk6ImRpc2FibGVIdHRwSGFuZGxlciIsdmFsdWU6ZnVuY3Rpb24oZSl7KG51bGw9PWU/dm9pZCAwOmUuZGlzYWJsZUhhbmRsZXIpJiZlLmRpc2FibGVIYW5kbGVyKCl9fSx7a2V5OiJpbml0aWFsaXplU2Vzc2lvbk1hbmdlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LHIsbixhKXt2YXIgaSxvLHM7YS5pbml0aWFsaXplKGUuY2xpZW50SUQsbnVsbCE9PShpPXQuY2hlY2tTZXNzaW9uSWZyYW1lKSYmdm9pZCAwIT09aT9pOiIiLHIsbnVsbCE9PShvPWUuY2hlY2tTZXNzaW9uSW50ZXJ2YWwpJiZ2b2lkIDAhPT1vP286MyxudWxsIT09KHM9ZS5zZXNzaW9uUmVmcmVzaEludGVydmFsKSYmdm9pZCAwIT09cz9zOjMwMCxlLnNpZ25JblJlZGlyZWN0VVJMLG4pfX0se2tleToicmVxdWVzdEN1c3RvbUdyYW50Iix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuLGEsaTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsLGg9dGhpcztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKG8pe2Zvcig7Oylzd2l0Y2goby5wcmV2PW8ubmV4dCl7Y2FzZSAwOmlmKHM9ITAsdT0hMSwhKG51bGw9PWU/dm9pZCAwOmUudG9rZW5FbmRwb2ludCkpe28ubmV4dD0zOTticmVha31yZXR1cm4gcz0hMSxjPTAsby50MD1bXSxvLnQxPWIsby5uZXh0PTksdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDk6aWYoby50ND1uPW8uc2VudCxvLnQzPW51bGw9PT1vLnQ0LG8udDMpe28ubmV4dD0xMzticmVha31vLnQzPXZvaWQgMD09PW47Y2FzZSAxMzppZighby50Myl7by5uZXh0PTE3O2JyZWFrfW8udDU9dm9pZCAwLG8ubmV4dD0xODticmVhaztjYXNlIDE3Om8udDU9bi5yZXNvdXJjZVNlcnZlclVSTHM7Y2FzZSAxODppZihvLnQ2PWE9by50NSxvLnQyPW51bGwhPT1vLnQ2LCFvLnQyKXtvLm5leHQ9MjI7YnJlYWt9by50Mj12b2lkIDAhPT1hO2Nhc2UgMjI6aWYoIW8udDIpe28ubmV4dD0yNjticmVha31vLnQ3PWEsby5uZXh0PTI3O2JyZWFrO2Nhc2UgMjY6by50Nz1bXTtjYXNlIDI3Om8udDg9by50NyxvLnQ5PSgwLG8udDEpKG8udDgpLG8udDEwPVtlLmJhc2VVcmxdLGY9by50MC5jb25jYXQuY2FsbChvLnQwLG8udDksby50MTApO2Nhc2UgMzE6aWYoIShjPGYubGVuZ3RoKSl7by5uZXh0PTM5O2JyZWFrfWlmKCEobD1mW2NdKXx8IShudWxsPT09KGk9ZS50b2tlbkVuZHBvaW50KXx8dm9pZCAwPT09aT92b2lkIDA6aS5zdGFydHNXaXRoKGwpKSl7by5uZXh0PTM2O2JyZWFrfXJldHVybiB1PSEwLG8uYWJydXB0KCJicmVhayIsMzkpO2Nhc2UgMzY6YysrLG8ubmV4dD0zMTticmVhaztjYXNlIDM5OmlmKGUuc2hvdWxkUmVwbGF5QWZ0ZXJSZWZyZXNoJiZ0aGlzLl9kYXRhTGF5ZXIuc2V0VGVtcG9yYXJ5RGF0YVBhcmFtZXRlcihZLEpTT04uc3RyaW5naWZ5KGUpKSwhcyYmIXUpe28ubmV4dD00NDticmVha31yZXR1cm4gby5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVxdWVzdEN1c3RvbUdyYW50KGUpLnRoZW4oKGZ1bmN0aW9uKG4pe3JldHVybiBTKGgsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYodCYmImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQoZSksIWUucmV0dXJuc1Nlc3Npb24pe3IubmV4dD02O2JyZWFrfXJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHIuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSA2OnJldHVybiByLmFicnVwdCgicmV0dXJuIixuKTtjYXNlIDc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxhLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDQ0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLU1BSU5fVEhSRUFEX0NMSUVOVC1SQ0ctSVYwMSIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIHRva2VuIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDQ1OmNhc2UiZW5kIjpyZXR1cm4gby5zdG9wKCl9fSksbyx0aGlzKX0pKSl9fSx7a2V5OiJnZXRDdXN0b21HcmFudENvbmZpZ0RhdGEiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7dmFyIHQ7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5uZXh0PTIsdGhpcy5fZGF0YUxheWVyLmdldFRlbXBvcmFyeURhdGFQYXJhbWV0ZXIoWSk7Y2FzZSAyOmlmKCEodD1lLnNlbnQpKXtlLm5leHQ9NzticmVha31yZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsSlNPTi5wYXJzZSh0KSk7Y2FzZSA3OnJldHVybiBlLmFicnVwdCgicmV0dXJuIixudWxsKTtjYXNlIDg6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6InJlZnJlc2hBY2Nlc3NUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7dmFyIG47cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5wcmV2PTAsdC5uZXh0PTMsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQucmVmcmVzaEFjY2Vzc1Rva2VuKCk7Y2FzZSAzOnJldHVybiB0Lm5leHQ9NSx0aGlzLmdldEN1c3RvbUdyYW50Q29uZmlnRGF0YSgpO2Nhc2UgNTppZighKG49dC5zZW50KSl7dC5uZXh0PTk7YnJlYWt9cmV0dXJuIHQubmV4dD05LHRoaXMucmVxdWVzdEN1c3RvbUdyYW50KG4sZSk7Y2FzZSA5OnJldHVybiB0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLHQuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxMzpyZXR1cm4gdC5wcmV2PTEzLHQudDA9dC5jYXRjaCgwKSx0LmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdCh0LnQwKSk7Y2FzZSAxNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQsdGhpcyxbWzAsMTNdXSl9KSkpfX0se2tleToiaHR0cFJlcXVlc3QiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuLGEsaSxvKXt2YXIgcyx1O3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gYygpe3ZhciBmLGwsaCxwLGQsdj10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITEsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6cmV0dXJuIGw9Yy5zZW50LGg9MCxjLnQwPVtdLGMudDE9YixjLm5leHQ9OSxudWxsPT1sP3ZvaWQgMDpsLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDk6aWYoYy50Mz1zPWMuc2VudCxjLnQyPW51bGwhPT1jLnQzLCFjLnQyKXtjLm5leHQ9MTM7YnJlYWt9Yy50Mj12b2lkIDAhPT1zO2Nhc2UgMTM6aWYoIWMudDIpe2MubmV4dD0xNzticmVha31jLnQ0PXMsYy5uZXh0PTE4O2JyZWFrO2Nhc2UgMTc6Yy50ND1bXTtjYXNlIDE4OmMudDU9Yy50NCxjLnQ2PSgwLGMudDEpKGMudDUpLGMudDc9W2wuYmFzZVVybF0scD1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50NixjLnQ3KTtjYXNlIDIyOmlmKCEoaDxwLmxlbmd0aCkpe2MubmV4dD0zMDticmVha31pZighKGQ9cFtoXSl8fCEobnVsbD09PSh1PW51bGw9PXQ/dm9pZCAwOnQudXJsKXx8dm9pZCAwPT09dT92b2lkIDA6dS5zdGFydHNXaXRoKGQpKSl7Yy5uZXh0PTI3O2JyZWFrfXJldHVybiBmPSEwLGMuYWJydXB0KCJicmVhayIsMzApO2Nhc2UgMjc6aCsrLGMubmV4dD0yMjticmVhaztjYXNlIDMwOmlmKCFmKXtjLm5leHQ9MzQ7YnJlYWt9cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLGUucmVxdWVzdCh0KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihzKXtyZXR1cm4gUyh2LHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHUoKXt2YXIgYyxmLGwsaCxwO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6aWYoNDAxIT09KG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLnJlc3BvbnNlKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdGF0dXMpJiYobnVsbD09cz92b2lkIDA6cy5yZXNwb25zZSkpe3IubmV4dD0zMTticmVha31yZXR1cm4gci5wcmV2PTEsci5uZXh0PTQsdGhpcy5yZWZyZXNoQWNjZXNzVG9rZW4obyk7Y2FzZSA0Omg9ci5zZW50LHIubmV4dD0xNTticmVhaztjYXNlIDc6aWYoci5wcmV2PTcsci50MD1yLmNhdGNoKDEpLCFuKXtyLm5leHQ9MTQ7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3IubmV4dD0xMzticmVha31yZXR1cm4gci5uZXh0PTEzLGEoT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LHMpLHtjb2RlOlZ9KSk7Y2FzZSAxMzoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgMTQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUi1TRTAxIixudWxsIT09KGY9bnVsbD09PXIudDB8fHZvaWQgMD09PXIudDA/dm9pZCAwOnIudDAubmFtZSkmJnZvaWQgMCE9PWY/ZjoiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0obD1udWxsPT09ci50MHx8dm9pZCAwPT09ci50MD92b2lkIDA6ci50MC5tZXNzYWdlKSYmdm9pZCAwIT09bD9sOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighaCl7ci5uZXh0PTMxO2JyZWFrfXJldHVybiByLnByZXY9MTYsci5uZXh0PTE5LGUucmVxdWVzdCh0KTtjYXNlIDE5OnJldHVybiBwPXIuc2VudCxyLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlc29sdmUocCkpO2Nhc2UgMjM6aWYoci5wcmV2PTIzLHIudDE9ci5jYXRjaCgxNiksIW4pe3IubmV4dD0zMDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTI5O2JyZWFrfXJldHVybiByLm5leHQ9MjksYShyLnQxKTtjYXNlIDI5OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzMDpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3Qoci50MSkpO2Nhc2UgMzE6aWYoIW4pe3IubmV4dD0zNjticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7ci5uZXh0PTM1O2JyZWFrfXJldHVybiByLm5leHQ9MzUsYShzKTtjYXNlIDM1OiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAzNjpyZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QocykpO2Nhc2UgMzc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSx1LHRoaXMsW1sxLDddLFsxNiwyM11dKX0pKSl9KSkpO2Nhc2UgMzQ6cmV0dXJuIGMuYWJydXB0KCJyZXR1cm4iLFByb21pc2UucmVqZWN0KG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItSFItSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIikpKTtjYXNlIDM1OmNhc2UiZW5kIjpyZXR1cm4gYy5zdG9wKCl9fSksYyx0aGlzKX0pKSl9fSx7a2V5OiJodHRwUmVxdWVzdEFsbCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4sYSxpKXt2YXIgbyxzLHU7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBjKCl7dmFyIGYsbCxoLHAsZCx2LGcseSxtLHcsaz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oYyl7Zm9yKDs7KXN3aXRjaChjLnByZXY9Yy5uZXh0KXtjYXNlIDA6cmV0dXJuIGY9ITAsYy5uZXh0PTMsdGhpcy5fZGF0YUxheWVyLmdldENvbmZpZ0RhdGEoKTtjYXNlIDM6bD1jLnNlbnQsaD1fKGUpLGMucHJldj01LGgucygpO2Nhc2UgNzppZigocD1oLm4oKSkuZG9uZSl7Yy5uZXh0PTUwO2JyZWFrfXJldHVybiBkPXAudmFsdWUsdj0hMSxnPTAsYy50MD1bXSxjLnQxPWIsYy5uZXh0PTE1LGw7Y2FzZSAxNTppZihjLnQ0PW89Yy5zZW50LGMudDM9bnVsbD09PWMudDQsYy50Myl7Yy5uZXh0PTE5O2JyZWFrfWMudDM9dm9pZCAwPT09bztjYXNlIDE5OmlmKCFjLnQzKXtjLm5leHQ9MjM7YnJlYWt9Yy50NT12b2lkIDAsYy5uZXh0PTI0O2JyZWFrO2Nhc2UgMjM6Yy50NT1vLnJlc291cmNlU2VydmVyVVJMcztjYXNlIDI0OmlmKGMudDY9cz1jLnQ1LGMudDI9bnVsbCE9PWMudDYsIWMudDIpe2MubmV4dD0yODticmVha31jLnQyPXZvaWQgMCE9PXM7Y2FzZSAyODppZighYy50Mil7Yy5uZXh0PTMyO2JyZWFrfWMudDc9cyxjLm5leHQ9MzM7YnJlYWs7Y2FzZSAzMjpjLnQ3PVtdO2Nhc2UgMzM6Yy50OD1jLnQ3LGMudDk9KDAsYy50MSkoYy50OCksYy50MTA9W2wuYmFzZVVybF0seT1jLnQwLmNvbmNhdC5jYWxsKGMudDAsYy50OSxjLnQxMCk7Y2FzZSAzNzppZighKGc8eS5sZW5ndGgpKXtjLm5leHQ9NDU7YnJlYWt9aWYoIShtPXlbZ10pfHwhKG51bGw9PT0odT1kLnVybCl8fHZvaWQgMD09PXU/dm9pZCAwOnUuc3RhcnRzV2l0aChtKSkpe2MubmV4dD00MjticmVha31yZXR1cm4gdj0hMCxjLmFicnVwdCgiYnJlYWsiLDQ1KTtjYXNlIDQyOmcrKyxjLm5leHQ9Mzc7YnJlYWs7Y2FzZSA0NTppZih2KXtjLm5leHQ9NDg7YnJlYWt9cmV0dXJuIGY9ITEsYy5hYnJ1cHQoImJyZWFrIiw1MCk7Y2FzZSA0ODpjLm5leHQ9NzticmVhaztjYXNlIDUwOmMubmV4dD01NTticmVhaztjYXNlIDUyOmMucHJldj01MixjLnQxMT1jLmNhdGNoKDUpLGguZShjLnQxMSk7Y2FzZSA1NTpyZXR1cm4gYy5wcmV2PTU1LGguZigpLGMuZmluaXNoKDU1KTtjYXNlIDU4OmlmKHc9W10sIWYpe2MubmV4dD02NDticmVha31yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt3LnB1c2godC5yZXF1ZXN0KGUpKX0pKSxjLmFicnVwdCgicmV0dXJuIiwobnVsbD09dD92b2lkIDA6dC5hbGwpJiZ0LmFsbCh3KS50aGVuKChmdW5jdGlvbihlKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtyZXR1cm4gUyhrLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIG8oKXt2YXIgcyx1LGMsZixsPXRoaXM7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihvKXtmb3IoOzspc3dpdGNoKG8ucHJldj1vLm5leHQpe2Nhc2UgMDppZig0MDEhPT0obnVsbD09PShzPW51bGw9PWU/dm9pZCAwOmUucmVzcG9uc2UpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0YXR1cykmJihudWxsPT1lP3ZvaWQgMDplLnJlc3BvbnNlKSl7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLnByZXY9MSxvLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDQ6Zj1vLnNlbnQsby5uZXh0PTE1O2JyZWFrO2Nhc2UgNzppZihvLnByZXY9NyxvLnQwPW8uY2F0Y2goMSksIW4pe28ubmV4dD0xNDticmVha31pZigiZnVuY3Rpb24iIT10eXBlb2YgYSl7by5uZXh0PTEzO2JyZWFrfXJldHVybiBvLm5leHQ9MTMsYShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sZSkse2NvZGU6Vn0pKTtjYXNlIDEzOiJmdW5jdGlvbiI9PXR5cGVvZiBpJiZpKCk7Y2FzZSAxNDp0aHJvdyBuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLUhSQS1TRTAxIixudWxsIT09KHU9bnVsbD09PW8udDB8fHZvaWQgMD09PW8udDA/dm9pZCAwOm8udDAubmFtZSkmJnZvaWQgMCE9PXU/dToiUmVmcmVzaCB0b2tlbiByZXF1ZXN0IGZhaWxlZC4iLG51bGwhPT0oYz1udWxsPT09by50MHx8dm9pZCAwPT09by50MD92b2lkIDA6by50MC5tZXNzYWdlKSYmdm9pZCAwIT09Yz9jOiJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSB0cnlpbmcgdG8gcmVmcmVzaCB0aGUgYWNjZXNzIHRva2VuIGZvbGxvd2luZyBhIDQwMSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuIik7Y2FzZSAxNTppZighZil7by5uZXh0PTE3O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0LmFsbCYmdC5hbGwodykudGhlbigoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShlKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFMobCx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiB0KCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZighbil7dC5uZXh0PTU7YnJlYWt9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGEpe3QubmV4dD00O2JyZWFrfXJldHVybiB0Lm5leHQ9NCxhKGUpO2Nhc2UgNDoiZnVuY3Rpb24iPT10eXBlb2YgaSYmaSgpO2Nhc2UgNTpyZXR1cm4gdC5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoZSkpO2Nhc2UgNjpjYXNlImVuZCI6cmV0dXJuIHQuc3RvcCgpfX0pLHQpfSkpKX0pKSk7Y2FzZSAxNzppZighbil7by5uZXh0PTIyO2JyZWFrfWlmKCJmdW5jdGlvbiIhPXR5cGVvZiBhKXtvLm5leHQ9MjE7YnJlYWt9cmV0dXJuIG8ubmV4dD0yMSxhKGUpO2Nhc2UgMjE6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJmkoKTtjYXNlIDIyOnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChlKSk7Y2FzZSAyMzpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyxbWzEsN11dKX0pKSl9KSkpO2Nhc2UgNjQ6dGhyb3cgbmV3IEkoIlNQQS1BVVRIX0hFTFBFUi1IUkEtSVYwMiIsIlJlcXVlc3QgdG8gdGhlIHByb3ZpZGVkIGVuZHBvaW50IGlzIHByb2hpYml0ZWQuIiwiUmVxdWVzdHMgY2FuIG9ubHkgYmUgc2VudCB0byByZXNvdXJjZSBzZXJ2ZXJzIHNwZWNpZmllZCBieSB0aGUgYHJlc291cmNlU2VydmVyVVJMc2AgYXR0cmlidXRlIHdoaWxlIGluaXRpYWxpemluZyB0aGUgU0RLLiBUaGUgc3BlY2lmaWVkIGVuZHBvaW50IGluIHRoaXMgcmVxdWVzdCBjYW5ub3QgYmUgZm91bmQgYW1vbmcgdGhlIGByZXNvdXJjZVNlcnZlclVSTHNgIik7Y2FzZSA2NTpjYXNlImVuZCI6cmV0dXJuIGMuc3RvcCgpfX0pLGMsdGhpcyxbWzUsNTIsNTUsNThdXSl9KSkpfX0se2tleToicmVxdWVzdEFjY2Vzc1Rva2VuIix2YWx1ZTpmdW5jdGlvbihlLHQsbixhLGkpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbygpe3ZhciBzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24obyl7Zm9yKDs7KXN3aXRjaChvLnByZXY9by5uZXh0KXtjYXNlIDA6cmV0dXJuIG8ubmV4dD0yLHRoaXMuX2RhdGFMYXllci5nZXRDb25maWdEYXRhKCk7Y2FzZSAyOmlmKChzPW8uc2VudCkuc3RvcmFnZSE9PVUuQnJvd3Nlck1lbW9yeXx8IXMuZW5hYmxlUEtDRXx8IXQpe28ubmV4dD05O2JyZWFrfXJldHVybiB1PWNyLmdldFBLQ0UoTC5leHRyYWN0UEtDRUtleUZyb21TdGF0ZVBhcmFtKHQpKSxvLm5leHQ9Nyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShMLmV4dHJhY3RQS0NFS2V5RnJvbVN0YXRlUGFyYW0odCksdSk7Y2FzZSA3Om8ubmV4dD0xMjticmVhaztjYXNlIDk6aWYocy5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFhKXtvLm5leHQ9MTI7YnJlYWt9cmV0dXJuIG8ubmV4dD0xMix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5zZXRQS0NFQ29kZShhLG51bGwhPWk/aToiIik7Y2FzZSAxMjppZighZSl7by5uZXh0PTE0O2JyZWFrfXJldHVybiBvLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5yZXF1ZXN0QWNjZXNzVG9rZW4oZSxudWxsIT10P3Q6IiIsbnVsbCE9aT9pOiIiKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBTKGMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6aWYocy5zdG9yYWdlPT09VS5XZWJXb3JrZXIpe2UubmV4dD0xMDticmVha31yZXR1cm4gZS50MD1jcixlLm5leHQ9NCx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRTaWduT3V0VVJMKCk7Y2FzZSA0OmUudDE9ZS5zZW50LGUudDAuc2V0U2lnbk91dFVSTC5jYWxsKGUudDAsZS50MSksdGhpcy5fc3BhSGVscGVyJiYodGhpcy5fc3BhSGVscGVyLmNsZWFyUmVmcmVzaFRva2VuVGltZW91dCgpLHRoaXMuX3NwYUhlbHBlci5yZWZyZXNoQWNjZXNzVG9rZW5BdXRvbWF0aWNhbGx5KCkpLG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZzLmVuYWJsZU9JRENTZXNzaW9uTWFuYWdlbWVudCYmbigpLGUubmV4dD0xMTticmVhaztjYXNlIDEwOnRoaXMuX3NwYUhlbHBlciYmdGhpcy5fc3BhSGVscGVyLnJlZnJlc2hBY2Nlc3NUb2tlbkF1dG9tYXRpY2FsbHkoKTtjYXNlIDExOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCkpO2Nhc2UgMTI6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIFByb21pc2UucmVqZWN0KGUpfSkpKTtjYXNlIDE0OnJldHVybiBvLmFicnVwdCgicmV0dXJuIixQcm9taXNlLnJlamVjdChuZXcgSSgiU1BBLUFVVEhfSEVMUEVSLVJBVDEtTkYwMSIsIk5vIGF1dGhvcml6YXRpb24gY29kZS4iLCJObyBhdXRob3JpemF0aW9uIGNvZGUgd2FzIGZvdW5kLiIpKSk7Y2FzZSAxNTpjYXNlImVuZCI6cmV0dXJuIG8uc3RvcCgpfX0pLG8sdGhpcyl9KSkpfX0se2tleToidHJ5U2lnbkluU2lsZW50bHkiLHZhbHVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgYTtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGkoKXt2YXIgbyxzLHUsYz10aGlzO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oaSl7Zm9yKDs7KXN3aXRjaChpLnByZXY9aS5uZXh0KXtjYXNlIDA6aWYoIWNyLmlzSW5pdGlhbGl6ZWRTaWxlbnRTaWduSW4oKSl7aS5uZXh0PTQ7YnJlYWt9cmV0dXJuIGkubmV4dD0zLG4ucmVjZWl2ZVByb21wdE5vbmVSZXNwb25zZSgpO2Nhc2UgMzpyZXR1cm4gaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNDpyZXR1cm4gbz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicnBJRnJhbWUiKSxzPW51bGw9PT0oYT1udWxsPT1vP3ZvaWQgMDpvLmNvbnRlbnREb2N1bWVudCl8fHZvaWQgMD09PWE/dm9pZCAwOmEuZ2V0RWxlbWVudEJ5SWQoInByb21wdE5vbmVJRnJhbWUiKSxpLnByZXY9NixpLm5leHQ9OSxlKCk7Y2FzZSA5OnU9aS5zZW50LHMuc3JjPXUsaS5uZXh0PTE2O2JyZWFrO2Nhc2UgMTM6cmV0dXJuIGkucHJldj0xMyxpLnQwPWkuY2F0Y2goNiksaS5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZWplY3QoaS50MCkpO2Nhc2UgMTY6cmV0dXJuIGkuYWJydXB0KCJyZXR1cm4iLG5ldyBQcm9taXNlKChmdW5jdGlvbihlLG4pe3ZhciBhPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZSghMSl9KSwxZTQpO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gaShvKXtyZXR1cm4gUyhjLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIHMoKXt2YXIgdSxjLGYsbCxoO3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24ocil7Zm9yKDs7KXN3aXRjaChyLnByZXY9ci5uZXh0KXtjYXNlIDA6ImNoZWNrX3Nlc3Npb25fc2lnbmVkX291dCI9PShudWxsPT0oaD1vLmRhdGEpP3ZvaWQgMDpoLnR5cGUpJiYod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGNsZWFyVGltZW91dChhKSxlKCExKSksImNoZWNrX3Nlc3Npb25fc2lnbmVkX2luIj09KG51bGw9PWg/dm9pZCAwOmgudHlwZSkmJihudWxsPT09KHU9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09dT92b2lkIDA6dS5jb2RlKSYmdChudWxsPT09KGM9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5jb2RlLG51bGw9PT0oZj1udWxsPT1oP3ZvaWQgMDpoLmRhdGEpfHx2b2lkIDA9PT1mP3ZvaWQgMDpmLnNlc3Npb25TdGF0ZSxudWxsPT09KGw9bnVsbD09aD92b2lkIDA6aC5kYXRhKXx8dm9pZCAwPT09bD92b2lkIDA6bC5zdGF0ZSkudGhlbigoZnVuY3Rpb24odCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLGkpLGUodCl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixpKSxuKGUpfSkpLmZpbmFsbHkoKGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGEpfSkpO2Nhc2UgMzpjYXNlImVuZCI6cmV0dXJuIHIuc3RvcCgpfX0pLHMpfSkpKX0pKX0pKSk7Y2FzZSAxNzpjYXNlImVuZCI6cmV0dXJuIGkuc3RvcCgpfX0pLGksbnVsbCxbWzYsMTNdXSl9KSkpfX0se2tleToiaGFuZGxlU2lnbkluIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBhKCl7dmFyIGksbyxzLHUsYztyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOnJldHVybiByLm5leHQ9Mix0aGlzLl9kYXRhTGF5ZXIuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMjpyZXR1cm4gaT1yLnNlbnQsci5uZXh0PTUsZSgpO2Nhc2UgNTppZighci5zZW50KXtyLm5leHQ9NzticmVha31yZXR1cm4gci5hYnJ1cHQoInJldHVybiIsUHJvbWlzZS5yZXNvbHZlKHthbGxvd2VkU2NvcGVzOiIiLGRpc3BsYXlOYW1lOiIiLGVtYWlsOiIiLHNlc3Npb25TdGF0ZToiIixzdWI6IiIsdGVuYW50RG9tYWluOiIiLHVzZXJuYW1lOiIifSkpO2Nhc2UgNzppZihpLnN0b3JhZ2U9PT1VLldlYldvcmtlcil7ci5uZXh0PTE5O2JyZWFrfXJldHVybiByLm5leHQ9MTAsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCk7Y2FzZSAxMDppZighci5zZW50KXtyLm5leHQ9MTk7YnJlYWt9cmV0dXJuIHRoaXMuX3NwYUhlbHBlci5jbGVhclJlZnJlc2hUb2tlblRpbWVvdXQoKSx0aGlzLl9zcGFIZWxwZXIucmVmcmVzaEFjY2Vzc1Rva2VuQXV0b21hdGljYWxseSgpLGkuZW5hYmxlT0lEQ1Nlc3Npb25NYW5hZ2VtZW50JiZ0KCksci50MD1Qcm9taXNlLHIubmV4dD0xNyx0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXRCYXNpY1VzZXJJbmZvKCk7Y2FzZSAxNzpyZXR1cm4gci50MT1yLnNlbnQsci5hYnJ1cHQoInJldHVybiIsci50MC5yZXNvbHZlLmNhbGwoci50MCxyLnQxKSk7Y2FzZSAxOTppZihvPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQoVykscz1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KHopLCFvKXtyLm5leHQ9Mjc7YnJlYWt9dGhyb3codT1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkuc2VhcmNoUGFyYW1zLmRlbGV0ZShXKSx1LnNlYXJjaFBhcmFtcy5kZWxldGUoeiksaGlzdG9yeS5wdXNoU3RhdGUobnVsbCxkb2N1bWVudC50aXRsZSx1LnRvU3RyaW5nKCkpLG5ldyBJKCJTUEEtQVVUSF9IRUxQRVItU0ktU0UwMSIsbyxudWxsIT1zP3M6IiIpO2Nhc2UgMjc6aWYoaS5zdG9yYWdlIT09VS5XZWJXb3JrZXJ8fCFuKXtyLm5leHQ9MzM7YnJlYWt9cmV0dXJuIHIubmV4dD0zMCxuKCk7Y2FzZSAzMDppZighKGM9ci5zZW50KSl7ci5uZXh0PTMzO2JyZWFrfXJldHVybiByLmFicnVwdCgicmV0dXJuIixjKTtjYXNlIDMzOmNhc2UiZW5kIjpyZXR1cm4gci5zdG9wKCl9fSksYSx0aGlzKX0pKSl9fSx7a2V5OiJnZXRCYXNpY1VzZXJJbmZvIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldEJhc2ljVXNlckluZm8oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJnZXREZWNvZGVkSURUb2tlbiIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzLHZvaWQgMCx2b2lkIDAscigpLm1hcmsoKGZ1bmN0aW9uIGUoKXtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKGUpe2Zvcig7Oylzd2l0Y2goZS5wcmV2PWUubmV4dCl7Y2FzZSAwOnJldHVybiBlLmFicnVwdCgicmV0dXJuIix0aGlzLl9hdXRoZW50aWNhdGlvbkNsaWVudC5nZXREZWNvZGVkSURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldElEVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0SURUb2tlbigpKTtjYXNlIDE6Y2FzZSJlbmQiOnJldHVybiBlLnN0b3AoKX19KSxlLHRoaXMpfSkpKX19LHtrZXk6ImdldE9JRENTZXJ2aWNlRW5kcG9pbnRzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBTKHRoaXMsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gZSgpe3JldHVybiByKCkud3JhcCgoZnVuY3Rpb24oZSl7Zm9yKDs7KXN3aXRjaChlLnByZXY9ZS5uZXh0KXtjYXNlIDA6cmV0dXJuIGUuYWJydXB0KCJyZXR1cm4iLHRoaXMuX2F1dGhlbnRpY2F0aW9uQ2xpZW50LmdldE9JRENTZXJ2aWNlRW5kcG9pbnRzKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX0se2tleToiZ2V0QWNjZXNzVG9rZW4iLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuZ2V0QWNjZXNzVG9rZW4oKSk7Y2FzZSAxOmNhc2UiZW5kIjpyZXR1cm4gZS5zdG9wKCl9fSksZSx0aGlzKX0pKSl9fSx7a2V5OiJpc0F1dGhlbnRpY2F0ZWQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcyx2b2lkIDAsdm9pZCAwLHIoKS5tYXJrKChmdW5jdGlvbiBlKCl7cmV0dXJuIHIoKS53cmFwKChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpyZXR1cm4gZS5hYnJ1cHQoInJldHVybiIsdGhpcy5fYXV0aGVudGljYXRpb25DbGllbnQuaXNBdXRoZW50aWNhdGVkKCkpO2Nhc2UgMTpjYXNlImVuZCI6cmV0dXJuIGUuc3RvcCgpfX0pLGUsdGhpcyl9KSkpfX1dKSxlfSgpOyFmdW5jdGlvbihlKXt2YXIgdCxuPXNlbGY7bi5vbm1lc3NhZ2U9ZnVuY3Rpb24obil7dmFyIHM9bi5kYXRhLHU9bi5wb3J0cztyZXR1cm4gUyh2b2lkIDAsdm9pZCAwLHZvaWQgMCxyKCkubWFyaygoZnVuY3Rpb24gbigpe3ZhciBjLGYsbCxoLHAsZDtyZXR1cm4gcigpLndyYXAoKGZ1bmN0aW9uKHIpe2Zvcig7Oylzd2l0Y2goci5wcmV2PXIubmV4dCl7Y2FzZSAwOmlmKHA9dVswXSxzLnR5cGU9PT1CfHx0KXtyLm5leHQ9NDticmVha31yZXR1cm4gcC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKG5ldyBJKCJTUEEtQ0xJRU5UX1dPUktFUi1PTk1TRy1ORjAxIiwiVGhlIHdlYiB3b3JrZXIgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldC4iLCJUaGUgaW5pdGlhbGl6ZSBtZXRob2QgbmVlZHMgdG8gYmUgY2FsbGVkIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9wZXJhdGlvbiBjYW4gYmUgY2FycmllZCBvdXQuIikpKSxyLmFicnVwdCgicmV0dXJuIik7Y2FzZSA0OnIudDA9cy50eXBlLHIubmV4dD1yLnQwPT09Qj83OiJnZXRfYXV0aF91cmwiPT09ci50MD8yMjoicmVxdWVzdF9nZXRfdG9rZW4iPT09ci50MD8yNDoiaHR0cC1yZXF1ZXN0Ij09PXIudDA/MjY6Imh0dHAtcmVxdWVzdC1hbGwiPT09ci50MD8yODoic2lnbi1vdXQiPT09ci50MD8zMDoicmVxdWVzdC1jdXN0b20tZ3JhbnQiPT09ci50MD80NDoicmV2b2tlLWFjY2Vzcy10b2tlbiI9PT1yLnQwPzQ2OiJnZXQtb2lkYy1zZXJ2aWNlLWVuZHBvaW50cyI9PT1yLnQwPzQ4OiJnZXQtYmFzaWMtdXNlci1pbmZvIj09PXIudDA/NjI6ImdldC1kZWNvZGVkLWlkLXRva2VuIj09PXIudDA/NzY6ImdldF9pZF90b2tlbiI9PT1yLnQwPzkwOiJlbmFibGVfaHR0cF9oYW5kbGVyIj09PXIudDA/MTA0OiJkaXNhYmxlX2h0dHBfaGFuZGxlciI9PT1yLnQwPzEwNzoiaXNfYXV0aGVudGljYXRlZCI9PT1yLnQwPzExMDoiZ2V0X3NpZ25fb3V0X3VybCI9PT1yLnQwPzEyNDoicmVmcmVzaF9hY2Nlc3MtdG9rZW4iPT09ci50MD8xMzg6InN0YXJ0X2F1dG9fcmVmcmVzaF90b2tlbiI9PT1yLnQwPzE1Mjoic2V0X3Nlc3Npb25fc3RhdGUiPT09ci50MD8xNTQ6InVwZGF0ZV9jb25maWciPT09ci50MD8xNjg6ImdldF9jb25maWdfZGF0YSI9PT1yLnQwPzE4MjoxOTY7YnJlYWs7Y2FzZSA3OnJldHVybiByLnByZXY9NyxkPU9iamVjdC5hc3NpZ24oe30scy5kYXRhKSxyLm5leHQ9MTEsTGEoZCxlKTtjYXNlIDExOih0PXIuc2VudCkuc2V0SHR0cFJlcXVlc3RGaW5pc2hDYWxsYmFjayhvKSx0LnNldEh0dHBSZXF1ZXN0U3RhcnRDYWxsYmFjayhhKSx0LnNldEh0dHBSZXF1ZXN0U3VjY2Vzc0NhbGxiYWNrKGkpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLm5leHQ9MjE7YnJlYWs7Y2FzZSAxODpyLnByZXY9MTgsci50MT1yLmNhdGNoKDcpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxKSk7Y2FzZSAyMTpyZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjI6cmV0dXJuIHQuZ2V0QXV0aG9yaXphdGlvblVSTChudWxsPT1zP3ZvaWQgMDpzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjQ6cmV0dXJuIHQucmVxdWVzdEFjY2Vzc1Rva2VuKG51bGw9PT0oYz1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1jP3ZvaWQgMDpjLmNvZGUsbnVsbD09PShmPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWY/dm9pZCAwOmYuc2Vzc2lvblN0YXRlLG51bGw9PT0obD1udWxsPT1zP3ZvaWQgMDpzLmRhdGEpfHx2b2lkIDA9PT1sP3ZvaWQgMDpsLnBrY2UsbnVsbD09PShoPW51bGw9PXM/dm9pZCAwOnMuZGF0YSl8fHZvaWQgMD09PWg/dm9pZCAwOmguc3RhdGUpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMjY6cmV0dXJuIHQuaHR0cFJlcXVlc3Qocy5kYXRhKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDI4OnJldHVybiB0Lmh0dHBSZXF1ZXN0QWxsKHMuZGF0YSkudGhlbigoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKGUpKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX0pKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAzMDpyZXR1cm4gci5wcmV2PTMwLHIudDI9cCxyLnQzPXVyLHIubmV4dD0zNSx0LnNpZ25PdXQoKTtjYXNlIDM1OnIudDQ9ci5zZW50LHIudDU9ci50My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MyxyLnQ0KSxyLnQyLnBvc3RNZXNzYWdlLmNhbGwoci50MixyLnQ1KSxyLm5leHQ9NDM7YnJlYWs7Y2FzZSA0MDpyLnByZXY9NDAsci50Nj1yLmNhdGNoKDMwKSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50NikpO2Nhc2UgNDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ0OnJldHVybiB0LnJlcXVlc3RDdXN0b21HcmFudChzLmRhdGEpLnRoZW4oKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZShlKSl9KSkuY2F0Y2goKGZ1bmN0aW9uKGUpe3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShlKSl9KSksci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgNDY6cmV0dXJuIHQucmV2b2tlQWNjZXNzVG9rZW4oKS50aGVuKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UoZSkpfSkpLmNhdGNoKChmdW5jdGlvbihlKXtwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UoZSkpfSkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDQ4OnJldHVybiByLnByZXY9NDgsci50Nz1wLHIudDg9dXIsci5uZXh0PTUzLHQuZ2V0T0lEQ1NlcnZpY2VFbmRwb2ludHMoKTtjYXNlIDUzOnIudDk9ci5zZW50LHIudDEwPXIudDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDgsci50OSksci50Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDcsci50MTApLHIubmV4dD02MTticmVhaztjYXNlIDU4OnIucHJldj01OCxyLnQxMT1yLmNhdGNoKDQ4KSxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2Uoci50MTEpKTtjYXNlIDYxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSA2MjpyZXR1cm4gci5wcmV2PTYyLHIudDEyPXAsci50MTM9dXIsci5uZXh0PTY3LHQuZ2V0QmFzaWNVc2VySW5mbygpO2Nhc2UgNjc6ci50MTQ9ci5zZW50LHIudDE1PXIudDEzLmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxMyxyLnQxNCksci50MTIucG9zdE1lc3NhZ2UuY2FsbChyLnQxMixyLnQxNSksci5uZXh0PTc1O2JyZWFrO2Nhc2UgNzI6ci5wcmV2PTcyLHIudDE2PXIuY2F0Y2goNjIpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQxNikpO2Nhc2UgNzU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDc2OnJldHVybiByLnByZXY9NzYsci50MTc9cCxyLnQxOD11cixyLm5leHQ9ODEsdC5nZXREZWNvZGVkSURUb2tlbigpO2Nhc2UgODE6ci50MTk9ci5zZW50LHIudDIwPXIudDE4LmdlbmVyYXRlU3VjY2Vzc01lc3NhZ2UuY2FsbChyLnQxOCxyLnQxOSksci50MTcucG9zdE1lc3NhZ2UuY2FsbChyLnQxNyxyLnQyMCksci5uZXh0PTg5O2JyZWFrO2Nhc2UgODY6ci5wcmV2PTg2LHIudDIxPXIuY2F0Y2goNzYpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQyMSkpO2Nhc2UgODk6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDkwOnJldHVybiByLnByZXY9OTAsci50MjI9cCxyLnQyMz11cixyLm5leHQ9OTUsdC5nZXRJRFRva2VuKCk7Y2FzZSA5NTpyLnQyND1yLnNlbnQsci50MjU9ci50MjMuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDIzLHIudDI0KSxyLnQyMi5wb3N0TWVzc2FnZS5jYWxsKHIudDIyLHIudDI1KSxyLm5leHQ9MTAzO2JyZWFrO2Nhc2UgMTAwOnIucHJldj0xMDAsci50MjY9ci5jYXRjaCg5MCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDI2KSk7Y2FzZSAxMDM6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEwNDpyZXR1cm4gdC5lbmFibGVIdHRwSGFuZGxlcigpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSgpKSxyLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMDc6cmV0dXJuIHQuZGlzYWJsZUh0dHBIYW5kbGVyKCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlKCkpLHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDExMDpyZXR1cm4gci5wcmV2PTExMCxyLnQyNz1wLHIudDI4PXVyLHIubmV4dD0xMTUsdC5pc0F1dGhlbnRpY2F0ZWQoKTtjYXNlIDExNTpyLnQyOT1yLnNlbnQsci50MzA9ci50MjguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDI4LHIudDI5KSxyLnQyNy5wb3N0TWVzc2FnZS5jYWxsKHIudDI3LHIudDMwKSxyLm5leHQ9MTIzO2JyZWFrO2Nhc2UgMTIwOnIucHJldj0xMjAsci50MzE9ci5jYXRjaCgxMTApLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQzMSkpO2Nhc2UgMTIzOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxMjQ6cmV0dXJuIHIucHJldj0xMjQsci50MzI9cCxyLnQzMz11cixyLm5leHQ9MTI5LHQuZ2V0U2lnbk91dFVSTCgpO2Nhc2UgMTI5OnIudDM0PXIuc2VudCxyLnQzNT1yLnQzMy5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50MzMsci50MzQpLHIudDMyLnBvc3RNZXNzYWdlLmNhbGwoci50MzIsci50MzUpLHIubmV4dD0xMzc7YnJlYWs7Y2FzZSAxMzQ6ci5wcmV2PTEzNCxyLnQzNj1yLmNhdGNoKDEyNCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDM2KSk7Y2FzZSAxMzc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDEzODpyZXR1cm4gci5wcmV2PTEzOCxyLnQzNz1wLHIudDM4PXVyLHIubmV4dD0xNDMsdC5yZWZyZXNoQWNjZXNzVG9rZW4oKTtjYXNlIDE0MzpyLnQzOT1yLnNlbnQsci50NDA9ci50MzguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDM4LHIudDM5KSxyLnQzNy5wb3N0TWVzc2FnZS5jYWxsKHIudDM3LHIudDQwKSxyLm5leHQ9MTUxO2JyZWFrO2Nhc2UgMTQ4OnIucHJldj0xNDgsci50NDE9ci5jYXRjaCgxMzgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ0MSkpO2Nhc2UgMTUxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxNTI6dHJ5e3AucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZSh0LnN0YXJ0QXV0b1JlZnJlc2hUb2tlbigpKSl9Y2F0Y2goZSl7cC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKGUpKX1yZXR1cm4gci5hYnJ1cHQoImJyZWFrIiwxOTcpO2Nhc2UgMTU0OnJldHVybiByLnByZXY9MTU0LHIudDQyPXAsci50NDM9dXIsci5uZXh0PTE1OSx0LnNldFNlc3Npb25TdGF0ZShudWxsPT1zP3ZvaWQgMDpzLmRhdGEpO2Nhc2UgMTU5OnIudDQ0PXIuc2VudCxyLnQ0NT1yLnQ0My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NDMsci50NDQpLHIudDQyLnBvc3RNZXNzYWdlLmNhbGwoci50NDIsci50NDUpLHIubmV4dD0xNjc7YnJlYWs7Y2FzZSAxNjQ6ci5wcmV2PTE2NCxyLnQ0Nj1yLmNhdGNoKDE1NCkscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDQ2KSk7Y2FzZSAxNjc6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE2ODpyZXR1cm4gci5wcmV2PTE2OCxyLnQ0Nz1wLHIudDQ4PXVyLHIubmV4dD0xNzMsdC51cGRhdGVDb25maWcobnVsbD09cz92b2lkIDA6cy5kYXRhKTtjYXNlIDE3MzpyLnQ0OT1yLnNlbnQsci50NTA9ci50NDguZ2VuZXJhdGVTdWNjZXNzTWVzc2FnZS5jYWxsKHIudDQ4LHIudDQ5KSxyLnQ0Ny5wb3N0TWVzc2FnZS5jYWxsKHIudDQ3LHIudDUwKSxyLm5leHQ9MTgxO2JyZWFrO2Nhc2UgMTc4OnIucHJldj0xNzgsci50NTE9ci5jYXRjaCgxNjgpLHAucG9zdE1lc3NhZ2UodXIuZ2VuZXJhdGVGYWlsdXJlTWVzc2FnZShyLnQ1MSkpO2Nhc2UgMTgxOnJldHVybiByLmFicnVwdCgiYnJlYWsiLDE5Nyk7Y2FzZSAxODI6cmV0dXJuIHIucHJldj0xODIsci50NTI9cCxyLnQ1Mz11cixyLm5leHQ9MTg3LHQuZ2V0Q29uZmlnRGF0YSgpO2Nhc2UgMTg3OnIudDU0PXIuc2VudCxyLnQ1NT1yLnQ1My5nZW5lcmF0ZVN1Y2Nlc3NNZXNzYWdlLmNhbGwoci50NTMsci50NTQpLHIudDUyLnBvc3RNZXNzYWdlLmNhbGwoci50NTIsci50NTUpLHIubmV4dD0xOTU7YnJlYWs7Y2FzZSAxOTI6ci5wcmV2PTE5MixyLnQ1Nj1yLmNhdGNoKDE4MikscC5wb3N0TWVzc2FnZSh1ci5nZW5lcmF0ZUZhaWx1cmVNZXNzYWdlKHIudDU2KSk7Y2FzZSAxOTU6cmV0dXJuIHIuYWJydXB0KCJicmVhayIsMTk3KTtjYXNlIDE5NjpudWxsPT1wfHxwLnBvc3RNZXNzYWdlKHVyLmdlbmVyYXRlRmFpbHVyZU1lc3NhZ2UobmV3IEkoIlNQQS1DTElFTlRfV09SS0VSLU9OTVNHLUlWMDIiLCJUaGUgbWVzc2FnZSB0eXBlIGlzIGludmFsaWQuIiwiVGhlIG1lc3NhZ2UgdHlwZSBwcm92aWRlZCwgIi5jb25jYXQocy50eXBlLCIsIGlzIGludmFsaWQuIikpKSk7Y2FzZSAxOTc6Y2FzZSJlbmQiOnJldHVybiByLnN0b3AoKX19KSxuLG51bGwsW1s3LDE4XSxbMzAsNDBdLFs0OCw1OF0sWzYyLDcyXSxbNzYsODZdLFs5MCwxMDBdLFsxMTAsMTIwXSxbMTI0LDEzNF0sWzEzOCwxNDhdLFsxNTQsMTY0XSxbMTY4LDE3OF0sWzE4MiwxOTJdXSl9KSkpfTt2YXIgYT1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3Qtc3RhcnQifSl9LGk9ZnVuY3Rpb24oZSl7bi5wb3N0TWVzc2FnZSh7ZGF0YTpKU09OLnN0cmluZ2lmeShudWxsIT1lP2U6IiIpLHR5cGU6InJlcXVlc3Qtc3VjY2VzcyJ9KX0sbz1mdW5jdGlvbigpe24ucG9zdE1lc3NhZ2Uoe3R5cGU6InJlcXVlc3QtZmluaXNoIn0pfX0oKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5ldyBVYShlLHQpfSkpO3JldHVybnt9fSgpOwoK",sM=null,dM=!1,function(t){return hM=hM||lM(uM,sM,dM),new Worker(hM,t)}),ZM="init",yM="sign-out",XM="http-request",fM="http-request-all",IM="request-custom-grant",GM="revoke-access-token",VM="request-start",WM="request-success",vM="request-finish",gM="get-oidc-service-endpoints",SM="get-basic-user-info",YM="get-decoded-id-token",RM="enable_http_handler",KM="disable_http_handler",LM="get_auth_url",NM="request_get_token",JM="is_authenticated",xM="get_sign_out_url",HM="refresh_access-token",kM="set_session_state",CM="start_auto_refresh_token",UM="update_config",TM="get_id_token",wM="check_session_signed_in",FM="check_session_signed_out",jM="get_config_data",MM="set_session_state_from_iframe";t.Storage=void 0,(mM=t.Storage||(t.Storage={})).LocalStorage="localStorage",mM.SessionStorage="sessionStorage",mM.WebWorker="webWorker",mM.BrowserMemory="browserMemory",t.Hooks=void 0,(pM=t.Hooks||(t.Hooks={})).SignIn="sign-in",pM.SignOut="sign-out",pM.Initialize="initialize",pM.HttpRequestStart="http-request-start",pM.HttpRequestFinish="http-request-finish",pM.HttpRequestError="http-request-error",pM.HttpRequestSuccess="http-request-success",pM.RevokeAccessToken="revoke-access-token",pM.CustomGrant="custom-grant",pM.SignOutFailed="sign-out-failed";var zM,PM,BM,QM,EM,DM,OM,AM,_M,qM,$M,tz,ez,nz,rz,iz,cz,az="rpIFrame",oz="promptNoneIFrame",lz="Y2hlY2tTZXNzaW9u",uz="sign-in-silently",sz="initialized-silent-sign-in",dz="promptNoneRequestSent",hz="error",mz="error_description",pz="custom_grant_config",bz="state",Zz="Access token is invalid",yz=function(){function e(t,n){s(this,e),this._authenticationClient=t,this._dataLayer=this._authenticationClient.getDataLayer(),this._spaHelper=n}return h(e,[{key:"attachToken",value:function(t){return Pj(this,void 0,void 0,a().mark((function e(){return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!Object.assign({attachToken:!0},t).attachToken){e.next=11;break}return e.t0=Object,e.t1=Object.assign({},t.headers),e.t2="Bearer ",e.next=7,this._authenticationClient.getAccessToken();case 7: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);case 11:case"end":return e.stop()}}),e,this)})))}},{key:"setHttpRequestStartCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestStartCallback)&&t.setHttpRequestStartCallback(e)}},{key:"setHttpRequestSuccessCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestSuccessCallback)&&t.setHttpRequestSuccessCallback(e)}},{key:"setHttpRequestFinishCallback",value:function(t,e){(null==t?void 0:t.setHttpRequestFinishCallback)&&t.setHttpRequestFinishCallback(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 Pj(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(pz,JSON.stringify(t)),!o&&!l){c.next=44;break}return c.abrupt("return",this._authenticationClient.requestCustomGrant(t).then((function(n){return Pj(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 tM("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 Pj(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(pz);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 Pj(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 Pj(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 Pj(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:Zz}));case 13:"function"==typeof i&&i();case 14:throw new tM("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 tM("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 Pj(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 Pj(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:Zz}));case 13:"function"==typeof i&&i();case 14:throw new tM("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 Pj(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 tM("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 Pj(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=Iz.getPKCE(eM.extractPKCEKeyFromStateParam(n)),o.next=7,this._authenticationClient.setPKCECode(eM.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 Pj(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=Iz,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 tM("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 Pj(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(!Iz.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(az),o=null===(r=null==c?void 0:c.contentDocument)||void 0===r?void 0:r.getElementById(oz),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 Pj(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)==FM&&(window.removeEventListener("message",i),clearTimeout(r),t(!1)),(null==h?void 0:h.type)==wM&&(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 Pj(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(hz),l=new URL(window.location.href).searchParams.get(mz),!o){i.next=27;break}throw(u=new URL(window.location.href)).searchParams.delete(hz),u.searchParams.delete(mz),history.pushState(null,document.title,u.toString()),new tM("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 Pj(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 Pj(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:"getIDToken",value:function(){return Pj(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 Pj(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 Pj(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:"isAuthenticated",value:function(){return Pj(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}(),Xz=function(){function t(e){s(this,t),this._authenticationClient=e,this._dataLayer=this._authenticationClient.getDataLayer()}return h(t,[{key:"refreshAccessTokenAutomatically",value:function(){return Pj(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 Pj(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(Ej,JSON.stringify(r));case 9:case"end":return t.stop()}}),t,this)})))}},{key:"clearRefreshTokenTimeout",value:function(){return Pj(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(Ej);case 2:if(!t.sent){t.next=9;break}return t.t0=JSON,t.next=6,this._dataLayer.getTemporaryDataParameter(Ej);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}(),fz=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}(),Iz=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(_j,t)}},{key:"getSignOutURL",value:function(){var t;return null!==(t=sessionStorage.getItem(_j))&&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(sz),e=t?JSON.parse(t):null;return Boolean(e)}},{key:"isSignOutSuccessful",value:function(){return Pj(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(!oM.isSignOutSuccessful(window.location.href)){t.next=6;break}return e=window.location.href.split("?")[0],history.pushState({},document.title,e),t.next=5,oM.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(oM.didSignOutFail(window.location.href)){var t=new URL(window.location.href),e=t.searchParams.get(hz),n=t.searchParams.get(mz),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(uz))&&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(hz)&&e.searchParams.get(bz)!==qj}},{key:"canSendPromptNoneRequest",value:function(){var t=sessionStorage.getItem(dz);return!(t?JSON.parse(t):null)}},{key:"setPromptNoneRequestSent",value:function(t){sessionStorage.setItem(dz,JSON.stringify(t))}},{key:"waitTillPageRedirect",value:function(t){return Pj(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}(),Gz=(tz=function(t,e,n,r,i,c,a){zM=t,PM=e,BM=n,EM=c,DM=i,$M=a,(QM=r)>-1&&ez(),DM>-1&&(i=setInterval((function(){iz()}),1e3*DM))},ez=function(){return Pj(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 Pj(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,BM();case 2:r=e.sent,Boolean(zM)&&Boolean(r)&&(i="".concat(zM," ").concat(r),c=document.getElementById(az),o=null===(t=null==c?void 0:c.contentDocument)||void 0===t?void 0:t.getElementById(n),null==(l=o.contentWindow)||l.postMessage(i,PM));case 4:case"end":return e.stop()}}),e)})))},PM&&zM&&EM){t.next=3;break}return t.abrupt("return");case 3:return n="opIFrame",i=document.getElementById(az),(null===(e=null==i?void 0:i.contentDocument)||void 0===e?void 0:e.getElementById(n)).src=PM+"?client_id="+zM+"&redirect_uri="+EM,t.next=9,r();case 9:AM=setInterval(r,1e3*QM),rz();case 11:case"end":return t.stop()}}),t)})))},nz=function(){clearInterval(AM),clearInterval(void 0)},rz=function(){null===window||void 0===window||window.addEventListener("message",(function(t){var e;return Pj(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=PM)&&!((null==r?void 0:r.indexOf(t.origin))<0)&&(null===(e=null==t?void 0:t.data)||void 0===e?void 0:e.type)!==MM){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,OM();case 9:window.location.href=n.sent,n.next=13;break;case 12:"changed"===t.data&&iz();case 13:case"end":return n.stop()}}),n)})))}),!1)},iz=function(){return Pj(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(az),i=null===(n=null==r?void 0:r.contentDocument)||void 0===n?void 0:n.getElementById(oz),!Iz.canSendPromptNoneRequest()){e.next=10;break}return Iz.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)===MM&&(qM(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))},_M!==t.Storage.BrowserMemory&&_M!==t.Storage.WebWorker||null===window||void 0===window||window.addEventListener("message",c),e.next=8,$M({prompt:"none",responseMode:"query",state:lz});case 8:o=e.sent,i.src=o;case 10:case"end":return e.stop()}}),e)})))},cz=function(e){return Pj(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(bz),o=new URL(window.location.href).searchParams.get(Aj),l=window.parent.parent,null===c||!c.includes(lz)&&!c.includes(uz)){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(uz)){n.next=15;break}return s={data:{code:u,sessionState:null!=o?o:"",state:c},type:wM},sessionStorage.setItem(sz,"false"),l.postMessage(s,l.origin),Iz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=14,Iz.waitTillPageRedirect();case 14:return n.abrupt("return",!0);case 15:if(d=new URL(window.location.href).searchParams.get("session_state"),_M!==t.Storage.LocalStorage&&_M!==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:MM},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 Iz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=29,Iz.waitTillPageRedirect();case 29:return n.abrupt("return",!0);case 32:if(!c.includes(uz)){n.next=40;break}return m={type:FM},window.parent.parent.postMessage(m,l.origin),Iz.setPromptNoneRequestSent(!1),window.location.href="about:blank",n.next=39,Iz.waitTillPageRedirect();case 39:return n.abrupt("return",!0);case 40:return Iz.setPromptNoneRequestSent(!1),n.next=43,OM();case 43:return l.location.href=n.sent,window.location.href="about:blank",n.next=47,Iz.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 Pj(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",az),c.style.display="none",o=!1,c.onload=function(){var t,e,n,r,i=null==(c=document.getElementById(az))?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",oz),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),OM=t,_M=e,qM=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:tz,receivePromptNoneResponse:cz,reset:nz});case 16:case"end":return r.stop()}}),r)})))}),Vz={exports:{}},Wz=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)}},vz=Wz,gz=Object.prototype.toString;function Sz(t){return Array.isArray(t)}function Yz(t){return void 0===t}function Rz(t){return"[object ArrayBuffer]"===gz.call(t)}function Kz(t){return null!==t&&"object"===o(t)}function Lz(t){if("[object Object]"!==gz.call(t))return!1;var e=Object.getPrototypeOf(t);return null===e||e===Object.prototype}function Nz(t){return"[object Function]"===gz.call(t)}function Jz(t,e){if(null!=t)if("object"!==o(t)&&(t=[t]),Sz(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 xz={isArray:Sz,isArrayBuffer:Rz,isBuffer:function(t){return null!==t&&!Yz(t)&&null!==t.constructor&&!Yz(t.constructor)&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)},isFormData:function(t){return"[object FormData]"===gz.call(t)},isArrayBufferView:function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):t&&t.buffer&&Rz(t.buffer)},isString:function(t){return"string"==typeof t},isNumber:function(t){return"number"==typeof t},isObject:Kz,isPlainObject:Lz,isUndefined:Yz,isDate:function(t){return"[object Date]"===gz.call(t)},isFile:function(t){return"[object File]"===gz.call(t)},isBlob:function(t){return"[object Blob]"===gz.call(t)},isFunction:Nz,isStream:function(t){return Kz(t)&&Nz(t.pipe)},isURLSearchParams:function(t){return"[object URLSearchParams]"===gz.call(t)},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:Jz,merge:function t(){var e={};function n(n,r){Lz(e[r])&&Lz(n)?e[r]=t(e[r],n):Lz(n)?e[r]=t({},n):Sz(n)?e[r]=n.slice():e[r]=n}for(var r=0,i=arguments.length;r<i;r++)Jz(arguments[r],n);return e},extend:function(t,e,n){return Jz(e,(function(e,r){t[r]=n&&"function"==typeof e?vz(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}},Hz=xz;function kz(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var Cz=function(t,e,n){if(!e)return t;var r;if(n)r=n(e);else if(Hz.isURLSearchParams(e))r=e.toString();else{var i=[];Hz.forEach(e,(function(t,e){null!=t&&(Hz.isArray(t)?e+="[]":t=[t],Hz.forEach(t,(function(t){Hz.isDate(t)?t=t.toISOString():Hz.isObject(t)&&(t=JSON.stringify(t)),i.push(kz(e)+"="+kz(t))})))})),r=i.join("&")}if(r){var c=t.indexOf("#");-1!==c&&(t=t.slice(0,c)),t+=(-1===t.indexOf("?")?"?":"&")+r}return t},Uz=xz;function Tz(){this.handlers=[]}Tz.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},Tz.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},Tz.prototype.forEach=function(t){Uz.forEach(this.handlers,(function(e){null!==e&&t(e)}))};var wz=Tz,Fz="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function jz(){throw new Error("setTimeout has not been defined")}function Mz(){throw new Error("clearTimeout has not been defined")}var zz=jz,Pz=Mz;function Bz(t){if(zz===setTimeout)return setTimeout(t,0);if((zz===jz||!zz)&&setTimeout)return zz=setTimeout,setTimeout(t,0);try{return zz(t,0)}catch(e){try{return zz.call(null,t,0)}catch(e){return zz.call(this,t,0)}}}"function"==typeof Fz.setTimeout&&(zz=setTimeout),"function"==typeof Fz.clearTimeout&&(Pz=clearTimeout);var Qz,Ez=[],Dz=!1,Oz=-1;function Az(){Dz&&Qz&&(Dz=!1,Qz.length?Ez=Qz.concat(Ez):Oz=-1,Ez.length&&_z())}function _z(){if(!Dz){var t=Bz(Az);Dz=!0;for(var e=Ez.length;e;){for(Qz=Ez,Ez=[];++Oz<e;)Qz&&Qz[Oz].run();Oz=-1,e=Ez.length}Qz=null,Dz=!1,function(t){if(Pz===clearTimeout)return clearTimeout(t);if((Pz===Mz||!Pz)&&clearTimeout)return Pz=clearTimeout,clearTimeout(t);try{Pz(t)}catch(e){try{return Pz.call(null,t)}catch(e){return Pz.call(this,t)}}}(t)}}function qz(t,e){this.fun=t,this.array=e}qz.prototype.run=function(){this.fun.apply(null,this.array)};function $z(){}var tP=$z,eP=$z,nP=$z,rP=$z,iP=$z,cP=$z,aP=$z;var oP=Fz.performance||{},lP=oP.now||oP.mozNow||oP.msNow||oP.oNow||oP.webkitNow||function(){return(new Date).getTime()};var uP=new Date;var sP={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];Ez.push(new qz(t,e)),1!==Ez.length||Dz||Bz(_z)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:tP,addListener:eP,once:nP,off:rP,removeListener:iP,removeAllListeners:cP,emit:aP,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*lP.call(oP),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-uP)/1e3}},dP=sP,hP=xz,mP=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},pP={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},bP=mP,ZP=function(t,e,n,r,i){var c=new Error(t);return bP(c,e,n,r,i)},yP=ZP,XP=xz,fP=XP.isStandardBrowserEnv()?{write:function(t,e,n,r,i,c){var a=[];a.push(t+"="+encodeURIComponent(e)),XP.isNumber(n)&&a.push("expires="+new Date(n).toGMTString()),XP.isString(r)&&a.push("path="+r),XP.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(){}},IP=function(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)},GP=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t},VP=xz,WP=["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"],vP=xz,gP=vP.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=vP.isString(e)?r(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0};function SP(t){this.message=t}SP.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},SP.prototype.__CANCEL__=!0;var YP=SP,RP=xz,KP=function(t,e,n){var r=n.config.validateStatus;n.status&&r&&!r(n.status)?e(yP("Request failed with status code "+n.status,n.config,null,n.request,n)):t(n)},LP=fP,NP=Cz,JP=function(t,e){return t&&!IP(e)?GP(t,e):e},xP=function(t){var e,n,r,i={};return t?(VP.forEach(t.split("\n"),(function(t){if(r=t.indexOf(":"),e=VP.trim(t.substr(0,r)).toLowerCase(),n=VP.trim(t.substr(r+1)),e){if(i[e]&&WP.indexOf(e)>=0)return;i[e]="set-cookie"===e?(i[e]?i[e]:[]).concat([n]):i[e]?i[e]+", "+n:n}})),i):i},HP=gP,kP=ZP,CP=pP,UP=YP,TP=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)}RP.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=JP(t.baseURL,t.url);function h(){if(l){var r="getAllResponseHeaders"in l?xP(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};KP((function(t){e(t),o()}),(function(t){n(t),o()}),i),l=null}}if(l.open(t.method.toUpperCase(),NP(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(kP("Request aborted",t,"ECONNABORTED",l)),l=null)},l.onerror=function(){n(kP("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||CP;t.timeoutErrorMessage&&(e=t.timeoutErrorMessage),n(kP(e,t,r.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",l)),l=null},RP.isStandardBrowserEnv()){var m=(t.withCredentials||HP(d))&&t.xsrfCookieName?LP.read(t.xsrfCookieName):void 0;m&&(c[t.xsrfHeaderName]=m)}"setRequestHeader"in l&&RP.forEach(c,(function(t,e){void 0===i&&"content-type"===e.toLowerCase()?delete c[e]:l.setRequestHeader(e,t)})),RP.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 UP("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)}))},wP=xz,FP=function(t,e){hP.forEach(t,(function(n,r){r!==e&&r.toUpperCase()===e.toUpperCase()&&(t[e]=n,delete t[r])}))},jP=mP,MP={"Content-Type":"application/x-www-form-urlencoded"};function zP(t,e){!wP.isUndefined(t)&&wP.isUndefined(t["Content-Type"])&&(t["Content-Type"]=e)}var PP,BP={transitional:pP,adapter:(("undefined"!=typeof XMLHttpRequest||void 0!==dP&&"[object process]"===Object.prototype.toString.call(dP))&&(PP=TP),PP),transformRequest:[function(t,e){return FP(e,"Accept"),FP(e,"Content-Type"),wP.isFormData(t)||wP.isArrayBuffer(t)||wP.isBuffer(t)||wP.isStream(t)||wP.isFile(t)||wP.isBlob(t)?t:wP.isArrayBufferView(t)?t.buffer:wP.isURLSearchParams(t)?(zP(e,"application/x-www-form-urlencoded;charset=utf-8"),t.toString()):wP.isObject(t)||e&&"application/json"===e["Content-Type"]?(zP(e,"application/json"),function(t,e,n){if(wP.isString(t))try{return(e||JSON.parse)(t),wP.trim(t)}catch(t){if("SyntaxError"!==t.name)throw t}return(n||JSON.stringify)(t)}(t)):t}],transformResponse:[function(t){var e=this.transitional||BP.transitional,n=e&&e.silentJSONParsing,r=e&&e.forcedJSONParsing,i=!n&&"json"===this.responseType;if(i||r&&wP.isString(t)&&t.length)try{return JSON.parse(t)}catch(t){if(i){if("SyntaxError"===t.name)throw jP(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, */*"}}};wP.forEach(["delete","get","head"],(function(t){BP.headers[t]={}})),wP.forEach(["post","put","patch"],(function(t){BP.headers[t]=wP.merge(MP)}));var QP=BP,EP=xz,DP=QP,OP=function(t){return!(!t||!t.__CANCEL__)},AP=xz,_P=function(t,e,n){var r=this||DP;return EP.forEach(n,(function(n){t=n.call(r,t,e)})),t},qP=OP,$P=QP,tB=YP;function eB(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new tB("canceled")}var nB=xz,rB=function(t,e){e=e||{};var n={};function r(t,e){return nB.isPlainObject(t)&&nB.isPlainObject(e)?nB.merge(t,e):nB.isPlainObject(e)?nB.merge({},e):nB.isArray(e)?e.slice():e}function i(n){return nB.isUndefined(e[n])?nB.isUndefined(t[n])?void 0:r(void 0,t[n]):r(t[n],e[n])}function c(t){if(!nB.isUndefined(e[t]))return r(void 0,e[t])}function a(n){return nB.isUndefined(e[n])?nB.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 nB.forEach(Object.keys(t).concat(Object.keys(e)),(function(t){var e=l[t]||i,r=e(t);nB.isUndefined(r)&&e!==o||(n[t]=r)})),n},iB="0.26.1",cB=iB,aB={};["object","boolean","number","function","string","symbol"].forEach((function(t,e){aB[t]=function(n){return o(n)===t||"a"+(e<1?"n ":" ")+t}}));var oB={};aB.transitional=function(t,e,n){function r(t,e){return"[Axios v"+cB+"] 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&&!oB[i]&&(oB[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 lB={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:aB},uB=xz,sB=Cz,dB=wz,hB=function(t){return eB(t),t.headers=t.headers||{},t.data=_P.call(t,t.data,t.headers,t.transformRequest),t.headers=AP.merge(t.headers.common||{},t.headers[t.method]||{},t.headers),AP.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||$P.adapter)(t).then((function(e){return eB(t),e.data=_P.call(t,e.data,e.headers,t.transformResponse),e}),(function(e){return qP(e)||(eB(t),e&&e.response&&(e.response.data=_P.call(t,e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))},mB=rB,pB=lB,bB=pB.validators;function ZB(t){this.defaults=t,this.interceptors={request:new dB,response:new dB}}ZB.prototype.request=function(t,e){"string"==typeof t?(e=e||{}).url=t:e=t||{},(e=mB(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&&pB.assertOptions(n,{silentJSONParsing:bB.transitional(bB.boolean),forcedJSONParsing:bB.transitional(bB.boolean),clarifyTimeoutError:bB.transitional(bB.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=[hB,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=hB(l)}catch(t){return Promise.reject(t)}for(;a.length;)c=c.then(a.shift(),a.shift());return c},ZB.prototype.getUri=function(t){return t=mB(this.defaults,t),sB(t.url,t.params,t.paramsSerializer).replace(/^\?/,"")},uB.forEach(["delete","get","head","options"],(function(t){ZB.prototype[t]=function(e,n){return this.request(mB(n||{},{method:t,url:e,data:(n||{}).data}))}})),uB.forEach(["post","put","patch"],(function(t){ZB.prototype[t]=function(e,n,r){return this.request(mB(r||{},{method:t,url:e,data:n}))}}));var yB=ZB,XB=YP;function fB(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 XB(t),e(n.reason))}))}fB.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},fB.prototype.subscribe=function(t){this.reason?t(this.reason):this._listeners?this._listeners.push(t):this._listeners=[t]},fB.prototype.unsubscribe=function(t){if(this._listeners){var e=this._listeners.indexOf(t);-1!==e&&this._listeners.splice(e,1)}},fB.source=function(){var t,e=new fB((function(e){t=e}));return{token:e,cancel:t}};var IB=fB,GB=xz,VB=xz,WB=Wz,vB=yB,gB=rB;var SB=function t(e){var n=new vB(e),r=WB(vB.prototype.request,n);return VB.extend(r,vB.prototype,n),VB.extend(r,n),r.create=function(n){return t(gB(e,n))},r}(QP);SB.Axios=vB,SB.Cancel=YP,SB.CancelToken=IB,SB.isCancel=OP,SB.VERSION=iB,SB.all=function(t){return Promise.all(t)},SB.spread=function(t){return function(e){return t.apply(null,e)}},SB.isAxiosError=function(t){return GB.isObject(t)&&!0===t.isAxiosError},Vz.exports=SB,Vz.exports.default=SB;var YB,RB=Vz.exports;var KB=YB=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 Pj(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),YB.isHandlerEnabled&&this.requestStartCallback&&"function"==typeof this.requestStartCallback&&this.requestStartCallback(t),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)})))}},{key:"errorHandler",value:function(t){throw YB.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 YB.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 Pj(this,void 0,void 0,a().mark((function n(){return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:YB.isHandlerEnabled=t,this.attachToken=e;case 2:case"end":return n.stop()}}),n,this)})))}},{key:"enableHandler",value:function(){YB.isHandlerEnabled=!0}},{key:"disableHandler",value:function(){YB.isHandlerEnabled=!1}},{key:"disableHandlerWithTimeout",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:YB.DEFAULT_HANDLER_DISABLE_TIMEOUT;YB.isHandlerEnabled=!1,setTimeout((function(){YB.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=RB.create({withCredentials:!0}),this.clientInstance||(this.clientInstance=new YB),this.axiosInstance.interceptors.request.use((function(e){return Pj(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=RB.all,this.axiosInstance.spread=RB.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}();KB.DEFAULT_HANDLER_DISABLE_TIMEOUT=1e3,KB=YB=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){}],KB);var LB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return Pj(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 Pj(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 Pj(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}(),NB=function(){function t(){s(this,t),this._data=new Map}return h(t,[{key:"setData",value:function(t,e){return Pj(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 Pj(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 Pj(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}(),JB=function(){function t(){s(this,t)}return h(t,[{key:"setData",value:function(t,e){return Pj(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 Pj(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 Pj(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}(),xB=[],HB=[],kB="undefined"!=typeof Uint8Array?Uint8Array:Array,CB=!1;function UB(){CB=!0;for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=0,n=t.length;e<n;++e)xB[e]=t[e],HB[t.charCodeAt(e)]=e;HB["-".charCodeAt(0)]=62,HB["_".charCodeAt(0)]=63}function TB(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(xB[(i=r)>>18&63]+xB[i>>12&63]+xB[i>>6&63]+xB[63&i]);return c.join("")}function wB(t){var e;CB||UB();for(var n=t.length,r=n%3,i="",c=[],a=16383,o=0,l=n-r;o<l;o+=a)c.push(TB(t,o,o+a>l?l:o+a));return 1===r?(e=t[n-1],i+=xB[e>>2],i+=xB[e<<4&63],i+="=="):2===r&&(e=(t[n-2]<<8)+t[n-1],i+=xB[e>>10],i+=xB[e>>4&63],i+=xB[e<<2&63],i+="="),c.push(i),c.join("")}function FB(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 jB(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 MB={}.toString,zB=Array.isArray||function(t){return"[object Array]"==MB.call(t)};EB.TYPED_ARRAY_SUPPORT=void 0===Fz.TYPED_ARRAY_SUPPORT||Fz.TYPED_ARRAY_SUPPORT;var PB=BB();function BB(){return EB.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function QB(t,e){if(BB()<e)throw new RangeError("Invalid typed array length");return EB.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e)).__proto__=EB.prototype:(null===t&&(t=new EB(e)),t.length=e),t}function EB(t,e,n){if(!(EB.TYPED_ARRAY_SUPPORT||this instanceof EB))return new EB(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 AB(this,t)}return DB(this,t,e,n)}function DB(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);EB.TYPED_ARRAY_SUPPORT?(t=e).__proto__=EB.prototype:t=_B(t,e);return t}(t,e,n,r):"string"==typeof e?function(t,e,n){"string"==typeof n&&""!==n||(n="utf8");if(!EB.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|tQ(e,n),i=(t=QB(t,r)).write(e,n);i!==r&&(t=t.slice(0,i));return t}(t,e,n):function(t,e){if($B(e)){var n=0|qB(e.length);return 0===(t=QB(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?QB(t,0):_B(t,e);if("Buffer"===e.type&&zB(e.data))return _B(t,e.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(t,e)}function OB(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 AB(t,e){if(OB(e),t=QB(t,e<0?0:0|qB(e)),!EB.TYPED_ARRAY_SUPPORT)for(var n=0;n<e;++n)t[n]=0;return t}function _B(t,e){var n=e.length<0?0:0|qB(e.length);t=QB(t,n);for(var r=0;r<n;r+=1)t[r]=255&e[r];return t}function qB(t){if(t>=BB())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+BB().toString(16)+" bytes");return 0|t}function $B(t){return!(null==t||!t._isBuffer)}function tQ(t,e){if($B(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 YQ(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return RQ(t).length;default:if(r)return YQ(t).length;e=(""+e).toLowerCase(),r=!0}}function eQ(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 ZQ(this,e,n);case"utf8":case"utf-8":return hQ(this,e,n);case"ascii":return pQ(this,e,n);case"latin1":case"binary":return bQ(this,e,n);case"base64":return dQ(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return yQ(this,e,n);default:if(r)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),r=!0}}function nQ(t,e,n){var r=t[e];t[e]=t[n],t[n]=r}function rQ(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=EB.from(e,r)),$B(e))return 0===e.length?-1:iQ(t,e,n,r,i);if("number"==typeof e)return e&=255,EB.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):iQ(t,[e],n,r,i);throw new TypeError("val must be string, number or Buffer")}function iQ(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 cQ(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 aQ(t,e,n,r){return KQ(YQ(e,t.length-n),t,n,r)}function oQ(t,e,n,r){return KQ(function(t){for(var e=[],n=0;n<t.length;++n)e.push(255&t.charCodeAt(n));return e}(e),t,n,r)}function lQ(t,e,n,r){return oQ(t,e,n,r)}function uQ(t,e,n,r){return KQ(RQ(e),t,n,r)}function sQ(t,e,n,r){return KQ(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 dQ(t,e,n){return 0===e&&n===t.length?wB(t):wB(t.slice(e,n))}function hQ(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<=mQ)return String.fromCharCode.apply(String,t);var n="",r=0;for(;r<e;)n+=String.fromCharCode.apply(String,t.slice(r,r+=mQ));return n}(r)}EB.poolSize=8192,EB._augment=function(t){return t.__proto__=EB.prototype,t},EB.from=function(t,e,n){return DB(null,t,e,n)},EB.TYPED_ARRAY_SUPPORT&&(EB.prototype.__proto__=Uint8Array.prototype,EB.__proto__=Uint8Array),EB.alloc=function(t,e,n){return function(t,e,n,r){return OB(e),e<=0?QB(t,e):void 0!==n?"string"==typeof r?QB(t,e).fill(n,r):QB(t,e).fill(n):QB(t,e)}(null,t,e,n)},EB.allocUnsafe=function(t){return AB(null,t)},EB.allocUnsafeSlow=function(t){return AB(null,t)},EB.isBuffer=LQ,EB.compare=function(t,e){if(!$B(t)||!$B(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},EB.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}},EB.concat=function(t,e){if(!zB(t))throw new TypeError('"list" argument must be an Array of Buffers');if(0===t.length)return EB.alloc(0);var n;if(void 0===e)for(e=0,n=0;n<t.length;++n)e+=t[n].length;var r=EB.allocUnsafe(e),i=0;for(n=0;n<t.length;++n){var c=t[n];if(!$B(c))throw new TypeError('"list" argument must be an Array of Buffers');c.copy(r,i),i+=c.length}return r},EB.byteLength=tQ,EB.prototype._isBuffer=!0,EB.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)nQ(this,e,e+1);return this},EB.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)nQ(this,e,e+3),nQ(this,e+1,e+2);return this},EB.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)nQ(this,e,e+7),nQ(this,e+1,e+6),nQ(this,e+2,e+5),nQ(this,e+3,e+4);return this},EB.prototype.toString=function(){var t=0|this.length;return 0===t?"":0===arguments.length?hQ(this,0,t):eQ.apply(this,arguments)},EB.prototype.equals=function(t){if(!$B(t))throw new TypeError("Argument must be a Buffer");return this===t||0===EB.compare(this,t)},EB.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+">"},EB.prototype.compare=function(t,e,n,r,i){if(!$B(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},EB.prototype.includes=function(t,e,n){return-1!==this.indexOf(t,e,n)},EB.prototype.indexOf=function(t,e,n){return rQ(this,t,e,n,!0)},EB.prototype.lastIndexOf=function(t,e,n){return rQ(this,t,e,n,!1)},EB.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 cQ(this,t,e,n);case"utf8":case"utf-8":return aQ(this,t,e,n);case"ascii":return oQ(this,t,e,n);case"latin1":case"binary":return lQ(this,t,e,n);case"base64":return uQ(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return sQ(this,t,e,n);default:if(c)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),c=!0}},EB.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var mQ=4096;function pQ(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 bQ(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 ZQ(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+=SQ(t[c]);return i}function yQ(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 XQ(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 fQ(t,e,n,r,i,c){if(!$B(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 IQ(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 GQ(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 VQ(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 WQ(t,e,n,r,i){return i||VQ(t,0,n,4),jB(t,e,n,r,23,4),n+4}function vQ(t,e,n,r,i){return i||VQ(t,0,n,8),jB(t,e,n,r,52,8),n+8}EB.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),EB.TYPED_ARRAY_SUPPORT)(n=this.subarray(t,e)).__proto__=EB.prototype;else{var i=e-t;n=new EB(i,void 0);for(var c=0;c<i;++c)n[c]=this[c+t]}return n},EB.prototype.readUIntLE=function(t,e,n){t|=0,e|=0,n||XQ(t,e,this.length);for(var r=this[t],i=1,c=0;++c<e&&(i*=256);)r+=this[t+c]*i;return r},EB.prototype.readUIntBE=function(t,e,n){t|=0,e|=0,n||XQ(t,e,this.length);for(var r=this[t+--e],i=1;e>0&&(i*=256);)r+=this[t+--e]*i;return r},EB.prototype.readUInt8=function(t,e){return e||XQ(t,1,this.length),this[t]},EB.prototype.readUInt16LE=function(t,e){return e||XQ(t,2,this.length),this[t]|this[t+1]<<8},EB.prototype.readUInt16BE=function(t,e){return e||XQ(t,2,this.length),this[t]<<8|this[t+1]},EB.prototype.readUInt32LE=function(t,e){return e||XQ(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},EB.prototype.readUInt32BE=function(t,e){return e||XQ(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},EB.prototype.readIntLE=function(t,e,n){t|=0,e|=0,n||XQ(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},EB.prototype.readIntBE=function(t,e,n){t|=0,e|=0,n||XQ(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},EB.prototype.readInt8=function(t,e){return e||XQ(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},EB.prototype.readInt16LE=function(t,e){e||XQ(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},EB.prototype.readInt16BE=function(t,e){e||XQ(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},EB.prototype.readInt32LE=function(t,e){return e||XQ(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},EB.prototype.readInt32BE=function(t,e){return e||XQ(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},EB.prototype.readFloatLE=function(t,e){return e||XQ(t,4,this.length),FB(this,t,!0,23,4)},EB.prototype.readFloatBE=function(t,e){return e||XQ(t,4,this.length),FB(this,t,!1,23,4)},EB.prototype.readDoubleLE=function(t,e){return e||XQ(t,8,this.length),FB(this,t,!0,52,8)},EB.prototype.readDoubleBE=function(t,e){return e||XQ(t,8,this.length),FB(this,t,!1,52,8)},EB.prototype.writeUIntLE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||fQ(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},EB.prototype.writeUIntBE=function(t,e,n,r){(t=+t,e|=0,n|=0,r)||fQ(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},EB.prototype.writeUInt8=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,1,255,0),EB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},EB.prototype.writeUInt16LE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,2,65535,0),EB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):IQ(this,t,e,!0),e+2},EB.prototype.writeUInt16BE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,2,65535,0),EB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):IQ(this,t,e,!1),e+2},EB.prototype.writeUInt32LE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,4,4294967295,0),EB.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):GQ(this,t,e,!0),e+4},EB.prototype.writeUInt32BE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,4,4294967295,0),EB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):GQ(this,t,e,!1),e+4},EB.prototype.writeIntLE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);fQ(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},EB.prototype.writeIntBE=function(t,e,n,r){if(t=+t,e|=0,!r){var i=Math.pow(2,8*n-1);fQ(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},EB.prototype.writeInt8=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,1,127,-128),EB.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},EB.prototype.writeInt16LE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,2,32767,-32768),EB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):IQ(this,t,e,!0),e+2},EB.prototype.writeInt16BE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,2,32767,-32768),EB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):IQ(this,t,e,!1),e+2},EB.prototype.writeInt32LE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,4,2147483647,-2147483648),EB.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):GQ(this,t,e,!0),e+4},EB.prototype.writeInt32BE=function(t,e,n){return t=+t,e|=0,n||fQ(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),EB.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):GQ(this,t,e,!1),e+4},EB.prototype.writeFloatLE=function(t,e,n){return WQ(this,t,e,!0,n)},EB.prototype.writeFloatBE=function(t,e,n){return WQ(this,t,e,!1,n)},EB.prototype.writeDoubleLE=function(t,e,n){return vQ(this,t,e,!0,n)},EB.prototype.writeDoubleBE=function(t,e,n){return vQ(this,t,e,!1,n)},EB.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||!EB.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},EB.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&&!EB.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=$B(t)?t:YQ(new EB(t,r).toString()),o=a.length;for(c=0;c<n-e;++c)this[c+e]=a[c%o]}return this};var gQ=/[^+\/0-9A-Za-z-_]/g;function SQ(t){return t<16?"0"+t.toString(16):t.toString(16)}function YQ(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 RQ(t){return function(t){var e,n,r,i,c,a;CB||UB();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 kB(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=HB[t.charCodeAt(e)]<<18|HB[t.charCodeAt(e+1)]<<12|HB[t.charCodeAt(e+2)]<<6|HB[t.charCodeAt(e+3)],a[l++]=i>>16&255,a[l++]=i>>8&255,a[l++]=255&i;return 2===c?(i=HB[t.charCodeAt(e)]<<2|HB[t.charCodeAt(e+1)]>>4,a[l++]=255&i):1===c&&(i=HB[t.charCodeAt(e)]<<10|HB[t.charCodeAt(e+1)]<<4|HB[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(gQ,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function KQ(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 LQ(t){return null!=t&&(!!t._isBuffer||NQ(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&NQ(t.slice(0,0))}(t))}function NQ(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}var JQ=Object.freeze({__proto__:null,Buffer:EB,INSPECT_MAX_BYTES:50,SlowBuffer:function(t){return+t!=t&&(t=0),EB.alloc(+t)},isBuffer:LQ,kMaxLength:PB}),xQ={exports:{}},HQ={},kQ={};Object.defineProperty(kQ,"__esModule",{value:!0}),kQ.default=function(t){var e=t.length,n=e%4;if(!n)return t;var r=e,i=4-n,c=e+i,a=EB.alloc(c);for(a.write(t);i--;)a.write("=",r++);return a.toString()},Object.defineProperty(HQ,"__esModule",{value:!0});var CQ=kQ;function UQ(t,e){return void 0===e&&(e="utf8"),EB.isBuffer(t)?wQ(t.toString("base64")):wQ(EB.from(t,e).toString("base64"))}function TQ(t){return t=t.toString(),CQ.default(t).replace(/\-/g,"+").replace(/_/g,"/")}function wQ(t){return t.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var FQ,jQ=UQ;jQ.encode=UQ,jQ.decode=function(t,e){return void 0===e&&(e="utf8"),EB.from(TQ(t),"base64").toString(e)},jQ.toBase64=TQ,jQ.fromBase64=wQ,jQ.toBuffer=function(t){return EB.from(TQ(t),"base64")},HQ.default=jQ,(FQ=xQ).exports=HQ.default,FQ.exports.default=FQ.exports;var MQ=xQ.exports,zQ={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}()}(zQ);var PQ=n(zQ.exports),BQ=crypto,QQ=function(t){return t instanceof CryptoKey},EQ=new TextEncoder,DQ=new TextDecoder;function OQ(){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 AQ=function(t){var e=t;e instanceof Uint8Array&&(e=DQ.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.")}},_Q=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)),qQ=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}(_Q),$Q=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}(_Q),tE=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}(_Q),eE=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}(_Q),nE=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}(_Q),rE=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}(_Q),iE=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}(_Q),cE=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}(_Q),aE=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}(_Q),oE=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}(_Q);function lE(){return"function"==typeof WebSocketPair}function uE(){try{return void 0!==dP.versions.node}catch(t){return!1}}function sE(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 dE(t,e){return t.name===e}function hE(t){return parseInt(t.name.slice(4),10)}function mE(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function pE(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 bE=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},ZE=function(t){return QQ(t)},yE=["CryptoKey"],XE=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 fE(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 IE=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 GE(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 eE("".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 eE('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 eE('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 eE('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}break;case(lE()||uE())&&"OKP":if("EdDSA"!==t.alg)throw new eE('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 uE()&&"Ed448":e={name:"NODE-ED448",namedCurve:"NODE-ED448"},n=t.d?["sign"]:["verify"];break;default:throw new eE('Invalid or unsupported JWK "crv" (Subtype of Key Pair) Parameter value')}break;default:throw new eE('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}var VE=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=GE(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=BQ.subtle).importKey.apply(d,["raw",AQ(e.k)].concat(s)));case 4:return delete(h=c({},e)).alg,t.abrupt("return",(n=BQ.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 WE(t,e,n){return vE.apply(this,arguments)}function vE(){return(vE=u(a().mark((function t(e,n,r){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(fE(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",VE(c(c({},e),{},{alg:n,ext:!1})));case 13:return t.abrupt("return",AQ(e.k));case 14:if(void 0===e.oth){t.next=16;break}throw new eE('RSA JWK "oth" (Other Primes Info) Parameter value is not supported');case 16:return t.abrupt("return",VE(c(c({},e),{},{alg:n})));case 17:throw new eE('Unsupported "kty" (Key Type) Parameter value');case 18:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var gE=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(!ZE(t))throw new TypeError(bE.apply(void 0,[t].concat(v(yE),["Uint8Array"])));if("secret"!==t.type)throw new TypeError("".concat(yE.join(" or "),' instances for symmetric algorithms must be of type "secret"'))}}(e):function(t,e){if(!ZE(t))throw new TypeError(bE.apply(void 0,[t].concat(v(yE))));if("secret"===t.type)throw new TypeError("".concat(yE.join(" or "),' instances for asymmetric algorithms must not be of type "secret"'));if("sign"===e&&"public"===t.type)throw new TypeError("".concat(yE.join(" or "),' instances for asymmetric algorithm signing must be of type "private"'));if("decrypt"===e&&"public"===t.type)throw new TypeError("".concat(yE.join(" or "),' instances for asymmetric algorithm decryption must be of type "private"'));if(t.algorithm&&"verify"===e&&"private"===t.type)throw new TypeError("".concat(yE.join(" or "),' instances for asymmetric algorithm verifying must be of type "public"'));if(t.algorithm&&"encrypt"===e&&"private"===t.type)throw new TypeError("".concat(yE.join(" or "),' instances for asymmetric algorithm encryption must be of type "public"'))}(e,n)};function SE(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 eE('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 YE=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 RE(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(lE()||uE())&&"EdDSA":var r=e.namedCurve;return{name:r,namedCurve:r};default:throw new eE("alg ".concat(t," is not supported either by JOSE or your javascript runtime"))}}function KE(t,e,n){if(QQ(e))return function(t,e){switch(e){case"HS256":case"HS384":case"HS512":if(!dE(t.algorithm,"HMAC"))throw sE("HMAC");var n=parseInt(e.slice(2),10);if(hE(t.algorithm.hash)!==n)throw sE("SHA-".concat(n),"algorithm.hash");break;case"RS256":case"RS384":case"RS512":if(!dE(t.algorithm,"RSASSA-PKCS1-v1_5"))throw sE("RSASSA-PKCS1-v1_5");var r=parseInt(e.slice(2),10);if(hE(t.algorithm.hash)!==r)throw sE("SHA-".concat(r),"algorithm.hash");break;case"PS256":case"PS384":case"PS512":if(!dE(t.algorithm,"RSA-PSS"))throw sE("RSA-PSS");var i=parseInt(e.slice(2),10);if(hE(t.algorithm.hash)!==i)throw sE("SHA-".concat(i),"algorithm.hash");break;case uE()&&"EdDSA":if("NODE-ED25519"!==t.algorithm.name&&"NODE-ED448"!==t.algorithm.name)throw sE("NODE-ED25519 or NODE-ED448");break;case lE()&&"EdDSA":if(!dE(t.algorithm,"NODE-ED25519"))throw sE("NODE-ED25519");break;case"ES256":case"ES384":case"ES512":if(!dE(t.algorithm,"ECDSA"))throw sE("ECDSA");var c=mE(e);if(t.algorithm.namedCurve!==c)throw sE(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];pE(t,o)}(e,t,n),e;if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(bE.apply(void 0,[e].concat(v(yE))));return BQ.subtle.importKey("raw",e,{hash:"SHA-".concat(t.slice(-3)),name:"HMAC"},!1,[n])}throw new TypeError(bE.apply(void 0,[e].concat(v(yE),["Uint8Array"])))}var LE=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,KE(e,n,"verify");case 2:return c=t.sent,IE(e,c),o=RE(e,c.algorithm),t.prev=5,t.next=8,BQ.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 NE(t,e,n){return JE.apply(this,arguments)}function JE(){return JE=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(fE(e)){t.next=2;break}throw new nE("Flattened JWS must be an object");case 2:if(void 0!==e.protected||void 0!==e.header){t.next=4;break}throw new nE('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 nE("JWS Protected Header incorrect type");case 6:if(void 0!==e.payload){t.next=8;break}throw new nE("JWS Payload missing");case 8:if("string"==typeof e.signature){t.next=10;break}throw new nE("JWS Signature missing or incorrect type");case 10:if(void 0===e.header||fE(e.header)){t.next=12;break}throw new nE("JWS Unprotected Header incorrect type");case 12:if(o={},!e.protected){t.next=22;break}l=AQ(e.protected),t.prev=15,o=JSON.parse(DQ.decode(l)),t.next=22;break;case 19:throw t.prev=19,t.t0=t.catch(15),new nE("JWS Protected Header is invalid");case 22:if(XE(o,e.header)){t.next=24;break}throw new nE("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");case 24:if(u=c(c({},o),e.header),s=SE(nE,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 nE('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 nE('JWS "alg" (Algorithm) Header Parameter missing or invalid');case 34:if(!(m=r&&YE("algorithms",r.algorithms))||m.has(h)){t.next=37;break}throw new tE('"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 nE("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 nE("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 gE(h,n,"verify"),b=OQ(EQ.encode(null!==(i=e.protected)&&void 0!==i?i:""),EQ.encode("."),"string"==typeof e.payload?EQ.encode(e.payload):e.payload),Z=AQ(e.signature),t.next=55,LE(h,n,Z,b);case 55:if(t.sent){t.next=58;break}throw new oE;case 58:if(y=d?AQ(e.payload):"string"==typeof e.payload?EQ.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]])}))),JE.apply(this,arguments)}function xE(t,e,n){return HE.apply(this,arguments)}function HE(){return HE=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=DQ.decode(e)),"string"==typeof e){t.next=3;break}throw new nE("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 nE("Invalid Compact JWS");case 6:return t.next=8,NE({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)}))),HE.apply(this,arguments)}var kE=function(t){return Math.floor(t.getTime()/1e3)},CE=86400,UE=/^(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)$/i,TE=function(t){var e=UE.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*CE);case"week":case"weeks":case"w":return Math.round(604800*n);default:return Math.round(31557600*n)}},wE=function(t){return t.toLowerCase().replace(/^application\//,"")},FE=function(t,e){return"string"==typeof t?e.includes(t):!!Array.isArray(t)&&e.some(Set.prototype.has.bind(new Set(t)))},jE=function(t,e){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=r.typ;if(i&&("string"!=typeof t.typ||wE(t.typ)!==wE(i)))throw new qQ('unexpected "typ" JWT header value',"typ","check_failed");try{n=JSON.parse(DQ.decode(e))}catch(t){}if(!fE(n))throw new rE("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 qQ('unexpected "iss" claim value',"iss","check_failed");var a=r.subject;if(a&&n.sub!==a)throw new qQ('unexpected "sub" claim value',"sub","check_failed");var l,u=r.audience;if(u&&!FE(n.aud,"string"==typeof u?[u]:u))throw new qQ('unexpected "aud" claim value',"aud","check_failed");switch(o(r.clockTolerance)){case"string":l=TE(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=kE(s||new Date);if((void 0!==n.iat||r.maxTokenAge)&&"number"!=typeof n.iat)throw new qQ('"iat" claim must be a number',"iat","invalid");if(void 0!==n.nbf){if("number"!=typeof n.nbf)throw new qQ('"nbf" claim must be a number',"nbf","invalid");if(n.nbf>d+l)throw new qQ('"nbf" claim timestamp check failed',"nbf","check_failed")}if(void 0!==n.exp){if("number"!=typeof n.exp)throw new qQ('"exp" claim must be a number',"exp","invalid");if(n.exp<=d-l)throw new $Q('"exp" claim timestamp check failed',"exp","check_failed")}if(r.maxTokenAge){var h=d-n.iat,m="number"==typeof r.maxTokenAge?r.maxTokenAge:TE(r.maxTokenAge);if(h-l>m)throw new $Q('"iat" claim timestamp check failed (too far in the past)',"iat","check_failed");if(h<0-l)throw new qQ('"iat" claim timestamp check failed (it should be in the past)',"iat","check_failed")}return n};function ME(){return ME=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,xE(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 rE("JWTs MUST NOT use unencoded payload");case 5:if(l=jE(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)}))),ME.apply(this,arguments)}function zE(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 eE('Unsupported "alg" value for a JSON Web Key Set')}}function PE(t){return fE(t)}var BE=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(PE)}(e))throw new iE("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=zE(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 cE;case 8:if(1===d){t.next=10;break}throw new aE;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,WE(c(c({},s),{},{ext:!0}),i);case 14:if(!((m=t.sent)instanceof Uint8Array||"public"!==m.type)){t.next=17;break}throw new iE("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 QE={exports:{}},EE={exports:{}},DE=r(JQ);!function(t,e){var n=DE,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)}}(EE,EE.exports);var OE=65536,AE=4294967295;var _E=EE.exports.Buffer,qE=e.crypto||e.msCrypto;qE&&qE.getRandomValues?QE.exports=function(t,e){if(t>AE)throw new RangeError("requested too many random bytes");var n=_E.allocUnsafe(t);if(t>0)if(t>OE)for(var r=0;r<t;r+=OE)qE.getRandomValues(n.slice(r,r+OE));else qE.getRandomValues(n);if("function"==typeof e)return dP.nextTick((function(){e(null,n)}));return n}:QE.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")};var $E=QE.exports,tD=function(){function t(){s(this,t)}return h(t,[{key:"base64URLEncode",value:function(t){return MQ.encode(t).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}},{key:"base64URLDecode",value:function(t){return MQ.decode(t).toString()}},{key:"hashSha256",value:function(t){return EB.from(PQ((new TextEncoder).encode(t)))}},{key:"generateRandomBytes",value:function(t){return $E(t)}},{key:"verifyJwt",value:function(t,e,n,r,i,c,a){return function(t,e,n){return ME.apply(this,arguments)}(t,(o={keys:[e]},BE.prototype.getKey.bind(new BE(o))),{algorithms:n,audience:r,clockTolerance:a,issuer:i,subject:c}).then((function(){return Promise.resolve(!0)}));var o}}]),t}(),eD=function(e){switch(e){case t.Storage.LocalStorage:return new LB;case t.Storage.SessionStorage:return new JB;case t.Storage.BrowserMemory:return new NB;default:return new JB}},nD=function(e,n){return Pj(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,N,J,x,H,k,C,U,T,w,F,j,M,z,P;return a().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return c=eD(e.storage),o=new tD,l=new oM(c,o),r.next=5,l.initialize(e);case 5:return u=new Xz(l),s=l.getDataLayer(),r.next=9,Gz((function(){return Pj(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(Aj,null!=t?t:"")}));case 9:if(d=r.sent,h=n(l,u),m=!1,p=KB.getInstance(),b=!0,r.t0=null==p?void 0:p.init,!r.t0){r.next=18;break}return r.next=18,p.init(!0,h.attachToken);case 18:return X=function(t){h.setHttpRequestStartCallback(p,t)},f=function(t){h.setHttpRequestSuccessCallback(p,t)},I=function(t){h.setHttpRequestFinishCallback(p,t),y=t},G=function(t){Z=t},V=function(t){return Pj(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)})))},W=function(t){return Pj(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)})))},v=function(){return p},g=function(){return h.enableHttpHandler(p),b=!0,!0},S=function(){return h.disableHttpHandler(p),b=!1,!0},Y=function(){return Pj(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 Pj(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 Pj(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)})))},R=function(){return Pj(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 Pj(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(Aj,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)})))},K=function(n,r,i,c){return Pj(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(R,Y);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(Oj))&&void 0!==u?u:"",b=null!==(s=new URL(window.location.href).searchParams.get(Aj))&&void 0!==s?s:"",Z=null!==(d=new URL(window.location.href).searchParams.get($j))&&void 0!==d?d:"",Iz.removeAuthorizationCode()),!p||!Z){o.next=10;break}return o.abrupt("return",k(p,b,Z));case 10:return o.abrupt("return",l.getAuthorizationURL(n).then((function(n){return Pj(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=eM.extractPKCEKeyFromStateParam(Z),r.t0=Iz,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,Iz.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)})))},L=function(){return Pj(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=Iz.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,Iz.waitTillPageRedirect();case 21:return t.abrupt("return",!0);case 22:case"end":return t.stop()}}),t)})))},N=function(t){t.preventSignOutURLUpdate&&(m=!0)},J=function(t){return Pj(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)})))},x=function(){return Pj(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]])})))},H=function(){return l.revokeAccessToken().then((function(){return d.reset(),u.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},k=function(t,e,n){return Pj(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,Y,void 0,n);case 2:return r.abrupt("return",r.sent);case 3:case"end":return r.stop()}}),r)})))},C=function(){return Pj(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:uz});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($j),e.t0=Iz,e.t1=eM.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)})))},U=function(){return Pj(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(C,k,d);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},T=function(){return Pj(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)})))},w=function(){return Pj(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)})))},F=function(){return Pj(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)})))},j=function(){return Pj(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)})))},M=function(){return Pj(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)})))},z=function(){return Pj(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)})))},P=function(t){return Pj(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(),Y());case 8:case"end":return e.stop()}}),e)})))},r.abrupt("return",{disableHttpHandler:S,enableHttpHandler:g,getAccessToken:M,getBasicUserInfo:T,getDecodedIDToken:w,getHttpClient:v,getIDToken:F,getOIDCServiceEndpoints:j,httpRequest:V,httpRequestAll:W,isAuthenticated:z,refreshAccessToken:x,requestCustomGrant:J,revokeAccessToken:H,setHttpRequestErrorCallback:G,setHttpRequestFinishCallback:I,setHttpRequestStartCallback:X,setHttpRequestSuccessCallback:f,signIn:K,signOut:L,trySignInSilently:U,updateConfig:P});case 46:case"end":return r.stop()}}),r)})))},rD=function(e){switch(e){case t.Storage.LocalStorage:return new LB;case t.Storage.SessionStorage:return new JB;case t.Storage.BrowserMemory:return new NB;default:return new JB}},iD=function(e,n,r){return Pj(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,N,J,x,H,k,C,U,T,w,F,j,M,z,P,B,Q,E,D;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=rD(e.storage),h=new tD,m=new oM(d,h),i.next=8,m.initialize(e);case 8:return p=new Xz(m),i.next=11,Gz((function(){return Pj(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:yM},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",Iz.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 tM("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:IM}).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:XM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Pj(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:fM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Pj(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:RM}).then((function(){return u=!0,Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},W=function(){return X({type:KM}).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 vM:(null==o?void 0:o.requestFinishCallback)&&(null==o||o.requestFinishCallback());break;case VM:(null==o?void 0:o.requestStartCallback)&&(null==o||o.requestStartCallback());break;case WM:(null==o?void 0:o.requestSuccessCallback)&&(null==o||o.requestSuccessCallback(e.data?JSON.parse(e.data):null))}},X({data:e,type:ZM}).then((function(){return Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},g=function(t){return X({data:t,type:kM})},S=function(){return X({type:CM})},Y=function(){return Pj(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 Pj(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 Pj(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 Pj(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:uz},type:LM},t.next=6,X(r);case 6:return i=t.sent,c=eM.extractPKCEKeyFromStateParam(null!==(e=new URL(i.authorizationURL).searchParams.get($j))&&void 0!==e?e:""),i.pkce&&n.enablePKCE&&Iz.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 Pj(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,N,b);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})))},L=function(t){return Pj(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:LM},e.abrupt("return",X(r).then((function(t){return Pj(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=eM.extractPKCEKeyFromStateParam(null!==(r=new URL(t.authorizationURL).searchParams.get($j))&&void 0!==r?r:""),Iz.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)})))},N=function(t,e,n){return Pj(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=eM.extractPKCEKeyFromStateParam(n),o={data:{code:t,pkce:i.enablePKCE?Iz.getPKCE(c):void 0,sessionState:e,state:n},type:NM},i.enablePKCE&&Iz.removePKCE(c),r.abrupt("return",X(o).then((function(t){return X({type:xM}).then((function(e){return Iz.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)})))},J=function(){return Pj(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 Pj(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 Pj(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,M();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 Pj(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(J,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(Oj))&&void 0!==l?l:"",m=null!==(u=new URL(window.location.href).searchParams.get(Aj))&&void 0!==u?u:"",p=null!==(s=new URL(window.location.href).searchParams.get($j))&&void 0!==s?s:"",Iz.removeAuthorizationCode()),!h||!p){o.next=10;break}return o.abrupt("return",N(h,m,p));case 10:return o.abrupt("return",L(n).then((function(t){return Pj(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,Iz.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 M().then((function(t){return Pj(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:yM},e.abrupt("return",X(n).then((function(t){return Pj(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,Iz.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=Iz.getSignOutURL(),e.next=8,Iz.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:GM}).then((function(t){return b.reset(),Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},U=function(){return X({type:gM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},T=function(){return X({type:jM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},w=function(){return X({type:SM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},F=function(){return X({type:YM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},j=function(){return X({type:TM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},M=function(){return X({type:JM}).then((function(t){return Promise.resolve(t)})).catch((function(t){return Promise.reject(t)}))},z=function(){return X({type:HM})},P=function(t){t&&"function"==typeof t&&(o.requestSuccessCallback=t)},B=function(t){t&&"function"==typeof t&&(o.requestErrorCallback=t)},Q=function(t){t&&"function"==typeof t&&(o.requestStartCallback=t)},E=function(t){t&&"function"==typeof t&&(o.requestFinishCallback=t)},D=function(t){return Pj(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:UM},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,getDecodedIDToken:F,getIDToken:j,getOIDCServiceEndpoints:U,httpRequest:I,httpRequestAll:G,initialize:v,isAuthenticated:M,refreshAccessToken:z,requestCustomGrant:f,revokeAccessToken:C,setHttpRequestErrorCallback:B,setHttpRequestFinishCallback:E,setHttpRequestStartCallback:Q,setHttpRequestSuccessCallback:P,signIn:H,signOut:k,trySignInSilently:K,updateConfig:D});case 46:case"end":return i.stop()}}),i)})))},cD={checkSessionInterval:3,clientHost:origin,enableOIDCSessionManagement:!1,sessionRefreshInterval:300,storage:t.Storage.SessionStorage},aD="primaryInstance",oD=function(){function e(t){s(this,e),this._authHelper=yz,this._worker=bM,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||yz}},{key:"instantiateWorker",value:function(t){this._worker=t||bM}},{key:"_isInitialized",value:function(){return Pj(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 Pj(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 Pj(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({},cD),c.next=11,nD(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,iD(Object.assign(Object.assign({},cD),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 Pj(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 Pj(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(Iz.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 Pj(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(!Iz.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 Pj(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 Pj(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 Pj(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 Pj(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 tM("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 Pj(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 Pj(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 tM("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 tM("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 Pj(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:"getIDToken",value:function(){var t;return Pj(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 Pj(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 tM("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:"refreshAccessToken",value:function(){var t;return Pj(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 Pj(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 Pj(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,Iz.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=Iz.didSignOutFail())&&this._onSignOutFailedCallback(s),a.abrupt("break",33);case 32:throw new tM("SPA-AUTH_CLIENT-ON-IV01","Invalid hook.","The provided hook is invalid.");case 33:a.next=36;break;case 35:throw new tM("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 Pj(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 Pj(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 Pj(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(aD))?this._instances.get(aD):t?(this._instances.set(t,new e(t)),this._instances.get(t)):(this._instances.set(aD,new e(aD)),this._instances.get(aD))}}]),e}();oD._instances=new Map;var lD=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)),uD=function(t,e){return Pj(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,N,J,x,H;return a().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return r=new NB,i=new tD,c=new oM(r,i),n.next=5,c.initialize(t);case 5:if(o=new Xz(c),l=e(c,o),u=c.getDataLayer(),s=KB.getInstance(),n.t0=null==s?void 0:s.init,!n.t0){n.next=13;break}return n.next=13,s.init(!0,l.attachToken);case 13:return d=function(t){l.setHttpRequestStartCallback(s,t)},h=function(t){l.setHttpRequestSuccessCallback(s,t)},m=function(t){(null==s?void 0:s.setHttpRequestFinishCallback)&&s.setHttpRequestFinishCallback(t)},p=function(t){return Pj(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)})))},b=function(t){return Pj(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)})))},Z=function(){l.enableHttpHandler(s)},y=function(){l.disableHttpHandler(s)},X=function(t){return Pj(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 Pj(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($j))&&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)})))},f=function(){return Pj(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)})))},I=function(t,e,n,r){return Pj(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)})))},G=function(){return Pj(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)})))},V=function(){return Pj(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)})))},W=function(t){return Pj(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)})))},v=function(){return Pj(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]])})))},g=function(){return c.revokeAccessToken().then((function(){return o.clearRefreshTokenTimeout(),Promise.resolve(!0)})).catch((function(t){return Promise.reject(t)}))},S=function(){return Pj(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)})))},Y=function(){return Pj(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)})))},R=function(){return Pj(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)})))},K=function(){return Pj(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)})))},L=function(){return l.getAccessToken()},N=function(){return l.isAuthenticated()},J=function(t){return Pj(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(Aj,t);case 2:return e.abrupt("return");case 3:case"end":return e.stop()}}),e)})))},x=function(t){return Pj(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)})))},H=function(){return Pj(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:y,enableHttpHandler:Z,getAccessToken:L,getAuthorizationURL:X,getBasicUserInfo:S,getConfigData:H,getDecodedIDToken:Y,getIDToken:R,getOIDCServiceEndpoints:K,getSignOutURL:V,httpRequest:p,httpRequestAll:b,isAuthenticated:N,refreshAccessToken:v,requestAccessToken:I,requestCustomGrant:W,revokeAccessToken:g,setHttpRequestFinishCallback:m,setHttpRequestStartCallback:d,setHttpRequestSuccessCallback:h,setSessionState:J,signOut:G,startAutoRefreshToken:f,updateConfig:x});case 38:case"end":return n.stop()}}),n)})))};return t.AUTHORIZATION_CODE=Oj,t.AsgardeoAuthClient=oM,t.AsgardeoAuthException=tM,t.AsgardeoSPAClient=oD,t.AuthenticationHelper=yz,t.AuthenticationUtils=eM,t.CLAIM_VALIDATION_ERROR="ERR_JWT_CLAIM_VALIDATION_FAILED",t.CLIENT_ID_TAG="{{clientID}}",t.CLIENT_SECRET_TAG="{{clientSecret}}",t.DataLayer=cM,t.NBF_CLAIM="nbf",t.OIDC_SCOPE="openid",t.PKCE_CODE_VERIFIER="pkce_code_verifier",t.PKCE_SEPARATOR="#",t.REFRESH_TOKEN_TIMER=Ej,t.SCOPE_TAG="{{scope}}",t.SESSION_STATE=Aj,t.SIGN_OUT_SUCCESS_PARAM=qj,t.SIGN_OUT_URL=_j,t.SPAHelper=Xz,t.SPAUtils=Iz,t.STATE=$j,t.SUPPORTED_SIGNATURE_ALGORITHMS=Dj,t.TOKEN_TAG="{{token}}",t.USERNAME_TAG="{{username}}",t.WebWorkerClass=lD,t.workerReceiver=function(t){var e,n=self;n.onmessage=function(n){var o=n.data,l=n.ports;return Pj(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===ZM||e){n.next=4;break}return m.postMessage(fz.generateFailureMessage(new tM("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===ZM?7:n.t0===LM?22:n.t0===NM?24:n.t0===XM?26:n.t0===fM?28:n.t0===yM?30:n.t0===IM?44:n.t0===GM?46:n.t0===gM?48:n.t0===SM?62:n.t0===YM?76:n.t0===TM?90:n.t0===RM?104:n.t0===KM?107:n.t0===JM?110:n.t0===xM?124:n.t0===HM?138:n.t0===CM?152:n.t0===kM?154:n.t0===UM?168:n.t0===jM?182:196;break;case 7:return n.prev=7,p=Object.assign({},o.data),n.next=11,uD(p,t);case 11:(e=n.sent).setHttpRequestFinishCallback(c),e.setHttpRequestStartCallback(r),e.setHttpRequestSuccessCallback(i),m.postMessage(fz.generateSuccessMessage()),n.next=21;break;case 18:n.prev=18,n.t1=n.catch(7),m.postMessage(fz.generateFailureMessage(n.t1));case 21:return n.abrupt("break",197);case 22:return e.getAuthorizationURL(null==o?void 0:o.data).then((function(t){m.postMessage(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);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(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);case 26:return e.httpRequest(o.data).then((function(t){m.postMessage(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);case 28:return e.httpRequestAll(o.data).then((function(t){m.postMessage(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);case 30:return n.prev=30,n.t2=m,n.t3=fz,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(fz.generateFailureMessage(n.t6));case 43:return n.abrupt("break",197);case 44:return e.requestCustomGrant(o.data).then((function(t){m.postMessage(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);case 46:return e.revokeAccessToken().then((function(t){m.postMessage(fz.generateSuccessMessage(t))})).catch((function(t){m.postMessage(fz.generateFailureMessage(t))})),n.abrupt("break",197);case 48:return n.prev=48,n.t7=m,n.t8=fz,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(fz.generateFailureMessage(n.t11));case 61:return n.abrupt("break",197);case 62:return n.prev=62,n.t12=m,n.t13=fz,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(fz.generateFailureMessage(n.t16));case 75:return n.abrupt("break",197);case 76:return n.prev=76,n.t17=m,n.t18=fz,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(fz.generateFailureMessage(n.t21));case 89:return n.abrupt("break",197);case 90:return n.prev=90,n.t22=m,n.t23=fz,n.next=95,e.getIDToken();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(fz.generateFailureMessage(n.t26));case 103:return n.abrupt("break",197);case 104:return e.enableHttpHandler(),m.postMessage(fz.generateSuccessMessage()),n.abrupt("break",197);case 107:return e.disableHttpHandler(),m.postMessage(fz.generateSuccessMessage()),n.abrupt("break",197);case 110:return n.prev=110,n.t27=m,n.t28=fz,n.next=115,e.isAuthenticated();case 115:n.t29=n.sent,n.t30=n.t28.generateSuccessMessage.call(n.t28,n.t29),n.t27.postMessage.call(n.t27,n.t30),n.next=123;break;case 120:n.prev=120,n.t31=n.catch(110),m.postMessage(fz.generateFailureMessage(n.t31));case 123:return n.abrupt("break",197);case 124:return n.prev=124,n.t32=m,n.t33=fz,n.next=129,e.getSignOutURL();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(fz.generateFailureMessage(n.t36));case 137:return n.abrupt("break",197);case 138:return n.prev=138,n.t37=m,n.t38=fz,n.next=143,e.refreshAccessToken();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(fz.generateFailureMessage(n.t41));case 151:return n.abrupt("break",197);case 152:try{m.postMessage(fz.generateSuccessMessage(e.startAutoRefreshToken()))}catch(t){m.postMessage(fz.generateFailureMessage(t))}return n.abrupt("break",197);case 154:return n.prev=154,n.t42=m,n.t43=fz,n.next=159,e.setSessionState(null==o?void 0:o.data);case 159:n.t44=n.sent,n.t45=n.t43.generateSuccessMessage.call(n.t43,n.t44),n.t42.postMessage.call(n.t42,n.t45),n.next=167;break;case 164:n.prev=164,n.t46=n.catch(154),m.postMessage(fz.generateFailureMessage(n.t46));case 167:return n.abrupt("break",197);case 168:return n.prev=168,n.t47=m,n.t48=fz,n.next=173,e.updateConfig(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(fz.generateFailureMessage(n.t51));case 181:return n.abrupt("break",197);case 182:return n.prev=182,n.t52=m,n.t53=fz,n.next=187,e.getConfigData();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(fz.generateFailureMessage(n.t56));case 195:return n.abrupt("break",197);case 196:null==m||m.postMessage(fz.generateFailureMessage(new tM("SPA-CLIENT_WORKER-ONMSG-IV02","The message type is invalid.","The message type provided, ".concat(o.type,", is invalid."))));case 197:case"end":return n.stop()}}),n,null,[[7,18],[30,40],[48,58],[62,72],[76,86],[90,100],[110,120],[124,134],[138,148],[154,164],[168,178],[182,192]])})))};var r=function(){n.postMessage({type:VM})},i=function(t){n.postMessage({data:JSON.stringify(null!=t?t:""),type:WM})},c=function(){n.postMessage({type:vM})}},Object.defineProperty(t,"__esModule",{value:!0}),t}({});
2
2
  //# sourceMappingURL=asgardeo-spa.production.min.js.map