@botpoison/browser 0.1.24 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { ProgressCallback, SignedChallenge } from "./index";
2
- declare const computeSolutions: ({ challenge, onProgress, }: {
3
- challenge: SignedChallenge;
4
- onProgress?: ProgressCallback | undefined;
5
- }) => Promise<string[]>;
6
- export default computeSolutions;
1
+ import { ProgressCallback, SignedChallenge } from "./index";
2
+ declare const computeSolutions: ({ challenge, onProgress, }: {
3
+ challenge: SignedChallenge;
4
+ onProgress?: ProgressCallback | undefined;
5
+ }) => Promise<string[]>;
6
+ export default computeSolutions;
package/dist/index.d.ts CHANGED
@@ -1,29 +1,30 @@
1
- declare global {
2
- interface Window {
3
- __BOTPOISON_SUBMIT_LISTENER__: boolean | undefined;
4
- __BOTPOISON_HEARTBEAT_DISPATCHER__: boolean | undefined;
5
- }
6
- }
7
- declare type BotpoisonOptions = {
8
- publicKey: string;
9
- };
10
- declare type ChallengeOptions = {
11
- onProgress?: ProgressCallback;
12
- };
13
- export declare type ProgressCallback = (progress: number) => void;
14
- export declare type SignedChallenge = {
15
- payload: {
16
- nonce: string;
17
- difficulty: number;
18
- hardness: number;
19
- };
20
- };
21
- export default class Botpoison {
22
- private readonly publicKey;
23
- constructor({ publicKey }: BotpoisonOptions);
24
- static init(): void;
25
- challenge(options?: ChallengeOptions): Promise<{
26
- solution: string;
27
- }>;
28
- }
29
- export {};
1
+ declare global {
2
+ interface Window {
3
+ __BOTPOISON_VERSION__: string | undefined;
4
+ __BOTPOISON_SUBMIT_LISTENER__: boolean | undefined;
5
+ __BOTPOISON_HEARTBEAT_DISPATCHER__: boolean | undefined;
6
+ }
7
+ }
8
+ declare type BotpoisonOptions = {
9
+ publicKey: string;
10
+ };
11
+ declare type ChallengeOptions = {
12
+ onProgress?: ProgressCallback;
13
+ };
14
+ export declare type ProgressCallback = (progress: number) => void;
15
+ export declare type SignedChallenge = {
16
+ payload: {
17
+ nonce: string;
18
+ difficulty: number;
19
+ hardness: number;
20
+ };
21
+ };
22
+ export default class Botpoison {
23
+ private readonly publicKey;
24
+ constructor({ publicKey }: BotpoisonOptions);
25
+ static init(): void;
26
+ challenge(options?: ChallengeOptions): Promise<{
27
+ solution: string;
28
+ }>;
29
+ }
30
+ export {};
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /*! For license information please see index.js.LICENSE.txt */
2
- !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Botpoison",[],e):"object"==typeof exports?exports.Botpoison=e():t.Botpoison=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={434:(t,e,r)=>{var n;!function(){"use strict";var e="input is invalid type",i="object"==typeof window,h=i?window:{};h.JS_SHA512_NO_WINDOW&&(i=!1);var o=!i&&"object"==typeof self;!h.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?h=r.g:o&&(h=self);var s=!h.JS_SHA512_NO_COMMON_JS&&t.exports,a=r.amdO,l=!h.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,c="0123456789abcdef".split(""),u=[-2147483648,8388608,32768,128],f=[24,16,8,0],p=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],y=["hex","array","digest","arrayBuffer"],d=[];!h.JS_SHA512_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!l||!h.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(t,e){return function(r){return new m(e,!0).update(r)[t]()}},v=function(t){var e=b("hex",t);e.create=function(){return new m(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=b(n,t)}return e},_=function(t,e){return function(r,n){return new g(r,e,!0).update(n)[t]()}},w=function(t){var e=_("hex",t);e.create=function(e){return new g(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=_(n,t)}return e};function m(t,e){e?(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=d[16]=d[17]=d[18]=d[19]=d[20]=d[21]=d[22]=d[23]=d[24]=d[25]=d[26]=d[27]=d[28]=d[29]=d[30]=d[31]=d[32]=0,this.blocks=d):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==t?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==t?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==t?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=t,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}function g(t,r,n){var i,h=typeof t;if("string"!==h){if("object"!==h)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);i=!0}var o=t.length;if(!i){for(var s,a=[],c=(o=t.length,0),u=0;u<o;++u)(s=t.charCodeAt(u))<128?a[c++]=s:s<2048?(a[c++]=192|s>>6,a[c++]=128|63&s):s<55296||s>=57344?(a[c++]=224|s>>12,a[c++]=128|s>>6&63,a[c++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++u)),a[c++]=240|s>>18,a[c++]=128|s>>12&63,a[c++]=128|s>>6&63,a[c++]=128|63&s);t=a}t.length>128&&(t=new m(r,!0).update(t).array());var f=[],p=[];for(u=0;u<128;++u){var y=t[u]||0;f[u]=92^y,p[u]=54^y}m.call(this,r,n),this.update(p),this.oKeyPad=f,this.inner=!0,this.sharedMemory=n}m.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,h,o=0,s=t.length,a=this.blocks;o<s;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),r)for(h=this.start;o<s&&h<128;++o)a[h>>2]|=t[o]<<f[3&h++];else for(h=this.start;o<s&&h<128;++o)(i=t.charCodeAt(o))<128?a[h>>2]|=i<<f[3&h++]:i<2048?(a[h>>2]|=(192|i>>6)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):i<55296||i>=57344?(a[h>>2]|=(224|i>>12)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),a[h>>2]|=(240|i>>18)<<f[3&h++],a[h>>2]|=(128|i>>12&63)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]);this.lastByteIndex=h,this.bytes+=h-this.start,h>=128?(this.block=a[32],this.start=h-128,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},m.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[32]=this.block,t[e>>2]|=u[3&e],this.block=t[32],e>=112&&(this.hashed||this.hash(),t[0]=this.block,t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=t[16]=t[17]=t[18]=t[19]=t[20]=t[21]=t[22]=t[23]=t[24]=t[25]=t[26]=t[27]=t[28]=t[29]=t[30]=t[31]=t[32]=0),t[30]=this.hBytes<<3|this.bytes>>>29,t[31]=this.bytes<<3,this.hash()}},m.prototype.hash=function(){var t,e,r,n,i,h,o,s,a,l,c,u,f,y,d,b,v,_,w,m,g,O,S,A,j,P=this.h0h,E=this.h0l,T=this.h1h,x=this.h1l,B=this.h2h,I=this.h2l,U=this.h3h,k=this.h3l,N=this.h4h,R=this.h4l,C=this.h5h,z=this.h5l,J=this.h6h,M=this.h6l,D=this.h7h,H=this.h7l,K=this.blocks;for(t=32;t<160;t+=2)e=((m=K[t-30])>>>1|(g=K[t-29])<<31)^(m>>>8|g<<24)^m>>>7,r=(g>>>1|m<<31)^(g>>>8|m<<24)^(g>>>7|m<<25),n=((m=K[t-4])>>>19|(g=K[t-3])<<13)^(g>>>29|m<<3)^m>>>6,i=(g>>>19|m<<13)^(m>>>29|g<<3)^(g>>>6|m<<26),m=K[t-32],g=K[t-31],a=((O=K[t-14])>>>16)+(m>>>16)+(e>>>16)+(n>>>16)+((s=(65535&O)+(65535&m)+(65535&e)+(65535&n)+((o=((S=K[t-13])>>>16)+(g>>>16)+(r>>>16)+(i>>>16)+((h=(65535&S)+(65535&g)+(65535&r)+(65535&i))>>>16))>>>16))>>>16),K[t]=a<<16|65535&s,K[t+1]=o<<16|65535&h;var F=P,V=E,L=T,G=x,W=B,Y=I,q=U,Q=k,X=N,Z=R,$=C,tt=z,et=J,rt=M,nt=D,it=H;for(b=L&W,v=G&Y,t=0;t<160;t+=8)e=(F>>>28|V<<4)^(V>>>2|F<<30)^(V>>>7|F<<25),r=(V>>>28|F<<4)^(F>>>2|V<<30)^(F>>>7|V<<25),n=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),i=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),_=(l=F&L)^F&W^b,w=(c=V&G)^V&Y^v,A=X&$^~X&et,j=Z&tt^~Z&rt,m=K[t],g=K[t+1],m=(a=((O=p[t])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(nt>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&nt)+((o=((S=p[t+1])>>>16)+(g>>>16)+(j>>>16)+(i>>>16)+(it>>>16)+((h=(65535&S)+(65535&g)+(65535&j)+(65535&i)+(65535&it))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(_>>>16)+(e>>>16)+((s=(65535&_)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,nt=(a=(q>>>16)+(m>>>16)+((s=(65535&q)+(65535&m)+((o=(Q>>>16)+(g>>>16)+((h=(65535&Q)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,it=o<<16|65535&h,e=((q=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Q=o<<16|65535&h)<<4)^(Q>>>2|q<<30)^(Q>>>7|q<<25),r=(Q>>>28|q<<4)^(q>>>2|Q<<30)^(q>>>7|Q<<25),n=(nt>>>14|it<<18)^(nt>>>18|it<<14)^(it>>>9|nt<<23),i=(it>>>14|nt<<18)^(it>>>18|nt<<14)^(nt>>>9|it<<23),_=(u=q&F)^q&L^l,w=(f=Q&V)^Q&G^c,A=nt&X^~nt&$,j=it&Z^~it&tt,m=K[t+2],g=K[t+3],m=(a=((O=p[t+2])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(et>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&et)+((o=((S=p[t+3])>>>16)+(g>>>16)+(j>>>16)+(i>>>16)+(rt>>>16)+((h=(65535&S)+(65535&g)+(65535&j)+(65535&i)+(65535&rt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(_>>>16)+(e>>>16)+((s=(65535&_)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,et=(a=(W>>>16)+(m>>>16)+((s=(65535&W)+(65535&m)+((o=(Y>>>16)+(g>>>16)+((h=(65535&Y)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,rt=o<<16|65535&h,e=((W=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Y=o<<16|65535&h)<<4)^(Y>>>2|W<<30)^(Y>>>7|W<<25),r=(Y>>>28|W<<4)^(W>>>2|Y<<30)^(W>>>7|Y<<25),n=(et>>>14|rt<<18)^(et>>>18|rt<<14)^(rt>>>9|et<<23),i=(rt>>>14|et<<18)^(rt>>>18|et<<14)^(et>>>9|rt<<23),_=(y=W&q)^W&F^u,w=(d=Y&Q)^Y&V^f,A=et&nt^~et&X,j=rt&it^~rt&Z,m=K[t+4],g=K[t+5],m=(a=((O=p[t+4])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+($>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&$)+((o=((S=p[t+5])>>>16)+(g>>>16)+(j>>>16)+(i>>>16)+(tt>>>16)+((h=(65535&S)+(65535&g)+(65535&j)+(65535&i)+(65535&tt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(_>>>16)+(e>>>16)+((s=(65535&_)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,$=(a=(L>>>16)+(m>>>16)+((s=(65535&L)+(65535&m)+((o=(G>>>16)+(g>>>16)+((h=(65535&G)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,tt=o<<16|65535&h,e=((L=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(G=o<<16|65535&h)<<4)^(G>>>2|L<<30)^(G>>>7|L<<25),r=(G>>>28|L<<4)^(L>>>2|G<<30)^(L>>>7|G<<25),n=($>>>14|tt<<18)^($>>>18|tt<<14)^(tt>>>9|$<<23),i=(tt>>>14|$<<18)^(tt>>>18|$<<14)^($>>>9|tt<<23),_=(b=L&W)^L&q^y,w=(v=G&Y)^G&Q^d,A=$&et^~$&nt,j=tt&rt^~tt&it,m=K[t+6],g=K[t+7],m=(a=((O=p[t+6])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(X>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&X)+((o=((S=p[t+7])>>>16)+(g>>>16)+(j>>>16)+(i>>>16)+(Z>>>16)+((h=(65535&S)+(65535&g)+(65535&j)+(65535&i)+(65535&Z))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(_>>>16)+(e>>>16)+((s=(65535&_)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,X=(a=(F>>>16)+(m>>>16)+((s=(65535&F)+(65535&m)+((o=(V>>>16)+(g>>>16)+((h=(65535&V)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,Z=o<<16|65535&h,F=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,V=o<<16|65535&h;a=(P>>>16)+(F>>>16)+((s=(65535&P)+(65535&F)+((o=(E>>>16)+(V>>>16)+((h=(65535&E)+(65535&V))>>>16))>>>16))>>>16),this.h0h=a<<16|65535&s,this.h0l=o<<16|65535&h,a=(T>>>16)+(L>>>16)+((s=(65535&T)+(65535&L)+((o=(x>>>16)+(G>>>16)+((h=(65535&x)+(65535&G))>>>16))>>>16))>>>16),this.h1h=a<<16|65535&s,this.h1l=o<<16|65535&h,a=(B>>>16)+(W>>>16)+((s=(65535&B)+(65535&W)+((o=(I>>>16)+(Y>>>16)+((h=(65535&I)+(65535&Y))>>>16))>>>16))>>>16),this.h2h=a<<16|65535&s,this.h2l=o<<16|65535&h,a=(U>>>16)+(q>>>16)+((s=(65535&U)+(65535&q)+((o=(k>>>16)+(Q>>>16)+((h=(65535&k)+(65535&Q))>>>16))>>>16))>>>16),this.h3h=a<<16|65535&s,this.h3l=o<<16|65535&h,a=(N>>>16)+(X>>>16)+((s=(65535&N)+(65535&X)+((o=(R>>>16)+(Z>>>16)+((h=(65535&R)+(65535&Z))>>>16))>>>16))>>>16),this.h4h=a<<16|65535&s,this.h4l=o<<16|65535&h,a=(C>>>16)+($>>>16)+((s=(65535&C)+(65535&$)+((o=(z>>>16)+(tt>>>16)+((h=(65535&z)+(65535&tt))>>>16))>>>16))>>>16),this.h5h=a<<16|65535&s,this.h5l=o<<16|65535&h,a=(J>>>16)+(et>>>16)+((s=(65535&J)+(65535&et)+((o=(M>>>16)+(rt>>>16)+((h=(65535&M)+(65535&rt))>>>16))>>>16))>>>16),this.h6h=a<<16|65535&s,this.h6l=o<<16|65535&h,a=(D>>>16)+(nt>>>16)+((s=(65535&D)+(65535&nt)+((o=(H>>>16)+(it>>>16)+((h=(65535&H)+(65535&it))>>>16))>>>16))>>>16),this.h7h=a<<16|65535&s,this.h7l=o<<16|65535&h},m.prototype.hex=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,u=this.h5h,f=this.h5l,p=this.h6h,y=this.h6l,d=this.h7h,b=this.h7l,v=this.bits,_=c[t>>28&15]+c[t>>24&15]+c[t>>20&15]+c[t>>16&15]+c[t>>12&15]+c[t>>8&15]+c[t>>4&15]+c[15&t]+c[e>>28&15]+c[e>>24&15]+c[e>>20&15]+c[e>>16&15]+c[e>>12&15]+c[e>>8&15]+c[e>>4&15]+c[15&e]+c[r>>28&15]+c[r>>24&15]+c[r>>20&15]+c[r>>16&15]+c[r>>12&15]+c[r>>8&15]+c[r>>4&15]+c[15&r]+c[n>>28&15]+c[n>>24&15]+c[n>>20&15]+c[n>>16&15]+c[n>>12&15]+c[n>>8&15]+c[n>>4&15]+c[15&n]+c[i>>28&15]+c[i>>24&15]+c[i>>20&15]+c[i>>16&15]+c[i>>12&15]+c[i>>8&15]+c[i>>4&15]+c[15&i]+c[h>>28&15]+c[h>>24&15]+c[h>>20&15]+c[h>>16&15]+c[h>>12&15]+c[h>>8&15]+c[h>>4&15]+c[15&h]+c[o>>28&15]+c[o>>24&15]+c[o>>20&15]+c[o>>16&15]+c[o>>12&15]+c[o>>8&15]+c[o>>4&15]+c[15&o];return v>=256&&(_+=c[s>>28&15]+c[s>>24&15]+c[s>>20&15]+c[s>>16&15]+c[s>>12&15]+c[s>>8&15]+c[s>>4&15]+c[15&s]),v>=384&&(_+=c[a>>28&15]+c[a>>24&15]+c[a>>20&15]+c[a>>16&15]+c[a>>12&15]+c[a>>8&15]+c[a>>4&15]+c[15&a]+c[l>>28&15]+c[l>>24&15]+c[l>>20&15]+c[l>>16&15]+c[l>>12&15]+c[l>>8&15]+c[l>>4&15]+c[15&l]+c[u>>28&15]+c[u>>24&15]+c[u>>20&15]+c[u>>16&15]+c[u>>12&15]+c[u>>8&15]+c[u>>4&15]+c[15&u]+c[f>>28&15]+c[f>>24&15]+c[f>>20&15]+c[f>>16&15]+c[f>>12&15]+c[f>>8&15]+c[f>>4&15]+c[15&f]),512==v&&(_+=c[p>>28&15]+c[p>>24&15]+c[p>>20&15]+c[p>>16&15]+c[p>>12&15]+c[p>>8&15]+c[p>>4&15]+c[15&p]+c[y>>28&15]+c[y>>24&15]+c[y>>20&15]+c[y>>16&15]+c[y>>12&15]+c[y>>8&15]+c[y>>4&15]+c[15&y]+c[d>>28&15]+c[d>>24&15]+c[d>>20&15]+c[d>>16&15]+c[d>>12&15]+c[d>>8&15]+c[d>>4&15]+c[15&d]+c[b>>28&15]+c[b>>24&15]+c[b>>20&15]+c[b>>16&15]+c[b>>12&15]+c[b>>8&15]+c[b>>4&15]+c[15&b]),_},m.prototype.toString=m.prototype.hex,m.prototype.digest=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,c=this.h5h,u=this.h5l,f=this.h6h,p=this.h6l,y=this.h7h,d=this.h7l,b=this.bits,v=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,h>>24&255,h>>16&255,h>>8&255,255&h,o>>24&255,o>>16&255,o>>8&255,255&o];return b>=256&&v.push(s>>24&255,s>>16&255,s>>8&255,255&s),b>=384&&v.push(a>>24&255,a>>16&255,a>>8&255,255&a,l>>24&255,l>>16&255,l>>8&255,255&l,c>>24&255,c>>16&255,c>>8&255,255&c,u>>24&255,u>>16&255,u>>8&255,255&u),512==b&&v.push(f>>24&255,f>>16&255,f>>8&255,255&f,p>>24&255,p>>16&255,p>>8&255,255&p,y>>24&255,y>>16&255,y>>8&255,255&y,d>>24&255,d>>16&255,d>>8&255,255&d),v},m.prototype.array=m.prototype.digest,m.prototype.arrayBuffer=function(){this.finalize();var t=this.bits,e=new ArrayBuffer(t/8),r=new DataView(e);return r.setUint32(0,this.h0h),r.setUint32(4,this.h0l),r.setUint32(8,this.h1h),r.setUint32(12,this.h1l),r.setUint32(16,this.h2h),r.setUint32(20,this.h2l),r.setUint32(24,this.h3h),t>=256&&r.setUint32(28,this.h3l),t>=384&&(r.setUint32(32,this.h4h),r.setUint32(36,this.h4l),r.setUint32(40,this.h5h),r.setUint32(44,this.h5l)),512==t&&(r.setUint32(48,this.h6h),r.setUint32(52,this.h6l),r.setUint32(56,this.h7h),r.setUint32(60,this.h7l)),e},m.prototype.clone=function(){var t=new m(this.bits,!1);return this.copyTo(t),t},m.prototype.copyTo=function(t){var e=0,r=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(e=0;e<r.length;++e)t[r[e]]=this[r[e]];for(e=0;e<this.blocks.length;++e)t.blocks[e]=this.blocks[e]},g.prototype=new m,g.prototype.finalize=function(){if(m.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();m.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(t),m.prototype.finalize.call(this)}},g.prototype.clone=function(){var t=new g([],this.bits,!1);this.copyTo(t),t.inner=this.inner;for(var e=0;e<this.oKeyPad.length;++e)t.oKeyPad[e]=this.oKeyPad[e];return t};var O=v(512);O.sha512=O,O.sha384=v(384),O.sha512_256=v(256),O.sha512_224=v(224),O.sha512.hmac=w(512),O.sha384.hmac=w(384),O.sha512_256.hmac=w(256),O.sha512_224.hmac=w(224),s?t.exports=O:(h.sha512=O.sha512,h.sha384=O.sha384,h.sha512_256=O.sha512_256,h.sha512_224=O.sha512_224,a&&(void 0===(n=function(){return O}.call(O,r,O,t))||(t.exports=n)))}()},900:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(655),i=r(434),h=function(t){var e=t.input,r=t.expected;return n.__awaiter(void 0,void 0,void 0,(function(){var t,h;return n.__generator(this,(function(n){switch(n.label){case 0:t=0,n.label=1;case 1:return h=i.sha512(e+":"+t),t%4e4!=0?[3,3]:[4,o(0)];case 2:n.sent(),n.label=3;case 3:return h.substring(0,r.length)===r?[2,t.toString()]:(t++,[3,1]);case 4:return[2]}}))}))},o=function(t){return new Promise((function(e){return setTimeout(e,t)}))};e.default=function(t){var e=t.challenge,r=t.onProgress;return n.__awaiter(void 0,void 0,void 0,(function(){var t,i,s,a,l,c,u;return n.__generator(this,(function(n){switch(n.label){case 0:t=e.payload,i=t.nonce,s=t.difficulty,a=t.hardness,l=[],null==r||r(0),c=0,n.label=1;case 1:return c<a?[4,h({input:i+":"+c,expected:"0".repeat(s)})]:[3,5];case 2:return u=n.sent(),l.push(u),null==r||r(l.length/a),[4,o(0)];case 3:n.sent(),n.label=4;case 4:return c++,[3,1];case 5:return[2,l]}}))}))}},655:(t,e,r)=>{"use strict";r.r(e),r.d(e,{__extends:()=>i,__assign:()=>h,__rest:()=>o,__decorate:()=>s,__param:()=>a,__metadata:()=>l,__awaiter:()=>c,__generator:()=>u,__createBinding:()=>f,__exportStar:()=>p,__values:()=>y,__read:()=>d,__spread:()=>b,__spreadArrays:()=>v,__spreadArray:()=>_,__await:()=>w,__asyncGenerator:()=>m,__asyncDelegator:()=>g,__asyncValues:()=>O,__makeTemplateObject:()=>S,__importStar:()=>j,__importDefault:()=>P,__classPrivateFieldGet:()=>E,__classPrivateFieldSet:()=>T});var n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)};function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var h=function(){return(h=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)};function o(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}function s(t,e,r,n){var i,h=arguments.length,o=h<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,r,n);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(o=(h<3?i(o):h>3?i(e,r,o):i(e,r))||o);return h>3&&o&&Object.defineProperty(e,r,o),o}function a(t,e){return function(r,n){e(r,n,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function c(t,e,r,n){return new(r||(r=Promise))((function(i,h){function o(t){try{a(n.next(t))}catch(t){h(t)}}function s(t){try{a(n.throw(t))}catch(t){h(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}a((n=n.apply(t,e||[])).next())}))}function u(t,e){var r,n,i,h,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return h={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(h[Symbol.iterator]=function(){return this}),h;function s(h){return function(s){return function(h){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&h[0]?n.return:h[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,h[1])).done)return i;switch(n=0,i&&(h=[2&h[0],i.value]),h[0]){case 0:case 1:i=h;break;case 4:return o.label++,{value:h[1],done:!1};case 5:o.label++,n=h[1],h=[0];continue;case 7:h=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==h[0]&&2!==h[0])){o=0;continue}if(3===h[0]&&(!i||h[1]>i[0]&&h[1]<i[3])){o.label=h[1];break}if(6===h[0]&&o.label<i[1]){o.label=i[1],i=h;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(h);break}i[2]&&o.ops.pop(),o.trys.pop();continue}h=e.call(t,o)}catch(t){h=[6,t],n=0}finally{r=i=0}if(5&h[0])throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}([h,s])}}}var f=Object.create?function(t,e,r,n){void 0===n&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};function p(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||f(e,t,r)}function y(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,h=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=h.next()).done;)o.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=h.return)&&r.call(h)}finally{if(i)throw i.error}}return o}function b(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(d(arguments[e]));return t}function v(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),i=0;for(e=0;e<r;e++)for(var h=arguments[e],o=0,s=h.length;o<s;o++,i++)n[i]=h[o];return n}function _(t,e){for(var r=0,n=e.length,i=t.length;r<n;r++,i++)t[i]=e[r];return t}function w(t){return this instanceof w?(this.v=t,this):new w(t)}function m(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(t,e||[]),h=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(t){i[t]&&(n[t]=function(e){return new Promise((function(r,n){h.push([t,e,r,n])>1||s(t,e)}))})}function s(t,e){try{(r=i[t](e)).value instanceof w?Promise.resolve(r.value.v).then(a,l):c(h[0][2],r)}catch(t){c(h[0][3],t)}var r}function a(t){s("next",t)}function l(t){s("throw",t)}function c(t,e){t(e),h.shift(),h.length&&s(h[0][0],h[0][1])}}function g(t){var e,r;return e={},n("next"),n("throw",(function(t){throw t})),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,i){e[n]=t[n]?function(e){return(r=!r)?{value:w(t[n](e)),done:"return"===n}:i?i(e):e}:i}}function O(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=y(t),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,i){!function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)}(n,i,(e=t[r](e)).done,e.value)}))}}}function S(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}var A=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};function j(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&f(e,t,r);return A(e,t),e}function P(t){return t&&t.__esModule?t:{default:t}}function E(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)}function T(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(t,r):i?i.value=r:e.set(t,r),r}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var h=e[n]={exports:{}};return t[n](h,h.exports,r),h.exports}r.amdO={},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";var t=n,e=r(655),i=e.__importDefault(r(900)),h="https://api.botpoison.com",o=function(){a(),l()},s=function(){function t(t){var e=t.publicKey;this.publicKey=e}return t.init=function(){o()},t.prototype.challenge=function(t){return e.__awaiter(this,void 0,void 0,(function(){var r,n,o;return e.__generator(this,(function(e){switch(e.label){case 0:return r=(t||{}).onProgress,[4,fetch(h+"/challenge",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({publicKey:this.publicKey,hostname:location.hostname})})];case 1:return[4,e.sent().json()];case 2:return n=e.sent(),[4,i.default({challenge:n,onProgress:r})];case 3:return o=e.sent(),[2,{solution:btoa(JSON.stringify({challenge:n,solutions:o}))}]}}))}))},t}();t.default=s;var a=function(){"undefined"!=typeof document&&(window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_SUBMIT_LISTENER__=!0,document.addEventListener("submit",(function(t){try{var e=t.target;if(e){var r=e,n=r.dataset.botpoisonPublicKey;if(n){t.preventDefault(),r.dispatchEvent(new CustomEvent("botpoison-challenge-start"));var i=new s({publicKey:n});i.challenge().then((function(t){var e=t.solution;r.dispatchEvent(new CustomEvent("botpoison-challenge-success")),function(t){var e=t.formElement,r=t.id,n=t.name,i=t.value,h=document.getElementById(r);if(!h){var o=document.createElement("input");o.setAttribute("type","hidden"),o.setAttribute("id",r),o.setAttribute("name",n),e.appendChild(o),h=o}h.setAttribute("value",i)}({formElement:r,id:"_botpoison",name:"_botpoison",value:e}),HTMLFormElement.prototype.submit.call(r)})).catch((function(t){console.error(t),r.dispatchEvent(new CustomEvent("botpoison-challenge-error"))}))}}}catch(t){console.error(t)}return!0}))))},l=function(){if("undefined"!=typeof document&&!window.__BOTPOISON_HEARTBEAT_DISPATCHER__){window.__BOTPOISON_HEARTBEAT_DISPATCHER__=!0;var t=0,e=[0,1e3,3e3,6e3,6e4,3e5],r=function(){setTimeout((function(){fetch(h+"/heartbeat",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({hostname:location.hostname})}),t<e.length-1&&(t+=1),r()}),e[t])};r()}};o()})(),n.default})()}));
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL0JvdHBvaXNvbi8uL25vZGVfbW9kdWxlcy9qcy1zaGE1MTIvc3JjL3NoYTUxMi5qcyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vLi9zcmMvY29tcHV0ZVNvbHV0aW9ucy50cyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbInJvb3QiLCJmYWN0b3J5IiwiZXhwb3J0cyIsIm1vZHVsZSIsImRlZmluZSIsImFtZCIsInNlbGYiLCJ0aGlzIiwiSU5QVVRfRVJST1IiLCJXSU5ET1ciLCJ3aW5kb3ciLCJKU19TSEE1MTJfTk9fV0lORE9XIiwiV0VCX1dPUktFUiIsIkpTX1NIQTUxMl9OT19OT0RFX0pTIiwicHJvY2VzcyIsInZlcnNpb25zIiwibm9kZSIsImciLCJDT01NT05fSlMiLCJKU19TSEE1MTJfTk9fQ09NTU9OX0pTIiwiQU1EIiwiQVJSQVlfQlVGRkVSIiwiSlNfU0hBNTEyX05PX0FSUkFZX0JVRkZFUiIsIkFycmF5QnVmZmVyIiwiSEVYX0NIQVJTIiwic3BsaXQiLCJFWFRSQSIsIlNISUZUIiwiSyIsIk9VVFBVVF9UWVBFUyIsImJsb2NrcyIsIkFycmF5IiwiaXNBcnJheSIsIm9iaiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsIkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVJfSVNfVklFVyIsImlzVmlldyIsImJ1ZmZlciIsImNvbnN0cnVjdG9yIiwiY3JlYXRlT3V0cHV0TWV0aG9kIiwib3V0cHV0VHlwZSIsImJpdHMiLCJtZXNzYWdlIiwiU2hhNTEyIiwidXBkYXRlIiwiY3JlYXRlTWV0aG9kIiwibWV0aG9kIiwiY3JlYXRlIiwiaSIsImxlbmd0aCIsInR5cGUiLCJjcmVhdGVIbWFjT3V0cHV0TWV0aG9kIiwia2V5IiwiSG1hY1NoYTUxMiIsImNyZWF0ZUhtYWNNZXRob2QiLCJzaGFyZWRNZW1vcnkiLCJoMGgiLCJoMGwiLCJoMWgiLCJoMWwiLCJoMmgiLCJoMmwiLCJoM2giLCJoM2wiLCJoNGgiLCJoNGwiLCJoNWgiLCJoNWwiLCJoNmgiLCJoNmwiLCJoN2giLCJoN2wiLCJibG9jayIsInN0YXJ0IiwiYnl0ZXMiLCJoQnl0ZXMiLCJmaW5hbGl6ZWQiLCJoYXNoZWQiLCJub3RTdHJpbmciLCJFcnJvciIsIlVpbnQ4QXJyYXkiLCJjb2RlIiwiaW5kZXgiLCJjaGFyQ29kZUF0IiwiYXJyYXkiLCJvS2V5UGFkIiwiaUtleVBhZCIsImIiLCJpbm5lciIsImxhc3RCeXRlSW5kZXgiLCJoYXNoIiwiZmluYWxpemUiLCJqIiwiczBoIiwiczBsIiwiczFoIiwiczFsIiwiYzEiLCJjMiIsImMzIiwiYzQiLCJhYmgiLCJhYmwiLCJkYWgiLCJkYWwiLCJjZGgiLCJjZGwiLCJiY2giLCJiY2wiLCJtYWpoIiwibWFqbCIsInQxaCIsInQxbCIsInQyaCIsInQybCIsImNoaCIsImNobCIsImFoIiwiYWwiLCJiaCIsImJsIiwiY2giLCJjbCIsImRoIiwiZGwiLCJlaCIsImVsIiwiZmgiLCJmbCIsImdoIiwiZ2wiLCJoaCIsImhsIiwiaGV4IiwiZGlnZXN0IiwiYXJyIiwicHVzaCIsImFycmF5QnVmZmVyIiwiZGF0YVZpZXciLCJEYXRhVmlldyIsInNldFVpbnQzMiIsImNsb25lIiwiY29weVRvIiwiYXR0cnMiLCJpbm5lckhhc2giLCJzaGE1MTIiLCJzaGEzODQiLCJzaGE1MTJfMjU2Iiwic2hhNTEyXzIyNCIsImhtYWMiLCJjb21wdXRlQ29sbGlzaW9uSW50ZWdlciIsImlucHV0IiwiZXhwZWN0ZWQiLCJhdHRlbXB0Iiwic2xlZXAiLCJzdWJzdHJpbmciLCJ0aW1lIiwiUHJvbWlzZSIsInIiLCJzZXRUaW1lb3V0IiwiY2hhbGxlbmdlIiwib25Qcm9ncmVzcyIsInBheWxvYWQiLCJub25jZSIsImRpZmZpY3VsdHkiLCJoYXJkbmVzcyIsInNvbHV0aW9ucyIsImgiLCJyZXBlYXQiLCJzb2x1dGlvbiIsImV4dGVuZFN0YXRpY3MiLCJkIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJwIiwiaGFzT3duUHJvcGVydHkiLCJfX2V4dGVuZHMiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJfXyIsIl9fYXNzaWduIiwiYXNzaWduIiwidCIsInMiLCJuIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJfX3Jlc3QiLCJlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiX19kZWNvcmF0ZSIsImRlY29yYXRvcnMiLCJ0YXJnZXQiLCJkZXNjIiwiYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlJlZmxlY3QiLCJkZWNvcmF0ZSIsImRlZmluZVByb3BlcnR5IiwiX19wYXJhbSIsInBhcmFtSW5kZXgiLCJkZWNvcmF0b3IiLCJfX21ldGFkYXRhIiwibWV0YWRhdGFLZXkiLCJtZXRhZGF0YVZhbHVlIiwibWV0YWRhdGEiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwidmFsdWUiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJfX2dlbmVyYXRvciIsImJvZHkiLCJmIiwieSIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwidmVyYiIsIlN5bWJvbCIsIml0ZXJhdG9yIiwidiIsIm9wIiwicG9wIiwiX19jcmVhdGVCaW5kaW5nIiwibyIsIm0iLCJrIiwiazIiLCJ1bmRlZmluZWQiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX19leHBvcnRTdGFyIiwiX192YWx1ZXMiLCJfX3JlYWQiLCJhciIsImVycm9yIiwiX19zcHJlYWQiLCJjb25jYXQiLCJfX3NwcmVhZEFycmF5cyIsImlsIiwiYSIsImpsIiwiX19zcHJlYWRBcnJheSIsInRvIiwiZnJvbSIsIl9fYXdhaXQiLCJfX2FzeW5jR2VuZXJhdG9yIiwiYXN5bmNJdGVyYXRvciIsInEiLCJyZXN1bWUiLCJmdWxmaWxsIiwic2V0dGxlIiwic2hpZnQiLCJfX2FzeW5jRGVsZWdhdG9yIiwiX19hc3luY1ZhbHVlcyIsIl9fbWFrZVRlbXBsYXRlT2JqZWN0IiwiY29va2VkIiwicmF3IiwiX19zZXRNb2R1bGVEZWZhdWx0IiwiX19pbXBvcnRTdGFyIiwibW9kIiwiX19lc01vZHVsZSIsIl9faW1wb3J0RGVmYXVsdCIsImRlZmF1bHQiLCJfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0IiwicmVjZWl2ZXIiLCJzdGF0ZSIsImtpbmQiLCJoYXMiLCJfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0Iiwic2V0IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImFtZE8iLCJkZWZpbml0aW9uIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwicHJvcCIsInRvU3RyaW5nVGFnIiwiQkFTRV9VUkwiLCJpbml0IiwiYWRkU3VibWl0TGlzdGVuZXIiLCJhZGRIZWFydGJlYXREaXNwYXRjaGVyIiwicHVibGljS2V5Iiwib3B0aW9ucyIsImZldGNoIiwiaGVhZGVycyIsIkFjY2VwdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJob3N0bmFtZSIsImxvY2F0aW9uIiwianNvbiIsImJ0b2EiLCJkb2N1bWVudCIsIl9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwiZGF0YXNldCIsImJvdHBvaXNvblB1YmxpY0tleSIsInByZXZlbnREZWZhdWx0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiYm90cG9pc29uIiwiQm90cG9pc29uIiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCIsIkhUTUxGb3JtRWxlbWVudCIsInN1Ym1pdCIsImNhdGNoIiwiY29uc29sZSIsIl9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18iXSwibWFwcGluZ3MiOiI7Q0FBQSxTQUEyQ0EsRUFBTUMsR0FDMUIsaUJBQVpDLFNBQTBDLGlCQUFYQyxPQUN4Q0EsT0FBT0QsUUFBVUQsSUFDUSxtQkFBWEcsUUFBeUJBLE9BQU9DLElBQzlDRCxPQUFPLFlBQWEsR0FBSUgsR0FDRSxpQkFBWkMsUUFDZEEsUUFBbUIsVUFBSUQsSUFFdkJELEVBQWdCLFVBQUlDLElBUnRCLENBU21CLG9CQUFUSyxLQUF1QkEsS0FBT0MsTUFBTSxXQUM5QyxNLDJCQ1ZBLE9BU0EsV0FDRSxhQUVBLElBQUlDLEVBQWMsd0JBRWRDLEVBQTJCLGlCQUFYQyxPQUNoQlYsRUFBT1MsRUFBU0MsT0FBUyxHQUN6QlYsRUFBS1csc0JBQ1BGLEdBQVMsR0FFWCxJQUFJRyxHQUFjSCxHQUEwQixpQkFBVEgsTUFDcEJOLEVBQUthLHNCQUEyQyxpQkFBWkMsU0FBd0JBLFFBQVFDLFVBQVlE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ZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJCb3Rwb2lzb25cIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wiQm90cG9pc29uXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIkJvdHBvaXNvblwiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKlxuICogW2pzLXNoYTUxMl17QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2VtbjE3OC9qcy1zaGE1MTJ9XG4gKlxuICogQHZlcnNpb24gMC44LjBcbiAqIEBhdXRob3IgQ2hlbiwgWWktQ3l1YW4gW2VtbjE3OEBnbWFpbC5jb21dXG4gKiBAY29weXJpZ2h0IENoZW4sIFlpLUN5dWFuIDIwMTQtMjAxOFxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbi8qanNsaW50IGJpdHdpc2U6IHRydWUgKi9cbihmdW5jdGlvbiAoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICB2YXIgSU5QVVRfRVJST1IgPSAnaW5wdXQgaXMgaW52YWxpZCB0eXBlJztcbiAgdmFyIEZJTkFMSVpFX0VSUk9SID0gJ2ZpbmFsaXplIGFscmVhZHkgY2FsbGVkJztcbiAgdmFyIFdJTkRPVyA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICB2YXIgcm9vdCA9IFdJTkRPVyA/IHdpbmRvdyA6IHt9O1xuICBpZiAocm9vdC5KU19TSEE1MTJfTk9fV0lORE9XKSB7XG4gICAgV0lORE9XID0gZmFsc2U7XG4gIH1cbiAgdmFyIFdFQl9XT1JLRVIgPSAhV0lORE9XICYmIHR5cGVvZiBzZWxmID09PSAnb2JqZWN0JztcbiAgdmFyIE5PREVfSlMgPSAhcm9vdC5KU19TSEE1MTJfTk9fTk9ERV9KUyAmJiB0eXBlb2YgcHJvY2VzcyA9PT0gJ29iamVjdCcgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGU7XG4gIGlmIChOT0RFX0pTKSB7XG4gICAgcm9vdCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChXRUJfV09SS0VSKSB7XG4gICAgcm9vdCA9IHNlbGY7XG4gIH1cbiAgdmFyIENPTU1PTl9KUyA9ICFyb290LkpTX1NIQTUxMl9OT19DT01NT05fSlMgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHM7XG4gIHZhciBBTUQgPSB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQ7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAhcm9vdC5KU19TSEE1MTJfTk9fQVJSQVlfQlVGRkVSICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCc7XG4gIHZhciBIRVhfQ0hBUlMgPSAnMDEyMzQ1Njc4OWFiY2RlZicuc3BsaXQoJycpO1xuICB2YXIgRVhUUkEgPSBbLTIxNDc0ODM2NDgsIDgzODg2MDgsIDMyNzY4LCAxMjhdO1xuICB2YXIgU0hJRlQgPSBbMjQsIDE2LCA4LCAwXTtcbiAgdmFyIEsgPSBbXG4gICAgMHg0MjhBMkY5OCwgMHhENzI4QUUyMiwgMHg3MTM3NDQ5MSwgMHgyM0VGNjVDRCxcbiAgICAweEI1QzBGQkNGLCAweEVDNEQzQjJGLCAweEU5QjVEQkE1LCAweDgxODlEQkJDLFxuICAgIDB4Mzk1NkMyNUIsIDB4RjM0OEI1MzgsIDB4NTlGMTExRjEsIDB4QjYwNUQwMTksXG4gICAgMHg5MjNGODJBNCwgMHhBRjE5NEY5QiwgMHhBQjFDNUVENSwgMHhEQTZEODExOCxcbiAgICAweEQ4MDdBQTk4LCAweEEzMDMwMjQyLCAweDEyODM1QjAxLCAweDQ1NzA2RkJFLFxuICAgIDB4MjQzMTg1QkUsIDB4NEVFNEIyOEMsIDB4NTUwQzdEQzMsIDB4RDVGRkI0RTIsXG4gICAgMHg3MkJFNUQ3NCwgMHhGMjdCODk2RiwgMHg4MERFQjFGRSwgMHgzQjE2OTZCMSxcbiAgICAweDlCREMwNkE3LCAweDI1QzcxMjM1LCAweEMxOUJGMTc0LCAweENGNjkyNjk0LFxuICAgIDB4RTQ5QjY5QzEsIDB4OUVGMTRBRDIsIDB4RUZCRTQ3ODYsIDB4Mzg0RjI1RTMsXG4gICAgMHgwRkMxOURDNiwgMHg4QjhDRDVCNSwgMHgyNDBDQTFDQywgMHg3N0FDOUM2NSxcbiAgICAweDJERTkyQzZGLCAweDU5MkIwMjc1LCAweDRBNzQ4NEFBLCAweDZFQTZFNDgzLFxuICAgIDB4NUNCMEE5REMsIDB4QkQ0MUZCRDQsIDB4NzZGOTg4REEsIDB4ODMxMTUzQjUsXG4gICAgMHg5ODNFNTE1MiwgMHhFRTY2REZBQiwgMHhBODMxQzY2RCwgMHgyREI0MzIxMCxcbiAgICAweEIwMDMyN0M4LCAweDk4RkIyMTNGLCAweEJGNTk3RkM3LCAweEJFRUYwRUU0LFxuICAgIDB4QzZFMDBCRjMsIDB4M0RBODhGQzIsIDB4RDVBNzkxNDcsIDB4OTMwQUE3MjUsXG4gICAgMHgwNkNBNjM1MSwgMHhFMDAzODI2RiwgMHgxNDI5Mjk2NywgMHgwQTBFNkU3MCxcbiAgICAweDI3QjcwQTg1LCAweDQ2RDIyRkZDLCAweDJFMUIyMTM4LCAweDVDMjZDOTI2LFxuICAgIDB4NEQyQzZERkMsIDB4NUFDNDJBRUQsIDB4NTMzODBEMTMsIDB4OUQ5NUIzREYsXG4gICAgMHg2NTBBNzM1NCwgMHg4QkFGNjNERSwgMHg3NjZBMEFCQiwgMHgzQzc3QjJBOCxcbiAgICAweDgxQzJDOTJFLCAweDQ3RURBRUU2LCAweDkyNzIyQzg1LCAweDE0ODIzNTNCLFxuICAgIDB4QTJCRkU4QTEsIDB4NENGMTAzNjQsIDB4QTgxQTY2NEIsIDB4QkM0MjMwMDEsXG4gICAgMHhDMjRCOEI3MCwgMHhEMEY4OTc5MSwgMHhDNzZDNTFBMywgMHgwNjU0QkUzMCxcbiAgICAweEQxOTJFODE5LCAweEQ2RUY1MjE4LCAweEQ2OTkwNjI0LCAweDU1NjVBOTEwLFxuICAgIDB4RjQwRTM1ODUsIDB4NTc3MTIwMkEsIDB4MTA2QUEwNzAsIDB4MzJCQkQxQjgsXG4gICAgMHgxOUE0QzExNiwgMHhCOEQyRDBDOCwgMHgxRTM3NkMwOCwgMHg1MTQxQUI1MyxcbiAgICAweDI3NDg3NzRDLCAweERGOEVFQjk5LCAweDM0QjBCQ0I1LCAweEUxOUI0OEE4LFxuICAgIDB4MzkxQzBDQjMsIDB4QzVDOTVBNjMsIDB4NEVEOEFBNEEsIDB4RTM0MThBQ0IsXG4gICAgMHg1QjlDQ0E0RiwgMHg3NzYzRTM3MywgMHg2ODJFNkZGMywgMHhENkIyQjhBMyxcbiAgICAweDc0OEY4MkVFLCAweDVERUZCMkZDLCAweDc4QTU2MzZGLCAweDQzMTcyRjYwLFxuICAgIDB4ODRDODc4MTQsIDB4QTFGMEFCNzIsIDB4OENDNzAyMDgsIDB4MUE2NDM5RUMsXG4gICAgMHg5MEJFRkZGQSwgMHgyMzYzMUUyOCwgMHhBNDUwNkNFQiwgMHhERTgyQkRFOSxcbiAgICAweEJFRjlBM0Y3LCAweEIyQzY3OTE1LCAweEM2NzE3OEYyLCAweEUzNzI1MzJCLFxuICAgIDB4Q0EyNzNFQ0UsIDB4RUEyNjYxOUMsIDB4RDE4NkI4QzcsIDB4MjFDMEMyMDcsXG4gICAgMHhFQURBN0RENiwgMHhDREUwRUIxRSwgMHhGNTdENEY3RiwgMHhFRTZFRDE3OCxcbiAgICAweDA2RjA2N0FBLCAweDcyMTc2RkJBLCAweDBBNjM3REM1LCAweEEyQzg5OEE2LFxuICAgIDB4MTEzRjk4MDQsIDB4QkVGOTBEQUUsIDB4MUI3MTBCMzUsIDB4MTMxQzQ3MUIsXG4gICAgMHgyOERCNzdGNSwgMHgyMzA0N0Q4NCwgMHgzMkNBQUI3QiwgMHg0MEM3MjQ5MyxcbiAgICAweDNDOUVCRTBBLCAweDE1QzlCRUJDLCAweDQzMUQ2N0M0LCAweDlDMTAwRDRDLFxuICAgIDB4NENDNUQ0QkUsIDB4Q0IzRTQyQjYsIDB4NTk3RjI5OUMsIDB4RkM2NTdFMkEsXG4gICAgMHg1RkNCNkZBQiwgMHgzQUQ2RkFFQywgMHg2QzQ0MTk4QywgMHg0QTQ3NTgxN1xuICBdO1xuXG4gIHZhciBPVVRQVVRfVFlQRVMgPSBbJ2hleCcsICdhcnJheScsICdkaWdlc3QnLCAnYXJyYXlCdWZmZXInXTtcblxuICB2YXIgYmxvY2tzID0gW107XG5cbiAgaWYgKHJvb3QuSlNfU0hBNTEyX05PX05PREVfSlMgfHwgIUFycmF5LmlzQXJyYXkpIHtcbiAgICBBcnJheS5pc0FycmF5ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nO1xuICAgIH07XG4gIH1cblxuICBpZiAoQVJSQVlfQlVGRkVSICYmIChyb290LkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVJfSVNfVklFVyB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KSkge1xuICAgIEFycmF5QnVmZmVyLmlzVmlldyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmouYnVmZmVyICYmIG9iai5idWZmZXIuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyO1xuICAgIH07XG4gIH1cblxuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKG91dHB1dFR5cGUsIGJpdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgU2hhNTEyKGJpdHMsIHRydWUpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzKSB7XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZU91dHB1dE1ldGhvZCgnaGV4JywgYml0cyk7XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBuZXcgU2hhNTEyKGJpdHMpO1xuICAgIH07XG4gICAgbWV0aG9kLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZSgpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcbiAgICAgIG1ldGhvZFt0eXBlXSA9IGNyZWF0ZU91dHB1dE1ldGhvZCh0eXBlLCBiaXRzKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZDtcbiAgfTtcblxuICB2YXIgY3JlYXRlSG1hY091dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChvdXRwdXRUeXBlLCBiaXRzKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBuZXcgSG1hY1NoYTUxMihrZXksIGJpdHMsIHRydWUpLnVwZGF0ZShtZXNzYWdlKVtvdXRwdXRUeXBlXSgpO1xuICAgIH07XG4gIH07XG5cbiAgdmFyIGNyZWF0ZUhtYWNNZXRob2QgPSBmdW5jdGlvbiAoYml0cykge1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kKCdoZXgnLCBiaXRzKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIG5ldyBIbWFjU2hhNTEyKGtleSwgYml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG1ldGhvZC5jcmVhdGUoa2V5KS51cGRhdGUobWVzc2FnZSk7XG4gICAgfTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE9VVFBVVF9UWVBFUy5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHR5cGUgPSBPVVRQVVRfVFlQRVNbaV07XG4gICAgICBtZXRob2RbdHlwZV0gPSBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kKHR5cGUsIGJpdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFNoYTUxMihiaXRzLCBzaGFyZWRNZW1vcnkpIHtcbiAgICBpZiAoc2hhcmVkTWVtb3J5KSB7XG4gICAgICBibG9ja3NbMF0gPSBibG9ja3NbMV0gPSBibG9ja3NbMl0gPSBibG9ja3NbM10gPSBibG9ja3NbNF0gPVxuICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICBibG9ja3NbMTNdID0gYmxvY2tzWzE0XSA9IGJsb2Nrc1sxNV0gPSBibG9ja3NbMTZdID1cbiAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICBibG9ja3NbMjVdID0gYmxvY2tzWzI2XSA9IGJsb2Nrc1syN10gPSBibG9ja3NbMjhdID1cbiAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgICAgdGhpcy5ibG9ja3MgPSBibG9ja3M7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmxvY2tzID0gWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdO1xuICAgIH1cblxuICAgIGlmIChiaXRzID09IDM4NCkge1xuICAgICAgdGhpcy5oMGggPSAweENCQkI5RDVEO1xuICAgICAgdGhpcy5oMGwgPSAweEMxMDU5RUQ4O1xuICAgICAgdGhpcy5oMWggPSAweDYyOUEyOTJBO1xuICAgICAgdGhpcy5oMWwgPSAweDM2N0NENTA3O1xuICAgICAgdGhpcy5oMmggPSAweDkxNTkwMTVBO1xuICAgICAgdGhpcy5oMmwgPSAweDMwNzBERDE3O1xuICAgICAgdGhpcy5oM2ggPSAweDE1MkZFQ0Q4O1xuICAgICAgdGhpcy5oM2wgPSAweEY3MEU1OTM5O1xuICAgICAgdGhpcy5oNGggPSAweDY3MzMyNjY3O1xuICAgICAgdGhpcy5oNGwgPSAweEZGQzAwQjMxO1xuICAgICAgdGhpcy5oNWggPSAweDhFQjQ0QTg3O1xuICAgICAgdGhpcy5oNWwgPSAweDY4NTgxNTExO1xuICAgICAgdGhpcy5oNmggPSAweERCMEMyRTBEO1xuICAgICAgdGhpcy5oNmwgPSAweDY0Rjk4RkE3O1xuICAgICAgdGhpcy5oN2ggPSAweDQ3QjU0ODFEO1xuICAgICAgdGhpcy5oN2wgPSAweEJFRkE0RkE0O1xuICAgIH0gZWxzZSBpZiAoYml0cyA9PSAyNTYpIHtcbiAgICAgIHRoaXMuaDBoID0gMHgyMjMxMjE5NDtcbiAgICAgIHRoaXMuaDBsID0gMHhGQzJCRjcyQztcbiAgICAgIHRoaXMuaDFoID0gMHg5RjU1NUZBMztcbiAgICAgIHRoaXMuaDFsID0gMHhDODRDNjRDMjtcbiAgICAgIHRoaXMuaDJoID0gMHgyMzkzQjg2QjtcbiAgICAgIHRoaXMuaDJsID0gMHg2RjUzQjE1MTtcbiAgICAgIHRoaXMuaDNoID0gMHg5NjM4NzcxOTtcbiAgICAgIHRoaXMuaDNsID0gMHg1OTQwRUFCRDtcbiAgICAgIHRoaXMuaDRoID0gMHg5NjI4M0VFMjtcbiAgICAgIHRoaXMuaDRsID0gMHhBODhFRkZFMztcbiAgICAgIHRoaXMuaDVoID0gMHhCRTVFMUUyNTtcbiAgICAgIHRoaXMuaDVsID0gMHg1Mzg2Mzk5MjtcbiAgICAgIHRoaXMuaDZoID0gMHgyQjAxOTlGQztcbiAgICAgIHRoaXMuaDZsID0gMHgyQzg1QjhBQTtcbiAgICAgIHRoaXMuaDdoID0gMHgwRUI3MkREQztcbiAgICAgIHRoaXMuaDdsID0gMHg4MUM1MkNBMjtcbiAgICB9IGVsc2UgaWYgKGJpdHMgPT0gMjI0KSB7XG4gICAgICB0aGlzLmgwaCA9IDB4OEMzRDM3Qzg7XG4gICAgICB0aGlzLmgwbCA9IDB4MTk1NDREQTI7XG4gICAgICB0aGlzLmgxaCA9IDB4NzNFMTk5NjY7XG4gICAgICB0aGlzLmgxbCA9IDB4ODlEQ0Q0RDY7XG4gICAgICB0aGlzLmgyaCA9IDB4MURGQUI3QUU7XG4gICAgICB0aGlzLmgybCA9IDB4MzJGRjlDODI7XG4gICAgICB0aGlzLmgzaCA9IDB4Njc5REQ1MTQ7XG4gICAgICB0aGlzLmgzbCA9IDB4NTgyRjlGQ0Y7XG4gICAgICB0aGlzLmg0aCA9IDB4MEY2RDJCNjk7XG4gICAgICB0aGlzLmg0bCA9IDB4N0JENDREQTg7XG4gICAgICB0aGlzLmg1aCA9IDB4NzdFMzZGNzM7XG4gICAgICB0aGlzLmg1bCA9IDB4MDRDNDg5NDI7XG4gICAgICB0aGlzLmg2aCA9IDB4M0Y5RDg1QTg7XG4gICAgICB0aGlzLmg2bCA9IDB4NkExRDM2Qzg7XG4gICAgICB0aGlzLmg3aCA9IDB4MTExMkU2QUQ7XG4gICAgICB0aGlzLmg3bCA9IDB4OTFENjkyQTE7XG4gICAgfSBlbHNlIHsgLy8gNTEyXG4gICAgICB0aGlzLmgwaCA9IDB4NkEwOUU2Njc7XG4gICAgICB0aGlzLmgwbCA9IDB4RjNCQ0M5MDg7XG4gICAgICB0aGlzLmgxaCA9IDB4QkI2N0FFODU7XG4gICAgICB0aGlzLmgxbCA9IDB4ODRDQUE3M0I7XG4gICAgICB0aGlzLmgyaCA9IDB4M0M2RUYzNzI7XG4gICAgICB0aGlzLmgybCA9IDB4RkU5NEY4MkI7XG4gICAgICB0aGlzLmgzaCA9IDB4QTU0RkY1M0E7XG4gICAgICB0aGlzLmgzbCA9IDB4NUYxRDM2RjE7XG4gICAgICB0aGlzLmg0aCA9IDB4NTEwRTUyN0Y7XG4gICAgICB0aGlzLmg0bCA9IDB4QURFNjgyRDE7XG4gICAgICB0aGlzLmg1aCA9IDB4OUIwNTY4OEM7XG4gICAgICB0aGlzLmg1bCA9IDB4MkIzRTZDMUY7XG4gICAgICB0aGlzLmg2aCA9IDB4MUY4M0Q5QUI7XG4gICAgICB0aGlzLmg2bCA9IDB4RkI0MUJENkI7XG4gICAgICB0aGlzLmg3aCA9IDB4NUJFMENEMTk7XG4gICAgICB0aGlzLmg3bCA9IDB4MTM3RTIxNzk7XG4gICAgfVxuICAgIHRoaXMuYml0cyA9IGJpdHM7XG5cbiAgICB0aGlzLmJsb2NrID0gdGhpcy5zdGFydCA9IHRoaXMuYnl0ZXMgPSB0aGlzLmhCeXRlcyA9IDA7XG4gICAgdGhpcy5maW5hbGl6ZWQgPSB0aGlzLmhhc2hlZCA9IGZhbHNlO1xuICB9XG5cbiAgU2hhNTEyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgIGlmICh0aGlzLmZpbmFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEZJTkFMSVpFX0VSUk9SKTtcbiAgICB9XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBtZXNzYWdlO1xuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgbWVzc2FnZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIG5vdFN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBjb2RlLCBpbmRleCA9IDAsIGksIGxlbmd0aCA9IG1lc3NhZ2UubGVuZ3RoLCBibG9ja3MgPSB0aGlzLmJsb2NrcztcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKHRoaXMuaGFzaGVkKSB7XG4gICAgICAgIHRoaXMuaGFzaGVkID0gZmFsc2U7XG4gICAgICAgIGJsb2Nrc1swXSA9IHRoaXMuYmxvY2s7XG4gICAgICAgIGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICAgIGJsb2Nrc1s1XSA9IGJsb2Nrc1s2XSA9IGJsb2Nrc1s3XSA9IGJsb2Nrc1s4XSA9XG4gICAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgICBibG9ja3NbMTddID0gYmxvY2tzWzE4XSA9IGJsb2Nrc1sxOV0gPSBibG9ja3NbMjBdID1cbiAgICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgICBibG9ja3NbMjldID0gYmxvY2tzWzMwXSA9IGJsb2Nrc1szMV0gPSBibG9ja3NbMzJdID0gMDtcbiAgICAgIH1cblxuICAgICAgaWYobm90U3RyaW5nKSB7XG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCAxMjg7ICsraW5kZXgpIHtcbiAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBtZXNzYWdlW2luZGV4XSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IDEyODsgKytpbmRleCkge1xuICAgICAgICAgIGNvZGUgPSBtZXNzYWdlLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gY29kZSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4YzAgfCAoY29kZSA+PiA2KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ZDgwMCB8fCBjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ZTAgfCAoY29kZSA+PiAxMikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKG1lc3NhZ2UuY2hhckNvZGVBdCgrK2luZGV4KSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhmMCB8IChjb2RlID4+IDE4KSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiAxMikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGFzdEJ5dGVJbmRleCA9IGk7XG4gICAgICB0aGlzLmJ5dGVzICs9IGkgLSB0aGlzLnN0YXJ0O1xuICAgICAgaWYgKGkgPj0gMTI4KSB7XG4gICAgICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbMzJdO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaSAtIDEyODtcbiAgICAgICAgdGhpcy5oYXNoKCk7XG4gICAgICAgIHRoaXMuaGFzaGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5ieXRlcyA+IDQyOTQ5NjcyOTUpIHtcbiAgICAgIHRoaXMuaEJ5dGVzICs9IHRoaXMuYnl0ZXMgLyA0Mjk0OTY3Mjk2IDw8IDA7XG4gICAgICB0aGlzLmJ5dGVzID0gdGhpcy5ieXRlcyAlIDQyOTQ5NjcyOTY7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZmluYWxpemVkID0gdHJ1ZTtcbiAgICB2YXIgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGkgPSB0aGlzLmxhc3RCeXRlSW5kZXg7XG4gICAgYmxvY2tzWzMyXSA9IHRoaXMuYmxvY2s7XG4gICAgYmxvY2tzW2kgPj4gMl0gfD0gRVhUUkFbaSAmIDNdO1xuICAgIHRoaXMuYmxvY2sgPSBibG9ja3NbMzJdO1xuICAgIGlmIChpID49IDExMikge1xuICAgICAgaWYgKCF0aGlzLmhhc2hlZCkge1xuICAgICAgICB0aGlzLmhhc2goKTtcbiAgICAgIH1cbiAgICAgIGJsb2Nrc1swXSA9IHRoaXMuYmxvY2s7XG4gICAgICBibG9ja3NbMV0gPSBibG9ja3NbMl0gPSBibG9ja3NbM10gPSBibG9ja3NbNF0gPVxuICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgIGJsb2Nrc1s5XSA9IGJsb2Nrc1sxMF0gPSBibG9ja3NbMTFdID0gYmxvY2tzWzEyXSA9XG4gICAgICBibG9ja3NbMTNdID0gYmxvY2tzWzE0XSA9IGJsb2Nrc1sxNV0gPSBibG9ja3NbMTZdID1cbiAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgYmxvY2tzWzIxXSA9IGJsb2Nrc1syMl0gPSBibG9ja3NbMjNdID0gYmxvY2tzWzI0XSA9XG4gICAgICBibG9ja3NbMjVdID0gYmxvY2tzWzI2XSA9IGJsb2Nrc1syN10gPSBibG9ja3NbMjhdID1cbiAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgIH1cbiAgICBibG9ja3NbMzBdID0gdGhpcy5oQnl0ZXMgPDwgMyB8IHRoaXMuYnl0ZXMgPj4+IDI5O1xuICAgIGJsb2Nrc1szMV0gPSB0aGlzLmJ5dGVzIDw8IDM7XG4gICAgdGhpcy5oYXNoKCk7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5oYXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBqLCBzMGgsIHMwbCwgczFoLCBzMWwsIGMxLCBjMiwgYzMsIGM0LFxuICAgICAgYWJoLCBhYmwsIGRhaCwgZGFsLCBjZGgsIGNkbCwgYmNoLCBiY2wsXG4gICAgICBtYWpoLCBtYWpsLCB0MWgsIHQxbCwgdDJoLCB0MmwsIGNoaCwgY2hsO1xuXG4gICAgZm9yIChqID0gMzI7IGogPCAxNjA7IGogKz0gMikge1xuICAgICAgdDFoID0gYmxvY2tzW2ogLSAzMF07XG4gICAgICB0MWwgPSBibG9ja3NbaiAtIDI5XTtcbiAgICAgIHMwaCA9ICgodDFoID4+PiAxKSB8ICh0MWwgPDwgMzEpKSBeICgodDFoID4+PiA4KSB8ICh0MWwgPDwgMjQpKSBeICh0MWggPj4+IDcpO1xuICAgICAgczBsID0gKCh0MWwgPj4+IDEpIHwgKHQxaCA8PCAzMSkpIF4gKCh0MWwgPj4+IDgpIHwgKHQxaCA8PCAyNCkpIF4gKCh0MWwgPj4+IDcpIHwgdDFoIDw8IDI1KTtcblxuICAgICAgdDFoID0gYmxvY2tzW2ogLSA0XTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gM107XG4gICAgICBzMWggPSAoKHQxaCA+Pj4gMTkpIHwgKHQxbCA8PCAxMykpIF4gKCh0MWwgPj4+IDI5KSB8ICh0MWggPDwgMykpIF4gKHQxaCA+Pj4gNik7XG4gICAgICBzMWwgPSAoKHQxbCA+Pj4gMTkpIHwgKHQxaCA8PCAxMykpIF4gKCh0MWggPj4+IDI5KSB8ICh0MWwgPDwgMykpIF4gKCh0MWwgPj4+IDYpIHwgdDFoIDw8IDI2KTtcblxuICAgICAgdDFoID0gYmxvY2tzW2ogLSAzMl07XG4gICAgICB0MWwgPSBibG9ja3NbaiAtIDMxXTtcbiAgICAgIHQyaCA9IGJsb2Nrc1tqIC0gMTRdO1xuICAgICAgdDJsID0gYmxvY2tzW2ogLSAxM107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKHMwaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYmxvY2tzW2pdID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBibG9ja3NbaiArIDFdID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG4gICAgfVxuXG4gICAgdmFyIGFoID0gaDBoLCBhbCA9IGgwbCwgYmggPSBoMWgsIGJsID0gaDFsLCBjaCA9IGgyaCwgY2wgPSBoMmwsIGRoID0gaDNoLCBkbCA9IGgzbCwgZWggPSBoNGgsIGVsID0gaDRsLCBmaCA9IGg1aCwgZmwgPSBoNWwsIGdoID0gaDZoLCBnbCA9IGg2bCwgaGggPSBoN2gsIGhsID0gaDdsO1xuICAgIGJjaCA9IGJoICYgY2g7XG4gICAgYmNsID0gYmwgJiBjbDtcbiAgICBmb3IgKGogPSAwOyBqIDwgMTYwOyBqICs9IDgpIHtcbiAgICAgIHMwaCA9ICgoYWggPj4+IDI4KSB8IChhbCA8PCA0KSkgXiAoKGFsID4+PiAyKSB8IChhaCA8PCAzMCkpIF4gKChhbCA+Pj4gNykgfCAoYWggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoYWwgPj4+IDI4KSB8IChhaCA8PCA0KSkgXiAoKGFoID4+PiAyKSB8IChhbCA8PCAzMCkpIF4gKChhaCA+Pj4gNykgfCAoYWwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChlaCA+Pj4gMTQpIHwgKGVsIDw8IDE4KSkgXiAoKGVoID4+PiAxOCkgfCAoZWwgPDwgMTQpKSBeICgoZWwgPj4+IDkpIHwgKGVoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGVsID4+PiAxNCkgfCAoZWggPDwgMTgpKSBeICgoZWwgPj4+IDE4KSB8IChlaCA8PCAxNCkpIF4gKChlaCA+Pj4gOSkgfCAoZWwgPDwgMjMpKTtcblxuICAgICAgYWJoID0gYWggJiBiaDtcbiAgICAgIGFibCA9IGFsICYgYmw7XG4gICAgICBtYWpoID0gYWJoIF4gKGFoICYgY2gpIF4gYmNoO1xuICAgICAgbWFqbCA9IGFibCBeIChhbCAmIGNsKSBeIGJjbDtcblxuICAgICAgY2hoID0gKGVoICYgZmgpIF4gKH5laCAmIGdoKTtcbiAgICAgIGNobCA9IChlbCAmIGZsKSBeICh+ZWwgJiBnbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqICsgMV07XG4gICAgICB0MmggPSBLW2pdO1xuICAgICAgdDJsID0gS1tqICsgMV07XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoaGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoaGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChoaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGhoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGRsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoZGwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoZGggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGRoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgaGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGhsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGRoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBkbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGRoID4+PiAyOCkgfCAoZGwgPDwgNCkpIF4gKChkbCA+Pj4gMikgfCAoZGggPDwgMzApKSBeICgoZGwgPj4+IDcpIHwgKGRoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGRsID4+PiAyOCkgfCAoZGggPDwgNCkpIF4gKChkaCA+Pj4gMikgfCAoZGwgPDwgMzApKSBeICgoZGggPj4+IDcpIHwgKGRsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoaGggPj4+IDE0KSB8IChobCA8PCAxOCkpIF4gKChoaCA+Pj4gMTgpIHwgKGhsIDw8IDE0KSkgXiAoKGhsID4+PiA5KSB8IChoaCA8PCAyMykpO1xuICAgICAgczFsID0gKChobCA+Pj4gMTQpIHwgKGhoIDw8IDE4KSkgXiAoKGhsID4+PiAxOCkgfCAoaGggPDwgMTQpKSBeICgoaGggPj4+IDkpIHwgKGhsIDw8IDIzKSk7XG5cbiAgICAgIGRhaCA9IGRoICYgYWg7XG4gICAgICBkYWwgPSBkbCAmIGFsO1xuICAgICAgbWFqaCA9IGRhaCBeIChkaCAmIGJoKSBeIGFiaDtcbiAgICAgIG1hamwgPSBkYWwgXiAoZGwgJiBibCkgXiBhYmw7XG5cbiAgICAgIGNoaCA9IChoaCAmIGVoKSBeICh+aGggJiBmaCk7XG4gICAgICBjaGwgPSAoaGwgJiBlbCkgXiAofmhsICYgZmwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDJdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyAzXTtcbiAgICAgIHQyaCA9IEtbaiArIDJdO1xuICAgICAgdDJsID0gS1tqICsgM107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZ2wgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZ2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChnaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGdoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGNsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoY2wgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoY2ggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGNoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZ2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGdsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGNoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBjbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGNoID4+PiAyOCkgfCAoY2wgPDwgNCkpIF4gKChjbCA+Pj4gMikgfCAoY2ggPDwgMzApKSBeICgoY2wgPj4+IDcpIHwgKGNoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGNsID4+PiAyOCkgfCAoY2ggPDwgNCkpIF4gKChjaCA+Pj4gMikgfCAoY2wgPDwgMzApKSBeICgoY2ggPj4+IDcpIHwgKGNsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoZ2ggPj4+IDE0KSB8IChnbCA8PCAxOCkpIF4gKChnaCA+Pj4gMTgpIHwgKGdsIDw8IDE0KSkgXiAoKGdsID4+PiA5KSB8IChnaCA8PCAyMykpO1xuICAgICAgczFsID0gKChnbCA+Pj4gMTQpIHwgKGdoIDw8IDE4KSkgXiAoKGdsID4+PiAxOCkgfCAoZ2ggPDwgMTQpKSBeICgoZ2ggPj4+IDkpIHwgKGdsIDw8IDIzKSk7XG5cbiAgICAgIGNkaCA9IGNoICYgZGg7XG4gICAgICBjZGwgPSBjbCAmIGRsO1xuICAgICAgbWFqaCA9IGNkaCBeIChjaCAmIGFoKSBeIGRhaDtcbiAgICAgIG1hamwgPSBjZGwgXiAoY2wgJiBhbCkgXiBkYWw7XG5cbiAgICAgIGNoaCA9IChnaCAmIGhoKSBeICh+Z2ggJiBlaCk7XG4gICAgICBjaGwgPSAoZ2wgJiBobCkgXiAofmdsICYgZWwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDRdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyA1XTtcbiAgICAgIHQyaCA9IEtbaiArIDRdO1xuICAgICAgdDJsID0gS1tqICsgNV07XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZmwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChmaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGZoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoYmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoYmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGZsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBibCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBzMGggPSAoKGJoID4+PiAyOCkgfCAoYmwgPDwgNCkpIF4gKChibCA+Pj4gMikgfCAoYmggPDwgMzApKSBeICgoYmwgPj4+IDcpIHwgKGJoIDw8IDI1KSk7XG4gICAgICBzMGwgPSAoKGJsID4+PiAyOCkgfCAoYmggPDwgNCkpIF4gKChiaCA+Pj4gMikgfCAoYmwgPDwgMzApKSBeICgoYmggPj4+IDcpIHwgKGJsIDw8IDI1KSk7XG5cbiAgICAgIHMxaCA9ICgoZmggPj4+IDE0KSB8IChmbCA8PCAxOCkpIF4gKChmaCA+Pj4gMTgpIHwgKGZsIDw8IDE0KSkgXiAoKGZsID4+PiA5KSB8IChmaCA8PCAyMykpO1xuICAgICAgczFsID0gKChmbCA+Pj4gMTQpIHwgKGZoIDw8IDE4KSkgXiAoKGZsID4+PiAxOCkgfCAoZmggPDwgMTQpKSBeICgoZmggPj4+IDkpIHwgKGZsIDw8IDIzKSk7XG5cbiAgICAgIGJjaCA9IGJoICYgY2g7XG4gICAgICBiY2wgPSBibCAmIGNsO1xuICAgICAgbWFqaCA9IGJjaCBeIChiaCAmIGRoKSBeIGNkaDtcbiAgICAgIG1hamwgPSBiY2wgXiAoYmwgJiBkbCkgXiBjZGw7XG5cbiAgICAgIGNoaCA9IChmaCAmIGdoKSBeICh+ZmggJiBoaCk7XG4gICAgICBjaGwgPSAoZmwgJiBnbCkgXiAofmZsICYgaGwpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiArIDZdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyA3XTtcbiAgICAgIHQyaCA9IEtbaiArIDZdO1xuICAgICAgdDJsID0gS1tqICsgN107XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKSArIChjaGwgJiAweEZGRkYpICsgKHMxbCAmIDB4RkZGRikgKyAoZWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoY2hsID4+PiAxNikgKyAoczFsID4+PiAxNikgKyAoZWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAodDJoICYgMHhGRkZGKSArICh0MWggJiAweEZGRkYpICsgKGNoaCAmIDB4RkZGRikgKyAoczFoICYgMHhGRkZGKSArIChlaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGNoaCA+Pj4gMTYpICsgKHMxaCA+Pj4gMTYpICsgKGVoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAobWFqbCAmIDB4RkZGRikgKyAoczBsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKG1hamwgPj4+IDE2KSArIChzMGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAobWFqaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAobWFqaCA+Pj4gMTYpICsgKHMwaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIHQyaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgdDJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKGFsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAoYWwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgICAgYzMgPSAoYWggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKGFoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGVsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIGMxID0gKHQybCAmIDB4RkZGRikgKyAodDFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoYzIgPj4+IDE2KTtcbiAgICAgIGM0ID0gKHQyaCA+Pj4gMTYpICsgKHQxaCA+Pj4gMTYpICsgKGMzID4+PiAxNik7XG5cbiAgICAgIGFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICBhbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuICAgIH1cblxuICAgIGMxID0gKGgwbCAmIDB4RkZGRikgKyAoYWwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgwbCA+Pj4gMTYpICsgKGFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMGggJiAweEZGRkYpICsgKGFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgwaCA+Pj4gMTYpICsgKGFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDBoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgxbCAmIDB4RkZGRikgKyAoYmwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgxbCA+Pj4gMTYpICsgKGJsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMWggJiAweEZGRkYpICsgKGJoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgxaCA+Pj4gMTYpICsgKGJoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDFoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgybCAmIDB4RkZGRikgKyAoY2wgJiAweEZGRkYpO1xuICAgIGMyID0gKGgybCA+Pj4gMTYpICsgKGNsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoMmggJiAweEZGRkYpICsgKGNoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgyaCA+Pj4gMTYpICsgKGNoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oMmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGgzbCAmIDB4RkZGRikgKyAoZGwgJiAweEZGRkYpO1xuICAgIGMyID0gKGgzbCA+Pj4gMTYpICsgKGRsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoM2ggJiAweEZGRkYpICsgKGRoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGgzaCA+Pj4gMTYpICsgKGRoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDNoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oM2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg0bCAmIDB4RkZGRikgKyAoZWwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg0bCA+Pj4gMTYpICsgKGVsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNGggJiAweEZGRkYpICsgKGVoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg0aCA+Pj4gMTYpICsgKGVoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDRoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg1bCAmIDB4RkZGRikgKyAoZmwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg1bCA+Pj4gMTYpICsgKGZsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNWggJiAweEZGRkYpICsgKGZoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg1aCA+Pj4gMTYpICsgKGZoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDVoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg2bCAmIDB4RkZGRikgKyAoZ2wgJiAweEZGRkYpO1xuICAgIGMyID0gKGg2bCA+Pj4gMTYpICsgKGdsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoNmggJiAweEZGRkYpICsgKGdoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg2aCA+Pj4gMTYpICsgKGdoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDZoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oNmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgIGMxID0gKGg3bCAmIDB4RkZGRikgKyAoaGwgJiAweEZGRkYpO1xuICAgIGMyID0gKGg3bCA+Pj4gMTYpICsgKGhsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICBjMyA9IChoN2ggJiAweEZGRkYpICsgKGhoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgIGM0ID0gKGg3aCA+Pj4gMTYpICsgKGhoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgIHRoaXMuaDdoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgdGhpcy5oN2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmhleCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDBoID0gdGhpcy5oMGgsIGgwbCA9IHRoaXMuaDBsLCBoMWggPSB0aGlzLmgxaCwgaDFsID0gdGhpcy5oMWwsXG4gICAgICBoMmggPSB0aGlzLmgyaCwgaDJsID0gdGhpcy5oMmwsIGgzaCA9IHRoaXMuaDNoLCBoM2wgPSB0aGlzLmgzbCxcbiAgICAgIGg0aCA9IHRoaXMuaDRoLCBoNGwgPSB0aGlzLmg0bCwgaDVoID0gdGhpcy5oNWgsIGg1bCA9IHRoaXMuaDVsLFxuICAgICAgaDZoID0gdGhpcy5oNmgsIGg2bCA9IHRoaXMuaDZsLCBoN2ggPSB0aGlzLmg3aCwgaDdsID0gdGhpcy5oN2wsXG4gICAgICBiaXRzID0gdGhpcy5iaXRzO1xuXG4gICAgdmFyIGhleCA9IEhFWF9DSEFSU1soaDBoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDBoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMGggJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwbCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDBsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwbCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDBsICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gxaCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxbCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDFsID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMWwgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyaCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyaCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDJoICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgybCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmwgPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gybCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDNoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2ggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDNoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toM2ggJiAweDBGXTtcbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGgzbCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzbCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDNsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2wgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDNsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDNsICYgMHgwRl07XG4gICAgfVxuICAgIGlmIChiaXRzID49IDM4NCkge1xuICAgICAgaGV4ICs9IEhFWF9DSEFSU1soaDRoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDRoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0aCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNGggJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDRsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0bCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNGwgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDVoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1aCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNWggJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDVsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1bCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toNWwgJiAweDBGXTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBoZXggKz0gSEVYX0NIQVJTWyhoNmggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDZoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g2aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDZsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g2bCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2ggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2ggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDdoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g3aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2wgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2wgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDdsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g3bCAmIDB4MEZdO1xuICAgIH1cbiAgICByZXR1cm4gaGV4O1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUudG9TdHJpbmcgPSBTaGE1MTIucHJvdG90eXBlLmhleDtcblxuICBTaGE1MTIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgaDBoID0gdGhpcy5oMGgsIGgwbCA9IHRoaXMuaDBsLCBoMWggPSB0aGlzLmgxaCwgaDFsID0gdGhpcy5oMWwsXG4gICAgICBoMmggPSB0aGlzLmgyaCwgaDJsID0gdGhpcy5oMmwsIGgzaCA9IHRoaXMuaDNoLCBoM2wgPSB0aGlzLmgzbCxcbiAgICAgIGg0aCA9IHRoaXMuaDRoLCBoNGwgPSB0aGlzLmg0bCwgaDVoID0gdGhpcy5oNWgsIGg1bCA9IHRoaXMuaDVsLFxuICAgICAgaDZoID0gdGhpcy5oNmgsIGg2bCA9IHRoaXMuaDZsLCBoN2ggPSB0aGlzLmg3aCwgaDdsID0gdGhpcy5oN2wsXG4gICAgICBiaXRzID0gdGhpcy5iaXRzO1xuXG4gICAgdmFyIGFyciA9IFtcbiAgICAgIChoMGggPj4gMjQpICYgMHhGRiwgKGgwaCA+PiAxNikgJiAweEZGLCAoaDBoID4+IDgpICYgMHhGRiwgaDBoICYgMHhGRixcbiAgICAgIChoMGwgPj4gMjQpICYgMHhGRiwgKGgwbCA+PiAxNikgJiAweEZGLCAoaDBsID4+IDgpICYgMHhGRiwgaDBsICYgMHhGRixcbiAgICAgIChoMWggPj4gMjQpICYgMHhGRiwgKGgxaCA+PiAxNikgJiAweEZGLCAoaDFoID4+IDgpICYgMHhGRiwgaDFoICYgMHhGRixcbiAgICAgIChoMWwgPj4gMjQpICYgMHhGRiwgKGgxbCA+PiAxNikgJiAweEZGLCAoaDFsID4+IDgpICYgMHhGRiwgaDFsICYgMHhGRixcbiAgICAgIChoMmggPj4gMjQpICYgMHhGRiwgKGgyaCA+PiAxNikgJiAweEZGLCAoaDJoID4+IDgpICYgMHhGRiwgaDJoICYgMHhGRixcbiAgICAgIChoMmwgPj4gMjQpICYgMHhGRiwgKGgybCA+PiAxNikgJiAweEZGLCAoaDJsID4+IDgpICYgMHhGRiwgaDJsICYgMHhGRixcbiAgICAgIChoM2ggPj4gMjQpICYgMHhGRiwgKGgzaCA+PiAxNikgJiAweEZGLCAoaDNoID4+IDgpICYgMHhGRiwgaDNoICYgMHhGRlxuICAgIF07XG5cbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGFyci5wdXNoKChoM2wgPj4gMjQpICYgMHhGRiwgKGgzbCA+PiAxNikgJiAweEZGLCAoaDNsID4+IDgpICYgMHhGRiwgaDNsICYgMHhGRik7XG4gICAgfVxuICAgIGlmIChiaXRzID49IDM4NCkge1xuICAgICAgYXJyLnB1c2goXG4gICAgICAgIChoNGggPj4gMjQpICYgMHhGRiwgKGg0aCA+PiAxNikgJiAweEZGLCAoaDRoID4+IDgpICYgMHhGRiwgaDRoICYgMHhGRixcbiAgICAgICAgKGg0bCA+PiAyNCkgJiAweEZGLCAoaDRsID4+IDE2KSAmIDB4RkYsIChoNGwgPj4gOCkgJiAweEZGLCBoNGwgJiAweEZGLFxuICAgICAgICAoaDVoID4+IDI0KSAmIDB4RkYsIChoNWggPj4gMTYpICYgMHhGRiwgKGg1aCA+PiA4KSAmIDB4RkYsIGg1aCAmIDB4RkYsXG4gICAgICAgIChoNWwgPj4gMjQpICYgMHhGRiwgKGg1bCA+PiAxNikgJiAweEZGLCAoaDVsID4+IDgpICYgMHhGRiwgaDVsICYgMHhGRlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBhcnIucHVzaChcbiAgICAgICAgKGg2aCA+PiAyNCkgJiAweEZGLCAoaDZoID4+IDE2KSAmIDB4RkYsIChoNmggPj4gOCkgJiAweEZGLCBoNmggJiAweEZGLFxuICAgICAgICAoaDZsID4+IDI0KSAmIDB4RkYsIChoNmwgPj4gMTYpICYgMHhGRiwgKGg2bCA+PiA4KSAmIDB4RkYsIGg2bCAmIDB4RkYsXG4gICAgICAgIChoN2ggPj4gMjQpICYgMHhGRiwgKGg3aCA+PiAxNikgJiAweEZGLCAoaDdoID4+IDgpICYgMHhGRiwgaDdoICYgMHhGRixcbiAgICAgICAgKGg3bCA+PiAyNCkgJiAweEZGLCAoaDdsID4+IDE2KSAmIDB4RkYsIChoN2wgPj4gOCkgJiAweEZGLCBoN2wgJiAweEZGXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuYXJyYXkgPSBTaGE1MTIucHJvdG90eXBlLmRpZ2VzdDtcblxuICBTaGE1MTIucHJvdG90eXBlLmFycmF5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBiaXRzID0gdGhpcy5iaXRzO1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYml0cyAvIDgpO1xuICAgIHZhciBkYXRhVmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigwLCB0aGlzLmgwaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDQsIHRoaXMuaDBsKTtcbiAgICBkYXRhVmlldy5zZXRVaW50MzIoOCwgdGhpcy5oMWgpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigxMiwgdGhpcy5oMWwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigxNiwgdGhpcy5oMmgpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigyMCwgdGhpcy5oMmwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMigyNCwgdGhpcy5oM2gpO1xuXG4gICAgaWYgKGJpdHMgPj0gMjU2KSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoMjgsIHRoaXMuaDNsKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoMzIsIHRoaXMuaDRoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigzNiwgdGhpcy5oNGwpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDQwLCB0aGlzLmg1aCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDQsIHRoaXMuaDVsKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPT0gNTEyKSB7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDgsIHRoaXMuaDZoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig1MiwgdGhpcy5oNmwpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDU2LCB0aGlzLmg3aCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNjAsIHRoaXMuaDdsKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmZlcjtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYXNoID0gbmV3IFNoYTUxMih0aGlzLmJpdHMsIGZhbHNlKTtcbiAgICB0aGlzLmNvcHlUbyhoYXNoKTtcbiAgICByZXR1cm4gaGFzaDtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmNvcHlUbyA9IGZ1bmN0aW9uIChoYXNoKSB7XG4gICAgdmFyIGkgPSAwLCBhdHRycyA9IFtcbiAgICAgICdoMGgnLCAnaDBsJywgJ2gxaCcsICdoMWwnLCAnaDJoJywgJ2gybCcsICdoM2gnLCAnaDNsJywgJ2g0aCcsICdoNGwnLCAnaDVoJywgJ2g1bCcsICdoNmgnLCAnaDZsJywgJ2g3aCcsICdoN2wnLFxuICAgICAgJ3N0YXJ0JywgJ2J5dGVzJywgJ2hCeXRlcycsICdmaW5hbGl6ZWQnLCAnaGFzaGVkJywgJ2xhc3RCeXRlSW5kZXgnXG4gICAgXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyArK2kpIHtcbiAgICAgIGhhc2hbYXR0cnNbaV1dID0gdGhpc1thdHRyc1tpXV07XG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmJsb2Nrcy5sZW5ndGg7ICsraSkge1xuICAgICAgaGFzaC5ibG9ja3NbaV0gPSB0aGlzLmJsb2Nrc1tpXTtcbiAgICB9XG4gIH07XG5cbiAgZnVuY3Rpb24gSG1hY1NoYTUxMihrZXksIGJpdHMsIHNoYXJlZE1lbW9yeSkge1xuICAgIHZhciBub3RTdHJpbmcsIHR5cGUgPSB0eXBlb2Yga2V5O1xuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBrZXkuY29uc3RydWN0b3IgPT09IEFycmF5QnVmZmVyKSB7XG4gICAgICAgICAga2V5ID0gbmV3IFVpbnQ4QXJyYXkoa2V5KTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShrZXkpKSB7XG4gICAgICAgICAgaWYgKCFBUlJBWV9CVUZGRVIgfHwgIUFycmF5QnVmZmVyLmlzVmlldyhrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIG5vdFN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBrZXkubGVuZ3RoO1xuICAgIGlmICghbm90U3RyaW5nKSB7XG4gICAgICB2YXIgYnl0ZXMgPSBbXSwgbGVuZ3RoID0ga2V5Lmxlbmd0aCwgaW5kZXggPSAwLCBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgICAgICBjb2RlID0ga2V5LmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGlmIChjb2RlIDwgMHg4MCkge1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gY29kZTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGMwIHwgKGNvZGUgPj4gNikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHhkODAwIHx8IGNvZGUgPj0gMHhlMDAwKSB7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHhlMCB8IChjb2RlID4+IDEyKSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKGNvZGUgJiAweDNmKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChrZXkuY2hhckNvZGVBdCgrK2kpICYgMHgzZmYpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGYwIHwgKGNvZGUgPj4gMTgpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAga2V5ID0gYnl0ZXM7XG4gICAgfVxuXG4gICAgaWYgKGtleS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIGtleSA9IChuZXcgU2hhNTEyKGJpdHMsIHRydWUpKS51cGRhdGUoa2V5KS5hcnJheSgpO1xuICAgIH1cblxuICAgIHZhciBvS2V5UGFkID0gW10sIGlLZXlQYWQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEyODsgKytpKSB7XG4gICAgICB2YXIgYiA9IGtleVtpXSB8fCAwO1xuICAgICAgb0tleVBhZFtpXSA9IDB4NWMgXiBiO1xuICAgICAgaUtleVBhZFtpXSA9IDB4MzYgXiBiO1xuICAgIH1cblxuICAgIFNoYTUxMi5jYWxsKHRoaXMsIGJpdHMsIHNoYXJlZE1lbW9yeSk7XG5cbiAgICB0aGlzLnVwZGF0ZShpS2V5UGFkKTtcbiAgICB0aGlzLm9LZXlQYWQgPSBvS2V5UGFkO1xuICAgIHRoaXMuaW5uZXIgPSB0cnVlO1xuICAgIHRoaXMuc2hhcmVkTWVtb3J5ID0gc2hhcmVkTWVtb3J5O1xuICB9XG4gIEhtYWNTaGE1MTIucHJvdG90eXBlID0gbmV3IFNoYTUxMigpO1xuXG4gIEhtYWNTaGE1MTIucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUuY2FsbCh0aGlzKTtcbiAgICBpZiAodGhpcy5pbm5lcikge1xuICAgICAgdGhpcy5pbm5lciA9IGZhbHNlO1xuICAgICAgdmFyIGlubmVySGFzaCA9IHRoaXMuYXJyYXkoKTtcbiAgICAgIFNoYTUxMi5jYWxsKHRoaXMsIHRoaXMuYml0cywgdGhpcy5zaGFyZWRNZW1vcnkpO1xuICAgICAgdGhpcy51cGRhdGUodGhpcy5vS2V5UGFkKTtcbiAgICAgIHRoaXMudXBkYXRlKGlubmVySGFzaCk7XG4gICAgICBTaGE1MTIucHJvdG90eXBlLmZpbmFsaXplLmNhbGwodGhpcyk7XG4gICAgfVxuICB9O1xuXG4gIEhtYWNTaGE1MTIucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBoYXNoID0gbmV3IEhtYWNTaGE1MTIoW10sIHRoaXMuYml0cywgZmFsc2UpO1xuICAgIHRoaXMuY29weVRvKGhhc2gpO1xuICAgIGhhc2guaW5uZXIgPSB0aGlzLmlubmVyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vS2V5UGFkLmxlbmd0aDsgKytpKSB7XG4gICAgICBoYXNoLm9LZXlQYWRbaV0gPSB0aGlzLm9LZXlQYWRbaV07XG4gICAgfVxuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIHZhciBleHBvcnRzID0gY3JlYXRlTWV0aG9kKDUxMik7XG4gIGV4cG9ydHMuc2hhNTEyID0gZXhwb3J0cztcbiAgZXhwb3J0cy5zaGEzODQgPSBjcmVhdGVNZXRob2QoMzg0KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjU2ID0gY3JlYXRlTWV0aG9kKDI1Nik7XG4gIGV4cG9ydHMuc2hhNTEyXzIyNCA9IGNyZWF0ZU1ldGhvZCgyMjQpO1xuICBleHBvcnRzLnNoYTUxMi5obWFjID0gY3JlYXRlSG1hY01ldGhvZCg1MTIpO1xuICBleHBvcnRzLnNoYTM4NC5obWFjID0gY3JlYXRlSG1hY01ldGhvZCgzODQpO1xuICBleHBvcnRzLnNoYTUxMl8yNTYuaG1hYyA9IGNyZWF0ZUhtYWNNZXRob2QoMjU2KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjI0LmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDIyNCk7XG5cbiAgaWYgKENPTU1PTl9KUykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cztcbiAgfSBlbHNlIHtcbiAgICByb290LnNoYTUxMiA9IGV4cG9ydHMuc2hhNTEyO1xuICAgIHJvb3Quc2hhMzg0ID0gZXhwb3J0cy5zaGEzODQ7XG4gICAgcm9vdC5zaGE1MTJfMjU2ID0gZXhwb3J0cy5zaGE1MTJfMjU2O1xuICAgIHJvb3Quc2hhNTEyXzIyNCA9IGV4cG9ydHMuc2hhNTEyXzIyNDtcbiAgICBpZiAoQU1EKSB7XG4gICAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZXhwb3J0cztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiIsImltcG9ydCB7IHNoYTUxMiB9IGZyb20gXCJqcy1zaGE1MTJcIjtcbmltcG9ydCB7IFByb2dyZXNzQ2FsbGJhY2ssIFNpZ25lZENoYWxsZW5nZSB9IGZyb20gXCIuL2luZGV4XCI7XG5cbmNvbnN0IGNvbXB1dGVDb2xsaXNpb25JbnRlZ2VyID0gYXN5bmMgKHtcbiAgaW5wdXQsXG4gIGV4cGVjdGVkLFxufToge1xuICBpbnB1dDogc3RyaW5nO1xuICBleHBlY3RlZDogc3RyaW5nO1xufSkgPT4ge1xuICBsZXQgYXR0ZW1wdCA9IDA7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBoYXNoID0gc2hhNTEyKGAke2lucHV0fToke2F0dGVtcHR9YCk7XG4gICAgaWYgKGF0dGVtcHQgJSA0ZTQgPT09IDApIHtcbiAgICAgIGF3YWl0IHNsZWVwKDApO1xuICAgIH1cbiAgICBpZiAoaGFzaC5zdWJzdHJpbmcoMCwgZXhwZWN0ZWQubGVuZ3RoKSA9PT0gZXhwZWN0ZWQpIHtcbiAgICAgIHJldHVybiBhdHRlbXB0LnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIGF0dGVtcHQrKztcbiAgfVxufTtcblxuY29uc3Qgc2xlZXAgPSAodGltZTogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocikgPT4gc2V0VGltZW91dChyLCB0aW1lKSk7XG5cbmNvbnN0IGNvbXB1dGVTb2x1dGlvbnMgPSBhc3luYyAoe1xuICBjaGFsbGVuZ2UsXG4gIG9uUHJvZ3Jlc3MsXG59OiB7XG4gIGNoYWxsZW5nZTogU2lnbmVkQ2hhbGxlbmdlO1xuICBvblByb2dyZXNzPzogUHJvZ3Jlc3NDYWxsYmFjaztcbn0pID0+IHtcbiAgY29uc3QgeyBub25jZSwgZGlmZmljdWx0eSwgaGFyZG5lc3MgfSA9IGNoYWxsZW5nZS5wYXlsb2FkO1xuXG4gIGNvbnN0IHNvbHV0aW9ucyA9IFtdO1xuXG4gIG9uUHJvZ3Jlc3M/LigwKTtcblxuICBmb3IgKGxldCBoID0gMDsgaCA8IGhhcmRuZXNzOyBoKyspIHtcbiAgICBjb25zdCBzb2x1dGlvbiA9IGF3YWl0IGNvbXB1dGVDb2xsaXNpb25JbnRlZ2VyKHtcbiAgICAgIGlucHV0OiBgJHtub25jZX06JHtofWAsXG4gICAgICBleHBlY3RlZDogXCIwXCIucmVwZWF0KGRpZmZpY3VsdHkpLFxuICAgIH0pO1xuICAgIHNvbHV0aW9ucy5wdXNoKHNvbHV0aW9uKTtcbiAgICBvblByb2dyZXNzPy4oc29sdXRpb25zLmxlbmd0aCAvIGhhcmRuZXNzKTtcbiAgICBhd2FpdCBzbGVlcCgwKTtcbiAgfVxuXG4gIHJldHVybiBzb2x1dGlvbnM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21wdXRlU29sdXRpb25zO1xuIiwiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20pIHtcclxuICAgIGZvciAodmFyIGkgPSAwLCBpbCA9IGZyb20ubGVuZ3RoLCBqID0gdG8ubGVuZ3RoOyBpIDwgaWw7IGkrKywgaisrKVxyXG4gICAgICAgIHRvW2pdID0gZnJvbVtpXTtcclxuICAgIHJldHVybiB0bztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgY29tcHV0ZVNvbHV0aW9ucyBmcm9tIFwiLi9jb21wdXRlU29sdXRpb25zXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX186IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgX19CT1RQT0lTT05fSEVBUlRCRUFUX0RJU1BBVENIRVJfXzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIEJvdHBvaXNvbk9wdGlvbnMgPSB7IHB1YmxpY0tleTogc3RyaW5nIH07XG5cbnR5cGUgQ2hhbGxlbmdlT3B0aW9ucyA9IHsgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2sgfTtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayA9IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBTaWduZWRDaGFsbGVuZ2UgPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBub25jZTogc3RyaW5nO1xuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcbiAgICBoYXJkbmVzczogbnVtYmVyO1xuICB9O1xufTtcblxuY29uc3QgQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLmJvdHBvaXNvbi5jb21cIjtcblxuY29uc3QgaW5pdCA9ICgpID0+IHtcbiAgYWRkU3VibWl0TGlzdGVuZXIoKTtcbiAgYWRkSGVhcnRiZWF0RGlzcGF0Y2hlcigpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQm90cG9pc29uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwdWJsaWNLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih7IHB1YmxpY0tleSB9OiBCb3Rwb2lzb25PcHRpb25zKSB7XG4gICAgdGhpcy5wdWJsaWNLZXkgPSBwdWJsaWNLZXk7XG4gIH1cblxuICBzdGF0aWMgaW5pdCgpIHtcbiAgICBpbml0KCk7XG4gIH1cblxuICBhc3luYyBjaGFsbGVuZ2Uob3B0aW9ucz86IENoYWxsZW5nZU9wdGlvbnMpIHtcbiAgICBjb25zdCB7IG9uUHJvZ3Jlc3MgfSA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vY2hhbGxlbmdlYCwge1xuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBwdWJsaWNLZXk6IHRoaXMucHVibGljS2V5LFxuICAgICAgICBob3N0bmFtZTogbG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIFNpZ25lZENoYWxsZW5nZTtcblxuICAgIGNvbnN0IHNvbHV0aW9ucyA9IGF3YWl0IGNvbXB1dGVTb2x1dGlvbnMoe1xuICAgICAgY2hhbGxlbmdlLFxuICAgICAgb25Qcm9ncmVzcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBidG9hKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBjaGFsbGVuZ2UsXG4gICAgICAgIHNvbHV0aW9ucyxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzb2x1dGlvbjogc2VyaWFsaXplZCxcbiAgICB9O1xuICB9XG59XG5cbmNvbnN0IGFwcGVuZE9yVXBkYXRlQm90cG9pc29uSW5wdXQgPSAoe1xuICBmb3JtRWxlbWVudCxcbiAgaWQsXG4gIG5hbWUsXG4gIHZhbHVlLFxufToge1xuICBmb3JtRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn0pID0+IHtcbiAgbGV0IGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICBpZiAoIWlucHV0KSB7XG4gICAgY29uc3QgbmV3SW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcImhpZGRlblwiKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBpZCk7XG4gICAgbmV3SW5wdXQuc2V0QXR0cmlidXRlKFwibmFtZVwiLCBuYW1lKTtcbiAgICBmb3JtRWxlbWVudC5hcHBlbmRDaGlsZChuZXdJbnB1dCk7XG4gICAgaW5wdXQgPSBuZXdJbnB1dDtcbiAgfVxuICBpbnB1dC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLCB2YWx1ZSk7XG59O1xuXG5jb25zdCBhZGRTdWJtaXRMaXN0ZW5lciA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGlmICghd2luZG93Ll9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fKSB7XG4gICAgICB3aW5kb3cuX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX18gPSB0cnVlO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCAoZXZlbnQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmb3JtRXZlbnRUYXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgaWYgKGZvcm1FdmVudFRhcmdldCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybUVsZW1lbnQgPSBmb3JtRXZlbnRUYXJnZXQgYXMgSFRNTEZvcm1FbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgcHVibGljS2V5ID0gZm9ybUVsZW1lbnQuZGF0YXNldC5ib3Rwb2lzb25QdWJsaWNLZXk7XG4gICAgICAgICAgICBpZiAocHVibGljS2V5KSB7XG4gICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgbmV3IEN1c3RvbUV2ZW50KFwiYm90cG9pc29uLWNoYWxsZW5nZS1zdGFydFwiKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb25zdCBib3Rwb2lzb24gPSBuZXcgQm90cG9pc29uKHtcbiAgICAgICAgICAgICAgICBwdWJsaWNLZXksXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCBpZCA9IGBfYm90cG9pc29uYDtcbiAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGlkO1xuICAgICAgICAgICAgICBib3Rwb2lzb25cbiAgICAgICAgICAgICAgICAuY2hhbGxlbmdlKClcbiAgICAgICAgICAgICAgICAudGhlbigoeyBzb2x1dGlvbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJib3Rwb2lzb24tY2hhbGxlbmdlLXN1Y2Nlc3NcIilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBhcHBlbmRPclVwZGF0ZUJvdHBvaXNvbklucHV0KHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogc29sdXRpb24sXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIEhUTUxGb3JtRWxlbWVudC5wcm90b3R5cGUuc3VibWl0LmNhbGwoZm9ybUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJib3Rwb2lzb24tY2hhbGxlbmdlLWVycm9yXCIpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGFkZEhlYXJ0YmVhdERpc3BhdGNoZXIgPSAoKSA9PiB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBpZiAoIXdpbmRvdy5fX0JPVFBPSVNPTl9IRUFSVEJFQVRfRElTUEFUQ0hFUl9fKSB7XG4gICAgICB3aW5kb3cuX19CT1RQT0lTT05fSEVBUlRCRUFUX0RJU1BBVENIRVJfXyA9IHRydWU7XG5cbiAgICAgIGxldCB3YWl0aW5nVGltZUluZGV4ID0gMDtcbiAgICAgIGNvbnN0IHdhaXRpbmdUaW1lcyA9IFswLCAxMDAwLCAzMDAwLCA2MDAwLCAxICogNjAwMDAsIDUgKiA2MDAwMF07XG5cbiAgICAgIGNvbnN0IGRpc3BhdGNoID0gKCkgPT4ge1xuICAgICAgICBjb25zdCB3YWl0aW5nVGltZSA9IHdhaXRpbmdUaW1lc1t3YWl0aW5nVGltZUluZGV4XTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdm9pZCBmZXRjaChgJHtCQVNFX1VSTH0vaGVhcnRiZWF0YCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICAgIEFjY2VwdDogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBob3N0bmFtZTogbG9jYXRpb24uaG9zdG5hbWUsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAod2FpdGluZ1RpbWVJbmRleCA8IHdhaXRpbmdUaW1lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB3YWl0aW5nVGltZUluZGV4ICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGRpc3BhdGNoKCk7XG4gICAgICAgIH0sIHdhaXRpbmdUaW1lKTtcbiAgICAgIH07XG5cbiAgICAgIGRpc3BhdGNoKCk7XG4gICAgfVxuICB9XG59O1xuXG5pbml0KCk7XG4iXSwic291cmNlUm9vdCI6IiJ9
2
+ !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Botpoison",[],e):"object"==typeof exports?exports.Botpoison=e():t.Botpoison=e()}("undefined"!=typeof self?self:this,(function(){return(()=>{var t={434:(t,e,r)=>{var n;!function(){"use strict";var e="input is invalid type",i="object"==typeof window,h=i?window:{};h.JS_SHA512_NO_WINDOW&&(i=!1);var o=!i&&"object"==typeof self;!h.JS_SHA512_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node?h=r.g:o&&(h=self);var s=!h.JS_SHA512_NO_COMMON_JS&&t.exports,a=r.amdO,l=!h.JS_SHA512_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,c="0123456789abcdef".split(""),u=[-2147483648,8388608,32768,128],f=[24,16,8,0],p=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],y=["hex","array","digest","arrayBuffer"],d=[];!h.JS_SHA512_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!l||!h.JS_SHA512_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var b=function(t,e){return function(r){return new m(e,!0).update(r)[t]()}},_=function(t){var e=b("hex",t);e.create=function(){return new m(t)},e.update=function(t){return e.create().update(t)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=b(n,t)}return e},v=function(t,e){return function(r,n){return new g(r,e,!0).update(n)[t]()}},w=function(t){var e=v("hex",t);e.create=function(e){return new g(e,t)},e.update=function(t,r){return e.create(t).update(r)};for(var r=0;r<y.length;++r){var n=y[r];e[n]=v(n,t)}return e};function m(t,e){e?(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=d[16]=d[17]=d[18]=d[19]=d[20]=d[21]=d[22]=d[23]=d[24]=d[25]=d[26]=d[27]=d[28]=d[29]=d[30]=d[31]=d[32]=0,this.blocks=d):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],384==t?(this.h0h=3418070365,this.h0l=3238371032,this.h1h=1654270250,this.h1l=914150663,this.h2h=2438529370,this.h2l=812702999,this.h3h=355462360,this.h3l=4144912697,this.h4h=1731405415,this.h4l=4290775857,this.h5h=2394180231,this.h5l=1750603025,this.h6h=3675008525,this.h6l=1694076839,this.h7h=1203062813,this.h7l=3204075428):256==t?(this.h0h=573645204,this.h0l=4230739756,this.h1h=2673172387,this.h1l=3360449730,this.h2h=596883563,this.h2l=1867755857,this.h3h=2520282905,this.h3l=1497426621,this.h4h=2519219938,this.h4l=2827943907,this.h5h=3193839141,this.h5l=1401305490,this.h6h=721525244,this.h6l=746961066,this.h7h=246885852,this.h7l=2177182882):224==t?(this.h0h=2352822216,this.h0l=424955298,this.h1h=1944164710,this.h1l=2312950998,this.h2h=502970286,this.h2l=855612546,this.h3h=1738396948,this.h3l=1479516111,this.h4h=258812777,this.h4l=2077511080,this.h5h=2011393907,this.h5l=79989058,this.h6h=1067287976,this.h6l=1780299464,this.h7h=286451373,this.h7l=2446758561):(this.h0h=1779033703,this.h0l=4089235720,this.h1h=3144134277,this.h1l=2227873595,this.h2h=1013904242,this.h2l=4271175723,this.h3h=2773480762,this.h3l=1595750129,this.h4h=1359893119,this.h4l=2917565137,this.h5h=2600822924,this.h5l=725511199,this.h6h=528734635,this.h6l=4215389547,this.h7h=1541459225,this.h7l=327033209),this.bits=t,this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1}function g(t,r,n){var i,h=typeof t;if("string"!==h){if("object"!==h)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);i=!0}var o=t.length;if(!i){for(var s,a=[],c=(o=t.length,0),u=0;u<o;++u)(s=t.charCodeAt(u))<128?a[c++]=s:s<2048?(a[c++]=192|s>>6,a[c++]=128|63&s):s<55296||s>=57344?(a[c++]=224|s>>12,a[c++]=128|s>>6&63,a[c++]=128|63&s):(s=65536+((1023&s)<<10|1023&t.charCodeAt(++u)),a[c++]=240|s>>18,a[c++]=128|s>>12&63,a[c++]=128|s>>6&63,a[c++]=128|63&s);t=a}t.length>128&&(t=new m(r,!0).update(t).array());var f=[],p=[];for(u=0;u<128;++u){var y=t[u]||0;f[u]=92^y,p[u]=54^y}m.call(this,r,n),this.update(p),this.oKeyPad=f,this.inner=!0,this.sharedMemory=n}m.prototype.update=function(t){if(this.finalized)throw new Error("finalize already called");var r,n=typeof t;if("string"!==n){if("object"!==n)throw new Error(e);if(null===t)throw new Error(e);if(l&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||l&&ArrayBuffer.isView(t)))throw new Error(e);r=!0}for(var i,h,o=0,s=t.length,a=this.blocks;o<s;){if(this.hashed&&(this.hashed=!1,a[0]=this.block,a[1]=a[2]=a[3]=a[4]=a[5]=a[6]=a[7]=a[8]=a[9]=a[10]=a[11]=a[12]=a[13]=a[14]=a[15]=a[16]=a[17]=a[18]=a[19]=a[20]=a[21]=a[22]=a[23]=a[24]=a[25]=a[26]=a[27]=a[28]=a[29]=a[30]=a[31]=a[32]=0),r)for(h=this.start;o<s&&h<128;++o)a[h>>2]|=t[o]<<f[3&h++];else for(h=this.start;o<s&&h<128;++o)(i=t.charCodeAt(o))<128?a[h>>2]|=i<<f[3&h++]:i<2048?(a[h>>2]|=(192|i>>6)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):i<55296||i>=57344?(a[h>>2]|=(224|i>>12)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]):(i=65536+((1023&i)<<10|1023&t.charCodeAt(++o)),a[h>>2]|=(240|i>>18)<<f[3&h++],a[h>>2]|=(128|i>>12&63)<<f[3&h++],a[h>>2]|=(128|i>>6&63)<<f[3&h++],a[h>>2]|=(128|63&i)<<f[3&h++]);this.lastByteIndex=h,this.bytes+=h-this.start,h>=128?(this.block=a[32],this.start=h-128,this.hash(),this.hashed=!0):this.start=h}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},m.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[32]=this.block,t[e>>2]|=u[3&e],this.block=t[32],e>=112&&(this.hashed||this.hash(),t[0]=this.block,t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=t[16]=t[17]=t[18]=t[19]=t[20]=t[21]=t[22]=t[23]=t[24]=t[25]=t[26]=t[27]=t[28]=t[29]=t[30]=t[31]=t[32]=0),t[30]=this.hBytes<<3|this.bytes>>>29,t[31]=this.bytes<<3,this.hash()}},m.prototype.hash=function(){var t,e,r,n,i,h,o,s,a,l,c,u,f,y,d,b,_,v,w,m,g,O,S,A,E,P=this.h0h,j=this.h0l,T=this.h1h,x=this.h1l,B=this.h2h,I=this.h2l,U=this.h3h,N=this.h3l,R=this.h4h,k=this.h4l,C=this.h5h,z=this.h5l,M=this.h6h,D=this.h6l,H=this.h7h,J=this.h7l,K=this.blocks;for(t=32;t<160;t+=2)e=((m=K[t-30])>>>1|(g=K[t-29])<<31)^(m>>>8|g<<24)^m>>>7,r=(g>>>1|m<<31)^(g>>>8|m<<24)^(g>>>7|m<<25),n=((m=K[t-4])>>>19|(g=K[t-3])<<13)^(g>>>29|m<<3)^m>>>6,i=(g>>>19|m<<13)^(m>>>29|g<<3)^(g>>>6|m<<26),m=K[t-32],g=K[t-31],a=((O=K[t-14])>>>16)+(m>>>16)+(e>>>16)+(n>>>16)+((s=(65535&O)+(65535&m)+(65535&e)+(65535&n)+((o=((S=K[t-13])>>>16)+(g>>>16)+(r>>>16)+(i>>>16)+((h=(65535&S)+(65535&g)+(65535&r)+(65535&i))>>>16))>>>16))>>>16),K[t]=a<<16|65535&s,K[t+1]=o<<16|65535&h;var F=P,V=j,L=T,G=x,W=B,Y=I,q=U,Q=N,X=R,Z=k,$=C,tt=z,et=M,rt=D,nt=H,it=J;for(b=L&W,_=G&Y,t=0;t<160;t+=8)e=(F>>>28|V<<4)^(V>>>2|F<<30)^(V>>>7|F<<25),r=(V>>>28|F<<4)^(F>>>2|V<<30)^(F>>>7|V<<25),n=(X>>>14|Z<<18)^(X>>>18|Z<<14)^(Z>>>9|X<<23),i=(Z>>>14|X<<18)^(Z>>>18|X<<14)^(X>>>9|Z<<23),v=(l=F&L)^F&W^b,w=(c=V&G)^V&Y^_,A=X&$^~X&et,E=Z&tt^~Z&rt,m=K[t],g=K[t+1],m=(a=((O=p[t])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(nt>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&nt)+((o=((S=p[t+1])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(it>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&it))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,nt=(a=(q>>>16)+(m>>>16)+((s=(65535&q)+(65535&m)+((o=(Q>>>16)+(g>>>16)+((h=(65535&Q)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,it=o<<16|65535&h,e=((q=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Q=o<<16|65535&h)<<4)^(Q>>>2|q<<30)^(Q>>>7|q<<25),r=(Q>>>28|q<<4)^(q>>>2|Q<<30)^(q>>>7|Q<<25),n=(nt>>>14|it<<18)^(nt>>>18|it<<14)^(it>>>9|nt<<23),i=(it>>>14|nt<<18)^(it>>>18|nt<<14)^(nt>>>9|it<<23),v=(u=q&F)^q&L^l,w=(f=Q&V)^Q&G^c,A=nt&X^~nt&$,E=it&Z^~it&tt,m=K[t+2],g=K[t+3],m=(a=((O=p[t+2])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(et>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&et)+((o=((S=p[t+3])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(rt>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&rt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,et=(a=(W>>>16)+(m>>>16)+((s=(65535&W)+(65535&m)+((o=(Y>>>16)+(g>>>16)+((h=(65535&Y)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,rt=o<<16|65535&h,e=((W=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(Y=o<<16|65535&h)<<4)^(Y>>>2|W<<30)^(Y>>>7|W<<25),r=(Y>>>28|W<<4)^(W>>>2|Y<<30)^(W>>>7|Y<<25),n=(et>>>14|rt<<18)^(et>>>18|rt<<14)^(rt>>>9|et<<23),i=(rt>>>14|et<<18)^(rt>>>18|et<<14)^(et>>>9|rt<<23),v=(y=W&q)^W&F^u,w=(d=Y&Q)^Y&V^f,A=et&nt^~et&X,E=rt&it^~rt&Z,m=K[t+4],g=K[t+5],m=(a=((O=p[t+4])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+($>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&$)+((o=((S=p[t+5])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(tt>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&tt))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,$=(a=(L>>>16)+(m>>>16)+((s=(65535&L)+(65535&m)+((o=(G>>>16)+(g>>>16)+((h=(65535&G)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,tt=o<<16|65535&h,e=((L=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s)>>>28|(G=o<<16|65535&h)<<4)^(G>>>2|L<<30)^(G>>>7|L<<25),r=(G>>>28|L<<4)^(L>>>2|G<<30)^(L>>>7|G<<25),n=($>>>14|tt<<18)^($>>>18|tt<<14)^(tt>>>9|$<<23),i=(tt>>>14|$<<18)^(tt>>>18|$<<14)^($>>>9|tt<<23),v=(b=L&W)^L&q^y,w=(_=G&Y)^G&Q^d,A=$&et^~$&nt,E=tt&rt^~tt&it,m=K[t+6],g=K[t+7],m=(a=((O=p[t+6])>>>16)+(m>>>16)+(A>>>16)+(n>>>16)+(X>>>16)+((s=(65535&O)+(65535&m)+(65535&A)+(65535&n)+(65535&X)+((o=((S=p[t+7])>>>16)+(g>>>16)+(E>>>16)+(i>>>16)+(Z>>>16)+((h=(65535&S)+(65535&g)+(65535&E)+(65535&i)+(65535&Z))>>>16))>>>16))>>>16))<<16|65535&s,g=o<<16|65535&h,O=(a=(v>>>16)+(e>>>16)+((s=(65535&v)+(65535&e)+((o=(w>>>16)+(r>>>16)+((h=(65535&w)+(65535&r))>>>16))>>>16))>>>16))<<16|65535&s,S=o<<16|65535&h,X=(a=(F>>>16)+(m>>>16)+((s=(65535&F)+(65535&m)+((o=(V>>>16)+(g>>>16)+((h=(65535&V)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,Z=o<<16|65535&h,F=(a=(O>>>16)+(m>>>16)+((s=(65535&O)+(65535&m)+((o=(S>>>16)+(g>>>16)+((h=(65535&S)+(65535&g))>>>16))>>>16))>>>16))<<16|65535&s,V=o<<16|65535&h;a=(P>>>16)+(F>>>16)+((s=(65535&P)+(65535&F)+((o=(j>>>16)+(V>>>16)+((h=(65535&j)+(65535&V))>>>16))>>>16))>>>16),this.h0h=a<<16|65535&s,this.h0l=o<<16|65535&h,a=(T>>>16)+(L>>>16)+((s=(65535&T)+(65535&L)+((o=(x>>>16)+(G>>>16)+((h=(65535&x)+(65535&G))>>>16))>>>16))>>>16),this.h1h=a<<16|65535&s,this.h1l=o<<16|65535&h,a=(B>>>16)+(W>>>16)+((s=(65535&B)+(65535&W)+((o=(I>>>16)+(Y>>>16)+((h=(65535&I)+(65535&Y))>>>16))>>>16))>>>16),this.h2h=a<<16|65535&s,this.h2l=o<<16|65535&h,a=(U>>>16)+(q>>>16)+((s=(65535&U)+(65535&q)+((o=(N>>>16)+(Q>>>16)+((h=(65535&N)+(65535&Q))>>>16))>>>16))>>>16),this.h3h=a<<16|65535&s,this.h3l=o<<16|65535&h,a=(R>>>16)+(X>>>16)+((s=(65535&R)+(65535&X)+((o=(k>>>16)+(Z>>>16)+((h=(65535&k)+(65535&Z))>>>16))>>>16))>>>16),this.h4h=a<<16|65535&s,this.h4l=o<<16|65535&h,a=(C>>>16)+($>>>16)+((s=(65535&C)+(65535&$)+((o=(z>>>16)+(tt>>>16)+((h=(65535&z)+(65535&tt))>>>16))>>>16))>>>16),this.h5h=a<<16|65535&s,this.h5l=o<<16|65535&h,a=(M>>>16)+(et>>>16)+((s=(65535&M)+(65535&et)+((o=(D>>>16)+(rt>>>16)+((h=(65535&D)+(65535&rt))>>>16))>>>16))>>>16),this.h6h=a<<16|65535&s,this.h6l=o<<16|65535&h,a=(H>>>16)+(nt>>>16)+((s=(65535&H)+(65535&nt)+((o=(J>>>16)+(it>>>16)+((h=(65535&J)+(65535&it))>>>16))>>>16))>>>16),this.h7h=a<<16|65535&s,this.h7l=o<<16|65535&h},m.prototype.hex=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,u=this.h5h,f=this.h5l,p=this.h6h,y=this.h6l,d=this.h7h,b=this.h7l,_=this.bits,v=c[t>>28&15]+c[t>>24&15]+c[t>>20&15]+c[t>>16&15]+c[t>>12&15]+c[t>>8&15]+c[t>>4&15]+c[15&t]+c[e>>28&15]+c[e>>24&15]+c[e>>20&15]+c[e>>16&15]+c[e>>12&15]+c[e>>8&15]+c[e>>4&15]+c[15&e]+c[r>>28&15]+c[r>>24&15]+c[r>>20&15]+c[r>>16&15]+c[r>>12&15]+c[r>>8&15]+c[r>>4&15]+c[15&r]+c[n>>28&15]+c[n>>24&15]+c[n>>20&15]+c[n>>16&15]+c[n>>12&15]+c[n>>8&15]+c[n>>4&15]+c[15&n]+c[i>>28&15]+c[i>>24&15]+c[i>>20&15]+c[i>>16&15]+c[i>>12&15]+c[i>>8&15]+c[i>>4&15]+c[15&i]+c[h>>28&15]+c[h>>24&15]+c[h>>20&15]+c[h>>16&15]+c[h>>12&15]+c[h>>8&15]+c[h>>4&15]+c[15&h]+c[o>>28&15]+c[o>>24&15]+c[o>>20&15]+c[o>>16&15]+c[o>>12&15]+c[o>>8&15]+c[o>>4&15]+c[15&o];return _>=256&&(v+=c[s>>28&15]+c[s>>24&15]+c[s>>20&15]+c[s>>16&15]+c[s>>12&15]+c[s>>8&15]+c[s>>4&15]+c[15&s]),_>=384&&(v+=c[a>>28&15]+c[a>>24&15]+c[a>>20&15]+c[a>>16&15]+c[a>>12&15]+c[a>>8&15]+c[a>>4&15]+c[15&a]+c[l>>28&15]+c[l>>24&15]+c[l>>20&15]+c[l>>16&15]+c[l>>12&15]+c[l>>8&15]+c[l>>4&15]+c[15&l]+c[u>>28&15]+c[u>>24&15]+c[u>>20&15]+c[u>>16&15]+c[u>>12&15]+c[u>>8&15]+c[u>>4&15]+c[15&u]+c[f>>28&15]+c[f>>24&15]+c[f>>20&15]+c[f>>16&15]+c[f>>12&15]+c[f>>8&15]+c[f>>4&15]+c[15&f]),512==_&&(v+=c[p>>28&15]+c[p>>24&15]+c[p>>20&15]+c[p>>16&15]+c[p>>12&15]+c[p>>8&15]+c[p>>4&15]+c[15&p]+c[y>>28&15]+c[y>>24&15]+c[y>>20&15]+c[y>>16&15]+c[y>>12&15]+c[y>>8&15]+c[y>>4&15]+c[15&y]+c[d>>28&15]+c[d>>24&15]+c[d>>20&15]+c[d>>16&15]+c[d>>12&15]+c[d>>8&15]+c[d>>4&15]+c[15&d]+c[b>>28&15]+c[b>>24&15]+c[b>>20&15]+c[b>>16&15]+c[b>>12&15]+c[b>>8&15]+c[b>>4&15]+c[15&b]),v},m.prototype.toString=m.prototype.hex,m.prototype.digest=function(){this.finalize();var t=this.h0h,e=this.h0l,r=this.h1h,n=this.h1l,i=this.h2h,h=this.h2l,o=this.h3h,s=this.h3l,a=this.h4h,l=this.h4l,c=this.h5h,u=this.h5l,f=this.h6h,p=this.h6l,y=this.h7h,d=this.h7l,b=this.bits,_=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,h>>24&255,h>>16&255,h>>8&255,255&h,o>>24&255,o>>16&255,o>>8&255,255&o];return b>=256&&_.push(s>>24&255,s>>16&255,s>>8&255,255&s),b>=384&&_.push(a>>24&255,a>>16&255,a>>8&255,255&a,l>>24&255,l>>16&255,l>>8&255,255&l,c>>24&255,c>>16&255,c>>8&255,255&c,u>>24&255,u>>16&255,u>>8&255,255&u),512==b&&_.push(f>>24&255,f>>16&255,f>>8&255,255&f,p>>24&255,p>>16&255,p>>8&255,255&p,y>>24&255,y>>16&255,y>>8&255,255&y,d>>24&255,d>>16&255,d>>8&255,255&d),_},m.prototype.array=m.prototype.digest,m.prototype.arrayBuffer=function(){this.finalize();var t=this.bits,e=new ArrayBuffer(t/8),r=new DataView(e);return r.setUint32(0,this.h0h),r.setUint32(4,this.h0l),r.setUint32(8,this.h1h),r.setUint32(12,this.h1l),r.setUint32(16,this.h2h),r.setUint32(20,this.h2l),r.setUint32(24,this.h3h),t>=256&&r.setUint32(28,this.h3l),t>=384&&(r.setUint32(32,this.h4h),r.setUint32(36,this.h4l),r.setUint32(40,this.h5h),r.setUint32(44,this.h5l)),512==t&&(r.setUint32(48,this.h6h),r.setUint32(52,this.h6l),r.setUint32(56,this.h7h),r.setUint32(60,this.h7l)),e},m.prototype.clone=function(){var t=new m(this.bits,!1);return this.copyTo(t),t},m.prototype.copyTo=function(t){var e=0,r=["h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","start","bytes","hBytes","finalized","hashed","lastByteIndex"];for(e=0;e<r.length;++e)t[r[e]]=this[r[e]];for(e=0;e<this.blocks.length;++e)t.blocks[e]=this.blocks[e]},g.prototype=new m,g.prototype.finalize=function(){if(m.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();m.call(this,this.bits,this.sharedMemory),this.update(this.oKeyPad),this.update(t),m.prototype.finalize.call(this)}},g.prototype.clone=function(){var t=new g([],this.bits,!1);this.copyTo(t),t.inner=this.inner;for(var e=0;e<this.oKeyPad.length;++e)t.oKeyPad[e]=this.oKeyPad[e];return t};var O=_(512);O.sha512=O,O.sha384=_(384),O.sha512_256=_(256),O.sha512_224=_(224),O.sha512.hmac=w(512),O.sha384.hmac=w(384),O.sha512_256.hmac=w(256),O.sha512_224.hmac=w(224),s?t.exports=O:(h.sha512=O.sha512,h.sha384=O.sha384,h.sha512_256=O.sha512_256,h.sha512_224=O.sha512_224,a&&(void 0===(n=function(){return O}.call(O,r,O,t))||(t.exports=n)))}()},900:(t,e,r)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(655),i=r(434),h=function(t){var e=t.input,r=t.expected;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,h;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=0,n.label=1;case 1:return h=(0,i.sha512)(e+":"+t),t%4e4!=0?[3,3]:[4,o(0)];case 2:n.sent(),n.label=3;case 3:return h.substring(0,r.length)===r?[2,t.toString()]:(t++,[3,1]);case 4:return[2]}}))}))},o=function(t){return new Promise((function(e){return setTimeout(e,t)}))};e.default=function(t){var e=t.challenge,r=t.onProgress;return(0,n.__awaiter)(void 0,void 0,void 0,(function(){var t,i,s,a,l,c,u;return(0,n.__generator)(this,(function(n){switch(n.label){case 0:t=e.payload,i=t.nonce,s=t.difficulty,a=t.hardness,l=[],null==r||r(0),c=0,n.label=1;case 1:return c<a?[4,h({input:i+":"+c,expected:"0".repeat(s)})]:[3,5];case 2:return u=n.sent(),l.push(u),null==r||r(l.length/a),[4,o(0)];case 3:n.sent(),n.label=4;case 4:return c++,[3,1];case 5:return[2,l]}}))}))}},655:(t,e,r)=>{"use strict";r.r(e),r.d(e,{__extends:()=>i,__assign:()=>h,__rest:()=>o,__decorate:()=>s,__param:()=>a,__metadata:()=>l,__awaiter:()=>c,__generator:()=>u,__createBinding:()=>f,__exportStar:()=>p,__values:()=>y,__read:()=>d,__spread:()=>b,__spreadArrays:()=>_,__spreadArray:()=>v,__await:()=>w,__asyncGenerator:()=>m,__asyncDelegator:()=>g,__asyncValues:()=>O,__makeTemplateObject:()=>S,__importStar:()=>E,__importDefault:()=>P,__classPrivateFieldGet:()=>j,__classPrivateFieldSet:()=>T});var n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},n(t,e)};function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}var h=function(){return h=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var i in e=arguments[r])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t},h.apply(this,arguments)};function o(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]])}return r}function s(t,e,r,n){var i,h=arguments.length,o=h<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,r,n);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(o=(h<3?i(o):h>3?i(e,r,o):i(e,r))||o);return h>3&&o&&Object.defineProperty(e,r,o),o}function a(t,e){return function(r,n){e(r,n,t)}}function l(t,e){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(t,e)}function c(t,e,r,n){return new(r||(r=Promise))((function(i,h){function o(t){try{a(n.next(t))}catch(t){h(t)}}function s(t){try{a(n.throw(t))}catch(t){h(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(o,s)}a((n=n.apply(t,e||[])).next())}))}function u(t,e){var r,n,i,h,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return h={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(h[Symbol.iterator]=function(){return this}),h;function s(h){return function(s){return function(h){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&h[0]?n.return:h[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,h[1])).done)return i;switch(n=0,i&&(h=[2&h[0],i.value]),h[0]){case 0:case 1:i=h;break;case 4:return o.label++,{value:h[1],done:!1};case 5:o.label++,n=h[1],h=[0];continue;case 7:h=o.ops.pop(),o.trys.pop();continue;default:if(!((i=(i=o.trys).length>0&&i[i.length-1])||6!==h[0]&&2!==h[0])){o=0;continue}if(3===h[0]&&(!i||h[1]>i[0]&&h[1]<i[3])){o.label=h[1];break}if(6===h[0]&&o.label<i[1]){o.label=i[1],i=h;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(h);break}i[2]&&o.ops.pop(),o.trys.pop();continue}h=e.call(t,o)}catch(t){h=[6,t],n=0}finally{r=i=0}if(5&h[0])throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}([h,s])}}}var f=Object.create?function(t,e,r,n){void 0===n&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,n){void 0===n&&(n=r),t[n]=e[r]};function p(t,e){for(var r in t)"default"===r||Object.prototype.hasOwnProperty.call(e,r)||f(e,t,r)}function y(t){var e="function"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function d(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,i,h=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=h.next()).done;)o.push(n.value)}catch(t){i={error:t}}finally{try{n&&!n.done&&(r=h.return)&&r.call(h)}finally{if(i)throw i.error}}return o}function b(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(d(arguments[e]));return t}function _(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),i=0;for(e=0;e<r;e++)for(var h=arguments[e],o=0,s=h.length;o<s;o++,i++)n[i]=h[o];return n}function v(t,e,r){if(r||2===arguments.length)for(var n,i=0,h=e.length;i<h;i++)!n&&i in e||(n||(n=Array.prototype.slice.call(e,0,i)),n[i]=e[i]);return t.concat(n||Array.prototype.slice.call(e))}function w(t){return this instanceof w?(this.v=t,this):new w(t)}function m(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(t,e||[]),h=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(t){i[t]&&(n[t]=function(e){return new Promise((function(r,n){h.push([t,e,r,n])>1||s(t,e)}))})}function s(t,e){try{(r=i[t](e)).value instanceof w?Promise.resolve(r.value.v).then(a,l):c(h[0][2],r)}catch(t){c(h[0][3],t)}var r}function a(t){s("next",t)}function l(t){s("throw",t)}function c(t,e){t(e),h.shift(),h.length&&s(h[0][0],h[0][1])}}function g(t){var e,r;return e={},n("next"),n("throw",(function(t){throw t})),n("return"),e[Symbol.iterator]=function(){return this},e;function n(n,i){e[n]=t[n]?function(e){return(r=!r)?{value:w(t[n](e)),done:"return"===n}:i?i(e):e}:i}}function O(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=y(t),e={},n("next"),n("throw"),n("return"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,i){!function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)}(n,i,(e=t[r](e)).done,e.value)}))}}}function S(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}var A=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e};function E(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)"default"!==r&&Object.prototype.hasOwnProperty.call(t,r)&&f(e,t,r);return A(e,t),e}function P(t){return t&&t.__esModule?t:{default:t}}function j(t,e,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof e?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(t):n?n.value:e.get(t)}function T(t,e,r,n,i){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!i)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof e?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?i.call(t,r):i?i.value=r:e.set(t,r),r}},147:t=>{"use strict";t.exports={i8:"0.1.29"}}},e={};function r(n){var i=e[n];if(void 0!==i)return i.exports;var h=e[n]={exports:{}};return t[n](h,h.exports,r),h.exports}r.amdO={},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";var t=n,e=r(655),i=(0,e.__importDefault)(r(900)),h=function(){s(),a(),l()},o=function(){function t(t){var e=t.publicKey;this.publicKey=e}return t.init=function(){h()},t.prototype.challenge=function(t){return(0,e.__awaiter)(this,void 0,void 0,(function(){var r,n,h;return(0,e.__generator)(this,(function(e){switch(e.label){case 0:return r=(t||{}).onProgress,[4,fetch("https://api.botpoison.com/challenge",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({publicKey:this.publicKey,hostname:location.hostname})})];case 1:return[4,e.sent().json()];case 2:return n=e.sent(),[4,(0,i.default)({challenge:n,onProgress:r})];case 3:return h=e.sent(),[2,{solution:btoa(JSON.stringify({challenge:n,solutions:h}))}]}}))}))},t}();t.default=o;var s=function(){window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_VERSION__=r(147).i8)},a=function(){"undefined"!=typeof document&&(window.__BOTPOISON_SUBMIT_LISTENER__||(window.__BOTPOISON_SUBMIT_LISTENER__=!0,document.addEventListener("submit",(function(t){try{var e=t.target;if(e){var r=e,n=r.dataset.botpoisonPublicKey;if(n){t.preventDefault(),r.dispatchEvent(new CustomEvent("botpoison-challenge-start"));var i=new o({publicKey:n});i.challenge().then((function(t){var e=t.solution;r.dispatchEvent(new CustomEvent("botpoison-challenge-success")),function(t){var e=t.formElement,r=t.id,n=t.name,i=t.value,h=document.getElementById(r);if(!h){var o=document.createElement("input");o.setAttribute("type","hidden"),o.setAttribute("id",r),o.setAttribute("name",n),e.appendChild(o),h=o}h.setAttribute("value",i)}({formElement:r,id:"_botpoison",name:"_botpoison",value:e}),HTMLFormElement.prototype.submit.call(r)})).catch((function(t){console.error(t),r.dispatchEvent(new CustomEvent("botpoison-challenge-error"))}))}}}catch(t){console.error(t)}return!0}))))},l=function(){"undefined"==typeof document||window.__BOTPOISON_HEARTBEAT_DISPATCHER__||(window.__BOTPOISON_HEARTBEAT_DISPATCHER__=!0)};h()})(),n.default})()}));
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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WUFBWUgsR0FDeEJ0TCxFQUFRc0wsRUFFVnRMLEVBQU13TCxhQUFhLFFBQVN2SCxHQW1DWnlILENBQTZCLENBQzNCUixZQUFXLEVBQ1hDLEdBVkssYUFXTEMsS0FWTyxhQVdQbkgsTUFBTy9DLElBRVR5SyxnQkFBZ0JsVCxVQUFVbVQsT0FBT2pULEtBQUssTUFFdkNrVCxPQUFNLFNBQUMxRixHQUNOMkYsUUFBUTNGLE1BQU1BLEdBQ2QsRUFBWTJFLGNBQ1YsSUFBSUMsWUFBWSxtQ0FLMUIsTUFBTzFJLEdBQ1B5SixRQUFRM0YsTUFBTTlELEdBRWhCLE9BQU8sUUFNVG1ILEVBQXlCLFdBQ0wsb0JBQWJlLFVBQ0p2VCxPQUFPK1UscUNBQ1YvVSxPQUFPK1Usb0NBQXFDLElBeUJsRDFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vLi9ub2RlX21vZHVsZXMvanMtc2hhNTEyL3NyYy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vc3JjL2NvbXB1dGVTb2x1dGlvbnMudHMiLCJ3ZWJwYWNrOi8vQm90cG9pc29uLy4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQm90cG9pc29uL3dlYnBhY2svcnVudGltZS9hbWQgb3B0aW9ucyIsIndlYnBhY2s6Ly9Cb3Rwb2lzb24vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0JvdHBvaXNvbi93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0JvdHBvaXNvbi8uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIkJvdHBvaXNvblwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJCb3Rwb2lzb25cIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wiQm90cG9pc29uXCJdID0gZmFjdG9yeSgpO1xufSkodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuICIsIi8qXG4gKiBbanMtc2hhNTEyXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZW1uMTc4L2pzLXNoYTUxMn1cbiAqXG4gKiBAdmVyc2lvbiAwLjguMFxuICogQGF1dGhvciBDaGVuLCBZaS1DeXVhbiBbZW1uMTc4QGdtYWlsLmNvbV1cbiAqIEBjb3B5cmlnaHQgQ2hlbiwgWWktQ3l1YW4gMjAxNC0yMDE4XG4gKiBAbGljZW5zZSBNSVRcbiAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSAqL1xuKGZ1bmN0aW9uICgpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIHZhciBJTlBVVF9FUlJPUiA9ICdpbnB1dCBpcyBpbnZhbGlkIHR5cGUnO1xuICB2YXIgRklOQUxJWkVfRVJST1IgPSAnZmluYWxpemUgYWxyZWFkeSBjYWxsZWQnO1xuICB2YXIgV0lORE9XID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7XG4gIHZhciByb290ID0gV0lORE9XID8gd2luZG93IDoge307XG4gIGlmIChyb290LkpTX1NIQTUxMl9OT19XSU5ET1cpIHtcbiAgICBXSU5ET1cgPSBmYWxzZTtcbiAgfVxuICB2YXIgV0VCX1dPUktFUiA9ICFXSU5ET1cgJiYgdHlwZW9mIHNlbGYgPT09ICdvYmplY3QnO1xuICB2YXIgTk9ERV9KUyA9ICFyb290LkpTX1NIQTUxMl9OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFdFQl9XT1JLRVIpIHtcbiAgICByb290ID0gc2VsZjtcbiAgfVxuICB2YXIgQ09NTU9OX0pTID0gIXJvb3QuSlNfU0hBNTEyX05PX0NPTU1PTl9KUyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cztcbiAgdmFyIEFNRCA9IHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZDtcbiAgdmFyIEFSUkFZX0JVRkZFUiA9ICFyb290LkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVIgJiYgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJztcbiAgdmFyIEhFWF9DSEFSUyA9ICcwMTIzNDU2Nzg5YWJjZGVmJy5zcGxpdCgnJyk7XG4gIHZhciBFWFRSQSA9IFstMjE0NzQ4MzY0OCwgODM4ODYwOCwgMzI3NjgsIDEyOF07XG4gIHZhciBTSElGVCA9IFsyNCwgMTYsIDgsIDBdO1xuICB2YXIgSyA9IFtcbiAgICAweDQyOEEyRjk4LCAweEQ3MjhBRTIyLCAweDcxMzc0NDkxLCAweDIzRUY2NUNELFxuICAgIDB4QjVDMEZCQ0YsIDB4RUM0RDNCMkYsIDB4RTlCNURCQTUsIDB4ODE4OURCQkMsXG4gICAgMHgzOTU2QzI1QiwgMHhGMzQ4QjUzOCwgMHg1OUYxMTFGMSwgMHhCNjA1RDAxOSxcbiAgICAweDkyM0Y4MkE0LCAweEFGMTk0RjlCLCAweEFCMUM1RUQ1LCAweERBNkQ4MTE4LFxuICAgIDB4RDgwN0FBOTgsIDB4QTMwMzAyNDIsIDB4MTI4MzVCMDEsIDB4NDU3MDZGQkUsXG4gICAgMHgyNDMxODVCRSwgMHg0RUU0QjI4QywgMHg1NTBDN0RDMywgMHhENUZGQjRFMixcbiAgICAweDcyQkU1RDc0LCAweEYyN0I4OTZGLCAweDgwREVCMUZFLCAweDNCMTY5NkIxLFxuICAgIDB4OUJEQzA2QTcsIDB4MjVDNzEyMzUsIDB4QzE5QkYxNzQsIDB4Q0Y2OTI2OTQsXG4gICAgMHhFNDlCNjlDMSwgMHg5RUYxNEFEMiwgMHhFRkJFNDc4NiwgMHgzODRGMjVFMyxcbiAgICAweDBGQzE5REM2LCAweDhCOENENUI1LCAweDI0MENBMUNDLCAweDc3QUM5QzY1LFxuICAgIDB4MkRFOTJDNkYsIDB4NTkyQjAyNzUsIDB4NEE3NDg0QUEsIDB4NkVBNkU0ODMsXG4gICAgMHg1Q0IwQTlEQywgMHhCRDQxRkJENCwgMHg3NkY5ODhEQSwgMHg4MzExNTNCNSxcbiAgICAweDk4M0U1MTUyLCAweEVFNjZERkFCLCAweEE4MzFDNjZELCAweDJEQjQzMjEwLFxuICAgIDB4QjAwMzI3QzgsIDB4OThGQjIxM0YsIDB4QkY1OTdGQzcsIDB4QkVFRjBFRTQsXG4gICAgMHhDNkUwMEJGMywgMHgzREE4OEZDMiwgMHhENUE3OTE0NywgMHg5MzBBQTcyNSxcbiAgICAweDA2Q0E2MzUxLCAweEUwMDM4MjZGLCAweDE0MjkyOTY3LCAweDBBMEU2RTcwLFxuICAgIDB4MjdCNzBBODUsIDB4NDZEMjJGRkMsIDB4MkUxQjIxMzgsIDB4NUMyNkM5MjYsXG4gICAgMHg0RDJDNkRGQywgMHg1QUM0MkFFRCwgMHg1MzM4MEQxMywgMHg5RDk1QjNERixcbiAgICAweDY1MEE3MzU0LCAweDhCQUY2M0RFLCAweDc2NkEwQUJCLCAweDNDNzdCMkE4LFxuICAgIDB4ODFDMkM5MkUsIDB4NDdFREFFRTYsIDB4OTI3MjJDODUsIDB4MTQ4MjM1M0IsXG4gICAgMHhBMkJGRThBMSwgMHg0Q0YxMDM2NCwgMHhBODFBNjY0QiwgMHhCQzQyMzAwMSxcbiAgICAweEMyNEI4QjcwLCAweEQwRjg5NzkxLCAweEM3NkM1MUEzLCAweDA2NTRCRTMwLFxuICAgIDB4RDE5MkU4MTksIDB4RDZFRjUyMTgsIDB4RDY5OTA2MjQsIDB4NTU2NUE5MTAsXG4gICAgMHhGNDBFMzU4NSwgMHg1NzcxMjAyQSwgMHgxMDZBQTA3MCwgMHgzMkJCRDFCOCxcbiAgICAweDE5QTRDMTE2LCAweEI4RDJEMEM4LCAweDFFMzc2QzA4LCAweDUxNDFBQjUzLFxuICAgIDB4Mjc0ODc3NEMsIDB4REY4RUVCOTksIDB4MzRCMEJDQjUsIDB4RTE5QjQ4QTgsXG4gICAgMHgzOTFDMENCMywgMHhDNUM5NUE2MywgMHg0RUQ4QUE0QSwgMHhFMzQxOEFDQixcbiAgICAweDVCOUNDQTRGLCAweDc3NjNFMzczLCAweDY4MkU2RkYzLCAweEQ2QjJCOEEzLFxuICAgIDB4NzQ4RjgyRUUsIDB4NURFRkIyRkMsIDB4NzhBNTYzNkYsIDB4NDMxNzJGNjAsXG4gICAgMHg4NEM4NzgxNCwgMHhBMUYwQUI3MiwgMHg4Q0M3MDIwOCwgMHgxQTY0MzlFQyxcbiAgICAweDkwQkVGRkZBLCAweDIzNjMxRTI4LCAweEE0NTA2Q0VCLCAweERFODJCREU5LFxuICAgIDB4QkVGOUEzRjcsIDB4QjJDNjc5MTUsIDB4QzY3MTc4RjIsIDB4RTM3MjUzMkIsXG4gICAgMHhDQTI3M0VDRSwgMHhFQTI2NjE5QywgMHhEMTg2QjhDNywgMHgyMUMwQzIwNyxcbiAgICAweEVBREE3REQ2LCAweENERTBFQjFFLCAweEY1N0Q0RjdGLCAweEVFNkVEMTc4LFxuICAgIDB4MDZGMDY3QUEsIDB4NzIxNzZGQkEsIDB4MEE2MzdEQzUsIDB4QTJDODk4QTYsXG4gICAgMHgxMTNGOTgwNCwgMHhCRUY5MERBRSwgMHgxQjcxMEIzNSwgMHgxMzFDNDcxQixcbiAgICAweDI4REI3N0Y1LCAweDIzMDQ3RDg0LCAweDMyQ0FBQjdCLCAweDQwQzcyNDkzLFxuICAgIDB4M0M5RUJFMEEsIDB4MTVDOUJFQkMsIDB4NDMxRDY3QzQsIDB4OUMxMDBENEMsXG4gICAgMHg0Q0M1RDRCRSwgMHhDQjNFNDJCNiwgMHg1OTdGMjk5QywgMHhGQzY1N0UyQSxcbiAgICAweDVGQ0I2RkFCLCAweDNBRDZGQUVDLCAweDZDNDQxOThDLCAweDRBNDc1ODE3XG4gIF07XG5cbiAgdmFyIE9VVFBVVF9UWVBFUyA9IFsnaGV4JywgJ2FycmF5JywgJ2RpZ2VzdCcsICdhcnJheUJ1ZmZlciddO1xuXG4gIHZhciBibG9ja3MgPSBbXTtcblxuICBpZiAocm9vdC5KU19TSEE1MTJfTk9fTk9ERV9KUyB8fCAhQXJyYXkuaXNBcnJheSkge1xuICAgIEFycmF5LmlzQXJyYXkgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IEFycmF5XSc7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChBUlJBWV9CVUZGRVIgJiYgKHJvb3QuSlNfU0hBNTEyX05PX0FSUkFZX0JVRkZFUl9JU19WSUVXIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iai5idWZmZXIgJiYgb2JqLmJ1ZmZlci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXI7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBjcmVhdGVPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAob3V0cHV0VHlwZSwgYml0cykge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG5ldyBTaGE1MTIoYml0cywgdHJ1ZSkudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlT3V0cHV0TWV0aG9kKCdoZXgnLCBiaXRzKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBTaGE1MTIoYml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKCkudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBPVVRQVVRfVFlQRVMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciB0eXBlID0gT1VUUFVUX1RZUEVTW2ldO1xuICAgICAgbWV0aG9kW3R5cGVdID0gY3JlYXRlT3V0cHV0TWV0aG9kKHR5cGUsIGJpdHMpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0aG9kO1xuICB9O1xuXG4gIHZhciBjcmVhdGVIbWFjT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKG91dHB1dFR5cGUsIGJpdHMpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGtleSwgbWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG5ldyBIbWFjU2hhNTEyKGtleSwgYml0cywgdHJ1ZSkudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlSG1hY01ldGhvZCA9IGZ1bmN0aW9uIChiaXRzKSB7XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZUhtYWNPdXRwdXRNZXRob2QoJ2hleCcsIGJpdHMpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICByZXR1cm4gbmV3IEhtYWNTaGE1MTIoa2V5LCBiaXRzKTtcbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAoa2V5LCBtZXNzYWdlKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZShrZXkpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcbiAgICAgIG1ldGhvZFt0eXBlXSA9IGNyZWF0ZUhtYWNPdXRwdXRNZXRob2QodHlwZSwgYml0cyk7XG4gICAgfVxuICAgIHJldHVybiBtZXRob2Q7XG4gIH07XG5cbiAgZnVuY3Rpb24gU2hhNTEyKGJpdHMsIHNoYXJlZE1lbW9yeSkge1xuICAgIGlmIChzaGFyZWRNZW1vcnkpIHtcbiAgICAgIGJsb2Nrc1swXSA9IGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICBibG9ja3NbNV0gPSBibG9ja3NbNl0gPSBibG9ja3NbN10gPSBibG9ja3NbOF0gPVxuICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgYmxvY2tzWzE3XSA9IGJsb2Nrc1sxOF0gPSBibG9ja3NbMTldID0gYmxvY2tzWzIwXSA9XG4gICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgYmxvY2tzWzI5XSA9IGJsb2Nrc1szMF0gPSBibG9ja3NbMzFdID0gYmxvY2tzWzMyXSA9IDA7XG4gICAgICB0aGlzLmJsb2NrcyA9IGJsb2NrcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ibG9ja3MgPSBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF07XG4gICAgfVxuXG4gICAgaWYgKGJpdHMgPT0gMzg0KSB7XG4gICAgICB0aGlzLmgwaCA9IDB4Q0JCQjlENUQ7XG4gICAgICB0aGlzLmgwbCA9IDB4QzEwNTlFRDg7XG4gICAgICB0aGlzLmgxaCA9IDB4NjI5QTI5MkE7XG4gICAgICB0aGlzLmgxbCA9IDB4MzY3Q0Q1MDc7XG4gICAgICB0aGlzLmgyaCA9IDB4OTE1OTAxNUE7XG4gICAgICB0aGlzLmgybCA9IDB4MzA3MEREMTc7XG4gICAgICB0aGlzLmgzaCA9IDB4MTUyRkVDRDg7XG4gICAgICB0aGlzLmgzbCA9IDB4RjcwRTU5Mzk7XG4gICAgICB0aGlzLmg0aCA9IDB4NjczMzI2Njc7XG4gICAgICB0aGlzLmg0bCA9IDB4RkZDMDBCMzE7XG4gICAgICB0aGlzLmg1aCA9IDB4OEVCNDRBODc7XG4gICAgICB0aGlzLmg1bCA9IDB4Njg1ODE1MTE7XG4gICAgICB0aGlzLmg2aCA9IDB4REIwQzJFMEQ7XG4gICAgICB0aGlzLmg2bCA9IDB4NjRGOThGQTc7XG4gICAgICB0aGlzLmg3aCA9IDB4NDdCNTQ4MUQ7XG4gICAgICB0aGlzLmg3bCA9IDB4QkVGQTRGQTQ7XG4gICAgfSBlbHNlIGlmIChiaXRzID09IDI1Nikge1xuICAgICAgdGhpcy5oMGggPSAweDIyMzEyMTk0O1xuICAgICAgdGhpcy5oMGwgPSAweEZDMkJGNzJDO1xuICAgICAgdGhpcy5oMWggPSAweDlGNTU1RkEzO1xuICAgICAgdGhpcy5oMWwgPSAweEM4NEM2NEMyO1xuICAgICAgdGhpcy5oMmggPSAweDIzOTNCODZCO1xuICAgICAgdGhpcy5oMmwgPSAweDZGNTNCMTUxO1xuICAgICAgdGhpcy5oM2ggPSAweDk2Mzg3NzE5O1xuICAgICAgdGhpcy5oM2wgPSAweDU5NDBFQUJEO1xuICAgICAgdGhpcy5oNGggPSAweDk2MjgzRUUyO1xuICAgICAgdGhpcy5oNGwgPSAweEE4OEVGRkUzO1xuICAgICAgdGhpcy5oNWggPSAweEJFNUUxRTI1O1xuICAgICAgdGhpcy5oNWwgPSAweDUzODYzOTkyO1xuICAgICAgdGhpcy5oNmggPSAweDJCMDE5OUZDO1xuICAgICAgdGhpcy5oNmwgPSAweDJDODVCOEFBO1xuICAgICAgdGhpcy5oN2ggPSAweDBFQjcyRERDO1xuICAgICAgdGhpcy5oN2wgPSAweDgxQzUyQ0EyO1xuICAgIH0gZWxzZSBpZiAoYml0cyA9PSAyMjQpIHtcbiAgICAgIHRoaXMuaDBoID0gMHg4QzNEMzdDODtcbiAgICAgIHRoaXMuaDBsID0gMHgxOTU0NERBMjtcbiAgICAgIHRoaXMuaDFoID0gMHg3M0UxOTk2NjtcbiAgICAgIHRoaXMuaDFsID0gMHg4OURDRDRENjtcbiAgICAgIHRoaXMuaDJoID0gMHgxREZBQjdBRTtcbiAgICAgIHRoaXMuaDJsID0gMHgzMkZGOUM4MjtcbiAgICAgIHRoaXMuaDNoID0gMHg2NzlERDUxNDtcbiAgICAgIHRoaXMuaDNsID0gMHg1ODJGOUZDRjtcbiAgICAgIHRoaXMuaDRoID0gMHgwRjZEMkI2OTtcbiAgICAgIHRoaXMuaDRsID0gMHg3QkQ0NERBODtcbiAgICAgIHRoaXMuaDVoID0gMHg3N0UzNkY3MztcbiAgICAgIHRoaXMuaDVsID0gMHgwNEM0ODk0MjtcbiAgICAgIHRoaXMuaDZoID0gMHgzRjlEODVBODtcbiAgICAgIHRoaXMuaDZsID0gMHg2QTFEMzZDODtcbiAgICAgIHRoaXMuaDdoID0gMHgxMTEyRTZBRDtcbiAgICAgIHRoaXMuaDdsID0gMHg5MUQ2OTJBMTtcbiAgICB9IGVsc2UgeyAvLyA1MTJcbiAgICAgIHRoaXMuaDBoID0gMHg2QTA5RTY2NztcbiAgICAgIHRoaXMuaDBsID0gMHhGM0JDQzkwODtcbiAgICAgIHRoaXMuaDFoID0gMHhCQjY3QUU4NTtcbiAgICAgIHRoaXMuaDFsID0gMHg4NENBQTczQjtcbiAgICAgIHRoaXMuaDJoID0gMHgzQzZFRjM3MjtcbiAgICAgIHRoaXMuaDJsID0gMHhGRTk0RjgyQjtcbiAgICAgIHRoaXMuaDNoID0gMHhBNTRGRjUzQTtcbiAgICAgIHRoaXMuaDNsID0gMHg1RjFEMzZGMTtcbiAgICAgIHRoaXMuaDRoID0gMHg1MTBFNTI3RjtcbiAgICAgIHRoaXMuaDRsID0gMHhBREU2ODJEMTtcbiAgICAgIHRoaXMuaDVoID0gMHg5QjA1Njg4QztcbiAgICAgIHRoaXMuaDVsID0gMHgyQjNFNkMxRjtcbiAgICAgIHRoaXMuaDZoID0gMHgxRjgzRDlBQjtcbiAgICAgIHRoaXMuaDZsID0gMHhGQjQxQkQ2QjtcbiAgICAgIHRoaXMuaDdoID0gMHg1QkUwQ0QxOTtcbiAgICAgIHRoaXMuaDdsID0gMHgxMzdFMjE3OTtcbiAgICB9XG4gICAgdGhpcy5iaXRzID0gYml0cztcblxuICAgIHRoaXMuYmxvY2sgPSB0aGlzLnN0YXJ0ID0gdGhpcy5ieXRlcyA9IHRoaXMuaEJ5dGVzID0gMDtcbiAgICB0aGlzLmZpbmFsaXplZCA9IHRoaXMuaGFzaGVkID0gZmFsc2U7XG4gIH1cblxuICBTaGE1MTIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMuZmluYWxpemVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoRklOQUxJWkVfRVJST1IpO1xuICAgIH1cbiAgICB2YXIgbm90U3RyaW5nLCB0eXBlID0gdHlwZW9mIG1lc3NhZ2U7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICB9IGVsc2UgaWYgKEFSUkFZX0JVRkZFUiAmJiBtZXNzYWdlLmNvbnN0cnVjdG9yID09PSBBcnJheUJ1ZmZlcikge1xuICAgICAgICAgIG1lc3NhZ2UgPSBuZXcgVWludDhBcnJheShtZXNzYWdlKTtcbiAgICAgICAgfSBlbHNlIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSkge1xuICAgICAgICAgIGlmICghQVJSQVlfQlVGRkVSIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcobWVzc2FnZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGNvZGUsIGluZGV4ID0gMCwgaSwgbGVuZ3RoID0gbWVzc2FnZS5sZW5ndGgsIGJsb2NrcyA9IHRoaXMuYmxvY2tzO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5oYXNoZWQpIHtcbiAgICAgICAgdGhpcy5oYXNoZWQgPSBmYWxzZTtcbiAgICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgICAgYmxvY2tzWzFdID0gYmxvY2tzWzJdID0gYmxvY2tzWzNdID0gYmxvY2tzWzRdID1cbiAgICAgICAgYmxvY2tzWzVdID0gYmxvY2tzWzZdID0gYmxvY2tzWzddID0gYmxvY2tzWzhdID1cbiAgICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgICAgYmxvY2tzWzEzXSA9IGJsb2Nrc1sxNF0gPSBibG9ja3NbMTVdID0gYmxvY2tzWzE2XSA9XG4gICAgICAgIGJsb2Nrc1sxN10gPSBibG9ja3NbMThdID0gYmxvY2tzWzE5XSA9IGJsb2Nrc1syMF0gPVxuICAgICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgICAgYmxvY2tzWzI1XSA9IGJsb2Nrc1syNl0gPSBibG9ja3NbMjddID0gYmxvY2tzWzI4XSA9XG4gICAgICAgIGJsb2Nrc1syOV0gPSBibG9ja3NbMzBdID0gYmxvY2tzWzMxXSA9IGJsb2Nrc1szMl0gPSAwO1xuICAgICAgfVxuXG4gICAgICBpZihub3RTdHJpbmcpIHtcbiAgICAgICAgZm9yIChpID0gdGhpcy5zdGFydDsgaW5kZXggPCBsZW5ndGggJiYgaSA8IDEyODsgKytpbmRleCkge1xuICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IG1lc3NhZ2VbaW5kZXhdIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGkgPSB0aGlzLnN0YXJ0OyBpbmRleCA8IGxlbmd0aCAmJiBpIDwgMTI4OyArK2luZGV4KSB7XG4gICAgICAgICAgY29kZSA9IG1lc3NhZ2UuY2hhckNvZGVBdChpbmRleCk7XG4gICAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSBjb2RlIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA8IDB4ODAwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhjMCB8IChjb2RlID4+IDYpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHhkODAwIHx8IGNvZGUgPj0gMHhlMDAwKSB7XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHhlMCB8IChjb2RlID4+IDEyKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8ICgoY29kZSA+PiA2KSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKGNvZGUgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvZGUgPSAweDEwMDAwICsgKCgoY29kZSAmIDB4M2ZmKSA8PCAxMCkgfCAobWVzc2FnZS5jaGFyQ29kZUF0KCsraW5kZXgpICYgMHgzZmYpKTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweGYwIHwgKGNvZGUgPj4gMTgpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDEyKSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sYXN0Qnl0ZUluZGV4ID0gaTtcbiAgICAgIHRoaXMuYnl0ZXMgKz0gaSAtIHRoaXMuc3RhcnQ7XG4gICAgICBpZiAoaSA+PSAxMjgpIHtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2Nrc1szMl07XG4gICAgICAgIHRoaXMuc3RhcnQgPSBpIC0gMTI4O1xuICAgICAgICB0aGlzLmhhc2goKTtcbiAgICAgICAgdGhpcy5oYXNoZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmJ5dGVzID4gNDI5NDk2NzI5NSkge1xuICAgICAgdGhpcy5oQnl0ZXMgKz0gdGhpcy5ieXRlcyAvIDQyOTQ5NjcyOTYgPDwgMDtcbiAgICAgIHRoaXMuYnl0ZXMgPSB0aGlzLmJ5dGVzICUgNDI5NDk2NzI5NjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5maW5hbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlO1xuICAgIHZhciBibG9ja3MgPSB0aGlzLmJsb2NrcywgaSA9IHRoaXMubGFzdEJ5dGVJbmRleDtcbiAgICBibG9ja3NbMzJdID0gdGhpcy5ibG9jaztcbiAgICBibG9ja3NbaSA+PiAyXSB8PSBFWFRSQVtpICYgM107XG4gICAgdGhpcy5ibG9jayA9IGJsb2Nrc1szMl07XG4gICAgaWYgKGkgPj0gMTEyKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzaGVkKSB7XG4gICAgICAgIHRoaXMuaGFzaCgpO1xuICAgICAgfVxuICAgICAgYmxvY2tzWzBdID0gdGhpcy5ibG9jaztcbiAgICAgIGJsb2Nrc1sxXSA9IGJsb2Nrc1syXSA9IGJsb2Nrc1szXSA9IGJsb2Nrc1s0XSA9XG4gICAgICBibG9ja3NbNV0gPSBibG9ja3NbNl0gPSBibG9ja3NbN10gPSBibG9ja3NbOF0gPVxuICAgICAgYmxvY2tzWzldID0gYmxvY2tzWzEwXSA9IGJsb2Nrc1sxMV0gPSBibG9ja3NbMTJdID1cbiAgICAgIGJsb2Nrc1sxM10gPSBibG9ja3NbMTRdID0gYmxvY2tzWzE1XSA9IGJsb2Nrc1sxNl0gPVxuICAgICAgYmxvY2tzWzE3XSA9IGJsb2Nrc1sxOF0gPSBibG9ja3NbMTldID0gYmxvY2tzWzIwXSA9XG4gICAgICBibG9ja3NbMjFdID0gYmxvY2tzWzIyXSA9IGJsb2Nrc1syM10gPSBibG9ja3NbMjRdID1cbiAgICAgIGJsb2Nrc1syNV0gPSBibG9ja3NbMjZdID0gYmxvY2tzWzI3XSA9IGJsb2Nrc1syOF0gPVxuICAgICAgYmxvY2tzWzI5XSA9IGJsb2Nrc1szMF0gPSBibG9ja3NbMzFdID0gYmxvY2tzWzMyXSA9IDA7XG4gICAgfVxuICAgIGJsb2Nrc1szMF0gPSB0aGlzLmhCeXRlcyA8PCAzIHwgdGhpcy5ieXRlcyA+Pj4gMjk7XG4gICAgYmxvY2tzWzMxXSA9IHRoaXMuYnl0ZXMgPDwgMztcbiAgICB0aGlzLmhhc2goKTtcbiAgfTtcblxuICBTaGE1MTIucHJvdG90eXBlLmhhc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGgwaCA9IHRoaXMuaDBoLCBoMGwgPSB0aGlzLmgwbCwgaDFoID0gdGhpcy5oMWgsIGgxbCA9IHRoaXMuaDFsLFxuICAgICAgaDJoID0gdGhpcy5oMmgsIGgybCA9IHRoaXMuaDJsLCBoM2ggPSB0aGlzLmgzaCwgaDNsID0gdGhpcy5oM2wsXG4gICAgICBoNGggPSB0aGlzLmg0aCwgaDRsID0gdGhpcy5oNGwsIGg1aCA9IHRoaXMuaDVoLCBoNWwgPSB0aGlzLmg1bCxcbiAgICAgIGg2aCA9IHRoaXMuaDZoLCBoNmwgPSB0aGlzLmg2bCwgaDdoID0gdGhpcy5oN2gsIGg3bCA9IHRoaXMuaDdsLFxuICAgICAgYmxvY2tzID0gdGhpcy5ibG9ja3MsIGosIHMwaCwgczBsLCBzMWgsIHMxbCwgYzEsIGMyLCBjMywgYzQsXG4gICAgICBhYmgsIGFibCwgZGFoLCBkYWwsIGNkaCwgY2RsLCBiY2gsIGJjbCxcbiAgICAgIG1hamgsIG1hamwsIHQxaCwgdDFsLCB0MmgsIHQybCwgY2hoLCBjaGw7XG5cbiAgICBmb3IgKGogPSAzMjsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgICB0MWggPSBibG9ja3NbaiAtIDMwXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gMjldO1xuICAgICAgczBoID0gKCh0MWggPj4+IDEpIHwgKHQxbCA8PCAzMSkpIF4gKCh0MWggPj4+IDgpIHwgKHQxbCA8PCAyNCkpIF4gKHQxaCA+Pj4gNyk7XG4gICAgICBzMGwgPSAoKHQxbCA+Pj4gMSkgfCAodDFoIDw8IDMxKSkgXiAoKHQxbCA+Pj4gOCkgfCAodDFoIDw8IDI0KSkgXiAoKHQxbCA+Pj4gNykgfCB0MWggPDwgMjUpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiAtIDRdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogLSAzXTtcbiAgICAgIHMxaCA9ICgodDFoID4+PiAxOSkgfCAodDFsIDw8IDEzKSkgXiAoKHQxbCA+Pj4gMjkpIHwgKHQxaCA8PCAzKSkgXiAodDFoID4+PiA2KTtcbiAgICAgIHMxbCA9ICgodDFsID4+PiAxOSkgfCAodDFoIDw8IDEzKSkgXiAoKHQxaCA+Pj4gMjkpIHwgKHQxbCA8PCAzKSkgXiAoKHQxbCA+Pj4gNikgfCB0MWggPDwgMjYpO1xuXG4gICAgICB0MWggPSBibG9ja3NbaiAtIDMyXTtcbiAgICAgIHQxbCA9IGJsb2Nrc1tqIC0gMzFdO1xuICAgICAgdDJoID0gYmxvY2tzW2ogLSAxNF07XG4gICAgICB0MmwgPSBibG9ja3NbaiAtIDEzXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKHMwbCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKTtcbiAgICAgIGMyID0gKHQybCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKHMxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoczBoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9ICh0MmggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChzMGggPj4+IDE2KSArIChzMWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBibG9ja3Nbal0gPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGJsb2Nrc1tqICsgMV0gPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcbiAgICB9XG5cbiAgICB2YXIgYWggPSBoMGgsIGFsID0gaDBsLCBiaCA9IGgxaCwgYmwgPSBoMWwsIGNoID0gaDJoLCBjbCA9IGgybCwgZGggPSBoM2gsIGRsID0gaDNsLCBlaCA9IGg0aCwgZWwgPSBoNGwsIGZoID0gaDVoLCBmbCA9IGg1bCwgZ2ggPSBoNmgsIGdsID0gaDZsLCBoaCA9IGg3aCwgaGwgPSBoN2w7XG4gICAgYmNoID0gYmggJiBjaDtcbiAgICBiY2wgPSBibCAmIGNsO1xuICAgIGZvciAoaiA9IDA7IGogPCAxNjA7IGogKz0gOCkge1xuICAgICAgczBoID0gKChhaCA+Pj4gMjgpIHwgKGFsIDw8IDQpKSBeICgoYWwgPj4+IDIpIHwgKGFoIDw8IDMwKSkgXiAoKGFsID4+PiA3KSB8IChhaCA8PCAyNSkpO1xuICAgICAgczBsID0gKChhbCA+Pj4gMjgpIHwgKGFoIDw8IDQpKSBeICgoYWggPj4+IDIpIHwgKGFsIDw8IDMwKSkgXiAoKGFoID4+PiA3KSB8IChhbCA8PCAyNSkpO1xuXG4gICAgICBzMWggPSAoKGVoID4+PiAxNCkgfCAoZWwgPDwgMTgpKSBeICgoZWggPj4+IDE4KSB8IChlbCA8PCAxNCkpIF4gKChlbCA+Pj4gOSkgfCAoZWggPDwgMjMpKTtcbiAgICAgIHMxbCA9ICgoZWwgPj4+IDE0KSB8IChlaCA8PCAxOCkpIF4gKChlbCA+Pj4gMTgpIHwgKGVoIDw8IDE0KSkgXiAoKGVoID4+PiA5KSB8IChlbCA8PCAyMykpO1xuXG4gICAgICBhYmggPSBhaCAmIGJoO1xuICAgICAgYWJsID0gYWwgJiBibDtcbiAgICAgIG1hamggPSBhYmggXiAoYWggJiBjaCkgXiBiY2g7XG4gICAgICBtYWpsID0gYWJsIF4gKGFsICYgY2wpIF4gYmNsO1xuXG4gICAgICBjaGggPSAoZWggJiBmaCkgXiAofmVoICYgZ2gpO1xuICAgICAgY2hsID0gKGVsICYgZmwpIF4gKH5lbCAmIGdsKTtcblxuICAgICAgdDFoID0gYmxvY2tzW2pdO1xuICAgICAgdDFsID0gYmxvY2tzW2ogKyAxXTtcbiAgICAgIHQyaCA9IEtbal07XG4gICAgICB0MmwgPSBLW2ogKyAxXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChobCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChobCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGhoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoaGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoZGwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChkbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChkaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoZGggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBoaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgaGwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgZGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGRsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoZGggPj4+IDI4KSB8IChkbCA8PCA0KSkgXiAoKGRsID4+PiAyKSB8IChkaCA8PCAzMCkpIF4gKChkbCA+Pj4gNykgfCAoZGggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoZGwgPj4+IDI4KSB8IChkaCA8PCA0KSkgXiAoKGRoID4+PiAyKSB8IChkbCA8PCAzMCkpIF4gKChkaCA+Pj4gNykgfCAoZGwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChoaCA+Pj4gMTQpIHwgKGhsIDw8IDE4KSkgXiAoKGhoID4+PiAxOCkgfCAoaGwgPDwgMTQpKSBeICgoaGwgPj4+IDkpIHwgKGhoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGhsID4+PiAxNCkgfCAoaGggPDwgMTgpKSBeICgoaGwgPj4+IDE4KSB8IChoaCA8PCAxNCkpIF4gKChoaCA+Pj4gOSkgfCAoaGwgPDwgMjMpKTtcblxuICAgICAgZGFoID0gZGggJiBhaDtcbiAgICAgIGRhbCA9IGRsICYgYWw7XG4gICAgICBtYWpoID0gZGFoIF4gKGRoICYgYmgpIF4gYWJoO1xuICAgICAgbWFqbCA9IGRhbCBeIChkbCAmIGJsKSBeIGFibDtcblxuICAgICAgY2hoID0gKGhoICYgZWgpIF4gKH5oaCAmIGZoKTtcbiAgICAgIGNobCA9IChobCAmIGVsKSBeICh+aGwgJiBmbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgMl07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDNdO1xuICAgICAgdDJoID0gS1tqICsgMl07XG4gICAgICB0MmwgPSBLW2ogKyAzXTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChnbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChnbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGdoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZ2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoY2wgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChjbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChjaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoY2ggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBnaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZ2wgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgY2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGNsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoY2ggPj4+IDI4KSB8IChjbCA8PCA0KSkgXiAoKGNsID4+PiAyKSB8IChjaCA8PCAzMCkpIF4gKChjbCA+Pj4gNykgfCAoY2ggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoY2wgPj4+IDI4KSB8IChjaCA8PCA0KSkgXiAoKGNoID4+PiAyKSB8IChjbCA8PCAzMCkpIF4gKChjaCA+Pj4gNykgfCAoY2wgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChnaCA+Pj4gMTQpIHwgKGdsIDw8IDE4KSkgXiAoKGdoID4+PiAxOCkgfCAoZ2wgPDwgMTQpKSBeICgoZ2wgPj4+IDkpIHwgKGdoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGdsID4+PiAxNCkgfCAoZ2ggPDwgMTgpKSBeICgoZ2wgPj4+IDE4KSB8IChnaCA8PCAxNCkpIF4gKChnaCA+Pj4gOSkgfCAoZ2wgPDwgMjMpKTtcblxuICAgICAgY2RoID0gY2ggJiBkaDtcbiAgICAgIGNkbCA9IGNsICYgZGw7XG4gICAgICBtYWpoID0gY2RoIF4gKGNoICYgYWgpIF4gZGFoO1xuICAgICAgbWFqbCA9IGNkbCBeIChjbCAmIGFsKSBeIGRhbDtcblxuICAgICAgY2hoID0gKGdoICYgaGgpIF4gKH5naCAmIGVoKTtcbiAgICAgIGNobCA9IChnbCAmIGhsKSBeICh+Z2wgJiBlbCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgNF07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDVdO1xuICAgICAgdDJoID0gS1tqICsgNF07XG4gICAgICB0MmwgPSBLW2ogKyA1XTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChmbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChmbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGZoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoYmwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChibCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChiaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoYmggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBmaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGJsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG5cbiAgICAgIHMwaCA9ICgoYmggPj4+IDI4KSB8IChibCA8PCA0KSkgXiAoKGJsID4+PiAyKSB8IChiaCA8PCAzMCkpIF4gKChibCA+Pj4gNykgfCAoYmggPDwgMjUpKTtcbiAgICAgIHMwbCA9ICgoYmwgPj4+IDI4KSB8IChiaCA8PCA0KSkgXiAoKGJoID4+PiAyKSB8IChibCA8PCAzMCkpIF4gKChiaCA+Pj4gNykgfCAoYmwgPDwgMjUpKTtcblxuICAgICAgczFoID0gKChmaCA+Pj4gMTQpIHwgKGZsIDw8IDE4KSkgXiAoKGZoID4+PiAxOCkgfCAoZmwgPDwgMTQpKSBeICgoZmwgPj4+IDkpIHwgKGZoIDw8IDIzKSk7XG4gICAgICBzMWwgPSAoKGZsID4+PiAxNCkgfCAoZmggPDwgMTgpKSBeICgoZmwgPj4+IDE4KSB8IChmaCA8PCAxNCkpIF4gKChmaCA+Pj4gOSkgfCAoZmwgPDwgMjMpKTtcblxuICAgICAgYmNoID0gYmggJiBjaDtcbiAgICAgIGJjbCA9IGJsICYgY2w7XG4gICAgICBtYWpoID0gYmNoIF4gKGJoICYgZGgpIF4gY2RoO1xuICAgICAgbWFqbCA9IGJjbCBeIChibCAmIGRsKSBeIGNkbDtcblxuICAgICAgY2hoID0gKGZoICYgZ2gpIF4gKH5maCAmIGhoKTtcbiAgICAgIGNobCA9IChmbCAmIGdsKSBeICh+ZmwgJiBobCk7XG5cbiAgICAgIHQxaCA9IGJsb2Nrc1tqICsgNl07XG4gICAgICB0MWwgPSBibG9ja3NbaiArIDddO1xuICAgICAgdDJoID0gS1tqICsgNl07XG4gICAgICB0MmwgPSBLW2ogKyA3XTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpICsgKGNobCAmIDB4RkZGRikgKyAoczFsICYgMHhGRkZGKSArIChlbCAmIDB4RkZGRik7XG4gICAgICBjMiA9ICh0MmwgPj4+IDE2KSArICh0MWwgPj4+IDE2KSArIChjaGwgPj4+IDE2KSArIChzMWwgPj4+IDE2KSArIChlbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9ICh0MmggJiAweEZGRkYpICsgKHQxaCAmIDB4RkZGRikgKyAoY2hoICYgMHhGRkZGKSArIChzMWggJiAweEZGRkYpICsgKGVoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoY2hoID4+PiAxNikgKyAoczFoID4+PiAxNikgKyAoZWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICB0MWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIHQxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgICBjMSA9IChtYWpsICYgMHhGRkZGKSArIChzMGwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAobWFqbCA+Pj4gMTYpICsgKHMwbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChtYWpoICYgMHhGRkZGKSArIChzMGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgICBjNCA9IChtYWpoID4+PiAxNikgKyAoczBoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgdDJoID0gKGM0IDw8IDE2KSB8IChjMyAmIDB4RkZGRik7XG4gICAgICB0MmwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAoYWwgJiAweEZGRkYpICsgKHQxbCAmIDB4RkZGRik7XG4gICAgICBjMiA9IChhbCA+Pj4gMTYpICsgKHQxbCA+Pj4gMTYpICsgKGMxID4+PiAxNik7XG4gICAgICBjMyA9IChhaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAoYWggPj4+IDE2KSArICh0MWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgICBlaCA9IChjNCA8PCAxNikgfCAoYzMgJiAweEZGRkYpO1xuICAgICAgZWwgPSAoYzIgPDwgMTYpIHwgKGMxICYgMHhGRkZGKTtcblxuICAgICAgYzEgPSAodDJsICYgMHhGRkZGKSArICh0MWwgJiAweEZGRkYpO1xuICAgICAgYzIgPSAodDJsID4+PiAxNikgKyAodDFsID4+PiAxNikgKyAoYzEgPj4+IDE2KTtcbiAgICAgIGMzID0gKHQyaCAmIDB4RkZGRikgKyAodDFoICYgMHhGRkZGKSArIChjMiA+Pj4gMTYpO1xuICAgICAgYzQgPSAodDJoID4+PiAxNikgKyAodDFoID4+PiAxNikgKyAoYzMgPj4+IDE2KTtcblxuICAgICAgYWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICAgIGFsID0gKGMyIDw8IDE2KSB8IChjMSAmIDB4RkZGRik7XG4gICAgfVxuXG4gICAgYzEgPSAoaDBsICYgMHhGRkZGKSArIChhbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDBsID4+PiAxNikgKyAoYWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgwaCAmIDB4RkZGRikgKyAoYWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDBoID4+PiAxNikgKyAoYWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgwbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDFsICYgMHhGRkZGKSArIChibCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDFsID4+PiAxNikgKyAoYmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgxaCAmIDB4RkZGRikgKyAoYmggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDFoID4+PiAxNikgKyAoYmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgxbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDJsICYgMHhGRkZGKSArIChjbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDJsID4+PiAxNikgKyAoY2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgyaCAmIDB4RkZGRikgKyAoY2ggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDJoID4+PiAxNikgKyAoY2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oMmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgybCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDNsICYgMHhGRkZGKSArIChkbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDNsID4+PiAxNikgKyAoZGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGgzaCAmIDB4RkZGRikgKyAoZGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDNoID4+PiAxNikgKyAoZGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oM2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmgzbCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDRsICYgMHhGRkZGKSArIChlbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDRsID4+PiAxNikgKyAoZWwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg0aCAmIDB4RkZGRikgKyAoZWggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDRoID4+PiAxNikgKyAoZWggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNGggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg0bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDVsICYgMHhGRkZGKSArIChmbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDVsID4+PiAxNikgKyAoZmwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg1aCAmIDB4RkZGRikgKyAoZmggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDVoID4+PiAxNikgKyAoZmggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNWggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg1bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDZsICYgMHhGRkZGKSArIChnbCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDZsID4+PiAxNikgKyAoZ2wgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg2aCAmIDB4RkZGRikgKyAoZ2ggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDZoID4+PiAxNikgKyAoZ2ggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oNmggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg2bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuXG4gICAgYzEgPSAoaDdsICYgMHhGRkZGKSArIChobCAmIDB4RkZGRik7XG4gICAgYzIgPSAoaDdsID4+PiAxNikgKyAoaGwgPj4+IDE2KSArIChjMSA+Pj4gMTYpO1xuICAgIGMzID0gKGg3aCAmIDB4RkZGRikgKyAoaGggJiAweEZGRkYpICsgKGMyID4+PiAxNik7XG4gICAgYzQgPSAoaDdoID4+PiAxNikgKyAoaGggPj4+IDE2KSArIChjMyA+Pj4gMTYpO1xuXG4gICAgdGhpcy5oN2ggPSAoYzQgPDwgMTYpIHwgKGMzICYgMHhGRkZGKTtcbiAgICB0aGlzLmg3bCA9IChjMiA8PCAxNikgfCAoYzEgJiAweEZGRkYpO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuaGV4ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJpdHMgPSB0aGlzLmJpdHM7XG5cbiAgICB2YXIgaGV4ID0gSEVYX0NIQVJTWyhoMGggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDBoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gwaCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDBsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMGwgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgwbCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgwbCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDBsID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMGwgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMGwgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxaCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWggPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxaCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDFoICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMWwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgxbCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDFsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDFsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMWwgPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgxbCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gxbCAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJoID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmggPj4gMjQpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgyaCA+PiAxNikgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgyaCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDJoID4+IDgpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmggPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toMmggJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgybCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDJsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoMmwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoMmwgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgybCA+PiA4KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDJsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDJsICYgMHgwRl0gK1xuICAgICAgSEVYX0NIQVJTWyhoM2ggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzaCA+PiAyNCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNoID4+IDE2KSAmIDB4MEZdICtcbiAgICAgIEhFWF9DSEFSU1soaDNoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2ggPj4gOCkgJiAweDBGXSArXG4gICAgICBIRVhfQ0hBUlNbKGgzaCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2gzaCAmIDB4MEZdO1xuICAgIGlmIChiaXRzID49IDI1Nikge1xuICAgICAgaGV4ICs9IEhFWF9DSEFSU1soaDNsID4+IDI4KSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoM2wgPj4gMjQpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGgzbCA+PiAyMCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDNsID4+IDE2KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGgzbCA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoM2wgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1toM2wgJiAweDBGXTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBoZXggKz0gSEVYX0NIQVJTWyhoNGggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDRoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g0aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNGwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg0bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDRsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNGwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDRsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg0bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g0bCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWggPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1aCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVoID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWggPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDVoID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1aCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g1aCAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNWwgPj4gMjgpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg1bCA+PiAyNCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDVsID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNWwgPj4gMTYpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiAxMikgJiAweDBGXSArIEhFWF9DSEFSU1soaDVsID4+IDgpICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg1bCA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2g1bCAmIDB4MEZdO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGhleCArPSBIRVhfQ0hBUlNbKGg2aCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDZoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2aCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmggPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDZoICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg2bCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDZsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoNmwgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg2bCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoNmwgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDZsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDZsICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3aCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDdoID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2ggPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3aCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2ggPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdoID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDdoICYgMHgwRl0gK1xuICAgICAgICBIRVhfQ0hBUlNbKGg3bCA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soaDdsID4+IDI0KSAmIDB4MEZdICtcbiAgICAgICAgSEVYX0NIQVJTWyhoN2wgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGg3bCA+PiAxNikgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhoN2wgPj4gOCkgJiAweDBGXSArXG4gICAgICAgIEhFWF9DSEFSU1soaDdsID4+IDQpICYgMHgwRl0gKyBIRVhfQ0hBUlNbaDdsICYgMHgwRl07XG4gICAgfVxuICAgIHJldHVybiBoZXg7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS50b1N0cmluZyA9IFNoYTUxMi5wcm90b3R5cGUuaGV4O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZmluYWxpemUoKTtcblxuICAgIHZhciBoMGggPSB0aGlzLmgwaCwgaDBsID0gdGhpcy5oMGwsIGgxaCA9IHRoaXMuaDFoLCBoMWwgPSB0aGlzLmgxbCxcbiAgICAgIGgyaCA9IHRoaXMuaDJoLCBoMmwgPSB0aGlzLmgybCwgaDNoID0gdGhpcy5oM2gsIGgzbCA9IHRoaXMuaDNsLFxuICAgICAgaDRoID0gdGhpcy5oNGgsIGg0bCA9IHRoaXMuaDRsLCBoNWggPSB0aGlzLmg1aCwgaDVsID0gdGhpcy5oNWwsXG4gICAgICBoNmggPSB0aGlzLmg2aCwgaDZsID0gdGhpcy5oNmwsIGg3aCA9IHRoaXMuaDdoLCBoN2wgPSB0aGlzLmg3bCxcbiAgICAgIGJpdHMgPSB0aGlzLmJpdHM7XG5cbiAgICB2YXIgYXJyID0gW1xuICAgICAgKGgwaCA+PiAyNCkgJiAweEZGLCAoaDBoID4+IDE2KSAmIDB4RkYsIChoMGggPj4gOCkgJiAweEZGLCBoMGggJiAweEZGLFxuICAgICAgKGgwbCA+PiAyNCkgJiAweEZGLCAoaDBsID4+IDE2KSAmIDB4RkYsIChoMGwgPj4gOCkgJiAweEZGLCBoMGwgJiAweEZGLFxuICAgICAgKGgxaCA+PiAyNCkgJiAweEZGLCAoaDFoID4+IDE2KSAmIDB4RkYsIChoMWggPj4gOCkgJiAweEZGLCBoMWggJiAweEZGLFxuICAgICAgKGgxbCA+PiAyNCkgJiAweEZGLCAoaDFsID4+IDE2KSAmIDB4RkYsIChoMWwgPj4gOCkgJiAweEZGLCBoMWwgJiAweEZGLFxuICAgICAgKGgyaCA+PiAyNCkgJiAweEZGLCAoaDJoID4+IDE2KSAmIDB4RkYsIChoMmggPj4gOCkgJiAweEZGLCBoMmggJiAweEZGLFxuICAgICAgKGgybCA+PiAyNCkgJiAweEZGLCAoaDJsID4+IDE2KSAmIDB4RkYsIChoMmwgPj4gOCkgJiAweEZGLCBoMmwgJiAweEZGLFxuICAgICAgKGgzaCA+PiAyNCkgJiAweEZGLCAoaDNoID4+IDE2KSAmIDB4RkYsIChoM2ggPj4gOCkgJiAweEZGLCBoM2ggJiAweEZGXG4gICAgXTtcblxuICAgIGlmIChiaXRzID49IDI1Nikge1xuICAgICAgYXJyLnB1c2goKGgzbCA+PiAyNCkgJiAweEZGLCAoaDNsID4+IDE2KSAmIDB4RkYsIChoM2wgPj4gOCkgJiAweEZGLCBoM2wgJiAweEZGKTtcbiAgICB9XG4gICAgaWYgKGJpdHMgPj0gMzg0KSB7XG4gICAgICBhcnIucHVzaChcbiAgICAgICAgKGg0aCA+PiAyNCkgJiAweEZGLCAoaDRoID4+IDE2KSAmIDB4RkYsIChoNGggPj4gOCkgJiAweEZGLCBoNGggJiAweEZGLFxuICAgICAgICAoaDRsID4+IDI0KSAmIDB4RkYsIChoNGwgPj4gMTYpICYgMHhGRiwgKGg0bCA+PiA4KSAmIDB4RkYsIGg0bCAmIDB4RkYsXG4gICAgICAgIChoNWggPj4gMjQpICYgMHhGRiwgKGg1aCA+PiAxNikgJiAweEZGLCAoaDVoID4+IDgpICYgMHhGRiwgaDVoICYgMHhGRixcbiAgICAgICAgKGg1bCA+PiAyNCkgJiAweEZGLCAoaDVsID4+IDE2KSAmIDB4RkYsIChoNWwgPj4gOCkgJiAweEZGLCBoNWwgJiAweEZGXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGFyci5wdXNoKFxuICAgICAgICAoaDZoID4+IDI0KSAmIDB4RkYsIChoNmggPj4gMTYpICYgMHhGRiwgKGg2aCA+PiA4KSAmIDB4RkYsIGg2aCAmIDB4RkYsXG4gICAgICAgIChoNmwgPj4gMjQpICYgMHhGRiwgKGg2bCA+PiAxNikgJiAweEZGLCAoaDZsID4+IDgpICYgMHhGRiwgaDZsICYgMHhGRixcbiAgICAgICAgKGg3aCA+PiAyNCkgJiAweEZGLCAoaDdoID4+IDE2KSAmIDB4RkYsIChoN2ggPj4gOCkgJiAweEZGLCBoN2ggJiAweEZGLFxuICAgICAgICAoaDdsID4+IDI0KSAmIDB4RkYsIChoN2wgPj4gMTYpICYgMHhGRiwgKGg3bCA+PiA4KSAmIDB4RkYsIGg3bCAmIDB4RkZcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG4gIH07XG5cbiAgU2hhNTEyLnByb3RvdHlwZS5hcnJheSA9IFNoYTUxMi5wcm90b3R5cGUuZGlnZXN0O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5maW5hbGl6ZSgpO1xuXG4gICAgdmFyIGJpdHMgPSB0aGlzLmJpdHM7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihiaXRzIC8gOCk7XG4gICAgdmFyIGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDAsIHRoaXMuaDBoKTtcbiAgICBkYXRhVmlldy5zZXRVaW50MzIoNCwgdGhpcy5oMGwpO1xuICAgIGRhdGFWaWV3LnNldFVpbnQzMig4LCB0aGlzLmgxaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDEyLCB0aGlzLmgxbCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDE2LCB0aGlzLmgyaCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDIwLCB0aGlzLmgybCk7XG4gICAgZGF0YVZpZXcuc2V0VWludDMyKDI0LCB0aGlzLmgzaCk7XG5cbiAgICBpZiAoYml0cyA+PSAyNTYpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigyOCwgdGhpcy5oM2wpO1xuICAgIH1cbiAgICBpZiAoYml0cyA+PSAzODQpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMigzMiwgdGhpcy5oNGgpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDM2LCB0aGlzLmg0bCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNDAsIHRoaXMuaDVoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig0NCwgdGhpcy5oNWwpO1xuICAgIH1cbiAgICBpZiAoYml0cyA9PSA1MTIpIHtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig0OCwgdGhpcy5oNmgpO1xuICAgICAgZGF0YVZpZXcuc2V0VWludDMyKDUyLCB0aGlzLmg2bCk7XG4gICAgICBkYXRhVmlldy5zZXRVaW50MzIoNTYsIHRoaXMuaDdoKTtcbiAgICAgIGRhdGFWaWV3LnNldFVpbnQzMig2MCwgdGhpcy5oN2wpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZmVyO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgU2hhNTEyKHRoaXMuYml0cywgZmFsc2UpO1xuICAgIHRoaXMuY29weVRvKGhhc2gpO1xuICAgIHJldHVybiBoYXNoO1xuICB9O1xuXG4gIFNoYTUxMi5wcm90b3R5cGUuY29weVRvID0gZnVuY3Rpb24gKGhhc2gpIHtcbiAgICB2YXIgaSA9IDAsIGF0dHJzID0gW1xuICAgICAgJ2gwaCcsICdoMGwnLCAnaDFoJywgJ2gxbCcsICdoMmgnLCAnaDJsJywgJ2gzaCcsICdoM2wnLCAnaDRoJywgJ2g0bCcsICdoNWgnLCAnaDVsJywgJ2g2aCcsICdoNmwnLCAnaDdoJywgJ2g3bCcsXG4gICAgICAnc3RhcnQnLCAnYnl0ZXMnLCAnaEJ5dGVzJywgJ2ZpbmFsaXplZCcsICdoYXNoZWQnLCAnbGFzdEJ5dGVJbmRleCdcbiAgICBdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkge1xuICAgICAgaGFzaFthdHRyc1tpXV0gPSB0aGlzW2F0dHJzW2ldXTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuYmxvY2tzLmxlbmd0aDsgKytpKSB7XG4gICAgICBoYXNoLmJsb2Nrc1tpXSA9IHRoaXMuYmxvY2tzW2ldO1xuICAgIH1cbiAgfTtcblxuICBmdW5jdGlvbiBIbWFjU2hhNTEyKGtleSwgYml0cywgc2hhcmVkTWVtb3J5KSB7XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBrZXk7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgIH0gZWxzZSBpZiAoQVJSQVlfQlVGRkVSICYmIGtleS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBrZXkgPSBuZXcgVWludDhBcnJheShrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGtleSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGtleS5sZW5ndGg7XG4gICAgaWYgKCFub3RTdHJpbmcpIHtcbiAgICAgIHZhciBieXRlcyA9IFtdLCBsZW5ndGggPSBrZXkubGVuZ3RoLCBpbmRleCA9IDAsIGNvZGU7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvZGUgPSBrZXkuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSBjb2RlO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweDgwMCkge1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4YzAgfCAoY29kZSA+PiA2KSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8IChjb2RlICYgMHgzZikpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweGUwIHwgKGNvZGUgPj4gMTIpKTtcbiAgICAgICAgICBieXRlc1tpbmRleCsrXSA9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb2RlID0gMHgxMDAwMCArICgoKGNvZGUgJiAweDNmZikgPDwgMTApIHwgKGtleS5jaGFyQ29kZUF0KCsraSkgJiAweDNmZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ZjAgfCAoY29kZSA+PiAxOCkpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoKGNvZGUgPj4gMTIpICYgMHgzZikpO1xuICAgICAgICAgIGJ5dGVzW2luZGV4KytdID0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSk7XG4gICAgICAgICAgYnl0ZXNbaW5kZXgrK10gPSAoMHg4MCB8IChjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXkgPSBieXRlcztcbiAgICB9XG5cbiAgICBpZiAoa2V5Lmxlbmd0aCA+IDEyOCkge1xuICAgICAga2V5ID0gKG5ldyBTaGE1MTIoYml0cywgdHJ1ZSkpLnVwZGF0ZShrZXkpLmFycmF5KCk7XG4gICAgfVxuXG4gICAgdmFyIG9LZXlQYWQgPSBbXSwgaUtleVBhZCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTI4OyArK2kpIHtcbiAgICAgIHZhciBiID0ga2V5W2ldIHx8IDA7XG4gICAgICBvS2V5UGFkW2ldID0gMHg1YyBeIGI7XG4gICAgICBpS2V5UGFkW2ldID0gMHgzNiBeIGI7XG4gICAgfVxuXG4gICAgU2hhNTEyLmNhbGwodGhpcywgYml0cywgc2hhcmVkTWVtb3J5KTtcblxuICAgIHRoaXMudXBkYXRlKGlLZXlQYWQpO1xuICAgIHRoaXMub0tleVBhZCA9IG9LZXlQYWQ7XG4gICAgdGhpcy5pbm5lciA9IHRydWU7XG4gICAgdGhpcy5zaGFyZWRNZW1vcnkgPSBzaGFyZWRNZW1vcnk7XG4gIH1cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUgPSBuZXcgU2hhNTEyKCk7XG5cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbiAoKSB7XG4gICAgU2hhNTEyLnByb3RvdHlwZS5maW5hbGl6ZS5jYWxsKHRoaXMpO1xuICAgIGlmICh0aGlzLmlubmVyKSB7XG4gICAgICB0aGlzLmlubmVyID0gZmFsc2U7XG4gICAgICB2YXIgaW5uZXJIYXNoID0gdGhpcy5hcnJheSgpO1xuICAgICAgU2hhNTEyLmNhbGwodGhpcywgdGhpcy5iaXRzLCB0aGlzLnNoYXJlZE1lbW9yeSk7XG4gICAgICB0aGlzLnVwZGF0ZSh0aGlzLm9LZXlQYWQpO1xuICAgICAgdGhpcy51cGRhdGUoaW5uZXJIYXNoKTtcbiAgICAgIFNoYTUxMi5wcm90b3R5cGUuZmluYWxpemUuY2FsbCh0aGlzKTtcbiAgICB9XG4gIH07XG5cbiAgSG1hY1NoYTUxMi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgSG1hY1NoYTUxMihbXSwgdGhpcy5iaXRzLCBmYWxzZSk7XG4gICAgdGhpcy5jb3B5VG8oaGFzaCk7XG4gICAgaGFzaC5pbm5lciA9IHRoaXMuaW5uZXI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9LZXlQYWQubGVuZ3RoOyArK2kpIHtcbiAgICAgIGhhc2gub0tleVBhZFtpXSA9IHRoaXMub0tleVBhZFtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc2g7XG4gIH07XG5cbiAgdmFyIGV4cG9ydHMgPSBjcmVhdGVNZXRob2QoNTEyKTtcbiAgZXhwb3J0cy5zaGE1MTIgPSBleHBvcnRzO1xuICBleHBvcnRzLnNoYTM4NCA9IGNyZWF0ZU1ldGhvZCgzODQpO1xuICBleHBvcnRzLnNoYTUxMl8yNTYgPSBjcmVhdGVNZXRob2QoMjU2KTtcbiAgZXhwb3J0cy5zaGE1MTJfMjI0ID0gY3JlYXRlTWV0aG9kKDIyNCk7XG4gIGV4cG9ydHMuc2hhNTEyLmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDUxMik7XG4gIGV4cG9ydHMuc2hhMzg0LmhtYWMgPSBjcmVhdGVIbWFjTWV0aG9kKDM4NCk7XG4gIGV4cG9ydHMuc2hhNTEyXzI1Ni5obWFjID0gY3JlYXRlSG1hY01ldGhvZCgyNTYpO1xuICBleHBvcnRzLnNoYTUxMl8yMjQuaG1hYyA9IGNyZWF0ZUhtYWNNZXRob2QoMjI0KTtcblxuICBpZiAoQ09NTU9OX0pTKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzO1xuICB9IGVsc2Uge1xuICAgIHJvb3Quc2hhNTEyID0gZXhwb3J0cy5zaGE1MTI7XG4gICAgcm9vdC5zaGEzODQgPSBleHBvcnRzLnNoYTM4NDtcbiAgICByb290LnNoYTUxMl8yNTYgPSBleHBvcnRzLnNoYTUxMl8yNTY7XG4gICAgcm9vdC5zaGE1MTJfMjI0ID0gZXhwb3J0cy5zaGE1MTJfMjI0O1xuICAgIGlmIChBTUQpIHtcbiAgICAgIGRlZmluZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRzO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59KSgpO1xuIiwiaW1wb3J0IHsgc2hhNTEyIH0gZnJvbSBcImpzLXNoYTUxMlwiO1xuaW1wb3J0IHsgUHJvZ3Jlc3NDYWxsYmFjaywgU2lnbmVkQ2hhbGxlbmdlIH0gZnJvbSBcIi4vaW5kZXhcIjtcblxuY29uc3QgY29tcHV0ZUNvbGxpc2lvbkludGVnZXIgPSBhc3luYyAoe1xuICBpbnB1dCxcbiAgZXhwZWN0ZWQsXG59OiB7XG4gIGlucHV0OiBzdHJpbmc7XG4gIGV4cGVjdGVkOiBzdHJpbmc7XG59KSA9PiB7XG4gIGxldCBhdHRlbXB0ID0gMDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IGhhc2ggPSBzaGE1MTIoYCR7aW5wdXR9OiR7YXR0ZW1wdH1gKTtcbiAgICBpZiAoYXR0ZW1wdCAlIDRlNCA9PT0gMCkge1xuICAgICAgYXdhaXQgc2xlZXAoMCk7XG4gICAgfVxuICAgIGlmIChoYXNoLnN1YnN0cmluZygwLCBleHBlY3RlZC5sZW5ndGgpID09PSBleHBlY3RlZCkge1xuICAgICAgcmV0dXJuIGF0dGVtcHQudG9TdHJpbmcoKTtcbiAgICB9XG4gICAgYXR0ZW1wdCsrO1xuICB9XG59O1xuXG5jb25zdCBzbGVlcCA9ICh0aW1lOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyKSA9PiBzZXRUaW1lb3V0KHIsIHRpbWUpKTtcblxuY29uc3QgY29tcHV0ZVNvbHV0aW9ucyA9IGFzeW5jICh7XG4gIGNoYWxsZW5nZSxcbiAgb25Qcm9ncmVzcyxcbn06IHtcbiAgY2hhbGxlbmdlOiBTaWduZWRDaGFsbGVuZ2U7XG4gIG9uUHJvZ3Jlc3M/OiBQcm9ncmVzc0NhbGxiYWNrO1xufSkgPT4ge1xuICBjb25zdCB7IG5vbmNlLCBkaWZmaWN1bHR5LCBoYXJkbmVzcyB9ID0gY2hhbGxlbmdlLnBheWxvYWQ7XG5cbiAgY29uc3Qgc29sdXRpb25zID0gW107XG5cbiAgb25Qcm9ncmVzcz8uKDApO1xuXG4gIGZvciAobGV0IGggPSAwOyBoIDwgaGFyZG5lc3M7IGgrKykge1xuICAgIGNvbnN0IHNvbHV0aW9uID0gYXdhaXQgY29tcHV0ZUNvbGxpc2lvbkludGVnZXIoe1xuICAgICAgaW5wdXQ6IGAke25vbmNlfToke2h9YCxcbiAgICAgIGV4cGVjdGVkOiBcIjBcIi5yZXBlYXQoZGlmZmljdWx0eSksXG4gICAgfSk7XG4gICAgc29sdXRpb25zLnB1c2goc29sdXRpb24pO1xuICAgIG9uUHJvZ3Jlc3M/Lihzb2x1dGlvbnMubGVuZ3RoIC8gaGFyZG5lc3MpO1xuICAgIGF3YWl0IHNsZWVwKDApO1xuICB9XG5cbiAgcmV0dXJuIHNvbHV0aW9ucztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXB1dGVTb2x1dGlvbnM7XG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSwgcGFjaykge1xyXG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XHJcbiAgICAgICAgICAgIGlmICghYXIpIGFyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSwgMCwgaSk7XHJcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgY29tcHV0ZVNvbHV0aW9ucyBmcm9tIFwiLi9jb21wdXRlU29sdXRpb25zXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgX19CT1RQT0lTT05fVkVSU0lPTl9fOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX186IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gICAgX19CT1RQT0lTT05fSEVBUlRCRUFUX0RJU1BBVENIRVJfXzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfVxufVxuXG50eXBlIEJvdHBvaXNvbk9wdGlvbnMgPSB7IHB1YmxpY0tleTogc3RyaW5nIH07XG5cbnR5cGUgQ2hhbGxlbmdlT3B0aW9ucyA9IHsgb25Qcm9ncmVzcz86IFByb2dyZXNzQ2FsbGJhY2sgfTtcblxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NDYWxsYmFjayA9IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgdHlwZSBTaWduZWRDaGFsbGVuZ2UgPSB7XG4gIHBheWxvYWQ6IHtcbiAgICBub25jZTogc3RyaW5nO1xuICAgIGRpZmZpY3VsdHk6IG51bWJlcjtcbiAgICBoYXJkbmVzczogbnVtYmVyO1xuICB9O1xufTtcblxuY29uc3QgQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLmJvdHBvaXNvbi5jb21cIjtcblxuY29uc3QgaW5pdCA9ICgpID0+IHtcbiAgYWRkVmVyc2lvbigpO1xuICBhZGRTdWJtaXRMaXN0ZW5lcigpO1xuICBhZGRIZWFydGJlYXREaXNwYXRjaGVyKCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCb3Rwb2lzb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IHB1YmxpY0tleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHsgcHVibGljS2V5IH06IEJvdHBvaXNvbk9wdGlvbnMpIHtcbiAgICB0aGlzLnB1YmxpY0tleSA9IHB1YmxpY0tleTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KCkge1xuICAgIGluaXQoKTtcbiAgfVxuXG4gIGFzeW5jIGNoYWxsZW5nZShvcHRpb25zPzogQ2hhbGxlbmdlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgb25Qcm9ncmVzcyB9ID0gb3B0aW9ucyB8fCB7fTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke0JBU0VfVVJMfS9jaGFsbGVuZ2VgLCB7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgQWNjZXB0OiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHB1YmxpY0tleTogdGhpcy5wdWJsaWNLZXksXG4gICAgICAgIGhvc3RuYW1lOiBsb2NhdGlvbi5ob3N0bmFtZSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbGxlbmdlID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSkgYXMgU2lnbmVkQ2hhbGxlbmdlO1xuXG4gICAgY29uc3Qgc29sdXRpb25zID0gYXdhaXQgY29tcHV0ZVNvbHV0aW9ucyh7XG4gICAgICBjaGFsbGVuZ2UsXG4gICAgICBvblByb2dyZXNzLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2VyaWFsaXplZCA9IGJ0b2EoXG4gICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGNoYWxsZW5nZSxcbiAgICAgICAgc29sdXRpb25zLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNvbHV0aW9uOiBzZXJpYWxpemVkLFxuICAgIH07XG4gIH1cbn1cblxuY29uc3QgYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCA9ICh7XG4gIGZvcm1FbGVtZW50LFxuICBpZCxcbiAgbmFtZSxcbiAgdmFsdWUsXG59OiB7XG4gIGZvcm1FbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufSkgPT4ge1xuICBsZXQgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gIGlmICghaW5wdXQpIHtcbiAgICBjb25zdCBuZXdJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwiaGlkZGVuXCIpO1xuICAgIG5ld0lucHV0LnNldEF0dHJpYnV0ZShcImlkXCIsIGlkKTtcbiAgICBuZXdJbnB1dC5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsIG5hbWUpO1xuICAgIGZvcm1FbGVtZW50LmFwcGVuZENoaWxkKG5ld0lucHV0KTtcbiAgICBpbnB1dCA9IG5ld0lucHV0O1xuICB9XG4gIGlucHV0LnNldEF0dHJpYnV0ZShcInZhbHVlXCIsIHZhbHVlKTtcbn07XG5cbmNvbnN0IGFkZFZlcnNpb24gPSAoKSA9PiB7XG4gIGlmICghd2luZG93Ll9fQk9UUE9JU09OX1NVQk1JVF9MSVNURU5FUl9fKSB7XG4gICAgd2luZG93Ll9fQk9UUE9JU09OX1ZFUlNJT05fXyA9IHJlcXVpcmUoXCIuLi9wYWNrYWdlLmpzb25cIikudmVyc2lvbjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIH1cbn07XG5cbmNvbnN0IGFkZFN1Ym1pdExpc3RlbmVyID0gKCkgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgaWYgKCF3aW5kb3cuX19CT1RQT0lTT05fU1VCTUlUX0xJU1RFTkVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9TVUJNSVRfTElTVEVORVJfXyA9IHRydWU7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChldmVudCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGZvcm1FdmVudFRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgICBpZiAoZm9ybUV2ZW50VGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRWxlbWVudCA9IGZvcm1FdmVudFRhcmdldCBhcyBIVE1MRm9ybUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNLZXkgPSBmb3JtRWxlbWVudC5kYXRhc2V0LmJvdHBvaXNvblB1YmxpY0tleTtcbiAgICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgZm9ybUVsZW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgICAgICAgICAgICBuZXcgQ3VzdG9tRXZlbnQoXCJib3Rwb2lzb24tY2hhbGxlbmdlLXN0YXJ0XCIpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGJvdHBvaXNvbiA9IG5ldyBCb3Rwb2lzb24oe1xuICAgICAgICAgICAgICAgIHB1YmxpY0tleSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlkID0gYF9ib3Rwb2lzb25gO1xuICAgICAgICAgICAgICBjb25zdCBuYW1lID0gaWQ7XG4gICAgICAgICAgICAgIGJvdHBvaXNvblxuICAgICAgICAgICAgICAgIC5jaGFsbGVuZ2UoKVxuICAgICAgICAgICAgICAgIC50aGVuKCh7IHNvbHV0aW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2Utc3VjY2Vzc1wiKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIGFwcGVuZE9yVXBkYXRlQm90cG9pc29uSW5wdXQoe1xuICAgICAgICAgICAgICAgICAgICBmb3JtRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzb2x1dGlvbixcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQuY2FsbChmb3JtRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgIGZvcm1FbGVtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBDdXN0b21FdmVudChcImJvdHBvaXNvbi1jaGFsbGVuZ2UtZXJyb3JcIilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciA9ICgpID0+IHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGlmICghd2luZG93Ll9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18pIHtcbiAgICAgIHdpbmRvdy5fX0JPVFBPSVNPTl9IRUFSVEJFQVRfRElTUEFUQ0hFUl9fID0gdHJ1ZTtcbiAgICAgIGNvbnN0IGVuYWJsZWQgPSBmYWxzZTtcbiAgICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkaXNwYXRjaCA9ICgpID0+IHtcbiAgICAgICAgdm9pZCBmZXRjaChgJHtCQVNFX1VSTH0vaGVhcnRiZWF0YCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgaG9zdG5hbWU6IGxvY2F0aW9uLmhvc3RuYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgICBkaXNwYXRjaCgpO1xuICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaCgpO1xuICAgICAgfSwgNSAqIDYwICogMTAwMCk7IC8vIEV2ZXJ5IDE1IG1pbnV0ZXNcbiAgICB9XG4gIH1cbn07XG5cbmluaXQoKTtcbiJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsIklOUFVUX0VSUk9SIiwiV0lORE9XIiwid2luZG93IiwiSlNfU0hBNTEyX05PX1dJTkRPVyIsIldFQl9XT1JLRVIiLCJKU19TSEE1MTJfTk9fTk9ERV9KUyIsInByb2Nlc3MiLCJ2ZXJzaW9ucyIsIm5vZGUiLCJnIiwiQ09NTU9OX0pTIiwiSlNfU0hBNTEyX05PX0NPTU1PTl9KUyIsIkFNRCIsIkFSUkFZX0JVRkZFUiIsIkpTX1NIQTUxMl9OT19BUlJBWV9CVUZGRVIiLCJBcnJheUJ1ZmZlciIsIkhFWF9DSEFSUyIsInNwbGl0IiwiRVhUUkEiLCJTSElGVCIsIksiLCJPVVRQVVRfVFlQRVMiLCJibG9ja3MiLCJBcnJheSIsImlzQXJyYXkiLCJvYmoiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJKU19TSEE1MTJfTk9fQVJSQVlfQlVGRkVSX0lTX1ZJRVciLCJpc1ZpZXciLCJidWZmZXIiLCJjb25zdHJ1Y3RvciIsImNyZWF0ZU91dHB1dE1ldGhvZCIsIm91dHB1dFR5cGUiLCJiaXRzIiwibWVzc2FnZSIsIlNoYTUxMiIsInVwZGF0ZSIsImNyZWF0ZU1ldGhvZCIsIm1ldGhvZCIsImNyZWF0ZSIsImkiLCJsZW5ndGgiLCJ0eXBlIiwiY3JlYXRlSG1hY091dHB1dE1ldGhvZCIsImtleSIsIkhtYWNTaGE1MTIiLCJjcmVhdGVIbWFjTWV0aG9kIiwic2hhcmVkTWVtb3J5IiwiaDBoIiwiaDBsIiwiaDFoIiwiaDFsIiwiaDJoIiwiaDJsIiwiaDNoIiwiaDNsIiwiaDRoIiwiaDRsIiwiaDVoIiwiaDVsIiwiaDZoIiwiaDZsIiwiaDdoIiwiaDdsIiwiYmxvY2siLCJzdGFydCIsImJ5dGVzIiwiaEJ5dGVzIiwiZmluYWxpemVkIiwiaGFzaGVkIiwibm90U3RyaW5nIiwiRXJyb3IiLCJVaW50OEFycmF5IiwiY29kZSIsImluZGV4IiwiY2hhckNvZGVBdCIsImFycmF5Iiwib0tleVBhZCIsImlLZXlQYWQiLCJiIiwiaW5uZXIiLCJsYXN0Qnl0ZUluZGV4IiwiaGFzaCIsImZpbmFsaXplIiwiaiIsInMwaCIsInMwbCIsInMxaCIsInMxbCIsImMxIiwiYzIiLCJjMyIsImM0IiwiYWJoIiwiYWJsIiwiZGFoIiwiZGFsIiwiY2RoIiwiY2RsIiwiYmNoIiwiYmNsIiwibWFqaCIsIm1hamwiLCJ0MWgiLCJ0MWwiLCJ0MmgiLCJ0MmwiLCJjaGgiLCJjaGwiLCJhaCIsImFsIiwiYmgiLCJibCIsImNoIiwiY2wiLCJkaCIsImRsIiwiZWgiLCJlbCIsImZoIiwiZmwiLCJnaCIsImdsIiwiaGgiLCJobCIsImhleCIsImRpZ2VzdCIsImFyciIsInB1c2giLCJhcnJheUJ1ZmZlciIsImRhdGFWaWV3IiwiRGF0YVZpZXciLCJzZXRVaW50MzIiLCJjbG9uZSIsImNvcHlUbyIsImF0dHJzIiwiaW5uZXJIYXNoIiwic2hhNTEyIiwic2hhMzg0Iiwic2hhNTEyXzI1NiIsInNoYTUxMl8yMjQiLCJobWFjIiwiY29tcHV0ZUNvbGxpc2lvbkludGVnZXIiLCJpbnB1dCIsImV4cGVjdGVkIiwiYXR0ZW1wdCIsInNsZWVwIiwic3Vic3RyaW5nIiwidGltZSIsIlByb21pc2UiLCJyIiwic2V0VGltZW91dCIsImNoYWxsZW5nZSIsIm9uUHJvZ3Jlc3MiLCJwYXlsb2FkIiwibm9uY2UiLCJkaWZmaWN1bHR5IiwiaGFyZG5lc3MiLCJzb2x1dGlvbnMiLCJoIiwicmVwZWF0Iiwic29sdXRpb24iLCJleHRlbmRTdGF0aWNzIiwiZCIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwicCIsImhhc093blByb3BlcnR5IiwiX19leHRlbmRzIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiX18iLCJfX2Fzc2lnbiIsImFzc2lnbiIsInQiLCJzIiwibiIsImFyZ3VtZW50cyIsImFwcGx5IiwiX19yZXN0IiwiZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIl9fZGVjb3JhdGUiLCJkZWNvcmF0b3JzIiwidGFyZ2V0IiwiZGVzYyIsImMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJSZWZsZWN0IiwiZGVjb3JhdGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl9fcGFyYW0iLCJwYXJhbUluZGV4IiwiZGVjb3JhdG9yIiwiX19tZXRhZGF0YSIsIm1ldGFkYXRhS2V5IiwibWV0YWRhdGFWYWx1ZSIsIm1ldGFkYXRhIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInZhbHVlIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwiZiIsInkiLCJfIiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJTeW1ib2wiLCJpdGVyYXRvciIsInYiLCJvcCIsInBvcCIsIl9fY3JlYXRlQmluZGluZyIsIm8iLCJtIiwiayIsImsyIiwidW5kZWZpbmVkIiwiZW51bWVyYWJsZSIsImdldCIsIl9fZXhwb3J0U3RhciIsIl9fdmFsdWVzIiwiX19yZWFkIiwiYXIiLCJlcnJvciIsIl9fc3ByZWFkIiwiY29uY2F0IiwiX19zcHJlYWRBcnJheXMiLCJpbCIsImEiLCJqbCIsIl9fc3ByZWFkQXJyYXkiLCJ0byIsImZyb20iLCJwYWNrIiwibCIsInNsaWNlIiwiX19hd2FpdCIsIl9fYXN5bmNHZW5lcmF0b3IiLCJhc3luY0l0ZXJhdG9yIiwicSIsInJlc3VtZSIsImZ1bGZpbGwiLCJzZXR0bGUiLCJzaGlmdCIsIl9fYXN5bmNEZWxlZ2F0b3IiLCJfX2FzeW5jVmFsdWVzIiwiX19tYWtlVGVtcGxhdGVPYmplY3QiLCJjb29rZWQiLCJyYXciLCJfX3NldE1vZHVsZURlZmF1bHQiLCJfX2ltcG9ydFN0YXIiLCJtb2QiLCJfX2VzTW9kdWxlIiwiX19pbXBvcnREZWZhdWx0IiwiZGVmYXVsdCIsIl9fY2xhc3NQcml2YXRlRmllbGRHZXQiLCJyZWNlaXZlciIsInN0YXRlIiwia2luZCIsImhhcyIsIl9fY2xhc3NQcml2YXRlRmllbGRTZXQiLCJzZXQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiYW1kTyIsImRlZmluaXRpb24iLCJnbG9iYWxUaGlzIiwiRnVuY3Rpb24iLCJwcm9wIiwidG9TdHJpbmdUYWciLCJpbml0IiwiYWRkVmVyc2lvbiIsImFkZFN1Ym1pdExpc3RlbmVyIiwiYWRkSGVhcnRiZWF0RGlzcGF0Y2hlciIsInB1YmxpY0tleSIsIm9wdGlvbnMiLCJmZXRjaCIsIkJBU0VfVVJMIiwiaGVhZGVycyIsIkFjY2VwdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJob3N0bmFtZSIsImxvY2F0aW9uIiwianNvbiIsImJ0b2EiLCJfX0JPVFBPSVNPTl9TVUJNSVRfTElTVEVORVJfXyIsIl9fQk9UUE9JU09OX1ZFUlNJT05fXyIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiZm9ybUV2ZW50VGFyZ2V0IiwiZGF0YXNldCIsImJvdHBvaXNvblB1YmxpY0tleSIsInByZXZlbnREZWZhdWx0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiYm90cG9pc29uIiwiQm90cG9pc29uIiwiZm9ybUVsZW1lbnQiLCJpZCIsIm5hbWUiLCJnZXRFbGVtZW50QnlJZCIsIm5ld0lucHV0IiwiY3JlYXRlRWxlbWVudCIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiYXBwZW5kT3JVcGRhdGVCb3Rwb2lzb25JbnB1dCIsIkhUTUxGb3JtRWxlbWVudCIsInN1Ym1pdCIsImNhdGNoIiwiY29uc29sZSIsIl9fQk9UUE9JU09OX0hFQVJUQkVBVF9ESVNQQVRDSEVSX18iXSwic291cmNlUm9vdCI6IiJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@botpoison/browser",
3
3
  "private": false,
4
- "version": "0.1.24",
4
+ "version": "0.1.29",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
@@ -11,16 +11,17 @@
11
11
  "node": ">=10"
12
12
  },
13
13
  "scripts": {
14
- "build": "webpack --mode production --progress"
14
+ "build": "bash scripts/build.sh",
15
+ "typecheck": "bash scripts/typecheck.sh"
15
16
  },
16
17
  "dependencies": {
17
18
  "js-sha512": "^0.8.0"
18
19
  },
19
20
  "devDependencies": {
20
- "ts-loader": "^9.2.2",
21
- "tslib": "^2.2.0",
22
- "typescript": "^4.2.4",
23
- "webpack": "^5.37.1",
24
- "webpack-cli": "^4.7.0"
21
+ "ts-loader": "^9.2.6",
22
+ "tslib": "^2.3.1",
23
+ "typescript": "^4.4.4",
24
+ "webpack": "^5.58.2",
25
+ "webpack-cli": "^4.9.0"
25
26
  }
26
27
  }